跳转至

数字取证和事件响应

数字取证和事件响应(Digital Forensics and Incident Response, DFIR),是一个专注于识别、补救和调查网络安全事件的专业领域,包括收集、保存和分析取证证据,以描绘事件的完整、详细过程的几个方面。

标准流程和步骤

基本步骤

应急响应操作可分为以下几个步骤:收集信息 -> 判断类型 -> 深入分析 -> 清理处置 -> 产出报告。[1]

  • 收集信息:收集客户、业务方反馈的信息,各类安全设备/系统的安全告警
  • 判断类型:结合已有信息,判断是否为安全事件,确认后启动应急响应标准流程。以及初步何种安全事件(勒索、挖矿、断网、DoS等),根据安全事件类型来调用相关资源和工具启动调查。
  • 深入分析:通过以下几个方面的初步分析,复原攻击路径、攻击手法,找出确定的样本和网络外联信息,便于下一步的清理处置(注意,为即使止损,分析阶段与清理处置过程可以并行)
    • 日志分析
    • 进程分析
    • 启动项分析
    • 样本分析
  • 清理处置:进行入侵的深入分析、固定证据后。清理相关进程、文件;阻断网络连接;恢复启动项、业务服务;对软件系统进行升级或补丁修复
  • 产出报告:整理并输出完整的安全事件报告

PDCERF模型

PDCERF 方法论是一种防范使用的方法,其将应急响应分成六个阶段,分别是准备阶段(Preparation)、检测阶段(Detection)、抑制阶段(Containment)、根除阶段(Eradication)、恢复阶段(Reconvery)、总结阶段(Follow-up)。[2]

image-20220809192046803

图: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/*

排查异常文件

  1. 查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性

  2. 针对可疑文件可以使用stat查看创建修改时间

  3. 发现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日志进行排查:

    1. 定位时间和范围:扫描WebShell位置;定位文件创建的时间;检查Web根目录.htaccess文件
    1. Web日志审计:例如查看access.log(/var/log/nginx),下载到本地审计
    1. 漏洞分析:分析可能存在漏洞的地方,复现漏洞GetShell。
    1. 漏洞修复:清除WebShell并修复漏洞
    1. 对系统和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