Linux应急响应手册:从了解情况到输出报告的完整流程
前言
整理一份应急响应的完整流程手册,覆盖从接到告警到输出报告的全过程,Linux 为主、Windows 为辅。整体流程为:了解情况 → 遏制传播 → 排查取证 → 恢复业务 → 跟踪总结。
注意:实际应急情况复杂,需根据现场灵活处置;操作前先征得授权;整个过程中不要被现场人员的描述误导,必要的话亲自检测,不要完全相信听来的东西。
1. 了解情况
- 发生时间:询问发现异常事件的具体时间,后续的操作要基于此时间点进行追踪分析。
- 受影响系统类型:
- windows / linux
- 财务系统 / OA系统 / 官网,系统重要性,是否可关停
- 是否有弱口令,远程管理端口是否开放
- 都开放了什么端口,有什么服务,服务是否存在风险性
- 异常情况:
- 文件被加密
- 设备无法正常启动
- 勒索信息展示
- CPU利用率过高
- 网页挂马/黑链
- 对外发送异常请求
- 对外发送垃圾短信
- 已有的处置措施:
- 之前是否存在此类问题
- 是否在出现问题后配置了新的策略
- 是否已有第三方进行了应急处理,处理结果是什么
- 系统架构/网络拓扑:是否能提供网络拓扑图。
- 日志:能否提供服务器日志、应用日志(重点 web 日志)、数据库日志。
- 已有的安全设备:终端杀软、防火墙、WAF、流量分析设备。
- 基本的应急处置方案:临时处置方案、勒索病毒处置预案、挖矿程序处置预案、网页挂马处置预案、DDOS处置预案、内部数据泄露处置预案等。
- 应急报表:包含下述应急方法、端口开放情况及各端口应用分析、处置建议。
2. 遏制传播风险
- 禁止被感染主机使用U盘、移动硬盘,如必须使用做好备份
- 禁用所有无线/有线网卡或直接拔网线
- 关闭相关端口
- 划分隔离网络区域
- 封存主机,相关数据备份
- 被感染主机应用服务下线、部分功能暂停
- 被感染主机相关账号降权、更改密码
勒索病毒处置核心是止损,这点非常重要:
- 通过各类检查设备和资产发现,确定感染面
- 通过网络访问控制设备或断网隔离感染区域,避免病毒扩散
- 迅速启动杀毒或备份恢复措施,恢复受感染主机的业务,恢复生产(保障业务的关键动作)
- 启动或部署监测设备,针对病毒感染进行全面监测,避免死灰复燃
- 在生产得到恢复并无蔓延之后,收集所有相关的样本、日志等,开展技术分析,寻找感染源头,并制定整改计划
3. 已知高危漏洞排查
可与下面的步骤同时进行,扫描高危漏洞。但要注意扫描产生的大量日志不要影响漏洞排查。
4. 系统基本信息
-
Windows:查看当前系统的补丁信息
1systeminfo -
Linux:列出系统arp表(重点查看网关mac地址)、文件搜索
1 2arp -a find / -name ".asp"
重点关注:
- 系统内是否有非法账户
- 系统中是否含有异常服务程序
- 系统是否存在部分文件被篡改,或发现有新的文件
- 系统安全日志中的非正常登录情况
- 网站日志中是否有非授权地址访问管理页面记录
- 根据进程、连接等信息关联的程序,查看木马活动信息
- 假如系统的命令(例如 netstat、ls 等)被替换,需要下载新的或者从其他未感染的主机拷贝新的命令再排查
- 发现可疑可执行的木马文件,不要急于删除,先打包备份一份
- 发现可疑的文本木马文件,使用文本工具对其内容进行分析,包括回连IP地址、加密方式、关键字(以便扩大整个目录的文件特征提取)等
5. 异常连接排查
-
Windows:
1netstat -ano | findstr ESTABLISH参数说明:
-a显示所有网络连接、路由表和网络接口信息;-n以数字形式显示地址和端口号;-o显示与每个连接相关的所属进程 ID;-r显示路由表;-s显示按协议统计信息。状态说明:LISTENING 侦听、ESTABLISHED 建立连接、CLOSE_WAIT 对方主动关闭连接或网络异常导致连接中断。1 2netstat -ano | findstr "port" :: 查看端口对应的pid netstat -nb :: 显示创建每个连接或侦听端口时涉及的可执行程序(需管理员权限,查可疑程序非常有帮助) -
Linux:
1 2 3 4lsof -i lsof -i | grep -E "LISTEN|ESTABLISHED" netstat -antlp netstat -an参数说明:
-a显示所有连线中的 Socket;-n直接使用 IP 地址而不通过域名服务器;-t显示 TCP 连线状况;-u显示 UDP 连线状况;-p显示正在使用 Socket 的程序识别码和程序名称;-s显示网络工作信息统计表。
6. 正在运行的异常进程排查
-
Windows:
-
任务管理器查看异常进程
-
根据 netstat 定位出的异常进程 pid,再定位进程名:
1 2 3tasklist | findstr 11223 wmic process | findstr "xx.exe" :: 获取进程的全路径 wmic process where processid="2345" delete :: 关闭某个进程 -
开始->运行->msinfo32->软件环境->正在运行任务查看进程详细信息(路径、进程ID、文件创建日期、启动时间等)
-
-
Linux:
-
查找进程 pid:
netstat -antlp先找出可疑进程的端口,lsof -i:port定位可疑进程 pid -
通过 pid 查找文件:linux 每个进程都有一个对应的目录
1 2cd /proc/pid号 ls -ail | grep exe # exe 对应的就是该 pid 程序的路径 -
查看各进程占用的内存和 cpu:
top -
显示当前进程信息:
ps;精确查找:ps -ef | grep apache -
结束进程:
kill -9 pid -
查看进程树,查找异常进程是否有父进程:
pstree -p -
直接搜索异常进程名查找其位置:
find / -name 'xxx'
-
7. 异常账号排查
-
Windows:
lusrmgr.msc图形化查看账户和用户组net user查看当前账户;net user Guest查看某个账户详细信息net localgroup administrators查看当前组query user查看当前系统会话(是否有人使用远程终端登录);logoff ID踢出该用户
-
Linux:
w:查看 utmp 日志,获得当前正在登录账户的信息及地址last | more:获得系统前 N 次的登录记录(数据源 /var/log/wtmp、/var/log/btmp)cat /etc/passwd:查找攻击者创建或异常的用户。重点关注第 3、4 列的用户标识号和组标识号,以及倒数一、二列的用户主目录和命令解析程序。最后一列若为 nologin 表示不能登录,可结合 bash_history 排查。每行 7 个字段:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shellcat /etc/shadow:一般系统账号都没有密码,找最长的那几个,很可能就是黑客添加的后门账户。格式:用户名:加密密码:密码最后一次修改日期:两次密码修改间隔:密码有效期:密码修改到期警告天数:密码过期后宽限天数:账号失效时间:保留lastlog查看所有账户最后一次登录时间lastb显示用户登录错误的记录(检查暴力破解)who查看当前登录用户(tty 本地登录、pts 远程登录);uptime查看登录时长与负载- 禁用账户:
usermod -L user(/etc/shadow 第二栏为 ! 开头即锁定);解锁usermod -U user - 删除用户:
userdel -r user(-r 完全删除,-f 强制)。若遇到删除后创建同名用户提示已存在,手动删除 /etc/passwd、/etc/shadow、/etc/group 里用户相关字段,以及 /home 对应目录和 /var/spool/mail 下的文件
8. 异常文件分析
-
Windows:
- 右键文件属性查看文件时间
%UserProfile%\Recent分析最近使用的文档快捷方式- 按文件时间属性排序定位可疑文件:黑客通过菜刀类工具改变的是修改时间,所以修改时间在创建时间之前的明显是可疑文件
-
Linux:
-
分析文件日期:
stat xx.asp -
按修改时间查找文件:
1 2 3 4find ./ -mtime 0 # 最近24小时内修改过的文件 find ./ -mtime 1 # 前48~24小时修改过的文件 find ./ -mtime 0 -o -mtime 1 -o -mtime 2 # 逐天累加 find ./ -mtime 0 -name "*.php" # 24小时内被修改的 php 文件 -
敏感目录的文件分析(/tmp、/usr/bin、/usr/sbin 等):
ls -alt /tmp/ | head -n 10按时间顺序查看 -
特殊权限文件查找:
1 2find / -name "*.jsp" -perm 777 find / -perm 777 | more -
隐藏文件(以
.开头):ls -ar | grep "^\." -
chattr +i / -i添加/去除文件不可修改权限,lsattr查看。设置了该参数的文件任何人删除都需要先去掉此权限(挖矿木马常用来锁自己的文件) -
chattr +a / -a添加/去除只追加权限:只能追加不能删除,且不能通过编辑器追加 -
查看ssh相关目录有无可疑公钥:Redis(6379)未授权入侵可直接向目标主机导入公钥。目录:
/etc/ssh、~/.ssh/
-
9. 启动项排查
-
Windows:
-
msconfig查看开机启动有无异常文件 -
开机启动文件夹:
1 2C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup -
注册表启动项(开始->运行->regedit),特别注意以下三项,检查右侧是否有启动异常的项目,如有请删除:
1 2 3HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
-
-
Linux:
- 查看开机启动项内容:
ls -alt /etc/init.d/(/etc/init.d 是 /etc/rc.d/init.d 的软连接) - 启动项文件:
more /etc/rc.local;ls -l /etc/rc.d/rc3.d/;ll /etc | grep rc
- 查看开机启动项内容:
10. 计划任务排查(定时任务)
-
Windows:
taskschd.msc(或 程序->附件->系统工具->任务计划程序) -
Linux:
-
crontab -l查看当前用户计划任务,是否有后门木马启动信息 -
crontab -u <-l, -r, -e>:-u 指定用户、-l 列出、-r 删除、-e 编辑(编辑的是 /var/spool/cron 下对应用户的 cron 文件,也可以直接修改 /etc/crontab) -
ls -al /etc/cron*、cat /etc/crontab查看 etc 目录任务计划相关文件 -
注意以
.开头的隐藏计划任务文件,要用ls -al查看 -
入侵排查重点目录:
1 2 3 4 5 6 7 8 9/var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/*小技巧:
more /etc/cron.daily/*查看目录下所有文件
-
11. 日志排查
-
Windows:
- 查看防护设备的日志
eventvwr.msc打开日志管理器- 查看暴力破解问题,筛选事件 ID(win2008 为 4625)
-
Linux:
-
cat /root/.bash_history | more查看历史命令(每个账户目录下都有,可直接在 / 下搜索 .bash_history) -
如有
/var/log/secure日志,可进行暴力破解溯源;ubuntu 建议使用lastb和last -
常见日志:
1 2 3 4 5 6/var/log/message 系统启动后的信息和错误日志 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler UUCP和news设备相关日志信息 /var/log/boot.log 进程启动和停止相关的日志消息 -
系统日志相关配置文件为 /etc/rsyslog.conf,主要找 wget/ssh/scp/tar/zip、添加账户修改密码一类的操作
-
-
web 服务器:
-
无论任何 web 服务器,都需要关注 access_log、error_log
-
apache 日志位置:在 httpd.conf 中搜索未被注释的、以 CustomLog 为起始的行即指定了日志的存储位置:
1grep -i CustomLog httpd.conf | grep -v ^# -
IIS 日志默认存储于
%systemroot%\system32\LogFiles\W3SVC,命名为 exYYMMDD.log,也可通过站点属性->W3C扩展日志文件格式->属性->日志文件目录确认
-
-
数据库:
cat mysql.log | grep union
12. 恢复阶段
此阶段以业务方为主,仅提供建议:
- webshell/异常文件清除(相关样本取样截图留存)
- 恢复网络
- 应用功能恢复
- 补丁升级
- 提供安全加固措施
13. 跟踪总结
- 分析事件原因:攻击来源 IP、攻击行为分析(弱口令、可导致命令执行的漏洞等)
- 输出应急报告
- 事后观察
- 提供加固建议
附1:常用安全工具
windows 下常用的安全工具:
| 工具 | 主要功能 | 下载地址 |
|---|---|---|
| 河马 | webshell查杀 | http://www.shellpub.com/ |
| PCHunter | 可查看进程、内核、服务等 | http://www.xuetr.com/ |
| 火绒剑 | 可查看进程、内核、服务等 | https://www.huorong.cn/ |
| D盾 | 查找恶意文件以及webshell | http://www.d99net.net/ |
| ProcessExplorer | Windows系统和应用程序监视工具 | https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer |
| processhacker | 类似ProcessExplorer | https://processhacker.sourceforge.io/downloads.php |
| autoruns | 可查看windows在启动或登录时启动的程序 | https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns |
| microsoft network monitor | 轻量级的无线抓包 | https://www.microsoft.com/en-us/download/details.aspx?id=4865 |
| VirSCAN.org | 在线病毒分析平台 | http://www.virscan.org/language/zh-cn/ |
| 腾讯哈勃分析系统 | 在线病毒分析平台 | https://habo.qq.com/ |
| Jotti | 在线病毒分析平台 | https://virusscan.jotti.org/ |
linux 下不方便操作时,可以把文件拷出来用 windows 的工具检测:
| 工具 | 主要功能 | 下载地址 |
|---|---|---|
| Chkrootkit | 查找检测rootkit后门 | http://www.chkrootkit.org/ |
| rootkit hunter | 查找检测rootkit后门 | http://rkhunter.sourceforge.net/ |
附2:实战经验要点
- 处理前先 kill 掉病毒进程,避免插入的U盘被加密
- 如果日志分析阶段遇到困难,可对代码进行 webshell 查杀,可能会有惊喜
- PC Hunter 数字签名颜色说明:黑色=微软签名的驱动程序;蓝色=非微软签名的驱动程序;红色=驱动检测到的可疑对象(隐藏服务、进程、被挂钩函数)
- ProcessExplorer:子父进程一目了然;属性中的关键信息 [映像]->[路径/命令行/工作目录/自启动位置/父进程/用户/启动时间]、[TCP/IP]、[安全]->[权限];进程启动时为绿色,结束时为红色
- chkrootkit:检测是否被植入后门/木马/rootkit、检测系统命令是否正常、检测登录日志。安装
rpm -ivh chkrootkit-*.rpm,检测chkrootkit -n,发现异常会报出 “INFECTED” 字样 - rkhunter:系统命令(Binary)检测(含 MD5 校验)、Rootkit 检测、本机敏感目录/系统配置/服务异常检测、三方应用版本检测
- RPM check 检查:
./rpm -Va > rpm.log,可以据此发现 ps、pstree、netstat、sshd 等系统关键进程是否被篡改
- 原文作者:Anttu
- 原文链接:https://anTtutu.github.io/post/2021-09-18-linux-emergency-response/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。