mcpField
A
analyzing-malware

analyzing-malware

github.com/trilwu安全17750 次安装12 周前更新
代码仓库

关于 analyzing-malware

这是供恶意软件分析人员使用的样本分析技能,适用于恶意文件分诊、能力判断和事件调查。它强调隔离与证据支撑,并将静态、动态分析结果整理为 IOC 和检测内容。

主要功能

  1. 01先行隔离分析环境
  2. 02静态检查文件与脚本
  3. 03动态观察进程、文件和网络
  4. 04提取配置与 C2 信息
  5. 05编写并验证 YARA 规则

适用场景

  1. 01分诊可疑附件或二进制文件
  2. 02调查样本的持久化与命令控制
  3. 03提取 IOC 用于威胁搜寻和阻断
  4. 04根据样本行为编写检测规则

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trilwu/secskills --skill analyzing-malware

安装后在 Claude Code 中输入/analyzing-malware确认已加载。

详细介绍

恶意软件分析

分析是容易的部分。容易出问题的是隔离:样本在能够访问生产环境的机器上引爆,或发布的 IOC 暴露了正在进行的调查。首先确保环境设置正确。

适用场景

  • 对可疑文件、附件、脚本或投放的二进制文件进行分诊
  • 确定样本的能力、持久化方式和命令与控制行为
  • 提取用于威胁搜寻和拦截的指标
  • 根据样本编写 YARA 规则或行为检测
  • 为事件响应提供从样本中提取的情报

不适用场景

  • 编写恶意软件、投放器、加载器或规避检测代码——无论如何描述,都不属于此技能的范围
  • 仅对良性二进制文件进行逆向工程——使用 analyzing-binaries
  • 没有 PE/ELF 头的原始 shellcode 数据块——使用 analyzing-shellcode
  • 样本的网络捕获数据——使用 analyzing-network-traffic
  • 扫描整个网站源代码树以查找植入的 Webshell(而非分析单个恢复的样本)——使用 hunting-web-backdoors
  • 为该家族编写 YARA 特征——使用 writing-yara-rules
  • 更广泛的事件响应——使用 responding-to-incidents
  • 将分析结果转化为已部署的规则——使用 engineering-detections
  • 将样本 IOC 关联到相关基础设施、跟踪攻击者或形成完整的情报产品——使用 producing-threat-intelligence

隔离:先做这件事

控制项要求
主机一次性 VM 或专用裸机,并在执行前创建快照
网络隔离网段;默认使用模拟服务(INetSim/FakeNet-NG)
共享不共享主机文件夹、不共享剪贴板、不挂载主机驱动器
凭据不使用真实账户、不加入域、不使用密码管理器
处理将样本存放在受密码保护的压缩包中,并修改扩展名以禁用其执行(.bin、.mal)
出站连接仅在明确决定并制定归因信息泄露计划后,才连接真实互联网

与实时 C2 通信会让操作者知道你正在关注。在正在处理的事件中,未经事件负责人批准,不要解析 C2 域名、公开提交哈希,或将样本上传到多引擎扫描服务——公开提交会造成信息泄露。

静态分诊——不执行样本

# Identity, always first
sha256sum sample && file sample && du -h sample
# Fuzzy and import hashes for clustering against known families
ssdeep sample; tlsh sample   # Debian tlsh-tools ships /usr/bin/tlsh;
                             # built from upstream it is tlsh_unittest
python3 -c "import pefile;print(pefile.PE('sample').get_imphash())"

# Structure
pecheck sample                  # or: rabin2 -I / readelf -h
capa -v sample                  # capability detection mapped to ATT&CK — start here
floss sample                    # deobfuscated + stack strings, better than `strings`

# Packing and embedded content
binwalk -E sample               # entropy
binwalk -Me sample              # extract embedded objects

capa 是此工作流中单个价值最高的命令:它会将二进制文件转换为映射到 MITRE ATT&CK 和 MBC 的行为列表,帮助判断是否有必要进行更深入的分析。

文档类和脚本类样本:

oleid doc.xls && olevba --deobf doc.xls        # OLE macros
oledump.py doc.doc                              # stream-level inspection
msodde doc.docx                                 # DDE payloads
rtfobj doc.rtf                                  # embedded objects in RTF
pdfid file.pdf && pdf-parser -a file.pdf        # /JS /OpenAction /Launch

# Obfuscated scripts: normalize before reading
box-js payload.js
# PowerShell: decode -EncodedCommand, then unwrap the layers
echo '<base64>' | base64 -d | iconv -f UTF-16LE -t UTF-8

大多数脚本恶意软件会将十行逻辑包裹在三层编码中。应通过机械方式反混淆,而不是阅读混淆后的形式。

动态分析

创建快照、引爆样本、观察、还原。切勿在状态不干净的环境中重复分析。

Baseline snapshot
  → start Procmon / Sysmon / inotify + tcpdump + INetSim
  → detonate with the right launcher (rundll32, wscript, mshta, Office)
  → observe 3-5 minutes, then interact (click, wait past sleep timers)
  → collect artifacts and memory
  → revert

要收集的内容及其用途:

产物工具可回答的问题
进程树Sysmon E1、Procmon、execsnoop进程注入、滥用 LOLBin、生成子进程
文件和注册表写入Procmon、inotifywait文件投放、持久化、配置
网络tcpdump、Wireshark、INetSim 日志、mitmproxyC2 端点、信标间隔、协议
内存DumpIt / procdump,然后使用 Volatility解包后的载荷、注入的代码、密钥
持久化Autoruns、systemctl list-units、cron、LaunchAgents持续运行机制

从内存中恢复解包后的载荷,而不是费力对付加壳器:

# After the sample unpacks itself, dump and carve
vol -f mem.raw windows.malfind          # injected/RWX regions
vol -f mem.raw windows.dumpfiles --pid <pid>

注意休眠和规避检测门控:许多样本会空闲数分钟、检查主机是否已加入域、统计 CPU 核心数,或查找分析进程。如果没有任何活动,可修补相关检查,或使用 Frida Hook Sleep/NtDelayExecution,然后再判断样本是否处于惰性状态。

能力模型

按照 ATT&CK 组织发现,而不是写成叙述:

  • 初始执行 — 如何启动,需要什么条件
  • 防御规避 — 加壳、注入、AMSI/ETW 修补、利用已签名二进制代理执行
  • 持久化 — 运行键、服务、计划任务、WMI 订阅、cron、LaunchAgents
  • 凭据访问 — 访问 LSASS、浏览器存储、键盘记录
  • 发现 — 枚举主机、域和安全产品
  • 收集与外传 — 收集了什么、存放在哪里,以及如何外传
  • 命令与控制 — 协议、编码、抖动、备用通道、终止日期
  • 影响 — 加密、擦除、资源劫持

对于每项,都要记录支持该结论的具体证据(地址、API 调用、工件)。 没有证据支撑的能力声明只是猜测,而恶意软件报告中的猜测会导致错误的响应决策。

配置与 C2 提取

配置是最有价值的产出——它能用于阻断、狩猎和归因。

# Known families: use the community extractors first
python3 -m maco.extract sample          # MACO / CAPE / RATDecoders ecosystems
# Unknown: find the decode routine, then emulate it over the encrypted blob

典型的配置内容包括:C2 URL 和备用地址、活动或僵尸网络 ID、RC4/AES 密钥、互斥体、休眠间隔和抖动、安装路径、终止日期。全部提取出来——活动 ID 和互斥体通常比会轮换的 C2 更适合作为狩猎线索。

IOC 与检测输出

根据指标的存续时间和特异性对其分级:

Hash            → precise, dies immediately (recompile)
C2 IP/domain    → useful now, rotates in days
Mutex / config  → survives rotation, family-specific
Behaviour/TTP   → survives redevelopment; write these

针对结构和代码编写 YARA 规则,而非依赖偶然出现的字符串:

rule Family_Loader_ConfigDecode
{
    meta:
        author      = "analyst"
        date        = "2026-07-26"
        description = "Loader config RC4 decode stub"
        hash        = "<sha256>"
        reference   = "<internal case id>"
    strings:
        // The decode loop's constants, not a filename it happens to drop
        $decode = { 8A 04 0? 32 0? 88 0? 4? 3B ?? 72 }
        $mutex  = "Global\\<family-specific>" ascii
    condition:
        uint16(0) == 0x5A4D and filesize < 2MB and all of them
}

发布前验证每条规则:

yara -w rule.yar ./samples/family/      # must hit all known-true samples
yara -w rule.yar ./corpus/goodware/     # must produce zero hits — this step is not optional

将行为检测交给 engineering-detections,用于转换为 Sigma/EDR 规则并进行调优。

应当摒弃的自我安慰

  • “这只是个脚本,我在自己的笔记本电脑上运行就行。” 脚本恶意软件也是恶意软件。
  • “沙箱说它是干净的。” 沙箱的设计本就会被规避。文件可疑却被判定为干净,意味着应该深入分析,而不是结案。
  • “我上传到 VirusTotal 快速检查一下。” 公开提交等于向对手披露信息,也可能泄露给客户的竞争对手。应审慎决定。
  • “哈希就是 IOC。” 这个哈希只能阻断当前这个构建版本。
  • “AV 把它命名为 X 家族,所以它就是 X 家族。” 不同供应商的命名并不一致。在沿用该家族的归因和响应流程前,应通过代码或配置相似性进行确认。
  • “没有网络流量,所以没有 C2。” 在下结论前,应检查休眠门控、等待特定日期的 DGA 种子,以及死信投递解析器。

交付内容

  • 身份信息 — 文件名、SHA-256、imphash、ssdeep、大小、类型、签名者
  • 判定与置信度 — 恶意/可疑/良性,并说明理由
  • 家族与活动 — 提供支持该归因的证据
  • 能力 — 映射到 ATT&CK,逐项提供证据
  • IOC — 按上述方式分级,并注明每项指标的置信度
  • 检测 — YARA、Sigma 和网络特征,并提供误报测试结果
  • 建议措施 — 遏制、阻断、狩猎查询

ATT&CK 覆盖范围

由 secskills-core/ttp-index.json 生成——编辑该文件,然后运行 python3 scripts/sync_attack.py --write。在报告中引用 ID 前,请根据当前 ATT&CK 版本重新核实。

资源开发(TA0042)

初始访问(TA0001)

  • T1566.001 鱼叉式钓鱼附件——另请参阅 performing-social-engineering、analyzing-phishing-emails

执行(TA0002)

  • T1059.001 PowerShell——另请参阅 escalating-windows-privileges
  • T1203 利用漏洞执行客户端代码——另请参阅 performing-social-engineering、exploiting-memory-corruption

权限提升(TA0004)

  • T1055 进程注入_(也属于防御规避)_——另请参阅 escalating-windows-privileges

防御规避(TA0005)

  • T1027 混淆文件或信息——另请参阅 analyzing-binaries、analyzing-shellcode
  • T1027.002 软件打包——另请参阅 analyzing-binaries
  • T1140 去混淆/解码文件或信息——另请参阅 analyzing-binaries、analyzing-shellcode
  • T1218.011 Rundll32——另请参阅 hunting-threats
  • T1497 虚拟化/沙箱规避——另请参阅 analyzing-binaries
  • T1553 破坏信任控制——另请参阅 auditing-supply-chain
  • T1620 反射式代码加载——另请参阅 analyzing-shellcode
  • T1622 调试器规避——另请参阅 analyzing-binaries

收集(TA0009)

  • T1056.001 键盘记录_(也属于凭据访问)_

命令与控制(TA0011)

  • T1071 应用层协议——另请参阅 engineering-detections、analyzing-network-traffic
  • T1132 数据编码——另请参阅 transferring-files、analyzing-network-traffic
  • T1568 动态解析——另请参阅 hunting-threats、analyzing-network-traffic
  • T1573 加密通道——另请参阅 engineering-detections、analyzing-network-traffic

影响(TA0040)

  • T1486 用于造成影响的数据加密——另请参阅 responding-to-incidents

这些技术的检测内容:engineering-detections。主动搜寻:hunting-threats。失陷后响应:responding-to-incidents。

阅读外部来源

以 Markdown 格式获取公开公告、规范和供应商报告:

curl -sL "https://defuddle.md/<url>"      # scheme in the path is optional

这会剔除页面中的冗余内容——对于以文字为主的页面,Token 数量大约减少 78%——并返回完整文本而非摘要,因此你可以搜索内容,并相信未找到结果这一结论。

它有三种不适用的情况。获取 JSON 和 API 响应时应使用原始格式,因为可读性提取会破坏结构化数据。获取需要身份验证或由 JavaScript 渲染的页面时,应直接访问,因为它会以匿名方式检索页面。切勿通过它访问对手基础设施(钓鱼链接、C2、恶意软件托管)、客户所有的主机或行动 URL——请求会离开你的机器并发送给第三方;对于正在运行的对手基础设施,这也会向运营者暴露你的访问行为。

某些网站会拦截提取器,并返回错误信息而非页面内容——例如,freedesktop.org 返回的 {"error":"Failed to fetch: 418 I'm a teapot"}。这表示获取请求遭到拒绝,并不表示来源声称该内容不存在。得出任何结论前,请直接重新获取该 URL。

参考资料

  • analyzing-binaries — 反汇编、解包和反分析细节
  • responding-to-incidents — 围绕样本进行范围界定和根除
  • engineering-detections — 将能力转化为已部署的规则
  • MITRE ATT&CK 和 MBC(恶意软件行为目录),用于分类
  • capa、floss、oletools、Volatility 3、YARA,作为核心工具链

评论

支持 Markdown