可疑样本动态调试基本流程

一、动态分析工作目标

动态分析必须要在隔离且受控的环境中执行可疑样本,使用虚拟机,通过监控可疑样本与操作系统、网络和其它进程的交互来理解其功能和意图。

  • 观测真实行为:能观察到静态分析难以发现的运行时行为,如解密后的代码、动态生成的指令、真实的网络目标等。
  • 绕过混淆/加壳:恶意软件执行时通常会自我解密或脱壳,动态分析可以直接观察其解开后的行为。
  • 捕获IOCs:能够捕获实际产生的文件、注册表项、网络连接等IOC。

  • 你说的我都懂,所以为什么不直接传VT、微步等云沙箱 如果你确定这个样本里没有敏感信息,或者这是个人电脑里的文件,当然可以直接上传到云沙箱里分析,简单快捷,而且还更有效,但是如果是公司(或客户)设备中发现的可疑样本,直接上传云沙箱可能会存在法律风险(安全做法为,通过样本哈希在网上查询相关信息,如果哈希没有任何记录,则再进行动态分析,这样节约点时间)。

二、动态分析环境准备与工具

  1. 隔离虚拟机 (VM)
    • 安装一些常用软件 (如 Office, PDF阅读器, 浏览器) 以模拟真实用户环境。某些恶意软件需要特定环境才激活,之前也见过一些APT样本,会针对目标主机进行编译特种木马,比如在运行之处检查用户名是否一致,或者当前主机是否存在特有目录等针对性环境,如果样本始终无法运行则需要深度分析。
    • 关键:配置VM网络为“仅主机模式(Host-Only)”或使用特定虚拟网卡连接到伪造网络服务。严禁桥接或NAT到生产网络,小心调试样本网络通联出去,然后被上级部门通报。
  2. 核心监控工具(完整见基础知识库:常用开源工具合集):
    • 进程监控:Process Monitor (ProcMon) – 监控文件系统、注册表、网络和进程/线程活动。
    • 网络监控:Wireshark (原始流量捕获), Fiddler (HTTP/HTTPS流量代理和解密), INetSim (伪造互联网服务,如DNS, HTTP, SMTP等,用于诱导恶意软件连接并记录其请求),NetworkMonitor(监控每个进程的网络活动)。
    • 注册表快照:RegShot – 对比运行样本前后注册表的变化。
    • 调试器 (可选,用于深度调试):x32dbg/x64dbg, OllyDbg (32位), WinDbg。
    • api监控器:特定API Logger工具,或调试器的API断点功能。
    • PE分析工具:Process Hacker(SystemInformer), PEStudio (也可用于动态行为概览)。

三、动态分析与调试基本流程

阶段一:准备与预设

  • 环境确认: 确保VM完全隔离,网络配置正确。
  • 拍摄快照: 对干净的VM状态拍摄快照 (Snapshot)。
  • 启动监控:
    • 运行 RegShot,进行第一次快照(1st shot)。
    • 启动 Process Monitor,设置合理的过滤器(例如,排除系统正常进程,仅包含可疑样本进程及其子进程),开始捕获。
    • 启动 Wireshark/Fiddler/NetworkMonitor,开始捕获网络流量。
    • (如果使用) 启动 INetSim,确保伪造服务运行正常。
  • 样本准备: 将待分析样本安全地传入VM中。

阶段二:样本执行与行为观察

  • 执行样本: 使用管理员权限运行样本。
  • 初步观察 (前几秒/分钟):
    • 样本运行后进程是否立即消失,还是继续运行?判断是否运行成功。
    • 是否有新的进程被创建?
    • 是否有可见的UI界面或错误提示?如果存在错误提示,可能运行失败。
    • 网络监控工具是否立即有连接尝试?
  • 持续观察与交互:
    • 给予样本一定的运行时间 (某些恶意软件有延时执行、睡眠等逻辑)。
    • 如果样本有UI,尝试进行一些交互操作。
    • 观察ProcMon中是否有大量重复性的可疑操作。
  • 结束执行 (根据情况):
    • 等待一段时间后,如果样本仍在运行,可尝试正常关闭;如果无法关闭,准备强制结束或直接关闭VM。

阶段三:数据收集与状态对比

  • 停止监控:
    • 停止 Process Monitor 捕获,并保存日志 (.PML 文件)。
    • 停止 Wireshark/Fiddler 捕获,并保存日志 (.pcapng.saz 文件)。
  • 注册表对比: 运行 RegShot,进行第二次快照 (2nd shot),然后点击 Compare 生成对比报告。
  • 文件系统对比检查:
    • 通过ProcMonitor检查常见敏感目录是否有新创建或修改的文件 (如 C:\Users\<User>\AppDataC:\ProgramDataC:\Windows\Temp%TEMP%, 以及样本原始路径)。
    • 检查启动文件夹。
  • 系统配置检查:(可以使用autorun工具)
    • 检查计划任务 (Task Scheduler) 是否有新增项。
    • 检查服务 (Services.msc) 是否有新增或被修改的服务。
  • 恢复快照: 分析完毕后,将VM恢复到运行样本前的干净快照状态

四、动态分析重点关注对象与指标

在分析ProcMon、RegShot、Wireshark等工具的日志时,重点关注以下对象和行为:

1. 进程活动

  • 创建新进程:
    • 关注点:样本创建了哪些子进程?命令行参数是什么?
    • 可疑迹象:cmd.exe /c ...powershell.exe -enc ... (执行编码命令), rundll32.exe xxx.dll,FunctionNamewscript.execscript.exe 执行脚本,调用系统工具进行恶意操作。
  • 进程注入:
    • 关注点:样本是否向其他合法进程 (如 explorer.exesvchost.exe, 浏览器进程) 写入内存 (WriteProcessMemory) 并创建远程线程 (CreateRemoteThread)?
    • 可疑迹象:ProcMon中对其他进程的 Thread Create 操作,调试器中观察到这些API调用。
  • 异常父子进程关系:
    • 关注点:例如,Office文档创建了 powershell.exe 进程。
  • 进程终止:
    • 关注点:是否尝试终止安全软件进程或其他关键系统进程?
  • 互斥体 (Mutex) 创建/打开:
    • 关注点:恶意软件常用互斥体确保单实例运行,或作为感染标记。名称可能具有特征。

2. 文件系统活动

  • 文件创建/释放 (Drops):
    • 关注点:在哪些目录创建了文件 (如 TempAppDataProgramDataPublic, 启动目录)?文件名和类型是什么 (如 .exe.dll.bat.ps1, 伪装的文档)?
    • 可疑迹象:随机文件名,隐藏属性,双扩展名,释放已知恶意工具。
  • 文件删除:
    • 关注点:样本是否自删除以清除痕迹?是否删除重要文件或日志?
  • 文件修改:
    • 关注点:是否修改系统配置文件?是否加密用户文档 (勒索行为)?
  • 文件读取:
    • 关注点:是否尝试读取敏感配置文件、浏览器缓存/Cookie、用户文档?

3. 注册表活动

  • 持久化机制 (Persistence):
    • 关注点:是否在常见的自启动位置创建/修改键值?
    • 可疑位置:
      • HKCU\Software\Microsoft\Windows\CurrentVersion\Run
      • HKLM\Software\Microsoft\Windows\CurrentVersion\Run
      • RunOnceRunServicesRunServicesOnce
      • Winlogon (Userinit, Shell)
      • Image File Execution Options (IFEO,可用于劫持)
      • COM劫持相关键 (InprocServer32LocalServer32)
      • AppInit_DLLs
  • 配置更改:
    • 关注点:是否禁用安全功能 (如UAC EnableLUA, 防火墙, Windows Defender DisableAntiSpyware)?修改浏览器设置?
  • 信息存储:
    • 关注点:是否将配置信息、盗取数据存储在注册表中?

4. 网络活动 (Network Activity)

  • 连接尝试/建立:
    • 关注点:连接到哪些IP地址和域名?目标端口是什么 (常见HTTP/80, HTTPS/443,或非常见端口)?
    • 可疑迹象:连接到已知恶意IP/域名 (可查威胁情报平台),连接到地理位置可疑的IP,硬编码IP。
  • DNS查询:
    • 关注点:查询了哪些域名?是否存在DGA (Domain Generation Algorithm) 特征的随机域名?
  • 数据传输:
    • 关注点:HTTP GET/POST请求的内容是什么?(URL路径, User-agent, 请求体),是否有规律性的“心跳”连接 (Beaconing)?传输的数据是否加密或编码?
    • 可疑迹象:User-Agent异常,向外发送敏感系统信息 (主机名, 用户名, OS版本),POST大量数据。
  • 协议使用:
    • 关注点:是否使用非标准端口进行标准协议通信 (如在8080端口进行HTTP通信)?或使用HTTP/HTTPS传输非Web数据?

5. API调用与代码行为 (使用调试器或API监控器时)

  • 关键Windows API调用:
    • 关注点:除了静态分析中提到的API,动态观察其参数和返回值。例如 LoadLibrary 加载了哪个DLL?CreateProcess 的命令行是什么?
  • 字符串解密/反混淆:
    • 关注点:在调试器中,留意循环解密数据、XOR操作等,尝试在内存中找到解密后的URL、命令等。
  • 反分析技术触发:
    • 关注点:是否调用 IsDebuggerPresentGetTickCount (进行时间差比较)?是否尝试检测VMware/VirtualBox的特定驱动、服务、注册表键或MAC地址?
  • 内存分配与保护:
    • 关注点:VirtualAlloc(Ex) 分配内存,VirtualProtect(Ex) 修改内存权限 (如从RW变为RX,准备执行代码)。
  • 异常处理:
    • 关注点:是否设置异常处理器 (SetUnhandledExceptionFilter),利用异常进行反调试或控制流劫持。
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容