恶意软件行为分析与沙箱检测
恶意软件行为分析与沙箱检测
恶意软件分析是数字取证和事件响应中最关键的技术之一。随着恶意软件变得越来越复杂,传统的基于签名的检测方法已经无法应对零日威胁和高级持续性威胁(APT)。恶意软件行为分析和沙箱技术通过在隔离环境中执行可疑样本并监控其行为,提供了检测未知威胁和提取取证证据的强大能力。
已有文章 恶意样本分析基础 覆盖了恶意软件分析的基础方法。本文换一个角度:不讨论通用的恶意软件分析,而是聚焦于恶意软件行为分析的完整工作流,深入分析静态分析、动态分析、沙箱技术、逃逸技术与反制措施、IOC 提取、机器学习检测等技术,以及如何从恶意软件样本中提取关键取证证据。
0x01 恶意软件分析的基础方法
1. 静态分析
静态分析是在不执行恶意软件的情况下分析其代码和行为的技术。
文件元数据分析
# 提取文件基本信息
file malware.exe
md5sum malware.exe
sha256sum malware.exe
# 提取 PE 文件信息
pefile malware.exe
取证要点:
- 文件类型(PE、ELF、Mach-O、脚本等)
- 文件大小和哈希值
- 编译时间戳
- 导入/导出函数
- 字符串和注释
字符串分析
# 提取可打印字符串
strings malware.exe | grep -i "http\|ftp\|smtp\|password\|key"
# 提取 Unicode 字符串
strings -el malware.exe
取证要点:
- URL 和 IP 地址(C2 服务器)
- 文件路径和注册表键
- 加密密钥和密码
- 错误消息和调试信息
反汇编和反编译
# 使用 IDA Pro 或 Ghidra 进行反汇编
ida malware.exe
ghidra malware.exe
# 使用 objdump 进行简单反汇编
objdump -d malware.exe
取证要点:
2. 动态分析
动态分析是在隔离环境中执行恶意软件并监控其行为的技术。
进程监控
# 使用 Process Monitor 监控进程活动
procmon.exe /BackingFile monitor.pml
# 使用 Sysmon 监控系统活动
sysmon.exe -i config.xml
取证要点:
文件系统和注册表监控
# 使用 Process Monitor 监控文件和注册表活动
# 过滤条件:
# - Operation: CreateFile, WriteFile, RegSetValue
# - Path: C:\*, HKLM\*, HKCU\*
取证要点:
- 文件创建、修改、删除
- 注册表键创建、修改、删除
- 持久化机制(Run 键、服务、计划任务)
网络监控
# 使用 Wireshark 捕获网络流量
wireshark -i eth0 -w capture.pcap
# 使用 tcpdump 捕获网络流量
tcpdump -i eth0 -w capture.pcap
取证要点:
- DNS 查询(C2 域名)
- HTTP/HTTPS 请求(C2 通信)
- 数据传输(数据外泄)
- 连接的 IP 地址和端口
0x02 沙箱技术
1. 沙箱架构
沙箱是一个隔离的虚拟环境,用于安全地执行和分析可疑样本。
核心组件
- 虚拟化层:VMware、VirtualBox、QEMU
- 监控层:API Hook、系统调用拦截
- 分析层:行为分析、IOC 提取
- 报告层:生成分析报告
沙箱类型
| 类型 | 优点 | 缺点 |
|---|
| 本地沙箱 | 完全控制、可定制 | 需要维护、资源消耗大 |
| 云沙箱 | 易于使用、可扩展 | 数据隐私问题、可能被检测 |
| 混合沙箱 | 灵活性、可扩展性 | 复杂度高 |
2. Cuckoo Sandbox
Cuckoo Sandbox 是最流行的开源恶意软件分析沙箱。
架构
Cuckoo Host (分析器)
↓
Cuckoo Guest (虚拟机)
↓
Malware Sample (恶意软件样本)
使用方法
# 安装 Cuckoo
pip install cuckoo
# 初始化 Cuckoo
cuckoo init
# 启动 Cuckoo
cuckoo
# 提交样本进行分析
cuckoo submit /path/to/malware.exe
分析报告
Cuckoo 生成详细的分析报告,包括:
- 行为日志(API 调用、文件操作、注册表操作)
- 网络流量(PCAP 文件)
- 截图(桌面活动)
- 内存转储
- IOC(IP 地址、域名、文件哈希)
3. ANY.RUN
ANY.RUN 是一个交互式云沙箱,允许分析师在分析过程中与恶意软件交互。
特点
- 交互式分析:可以在分析过程中点击、输入、执行操作
- 实时可视化:实时显示恶意软件的行为
- 协作分析:多个分析师可以同时分析同一个样本
- 高级功能:支持自定义环境、绕过检测
使用方法
# 通过 Web 界面提交样本
# https://any.run/
# 使用 API 提交样本
curl -X POST "https://api.any.run/v1/analysis" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@malware.exe"
4. Joe Sandbox
Joe Sandbox 是一个企业级恶意软件分析平台,提供深度分析功能。
特点
- 深度分析:支持多种操作系统和文件类型
- 逃逸检测:检测恶意软件的沙箱逃逸技术
- 威胁情报集成:与 MITRE ATT&CK 框架集成
- 自动化分析:支持批量分析和自动化工作流
使用方法
# 通过 Web 界面提交样本
# https://www.joesandbox.com/
# 使用 API 提交样本
curl -X POST "https://api.joesandbox.com/v2/analysis/submit" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "sample=@malware.exe"
5. 其他沙箱工具
| 工具 | 类型 | 特点 |
|---|
| Hybrid Analysis | 云沙箱 | 免费、快速、易于使用 |
| VMRay | 企业沙箱 | 逃逸检测、深度分析 |
| FireEye AX | 企业沙箱 | 硬件加速、多向量分析 |
| Cisco Threat Grid | 云沙箱 | 威胁情报集成 |
| Palo Alto WildFire | 云沙箱 | 与防火墙集成 |
0x03 恶意软件逃逸技术
1. 沙箱检测
恶意软件使用各种技术检测是否在沙箱中运行。
虚拟机检测
// 检查虚拟机特征
bool IsVMware() {
unsigned int id;
__asm {
push eax
push ebx
push ecx
push edx
mov eax, 'VMXh'
mov ecx, 0Ah
mov dx, 'VX'
in eax, dx
cmp ebx, 'VMXh'
setz [id]
pop edx
pop ecx
pop ebx
pop eax
}
return id == 1;
}
检测方法:
- 检查硬件特征(MAC 地址、BIOS 序列号)
- 检查虚拟机进程(vmtoolsd.exe、vmwaretray.exe)
- 检查注册表键(VMware、VirtualBox)
用户活动检测
// 检查用户活动
bool IsUserActive() {
LASTINPUTINFO lii;
lii.cbSize = sizeof(LASTINPUTINFO);
GetLastInputInfo(&lii);
DWORD idleTime = GetTickCount() - lii.dwTime;
return idleTime < 60000; // 1 分钟内有用户活动
}
检测方法:
- 检查鼠标和键盘活动
- 检查打开的窗口数量
- 检查最近打开的文件
时间检测
// 检查执行时间
bool IsFastExecution() {
DWORD start = GetTickCount();
// 执行某些操作
Sleep(1000);
DWORD end = GetTickCount();
return (end - start) < 500; // 执行时间过短
}
检测方法:
2. 反制措施
沙箱使用各种技术绕过恶意软件的逃逸检测。
环境伪装
- 修改 MAC 地址和 BIOS 序列号
- 安装常用软件(Office、浏览器)
- 创建用户文件和浏览历史
- 模拟用户活动(鼠标移动、键盘输入)
时间控制
多环境分析
- 使用多个不同的虚拟机环境
- 随机化环境配置
- 使用裸机分析
0x04 IOC 提取
1. IOC 类型
IOC(Indicator of Compromise)是用于识别恶意活动的取证证据。
网络 IOC
- IP 地址(C2 服务器)
- 域名(C2 域名)
- URL(恶意链接)
- 端口(监听端口)
文件 IOC
- 文件哈希(MD5、SHA1、SHA256)
- 文件名(恶意文件名)
- 文件路径(恶意文件路径)
- 文件大小(恶意文件大小)
主机 IOC
- 注册表键(持久化机制)
- 服务名称(恶意服务)
- 计划任务(恶意任务)
- 进程名称(恶意进程)
2. IOC 提取方法
网络 IOC 提取
# 从 PCAP 文件中提取网络 IOC
tshark -r capture.pcap -Y "dns" -T fields -e dns.qry.name
tshark -r capture.pcap -Y "http.request" -T fields -e http.host -e http.request.uri
tshark -r capture.pcap -Y "tcp" -T fields -e ip.src -e ip.dst -e tcp.dstport
文件 IOC 提取
# 提取文件哈希
md5sum dropped_file.exe
sha256sum dropped_file.exe
# 提取文件信息
file dropped_file.exe
strings dropped_file.exe | grep -i "http\|ftp\|smtp"
主机 IOC 提取
# 提取注册表键
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
# 提取服务信息
sc query
Get-Service | Where-Object { $_.Status -eq "Running" }
# 提取计划任务
schtasks /query /fo LIST
3. IOC 管理
IOC 格式
{
"indicators": [
{
"type": "ip",
"value": "192.168.1.100",
"description": "C2 server"
},
{
"type": "domain",
"value": "malware.attacker.com",
"description": "C2 domain"
},
{
"type": "hash",
"value": "abc123...",
"algorithm": "sha256",
"description": "Malware hash"
}
]
}
IOC 共享
- STIX/TAXII 格式
- MISP 平台
- OpenIOC 格式
0x05 机器学习在恶意软件检测中的应用
1. 特征提取
静态特征
- API 调用序列
- 导入/导出函数
- 字符串特征
- PE 文件特征
动态特征
- 行为序列(API 调用、文件操作、注册表操作)
- 网络流量特征(连接模式、数据传输量)
- 资源使用(CPU、内存、网络)
2. 机器学习模型
分类模型
- 决策树(Decision Tree)
- 随机森林(Random Forest)
- 支持向量机(SVM)
- 神经网络(Neural Network)
聚类模型
3. 应用场景
恶意软件分类
- 家族分类(Emotet、TrickBot、Cobalt Strike)
- 类型分类(木马、蠕虫、勒索软件)
- 平台分类(Windows、Linux、macOS)
异常检测
0x06 公开案例中的恶意软件分析
案例一:Emotet — 多阶段载荷分析
Emotet 是一个多阶段恶意软件,使用复杂的载荷传递机制。
分析方法:
- 使用 Cuckoo Sandbox 分析初始载荷(Word 文档)
- 提取 VBA 宏代码
- 分析第二阶段载荷(PowerShell 脚本)
- 分析第三阶段载荷(DLL 文件)
- 提取 C2 通信协议和加密算法
取证启示:多阶段恶意软件需要分阶段分析,每个阶段都需要不同的分析技术。
案例二:TrickBot — 模块化架构分析
TrickBot 是一个模块化恶意软件,使用插件扩展功能。
分析方法:
- 使用 Joe Sandbox 分析主模块
- 识别插件加载机制
- 分析各个插件的功能(凭据窃取、横向移动、数据外泄)
- 提取 C2 通信协议和配置
取证启示:模块化恶意软件需要分析每个模块的功能和交互。
案例三:Cobalt Strike Beacon — 内存分析
Cobalt Strike Beacon 是一个无文件恶意软件,只在内存中运行。
分析方法:
- 使用 Volatility 分析内存转储
- 使用 malfind 检测 RWX 内存区域
- 导出 Beacon 配置
- 分析 C2 通信协议
取证启示:无文件恶意软件需要内存取证技术。
0x07 证据强度分层
1. 确认恶意(Confirmation Level)
以下条件满足任意一项即可确认样本为恶意:
- 沙箱检测到恶意行为(进程注入、文件加密、数据外泄)
- 样本与已知恶意软件家族匹配(YARA 规则、哈希匹配)
- 样本包含明确的恶意代码(C2 通信、凭据窃取)
- 机器学习模型将样本分类为恶意(高置信度)
2. 高度可疑(High Suspicion Level)
以下条件满足任意一项应当视为高度可疑:
- 样本包含可疑的 API 调用(VirtualAllocEx、WriteProcessMemory)
- 样本尝试连接可疑的 IP 地址或域名
- 样本尝试修改注册表或创建服务
- 样本使用加密或混淆技术
3. 需要关注(Attention Level)
以下条件需要关注,但不足以单独判定恶意:
- 样本包含不常见的 API 调用
- 样本尝试访问敏感文件或注册表键
- 样本使用合法的 LOLBin 工具
0x08 高级分析技术
1. 内存取证分析
内存取证是分析已感染系统内存转储以提取恶意软件痕迹的技术。对于无文件恶意软件(如 Cobalt Strike Beacon、fileless malware),内存取证往往是唯一有效的检测手段。
内存转储采集
采集内存转储是内存取证的第一步,常用工具包括:
| 工具 | 平台 | 特点 |
|---|
| WinPmem | Windows | 开源、轻量、支持实时采集 |
| FTK Imager | Windows | GUI 界面、支持多种格式 |
| DumpIt | Windows | 一键采集、生成 RAW 格式 |
| LiME | Linux | Linux 内存提取、支持 TCP 传输 |
| AVML | Linux | 微软开源、生成 Lime 格式 |
# 使用 WinPmem 采集 Windows 内存转储
winpmem.exe --output memory_dump.raw
# 使用 FTK Imager 命令行采集
ftkImager.exe --capture-memory --format raw memory_dump.raw
# 使用 LiME 采集 Linux 内存
insmod lime.ko "path=/tmp/memory.lime format=lime"
取证要点:
- 采集时间应尽量短,避免内存数据被篡改
- 使用只读方式挂载存储介质
- 记录采集时间、采集工具和哈希校验值
- 保存为 RAW 格式以保留完整信息
内存分析工具
Volatility 是最广泛使用的内存分析框架,支持 Windows、Linux 和 macOS 内存转储。
# 识别操作系统和配置文件
volatility -f memory_dump.raw imageinfo
# 列出所有进程
volatility -f memory_dump.raw --profile=Win10x64 pslist
volatility -f memory_dump.raw --profile=Win10x64 pstree
# 检测隐藏进程
volatility -f memory_dump.raw --profile=Win10x64 psxview
# 分析网络连接
volatility -f memory_dump.raw --profile=Win10x64 netscan
# 检测代码注入
volatility -f memory_dump.raw --profile=Win10x64 malfind
# 提取进程 DLL 列表
volatility -f memory_dump.raw --profile=Win10x64 dlllist -p PID
# 提取内存中的命令行
volatility -f memory_dump.raw --profile=Win10x64 cmdline
Rekall 是 Google 开发的另一个内存分析框架,与 Volatility 功能类似但使用不同的插件架构:
# 使用 Rekall 进行进程分析
rekall -f memory_dump.raw pslist
rekall -f memory_dump.raw modules
rekall -f memory_dump.raw malfind
关键检测点
内存取证中的关键检测点包括:
- RWX 内存区域:同时具有读、写、执行权限的内存区域通常是代码注入的痕迹。正常进程很少需要 RWX 内存,发现此类区域应高度警惕
- 异常 DLL 加载:检查进程中加载的非标准 DLL,特别是从临时目录(Temp、AppData)加载的 DLL
- 隐藏网络连接:通过 netscan 插件发现的连接与进程列表对比,检测无进程关联的连接或已终止进程残留的连接
- 明文凭据:搜索内存中的明文密码、NTLM 哈希、Kerberos 票据等,攻击者可能使用 Mimikatz 等工具提取凭据后残留于内存中
# 搜索内存中的明文凭据
volatility -f memory_dump.raw --profile=Win10x64 hashdump
volatility -f memory_dump.raw --profile=Win10x64 lsadump
# 导出可疑内存区域进行进一步分析
volatility -f memory_dump.raw --profile=Win10x64 memdump -p PID -D output_dir/
2. 网络流量深度分析
网络流量分析是恶意软件行为分析的重要组成部分,能够揭示 C2 通信、数据外泄和横向移动等关键行为。
PCAP 分析
# 使用 TShark 提取 DNS 查询
tshark -r capture.pcap -Y "dns.qry.type == 1" -T fields -e dns.qry.name -e dns.a
# 使用 TShark 提取 HTTP 请求
tshark -r capture.pcap -Y "http.request" -T fields -e ip.src -e ip.dst -e http.host -e http.request.uri -e http.request.method
# 使用 TShark 提取 TLS 握手中的 SNI
tshark -r capture.pcap -Y "tls.handshake.type == 1" -T fields -e tls.handshake.extensions_server_name
# 使用 NetworkMiner 提取文件和网络工件
# NetworkMiner 提供 GUI 界面,可自动解析 PCAP 中的文件、图片、证书等
取证要点:
- DNS 查询记录可揭示 C2 域名和 DGA(域名生成算法)
- HTTP User-Agent 字符串可识别恶意软件家族
- TLS 证书指纹(JA3/JA3S)可用于关联已知恶意基础设施
- 提取的可执行文件和文档需进一步进行哈希比对和沙箱分析
C2 通信检测
恶意软件的 C2 通信通常具有以下特征:
- 周期性 HTTP/HTTPS 请求:Beacon 按固定间隔向 C2 发送心跳请求,通过请求间隔的统计分析可识别异常周期性流量
- DNS 隧道:攻击者利用 DNS 查询传输数据,特征包括大量 TXT 记录查询、异常长的子域名、高频 DNS 请求
- 域前置(Domain Fronting):利用 CDN 隐藏真实 C2 服务器,通过比较 TLS SNI 和 HTTP Host 头可检测
# 检测周期性 HTTP 请求
tshark -r capture.pcap -Y "http.request" -T fields -e frame.time -e ip.dst -e http.host | sort
# 检测 DNS 隧道特征
tshark -r capture.pcap -Y "dns" -T fields -e dns.qry.name -e dns.qry.type | awk '{print length($1), $1}' | sort -rn | head -20
# 统计 DNS 查询频率
tshark -r capture.pcap -Y "dns.qry.type == 1" -T fields -e dns.qry.name | sort | uniq -c | sort -rn | head -20
数据外泄检测
数据外泄是恶意软件的最终目标之一,常见方式包括:
- 大量 HTTP POST 请求向外部服务器上传数据
- 通过 DNS 查询编码外传敏感数据
- 通过加密通道(TLS)传输大量数据
# 统计 HTTP POST 请求的数据量
tshark -r capture.pcap -Y "http.request.method == POST" -T fields -e ip.dst -e http.host -e http.content_length | sort
# 检测异常大量的出站数据传输
tshark -r capture.pcap -Y "tcp.dstport == 443" -T fields -e ip.dst -e tcp.len | awk '{sum[$1]+=$2} END {for (ip in sum) print sum[ip], ip}' | sort -rn
3. 逆向工程分析
当沙箱分析和动态分析无法获取足够信息时,需要对恶意软件进行深度逆向工程分析。
反汇编工具
| 工具 | 类型 | 特点 |
|---|
| IDA Pro | 商业 | 业界标准、强大的反编译能力、丰富的插件生态 |
| Ghidra | 开源 | NSA 开发、支持多架构、内置反编译器 |
| radare2 | 开源 | 命令行驱动、脚本化分析、支持调试 |
| Binary Ninja | 商业 | 现代化 UI、中间语言表示、API 友好 |
# 使用 Ghidra 进行无头分析
analyzeHeadless /path/to/project MyProgram -import malware.exe -postScript export_functions.py
# 使用 radare2 进行快速分析
r2 -A malware.exe
aaa
afl
pdf @main
取证要点:
- 识别恶意软件的入口点和主要执行流程
- 分析字符串引用以发现 C2 地址、加密密钥等硬编码信息
- 通过交叉引用分析理解函数调用关系
- 识别加壳和混淆手段,确定脱壳策略
调试技术
动态调试允许分析师在运行时观察恶意软件的行为:
# 使用 x64dbg 进行动态调试
x64dbg malware.exe
# 设置断点关键 API:
# - CreateRemoteThread(进程注入)
# - VirtualAllocEx(远程内存分配)
# - WriteProcessMemory(远程内存写入)
# - InternetConnect(网络连接)
# - RegSetValueEx(注册表操作)
# 使用 WinDbg 进行内核调试
windbg -k com:port=\\.\pipe\debug,pipe
关键分析点
- 加密算法识别:通过常量(如 AES 的 S-Box、MD5 的初始向量)识别加密算法实现,分析密钥派生过程和加密模式
- C2 协议解析:分析网络通信函数,提取 C2 命令格式、加密方式和通信协议细节
- 反调试检测:识别 IsDebuggerPresent、CheckRemoteDebuggerPresent、NtQueryInformationProcess 等反调试 API 调用
- 代码混淆识别:检测控制流平坦化、虚假分支、不透明谓词等混淆技术,评估代码还原难度
4. YARA 规则编写
YARA 是恶意软件检测和分类的瑞士军刀,通过编写规则匹配恶意软件的特征字符串、字节序列和行为模式。
YARA 规则示例
rule Emotet_Loader {
meta:
description = "Detects Emotet loader based on strings and byte patterns"
author = "Forensic Analyst"
date = "2026-06-24"
hash = "example_sha256_hash"
reference = "Emotet Campaign Analysis"
strings:
$s1 = "RegOpenKeyExA" ascii
$s2 = "CryptEncrypt" ascii
$s3 = "InternetOpenA" ascii
$s4 = "CreateToolhelp32Snapshot" ascii
$hex1 = { 8B 45 ?? 83 C0 ?? 8B 4D ?? E8 ?? ?? ?? ?? }
$hex2 = { 68 ?? ?? ?? ?? 6A 00 6A 00 FF 55 ?? 89 45 ?? }
condition:
uint16(0) == 0x5A4D and
filesize < 5MB and
3 of ($s*) and
1 of ($hex*)
}
YARA 扫描命令
# 使用 YARA 扫描单个文件
yara emotet_rules.yar malware.exe
# 递归扫描整个目录
yara -r emotet_rules.yar /path/to/suspicious/files/
# 扫描并显示匹配的规则名称
yara -r -s emotet_rules.yar /path/to/files/
# 使用多线程加速扫描
yara -r -p 4 emotet_rules.yar /path/to/files/
# 扫描内存中的进程
yara -r emotet_rules.yar /proc/PID/mem
取证要点:
- 规则应包含足够的特异性条件,避免误报
- 使用
uint16(0) == 0x5A4D 限定 PE 文件类型 - 结合字符串匹配和十六进制字节序列提高检测精度
- 定期更新规则以覆盖新的恶意软件变种
5. 威胁情报集成
将恶意软件分析结果与威胁情报平台集成,可以丰富 IOC 上下文、关联攻击活动并追踪威胁行为者。
威胁情报平台
| 平台 | 类型 | 特点 |
|---|
| VirusTotal | 综合 | 多引擎扫描、行为分析、社区评论 |
| MalwareBazaar | 样本库 | 恶意软件样本共享、标签分类 |
| URLhaus | URL 情报 | 恶意 URL 数据库、Payload 关联 |
| ThreatFox | IOC 情报 | 多维度 IOC 查询、关联分析 |
| MISP | 开源平台 | 自托管、事件关联、社区共享 |
集成方法
# VirusTotal API v3 查询文件哈希
curl -s -X GET "https://www.virustotal.com/api/v3/files/{hash}" \
-H "x-apikey: YOUR_VT_API_KEY" | jq '.data.attributes'
# VirusTotal 查询 URL
curl -s -X GET "https://www.virustotal.com/api/v3/urls/{base64_url}" \
-H "x-apikey: YOUR_VT_API_KEY" | jq '.data.attributes'
# MalwareBazaar 查询文件哈希
curl -s -X POST "https://mb-api.abuse.ch/api/v1/" \
-d "query=get_info&hash={sha256_hash}" | jq '.data'
# URLhaus 查询域名
curl -s -X POST "https://urlhaus-api.abuse.ch/api/v1/host/" \
-d "host=malicious-domain.com" | jq ''
# ThreatFox 查询 IOC
curl -s -X POST "https://threatfox-api.abuse.ch/api/v1/" \
-d '{"query": "search_ioc", "search_term": "192.168.1.100"}' | jq ''
# MISP 事件查询(使用 PyMISP)
python3 -c "
from pymisp import PyMISP
misp = PyMISP('https://misp.example.com', 'YOUR_API_KEY')
events = misp.search(value='malicious-hash', type_attribute='sha256')
for event in events:
print(event['Event']['info'])
"
取证要点:
- 将提取的 IOC 提交至多个平台进行交叉验证
- 利用威胁情报关联同一攻击者的其他活动
- 关注 IOC 的首次提交时间和关联标签,辅助判定恶意软件家族
- 建立本地 MISP 实例实现自动化 IOC 共享和关联分析
0x09 恶意软件分析自动化与狩猎
1. 自动化分析脚本
# Malware Analysis Automation Script
Write-Host "=== Malware Analysis Automation ===" -ForegroundColor Cyan
# 1. 提取文件哈希
Write-Host "`n[1] Extracting file hashes..." -ForegroundColor Yellow
$files = Get-ChildItem -Path "C:\Suspicious" -Recurse
foreach ($file in $files) {
$md5 = Get-FileHash -Path $file.FullName -Algorithm MD5
$sha256 = Get-FileHash -Path $file.FullName -Algorithm SHA256
Write-Host " File: $($file.Name)" -ForegroundColor Yellow
Write-Host " MD5: $($md5.Hash)" -ForegroundColor Yellow
Write-Host " SHA256: $($sha256.Hash)" -ForegroundColor Yellow
}
# 2. 提取字符串
Write-Host "`n[2] Extracting strings..." -ForegroundColor Yellow
foreach ($file in $files) {
$strings = strings $file.FullName | Select-String -Pattern "http|ftp|smtp|password|key" -CaseSensitive:$false
if ($strings) {
Write-Host " File: $($file.Name)" -ForegroundColor Yellow
$strings | ForEach-Object { Write-Host " $_" -ForegroundColor Yellow }
}
}
# 3. 提交到 VirusTotal
Write-Host "`n[3] Submitting to VirusTotal..." -ForegroundColor Yellow
foreach ($file in $files) {
$hash = (Get-FileHash -Path $file.FullName -Algorithm SHA256).Hash
# 使用 VirusTotal API 查询
Write-Host " File: $($file.Name) | Hash: $hash" -ForegroundColor Yellow
}
Write-Host "`n=== Analysis Complete ===" -ForegroundColor Cyan
2. 事件日志狩猎查询
-- 综合恶意软件分析事件日志狩猎
-- 1. 检测可疑的进程创建
SELECT TimeCreated, ParentProcessName, ProcessName, CommandLine
FROM SecurityEvents
WHERE EventID = 4688
AND (CommandLine LIKE '%powershell%' OR CommandLine LIKE '%cmd%' OR CommandLine LIKE '%wscript%')
AND ParentProcessName LIKE '%winword%' OR ParentProcessName LIKE '%excel%'
ORDER BY TimeCreated DESC
-- 2. 检测可疑的网络连接
SELECT TimeCreated, ProcessName, DestinationIP, DestinationPort
FROM SysmonEvents
WHERE EventID = 3
AND DestinationPort IN (443, 80, 8080, 8443)
AND DestinationIP NOT LIKE '10.%'
ORDER BY TimeCreated DESC
-- 3. 检测可疑的文件创建
SELECT TimeCreated, ProcessName, TargetFilename
FROM SysmonEvents
WHERE EventID = 11
AND (TargetFilename LIKE '%.exe' OR TargetFilename LIKE '%.dll' OR TargetFilename LIKE '%.ps1')
AND TargetFilename LIKE '%Temp%'
ORDER BY TimeCreated DESC
3. Sigma 检测规则
title: Malware Analysis - Suspicious Process Creation
id: c3d4e5f6-a7b8-9012-cdef-345678901234
status: test
description: Detects suspicious process creation from Office applications
references:
- https://attack.mitre.org/techniques/T1059/
date: 2026-06-23
tags:
- attack.execution
- attack.t1059
logsource:
product: windows
category: process_creation
detection:
selection:
ParentImage|endswith:
- '\winword.exe'
- '\excel.exe'
- '\powerpnt.exe'
Image|endswith:
- '\powershell.exe'
- '\cmd.exe'
- '\wscript.exe'
- '\cscript.exe'
condition: selection
falsepositives:
- Legitimate macro usage
level: high
0x10 参考资料