一、动态分析工作目标
动态分析必须要在隔离且受控的环境中执行可疑样本,使用虚拟机,通过监控可疑样本与操作系统、网络和其它进程的交互来理解其功能和意图。
- 观测真实行为:能观察到静态分析难以发现的运行时行为,如解密后的代码、动态生成的指令、真实的网络目标等。
- 绕过混淆/加壳:恶意软件执行时通常会自我解密或脱壳,动态分析可以直接观察其解开后的行为。
- 捕获IOCs:能够捕获实际产生的文件、注册表项、网络连接等IOC。
- 你说的我都懂,所以为什么不直接传VT、微步等云沙箱 如果你确定这个样本里没有敏感信息,或者这是个人电脑里的文件,当然可以直接上传到云沙箱里分析,简单快捷,而且还更有效,但是如果是公司(或客户)设备中发现的可疑样本,直接上传云沙箱可能会存在法律风险(安全做法为,通过样本哈希在网上查询相关信息,如果哈希没有任何记录,则再进行动态分析,这样节约点时间)。
二、动态分析环境准备与工具
- 隔离虚拟机 (VM):
- 安装一些常用软件 (如 Office, PDF阅读器, 浏览器) 以模拟真实用户环境。某些恶意软件需要特定环境才激活,之前也见过一些APT样本,会针对目标主机进行编译特种木马,比如在运行之处检查用户名是否一致,或者当前主机是否存在特有目录等针对性环境,如果样本始终无法运行则需要深度分析。
- 关键:配置VM网络为“仅主机模式(Host-Only)”或使用特定虚拟网卡连接到伪造网络服务。严禁桥接或NAT到生产网络,小心调试样本网络通联出去,然后被上级部门通报。
- 核心监控工具(完整见基础知识库:常用开源工具合集):
- 进程监控: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,确保伪造服务运行正常。
- 运行 RegShot,进行第一次快照(
- 样本准备: 将待分析样本安全地传入VM中。
阶段二:样本执行与行为观察
- 执行样本: 使用管理员权限运行样本。
- 初步观察 (前几秒/分钟):
- 样本运行后进程是否立即消失,还是继续运行?判断是否运行成功。
- 是否有新的进程被创建?
- 是否有可见的UI界面或错误提示?如果存在错误提示,可能运行失败。
- 网络监控工具是否立即有连接尝试?
- 持续观察与交互:
- 给予样本一定的运行时间 (某些恶意软件有延时执行、睡眠等逻辑)。
- 如果样本有UI,尝试进行一些交互操作。
- 观察ProcMon中是否有大量重复性的可疑操作。
- 结束执行 (根据情况):
- 等待一段时间后,如果样本仍在运行,可尝试正常关闭;如果无法关闭,准备强制结束或直接关闭VM。
阶段三:数据收集与状态对比
- 停止监控:
- 停止 Process Monitor 捕获,并保存日志 (
.PML文件)。 - 停止 Wireshark/Fiddler 捕获,并保存日志 (
.pcapng,.saz文件)。
- 停止 Process Monitor 捕获,并保存日志 (
- 注册表对比: 运行 RegShot,进行第二次快照 (
2nd shot),然后点击Compare生成对比报告。 - 文件系统对比检查:
- 通过ProcMonitor检查常见敏感目录是否有新创建或修改的文件 (如
C:\Users\<User>\AppData,C:\ProgramData,C:\Windows\Temp,%TEMP%, 以及样本原始路径)。 - 检查启动文件夹。
- 通过ProcMonitor检查常见敏感目录是否有新创建或修改的文件 (如
- 系统配置检查:(可以使用autorun工具)
- 检查计划任务 (Task Scheduler) 是否有新增项。
- 检查服务 (Services.msc) 是否有新增或被修改的服务。
- 恢复快照: 分析完毕后,将VM恢复到运行样本前的干净快照状态
四、动态分析重点关注对象与指标
在分析ProcMon、RegShot、Wireshark等工具的日志时,重点关注以下对象和行为:
1. 进程活动
- 创建新进程:
- 关注点:样本创建了哪些子进程?命令行参数是什么?
- 可疑迹象:
cmd.exe /c ...,powershell.exe -enc ...(执行编码命令),rundll32.exe xxx.dll,FunctionName,wscript.exe,cscript.exe执行脚本,调用系统工具进行恶意操作。
- 进程注入:
- 关注点:样本是否向其他合法进程 (如
explorer.exe,svchost.exe, 浏览器进程) 写入内存 (WriteProcessMemory) 并创建远程线程 (CreateRemoteThread)? - 可疑迹象:ProcMon中对其他进程的
Thread Create操作,调试器中观察到这些API调用。
- 关注点:样本是否向其他合法进程 (如
- 异常父子进程关系:
- 关注点:例如,Office文档创建了
powershell.exe进程。
- 关注点:例如,Office文档创建了
- 进程终止:
- 关注点:是否尝试终止安全软件进程或其他关键系统进程?
- 互斥体 (Mutex) 创建/打开:
- 关注点:恶意软件常用互斥体确保单实例运行,或作为感染标记。名称可能具有特征。
2. 文件系统活动
- 文件创建/释放 (Drops):
- 关注点:在哪些目录创建了文件 (如
Temp,AppData,ProgramData,Public, 启动目录)?文件名和类型是什么 (如.exe,.dll,.bat,.ps1, 伪装的文档)? - 可疑迹象:随机文件名,隐藏属性,双扩展名,释放已知恶意工具。
- 关注点:在哪些目录创建了文件 (如
- 文件删除:
- 关注点:样本是否自删除以清除痕迹?是否删除重要文件或日志?
- 文件修改:
- 关注点:是否修改系统配置文件?是否加密用户文档 (勒索行为)?
- 文件读取:
- 关注点:是否尝试读取敏感配置文件、浏览器缓存/Cookie、用户文档?
3. 注册表活动
- 持久化机制 (Persistence):
- 关注点:是否在常见的自启动位置创建/修改键值?
- 可疑位置:
HKCU\Software\Microsoft\Windows\CurrentVersion\RunHKLM\Software\Microsoft\Windows\CurrentVersion\RunRunOnce,RunServices,RunServicesOnceWinlogon(Userinit, Shell)Image File Execution Options(IFEO,可用于劫持)- COM劫持相关键 (
InprocServer32,LocalServer32) AppInit_DLLs
- 配置更改:
- 关注点:是否禁用安全功能 (如UAC
EnableLUA, 防火墙, Windows DefenderDisableAntiSpyware)?修改浏览器设置?
- 关注点:是否禁用安全功能 (如UAC
- 信息存储:
- 关注点:是否将配置信息、盗取数据存储在注册表中?
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的命令行是什么?
- 关注点:除了静态分析中提到的API,动态观察其参数和返回值。例如
- 字符串解密/反混淆:
- 关注点:在调试器中,留意循环解密数据、XOR操作等,尝试在内存中找到解密后的URL、命令等。
- 反分析技术触发:
- 关注点:是否调用
IsDebuggerPresent,GetTickCount(进行时间差比较)?是否尝试检测VMware/VirtualBox的特定驱动、服务、注册表键或MAC地址?
- 关注点:是否调用
- 内存分配与保护:
- 关注点:
VirtualAlloc(Ex)分配内存,VirtualProtect(Ex)修改内存权限 (如从RW变为RX,准备执行代码)。
- 关注点:
- 异常处理:
- 关注点:是否设置异常处理器 (
SetUnhandledExceptionFilter),利用异常进行反调试或控制流劫持。
- 关注点:是否设置异常处理器 (
© 版权声明
渗透云记的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
渗透云记拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。详情见本站的“免责声明”如果有侵权之处请第一时间联系我们删除。敬请谅解!E-mail:admin@encenc.com
THE END















请登录后查看评论内容