查看 cpu 占用率#
查看 cpu 占用率的目的是为了查清是哪个进程占用 cpu 过高 (针对挖矿)
top -c -o %CPU
htop -t
# 查看cpu占用前五的进程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5
内存占用率#
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)
外连 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"
根据 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
处理异常进程#
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
- 删除文件
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 是否正常#
微步威胁情报可以查询到一些信息
还可以查询如下等信息
有域名就可以查备案(国内)
有备案就可以查公司
其他#
GitHub - T0xst/linux: linux 安全检查
Security/1earn/Security/BlueTeam/ 应急
Blue-Team / 应急 /linux 应急响应手册
linux 应急响应手册 1.7