安服驻场指南:应急响应

2966 字
15 分钟
安服驻场指南:应急响应

进场前:信息收集#

接到应急响应需求后,与客户确认以下信息:

确认事项具体内容目的
发现时间异常首次被发现的具体时间点缩小日志分析时间窗口
异常现象文件加密、系统卡慢、首页篡改、账号异常等确定排查方向
系统信息操作系统版本、IP地址、是否虚拟机准备对应工具和命令
环境限制是否物理隔离、U盘是否可用、是否需要审批提前准备介质和工具
日志状态系统日志是否开启、是否有备份评估可用证据

实操建议:将以上信息整理成表格,进场前发给客户填写,避免到场后发现信息不全。

进场后:现场保护#

到达现场后,第一件事不是查问题,而是保护现场。

确认网络状态#

场景处理方式
服务器正在被加密立即断网,避免损失扩大
服务器被控挖矿断网或封禁外连IP
不确定攻击是否持续保持现状,先采集再处置

采集易失数据#

以下数据在系统重启后会丢失,必须优先采集:

数据类型Windows命令Linux命令
系统时间systeminfo | find "系统启动时间"dateuptime
当前用户会话query userwho -aw
网络连接netstat -anonetstat -anptuss -anptu
进程列表tasklist /vps auxfps -ef
系统服务sc query state= allsystemctl list-units --type=service
计划任务schtasks /query /fo csvcrontab -lls -la /etc/cron*

拍照留痕#

以下信息建议拍照留存:

  • 当前屏幕显示内容(报错信息、异常弹窗)
  • 系统时间
  • 进程列表中可疑条目
  • 客户现场操作记录(如有)

Windows系统应急排查#

账号排查#

检查本地用户:

Terminal window
net user
lusrmgr.msc

检查最近创建的账号:

Terminal window
wevtutil qe Security /f:text /rd:true /c:50 /q:"*[System[EventID=4720]]"

检查添加到管理员组的账号:

Terminal window
wevtutil qe Security /f:text /rd:true /c:50 /q:"*[System[EventID=4732]]"

检查隐藏账号:

Terminal window
wmic useraccount get name,sid,status
reg query "HKLM\SAM\SAM\Domains\Account\Users" /s

关注点

  • 账号名称是否异常(如admin$、defaultuser0、help)
  • 账号创建时间是否在异常时间窗口内
  • SID以500结尾的默认管理员账号是否被改名

进程排查#

查看所有进程:

Terminal window
tasklist /v /fo csv
wmic process get name,processid,parentprocessid,commandline

按内存排序查看:

Terminal window
tasklist /fi "memusage gt 100000"

检查进程签名(识别伪装系统进程):

Terminal window
Get-AuthenticodeSignature -FilePath C:\path\to\process.exe

常见可疑进程特征

特征说明
进程名与系统进程相似但拼写错误svch0st.exe、expl0rer.exe
进程路径不在系统目录正常系统进程应在 C:\Windows\System32
进程无数字签名或签名无效微软官方进程均有有效签名
CPU/内存占用异常高挖矿木马特征
进程父进程异常如 cmd.exe 父进程为网络服务进程

网络连接排查#

查看所有网络连接:

Terminal window
netstat -ano

查找外连IP及对应进程:

Terminal window
netstat -ano | findstr "ESTABLISHED"

根据PID定位进程:

Terminal window
tasklist | findstr <PID>

查看DNS缓存(排查恶意域名):

Terminal window
ipconfig /displaydns

关注点

  • 外连IP是否为已知恶意IP(需要提前准备IOC列表)
  • 连接端口是否为非常用端口(非80、443、22、3389等)
  • 连接进程是否为系统进程但路径异常

计划任务排查#

列出所有计划任务:

Terminal window
schtasks /query /fo csv /v

查看特定文件夹下的任务:

Terminal window
dir C:\Windows\System32\Tasks /s

关注点

  • 任务名称是否可疑(随机字符、伪装名称)
  • 执行程序路径是否在临时目录或用户目录
  • 任务触发频率是否异常(每分钟/每小时执行)

服务排查#

列出所有服务:

Terminal window
sc query state= all
wmic service get name,displayname,pathname,startmode,state

关注点

  • 服务状态为Running但名称可疑
  • 服务可执行文件路径在C:\Users*\AppData或C:\Temp
  • 服务启动类型为Auto但非系统默认服务

启动项排查#

注册表启动项:

Terminal window
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"
reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"

启动文件夹:

Terminal window
dir "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"
dir "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

日志采集#

快速导出命令:

Terminal window
# 导出安全日志
wevtutil epl Security D:\logs\Security.evtx
# 导出系统日志
wevtutil epl System D:\logs\System.evtx
# 导出PowerShell日志
wevtutil epl "Windows PowerShell" D:\logs\PowerShell.evtx

文件系统排查#

查找最近修改的文件:

Terminal window
# 最近24小时修改
forfiles /P C:\ /S /M *.* /D +0 2>nul
# 使用PowerShell
Get-ChildItem -Path C:\ -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }

查找可疑文件类型:

Terminal window
# 查找exe文件
dir C:\*.exe /s
# 查找临时目录下的可执行文件
dir C:\Users\*\AppData\Local\Temp\*.exe
dir C:\Windows\Temp\*.exe

关注点

  • 文件创建时间与异常时间窗口吻合
  • 文件名随机(如sdf87g32.exe)
  • 文件在临时目录或用户下载目录

注册表持久化排查#

常见持久化位置:

Terminal window
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v BootExecute
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers"
reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers"

Linux系统应急排查#

账号排查#

查看所有用户:

Terminal window
cat /etc/passwd

查看最近登录记录:

Terminal window
last -n 20

查看失败登录记录:

Terminal window
lastb -n 20

查看当前登录用户:

Terminal window
who -a

检查UID为0的非root账号:

Terminal window
awk -F: '($3 == 0) {print $1}' /etc/passwd

检查空口令账号:

Terminal window
awk -F: '($2 == "") {print $1}' /etc/shadow

关注点

  • 是否存在非root但UID为0的账号
  • 是否存在最近创建但未使用的账号(/etc/passwd中按时间排序)
  • 是否存在SSH密钥异常添加(检查/root/.ssh/authorized_keys)

进程排查#

查看完整进程树:

Terminal window
ps auxf
ps -ef --forest

按CPU使用率排序:

Terminal window
ps aux --sort=-%cpu | head -20

按内存使用率排序:

Terminal window
ps aux --sort=-%mem | head -20

查看进程的详细信息(打开文件、网络连接):

Terminal window
lsof -p <PID>

查看可疑进程的环境变量:

Terminal window
cat /proc/<PID>/environ | tr '\0' '\n'

常见可疑进程特征

特征说明
进程名随机(如 [kworker] 伪装)挖矿木马常用手法
进程以root运行但路径在 /tmp 或 /dev/shm临时目录不应有root进程
进程CPU使用率持续高于100%挖矿特征
无进程文件(/proc//exe 指向已删除文件)可疑
进程父进程为1(init/systemd)但路径异常可能是被注入的服务

网络连接排查#

查看所有网络连接:

Terminal window
netstat -anptu
ss -anptu

查看ESTABLISHED连接:

Terminal window
netstat -anptu | grep ESTABLISHED

查看监听端口:

Terminal window
netstat -anptu | grep LISTEN
lsof -i -P -n | grep LISTEN

查看连接对应的进程:

Terminal window
ss -anptu | grep <IP>

关注点

  • 外连IP是否为已知恶意IP
  • 是否存在反向Shell连接(内网IP连外网非常用端口)
  • 是否存在IRC协议连接(6667端口等)
  • 连接进程是否为系统进程但路径异常

计划任务排查#

查看系统计划任务:

Terminal window
crontab -l -u root
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
ls -la /etc/cron.weekly/
ls -la /etc/cron.monthly/

查看用户计划任务:

Terminal window
for user in $(cut -f1 -d: /etc/passwd); do echo "### $user"; crontab -l -u $user 2>/dev/null; done

查看systemd定时器:

Terminal window
systemctl list-timers --all

关注点

  • 任务执行脚本路径是否在/tmp、/dev/shm、/var/tmp
  • 任务内容是否包含wget、curl、bash -i、nc、perl -e 等
  • 任务执行频率是否异常(每分钟)

服务排查#

查看所有服务:

Terminal window
systemctl list-units --type=service --all

查看正在运行的服务:

Terminal window
systemctl list-units --type=service --state=running

查看服务文件内容:

Terminal window
systemctl cat <服务名>

关注点

  • 服务名称是否可疑(随机字符、伪装系统服务名)
  • 服务执行的命令路径是否在/tmp、/var/tmp、/home/*
  • 服务文件中是否包含ExecStartPre、ExecStartPost执行可疑命令

启动项排查#

查看rc.local:

Terminal window
cat /etc/rc.local
ls -la /etc/rc.local

查看init.d:

Terminal window
ls -la /etc/init.d/
update-rc.d -f <服务名> remove

查看systemd启动项:

Terminal window
systemctl list-unit-files --type=service | grep enabled

查看profile和bashrc:

Terminal window
cat /etc/profile
cat /etc/bashrc
cat ~/.bashrc
cat ~/.bash_profile

历史命令排查#

查看root历史命令:

Terminal window
cat /root/.bash_history

查看各用户历史命令:

Terminal window
for user in $(ls /home/); do echo "### $user"; cat /home/$user/.bash_history 2>/dev/null; done

关注点

  • 是否存在wget、curl下载文件
  • 是否存在chmod +x、./执行不明文件
  • 是否存在passwd、useradd、adduser创建账号
  • 是否存在nc、ncat、socat反弹Shell
  • 是否存在crontab修改计划任务
  • 历史命令文件是否被清空(.bash_history为空或只有history -c)

日志排查#

快速排查命令:

Terminal window
# 认证日志
tail -100 /var/log/auth.log # Debian系
tail -100 /var/log/secure # RHEL系
# 系统日志
tail -100 /var/log/syslog # Debian系
tail -100 /var/log/messages # RHEL系
# 查看登录失败的IP
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -20
# 查看sudo执行记录
grep "sudo" /var/log/auth.log
# 查看SSH登录成功的IP
grep "Accepted" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -20

文件系统排查#

查找最近修改的文件:

Terminal window
find / -type f -mtime -1 2>/dev/null

查找最近创建的文件:

Terminal window
find / -type f -ctime -1 2>/dev/null

查找SUID/SGID文件:

Terminal window
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

查找可写文件:

Terminal window
find / -type f -perm -222 2>/dev/null

查找特定目录下的可执行文件:

Terminal window
find /tmp -type f -executable 2>/dev/null
find /dev/shm -type f -executable 2>/dev/null
find /var/tmp -type f -executable 2>/dev/null

查找Webshell特征文件:

Terminal window
find /var/www -name "*.php" -mtime -7 2>/dev/null
grep -r "eval(" /var/www/ 2>/dev/null
grep -r "base64_decode" /var/www/ 2>/dev/null
grep -r "system(" /var/www/ 2>/dev/null

内核模块排查#

查看已加载内核模块:

Terminal window
lsmod

查看模块信息:

Terminal window
modinfo <模块名>

关注点

  • 是否存在未知内核模块(Rootkit常见手法)
  • 模块路径是否异常(正常模块应在/lib/modules/)

常见攻击类型快速排查表#

攻击类型典型特征优先排查位置
挖矿木马CPU持续100%、进程名随机、外连矿池IP进程、计划任务、crontab
勒索病毒文件后缀被修改、勒索信、文件修改时间集中进程、文件系统、计划任务
Webshell文件上传时间异常、代码中包含eval/systemWeb目录文件、访问日志
后门账号新增未知账号、UID为0的非root账号/etc/passwd、安全日志
SSH爆破auth.log大量Failed password、lastb记录多认证日志、lastb
反弹Shell外连非常用端口、进程父进程为web服务网络连接、进程树
Rootkitlsmod显示异常模块、ps/netstat输出可疑内核模块、系统命令完整性
数据窃取外连异常IP、大量数据库查询日志网络连接、数据库日志

证据采集与保存#

采集清单#

证据类型WindowsLinux
进程列表tasklist输出ps输出
网络连接netstat输出netstat/ss输出
登录记录安全日志last/lastb输出、auth.log
计划任务schtasks输出crontab文件
启动项注册表Run键rc.local、systemd
可疑文件可执行文件脚本、二进制文件
系统日志.evtx文件/var/log/*

文件完整性校验#

采集前记录哈希值:

Windows

Terminal window
Get-FileHash -Path <文件路径> -Algorithm SHA256

Linux

Terminal window
sha256sum <文件路径>
md5sum <文件路径>

采集注意事项#

  • 先采集易失数据:进程、网络连接、登录会话
  • 再采集持久化数据:日志、配置文件、计划任务
  • 保留原始格式:不要修改文件时间戳、不要打开文件编辑
  • 记录采集时间:每条证据标注采集时间点
  • 链式 custody:记录谁采集、谁保管、谁分析

报告编写#

报告结构#

章节内容
事件概述发生时间、影响范围、严重程度
排查过程按时间线记录操作步骤和发现
证据分析关键发现、IOC、TTP
确认问题确认的攻击类型、入侵途径、影响面
处置措施已执行的隔离、清除、恢复操作
遗留风险未解决的问题、需要客户跟进的事项
加固建议防止再次发生的安全措施

报告编写原则#

  • 结论明确:确认的写”确认”,未确认的写”未发现”,不要写”可能""疑似”
  • 证据支撑:每个结论附上对应的日志行、文件名、哈希值
  • 可操作性:加固建议具体到命令、配置项、操作步骤
  • 留痕可查:报告中包含采集证据的哈希值,便于后续验证

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

安服驻场指南:应急响应
https://blog.cllll.link/posts/security-service-emergency-response-guide/
作者
clll
发布于
2026-05-08
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
clll
Hello, I'm clll.
公告
Hello, World!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
17
分类
3
标签
48
总字数
27,020
运行时长
0
最后活动
0 天前

目录