首页/安全/应急响应速查/终止进程前先完成进程画像

终止进程前先完成进程画像

kill 之前把 exe、cwd、哈希、网络连接、环境变量一次性记录:进程一死,这些现场信息大多再也拿不回来。

应急响应速查安全更新于 2026-10-13

终止进程前先完成进程画像

进程一终止,/proc 下的目录立即消失,可执行文件、工作目录、环境变量、打开的文件与连接信息大多再也取不回来。所以处置动作必须严格按「画像 → 冻结 → 确认 → 终止」四步走:先把能取的信息全部记录下来,用挂起信号把进程冻结争取时间,确认它不是关键业务进程并已处理好持久化机制,最后才终止。跳过中间步骤是最常见的现场失误。

基本信息

画像要素可执行文件路径与哈希、工作目录、命令行、环境变量、启动时间、父进程
网络要素该进程的 TCP 与 UDP 连接、监听端口、对端地址
文件要素打开的文件与套接字,是否持有已删除文件
冻结方式kill -STOP 暂停进程,保留内存现场与连接
确认事项是否为核心业务进程、是否已处理持久化机制、是否有守护进程
样本处理从 /proc/<PID>/exe 复制二进制并计算哈希,单独保存

典型使用场景

  • 确认木马进程后准备终止,需要先固定证据
  • 清理前需要样本留档,供后续检测与其他主机检索
  • 判断进程是否由守护结构拉起,决定终止顺序
  • 排查「杀不掉的进程」,先冻结再分析原因
  • 为处置报告准备可验证的进程画像材料

画像到终止的完整序列

画像到终止的完整序列
PID=1234
ps -p $PID -o pid,ppid,user,lstart,cmd                 # 1 基本信息
sudo ls -l /proc/$PID/exe /proc/$PID/cwd               # 2 可执行文件与工作目录
sudo md5sum /proc/$PID/exe 2>/dev/null                 # 3 文件指纹
sudo ss -antp | grep "pid=$PID"                        # 4 相关网络连接
sudo cat /proc/$PID/environ | xargs -0 -n1 | head -n 20 # 5 环境变量
sudo ls -l /proc/$PID/fd | head -n 20                  # 6 打开的文件描述符
sudo cp /proc/$PID/exe /evidence/sample_$PID.bin 2>/dev/null   # 7 留样本
sudo kill -STOP $PID                                   # 8 冻结,争取处置时间
sudo kill -9 $PID                                      # 9 确认后终止

画像字段清单

项目取值方式用途
可执行路径/proc/PID/exe判断文件位置是否异常
文件哈希md5sum 或 sha256sum横向检索与样本比对
工作目录/proc/PID/cwd找到它落地的目录
命令行/proc/PID/cmdline提取地址与参数作为 IOC
环境变量/proc/PID/environ发现未在配置中出现的地址或凭据
启动时间ps 的 lstart判断是否落在入侵时间窗内
网络连接ss 按 pid 过滤确认通信对象与端口
不要跳过冻结这一步:直接终止可能触发对手脚本的超时清理逻辑,顺手删掉工具与日志;先挂起再确认,既能保住现场,也便于判断有没有守护进程会把它重新拉起。
终止前先确认自己不是在杀业务进程:看启动时间、父进程与所属账号,必要时与业务方确认。误杀核心服务造成的损失,往往比留着一个待处理的样本更大。

易错点

  • 终止后才想起要样本:可执行文件与内存信息全部消失,样本与指纹无从补取
  • 对关键业务进程直接强制终止:可能造成数据不一致或服务中断,应先确认身份
  • 跳过冻结直接杀:可能触发对手清理逻辑,工具与日志被顺手删除
  • 没检查守护结构就单杀一个:父子进程互为看门狗,几秒内重新拉起
  • 画像结果不落盘:口头看过等于没记录,无法写进报告也无法复核

数据来源与参考

  • SANS 现场处置实践
  • Linux procfs 与 kill(1) 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌