数字取证和事件响应
数字取证和事件响应(Digital Forensics and Incident Response, DFIR),是一个专注于识别、补救和调查网络安全事件的专业领域,包括收集、保存和分析取证证据,以描绘事件的完整、详细过程的几个方面。
标准流程和步骤
基本步骤
应急响应操作可分为以下几个步骤:收集信息 -> 判断类型 -> 深入分析 -> 清理处置 -> 产出报告。[1]
- 收集信息:收集客户、业务方反馈的信息,各类安全设备/系统的安全告警
- 判断类型:结合已有信息,判断是否为安全事件,确认后启动应急响应标准流程。以及初步何种安全事件(勒索、挖矿、断网、DoS等),根据安全事件类型来调用相关资源和工具启动调查。
- 深入分析:通过以下几个方面的初步分析,复原攻击路径、攻击手法,找出确定的样本和网络外联信息,便于下一步的清理处置(注意,为即使止损,分析阶段与清理处置过程可以并行)
- 日志分析
- 进程分析
- 启动项分析
- 样本分析
- 清理处置:进行入侵的深入分析、固定证据后。清理相关进程、文件;阻断网络连接;恢复启动项、业务服务;对软件系统进行升级或补丁修复
- 产出报告:整理并输出完整的安全事件报告
PDCERF模型
PDCERF 方法论是一种防范使用的方法,其将应急响应分成六个阶段,分别是准备阶段(Preparation)、检测阶段(Detection)、抑制阶段(Containment)、根除阶段(Eradication)、恢复阶段(Reconvery)、总结阶段(Follow-up)。[2]
图:PDCERF流程图
- 准备阶段:准备阶段以预防为主。
- 主要工作涉及识别机构、企业的风险,建立安全政策,建立协作体系和应急制度
- 按照安全政策配置安全设备和软件,为应急响应与恢复准备主机
- 依照网络安全措施,进行一些准备工作,例如,扫描、风险分析、打补丁等
- 如有条件且得到许可,可建立监控设施,建立数据汇总分析体系,制定能够实现应急响应目标的策略和规程,建立信息沟通渠道,建立能够集合起来处理突发事件的体系
- 检测阶段:检测阶段主要检测事件是已经发生的还是正在进行中的,以及事件产生的原因
- 确定事件性质和影响的严重程度,以及预计采用什么样的专用资源来修复
- 选择检测工具,分析异常现象,提高系统或网络行为的监控级别,估计安全事件的范围
- 通过汇总,查看是否发生了全网的大规模事件,从而确定应急等级及其对应的应急方案
- 抑制阶段:抑制阶段的主要任务是限制攻击 / 破坏波及的范围,同时也是在降低潜在的损失。所有的抑制活动都是建立在能正确检测事件的基础上的,抑制活动必须结合检测阶段发现的安全事件的现象、性质、范围等属性,制定并实施正确的抑制策略。
- 根除阶段:根除阶段的主要任务是通过事件分析找出根源并彻底根除,以避免攻击者再次使用相同的手段攻击系统,引发安全事件。并加强宣传,公布危害性和解决办法,呼吁用户解决终端问题。加强监测工作,发现和清理行业与重点部门问题。
- 恢复阶段:恢复阶段的主要任务是把被破坏的信息彻底还原到正常运作状态。
- 确定使系统恢复正常的需求内容和时间表,从可信的备份介质中恢复用户数据,打开系统和应用服务,恢复系统网络连接,验证恢复系统,观察其他的扫描,探测可能表示入侵者再次侵袭的信号
- 一般来说,要想成功地恢复被破坏的系统,需要干净的备份系统,编制并维护系统恢复的操作手册,而且在系统重装后需要对系统进行全面的安全加固
- 总结阶段:总结阶段的主要任务是回顾并整合应急响应过程的相关信息,进行事后分析总结和修订安全计划、政策、程序,并进行训练,以防止入侵的再次发生。基于入侵的严重性和影响,确定是否进行新的风险分析,给系统和网络资产制作一个新的目录清单。这一阶段的工作对于准备阶段工作的开展起到重要的支持作用。
主机侧常用命令
以下整理自狼组安全团队公开知识库[3]
确认命令篡改
常见命令可能会被非法篡改,如ls、ps、netstat命令被恶意替换为rm -rf。可以利用stat查看文件详细信息,通过比对时间的方式判断命令是否被篡改。另外也可以使用外部指令工具集,如:BUSYBOX
查看账号信息
# 1、查询特权用户特权用户(uid 为0)
awk -F: '$3==0{print $1}' /etc/passwd
# 2、查询可以远程登录的帐号信息
awk '/\$1|\$6/{print $1}' /etc/shadow
# 3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
# 4、禁用或删除多余及可疑的帐号
usermod -L user #禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
userdel -r user #将删除user用户,并且将/home目录下的user目录一并删除
查看历史命令
cat ~/bash_history >> history.txt
检查网络链接
netstat -antlp|more
#查看 PID 所对应的进程文件路径
file /proc/$PID/exe
检查异常进程
ps aux | grep pid
检查开机启动项
系统运行级别示意图:
运行级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户模式,可以想象为windows的安全模式,主要用于系统修复 |
2 | 不完全的命令行模式,不含NFS服务 |
3 | 完全的命令行模式,就是标准字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启动 |
# 系统默认允许级别
vi /etc/inittab
id=3:initdefault #系统开机后直接进入哪个运行级别
当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d
目录下,然后在/etc/rc.d/rc*.d
中建立软链接即可
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
# S开头代表加载时自启动
检查定时任务
ls -al /var/spool/cron/*
cat /etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
# 查看目录下所有文件
more /etc/cron.d/*
/etc/anacrontab
/var/spool/anacron/*
排查异常文件
-
查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性
-
针对可疑文件可以使用
stat
查看创建修改时间 -
发现WebShell、远控木马的创建时间
# 如何找出同一时间范围内创建的文件?
find ./ -iname "*" -atime 1 -type f
# 找出 ./ 下一天前访问过的文件
排查系统日志
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
日志文件 | 说明 |
---|---|
/var/log/cron | 记录系统定时任务相关的日志 |
/var/log/message | 记录Linux操作系统常见的系统和服务错误信息(首要检查对象) |
/var/log/btmp |
记录错误登录(登陆失败)*日志;使用*lastb命令查看 |
/var/log/lastlog |
记录系统中所有用户最后一次成功登录时间,使用lastlog命令查看 |
/var/log/wtmp |
永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件;用last命令来查看 |
/var/log/utmp | 只记录当前登录用户的信息;使用w,who,users等命令来查询 |
/var/log/secure | 记录验证和授权方面的信息,如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码 |
# 查询ssh登录记录
more /var/log/secure
# 安装软件的日志-> Centos
/var/log/yum.log
# 安装软件的日志-> Ubuntu
/var/log/apt/
/var/log/syslog:只记录警告信息,常常是系统出问题的信息;
syslog是Linux系统默认的日志守护进程
默认的syslog配置文件是/etc/sysctl.conf文件
syslog不可以使用vi等工具直接查看,它是二进制文件,使用 lastlog 查看
默认Centos,Fedora不生成该日志文件,但可以配置让系统生成该日志文件
/etc/rsyslog.conf`文件中加上:`*.warning /var/log/syslog
该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息
正确清空syslog日志的方式
cat /dev/null > /etc/init.d/syslog
排查Web日志
在对WEB日志进行安全分析时,一般可以按照两种思路展开,逐步深入,还原整个攻击过程。
- 第一种:确定入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。
- 第二种:攻击者在入侵网站后,通常会留下后门维持权限,以方便再次访问,我们可以找到该文件,并以此为线索来展开分析。
可统计项包括:
-
统计爬虫
-
统计浏览器
-
IP统计
-
统计网段
-
统计域名
-
HTTP Status
-
URL统计
-
文件流量统计
-
URL访问统计
排查Webshell
使用工具进行排查:
根据Web日志进行排查:
-
- 定位时间和范围:扫描WebShell位置;定位文件创建的时间;检查Web根目录.htaccess文件
-
- Web日志审计:例如查看access.log(/var/log/nginx),下载到本地审计
-
- 漏洞分析:分析可能存在漏洞的地方,复现漏洞GetShell。
-
- 漏洞修复:清除WebShell并修复漏洞
-
- 对系统和Web应用进行安全加固
DFIR常用工具集
可参考:《应急响应大合集》
DFIR实战案例
可参考:《应急响应实战笔记,Emergency-Response-Notes》
Reference
[1] 应急响应的整体思路和基本流程,千里目安全实验室,https://www.secrss.com/articles/7374
[2] 什么是 PDCERF 方法,房乐,https://www.wangan.com/wenda/2829
[3] 狼组安全团队公开知识库,https://wiki.wgpsec.org/knowledge/hw/linux-emergency-response.html