banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

linux下应急响应(基础知识记录)

查看 cpu 占用率#

查看 cpu 占用率的目的是为了查清是哪个进程占用 cpu 过高 (针对挖矿)

top -c -o %CPU
htop -t

# 查看cpu占用前五的进程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5

image

内存占用率#

top -c -o %MEM
htop -t

# 查看内存占用前五的进程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -n 5

网络占用率#

iftop # 需要安装,root权限运行,不会展示进程id
nethogs # 需要安装,root权限运行,展示进程id
ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr # 查看本地网卡ip连接数(源ip)
ss -ntu | awk '{print $6}' | cut -d ":" -f1 | sort | uniq -c | sort -nr # 查看目的ip连接数(目的ip)

image.png

外连 ip#

# 根据目的ip查找
netstat -pantu | grep 1.1.1.1
netstat -pantu | grep 3389
lsof -i:3389 # root权限
# 根据本机ip查找
netstat -pantu | grep 3389
lsof -i:3389

寻找恶意样本#

  • 获取 PID - 找到恶意文件路径
  • 找到了恶意文件 - PID

根据进程名字或者部分字符串获取 pid

pidof "name"
ps -aux | grep "name"
ps -ef | grep "name" | grep -v grep | awk '{print $2}'
pgrep -f "name"

image

根据 pid 获取进程的详细信息

lsof -p PID # root权限
pwdx PID # root权限,获取该PID的进程启动时候的目录,也就是恶意文件启动的路径
systemctl status PID # 获取这个进程的status信息
cat /proc/PID/maps # 输出指定进程的内存映射信息
ls -al /proc/1505945/exe # 输出指定进程所执行的程序的绝对路径
cat /proc/$$/mountinfo # 查看当前进程所挂载的文件系统信息,其中,$$ 表示当前进程的进程 ID (PID)。

查看线程

ps H -T -p PID # pid是进程id,spid是线程id,CMD 表示进程/线程的命令行
ps -Lf PID # 显示指定进程中各个线程的信息
pstree -agplU # 显示系统中所有的进程关系 ✅

根据文件找 PID

lsof | grep FILENAME
lsof FILENAME
fuser FILENAME # 用于查找使用特定文件或套接字的进程的命令

确定程序运行时间#

ps -eo pid,lstart,etime,cmd | grep  PID

# 对比恶意文件的创建时间
stat FILENAME
ls -al FILENAME

image

处理异常进程#

1、从服务器上下载样本
2、病毒在线分析
3、进程查杀

1、查看是否存在子进程
ps ajfx
systemctl status

2、如果无子进程
kill -9 PID

3、如果存在子进程
kill -9 -PID

删除恶意文件#

1、查看进程是否占用

lsof FILENAME

2、如果遇到 a 和 i 属性导致文件不可删除

chattr -a
chattr -i

3、奇怪文件名导致不能删除

  • 使用 inode 节点进行删除
ls -li FILENAME # 查看inode

image

  • 删除文件
find ./* -inum INODE -delete
find ./ -inum INODE -exec rm {} \;
find ./* -inum INODE -exec rm -i {} \; # 提示是否删除
find ./* -inum INODE -exec rm -f {} \; # 强制删除
find ./* -inum INODE | xargs rm -rf
rm `find ./* -inum INODE`

大部分的应急事件的流程大概需要的命令也就是这些了,针对不同的事件还有一些区别:

扩展 1 netstat 中 TCP 连接状态的示例#

状态           类型                描述                                                                                                            
LISTEN        TCP 监听端口         侦听状态。表示该端口正在等待对端的连接,以进行通信。                                                         
SYN_SENT      TCP 传输控制协议状态 已经发送连接请求。表示 TCP 连接已经被发起,但是尚未收到确认。                                                 
SYN_RECV      TCP 传输控制协议状态 正在接收连接请求。表示 TCP 连接已经被接收,正在等待确认。通常在服务器上才会出现,表示已经接收到客户端的请求。
ESTABLISHED   TCP 传输控制协议状态 表示 TCP 连接已经建立,正在通信中。                                                                             
FIN_WAIT1     TCP 传输控制协议状态 表示 TCP 连接已经被关闭,在等待对方关闭连接的请求。                                                           
FIN_WAIT2     TCP 传输控制协议状态 表示 TCP 连接已经被关闭,在等待对方关闭连接的请求,或者正在从对方接收最终确认。                             
TIME_WAIT     TCP 传输控制协议状态 表示 TCP 连接已经被关闭,并且所有数据都传输完毕,正在等待一段时间以确保所有分组都得到处理。                   
CLOSE_WAIT    TCP 传输控制协议状态 表示 TCP 连接已经被关闭,但是本地应用程序尚未关闭连接。                                                       
LAST_ACK      TCP 传输控制协议状态 已经发送关闭请求,正在等待对方的关闭请求。                                                                    
CLOSING       TCP 传输控制协议状态 表示 TCP 连接正在关闭过程中。                                                                                   

扩展 2 ip 是否正常#

三步走:威胁情报查询-域名备案-企业查询

微步威胁情报可以查询到一些信息

image.png

还可以查询如下等信息

image.png

有域名就可以查备案(国内)

image.png

有备案就可以查公司

image.png

其他#

GitHub - T0xst/linux: linux 安全检查
Security/1earn/Security/BlueTeam/ 应急
Blue-Team / 应急 /linux 应急响应手册
linux 应急响应手册 1.7

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。