analyzing-malware-behavior-with-cuckoo-sandbox
在 Cuckoo Sandbox 中执行恶意软件样本以观察运行时行为,包括进程创建、文件系统修改、 注册表更改、网络通信和 API 调用。生成全面的行为报告,用于恶意软件分类和 IOC 提取。 适用于动态恶意软件分析、沙箱引爆、行为分析或自动化恶意软件执行相关请求。
Best use case
analyzing-malware-behavior-with-cuckoo-sandbox is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
在 Cuckoo Sandbox 中执行恶意软件样本以观察运行时行为,包括进程创建、文件系统修改、 注册表更改、网络通信和 API 调用。生成全面的行为报告,用于恶意软件分类和 IOC 提取。 适用于动态恶意软件分析、沙箱引爆、行为分析或自动化恶意软件执行相关请求。
Teams using analyzing-malware-behavior-with-cuckoo-sandbox should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/analyzing-malware-behavior-with-cuckoo-sandbox/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How analyzing-malware-behavior-with-cuckoo-sandbox Compares
| Feature / Agent | analyzing-malware-behavior-with-cuckoo-sandbox | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
在 Cuckoo Sandbox 中执行恶意软件样本以观察运行时行为,包括进程创建、文件系统修改、 注册表更改、网络通信和 API 调用。生成全面的行为报告,用于恶意软件分类和 IOC 提取。 适用于动态恶意软件分析、沙箱引爆、行为分析或自动化恶意软件执行相关请求。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 使用 Cuckoo Sandbox 分析恶意软件行为
## 适用场景
- 可疑样本通过静态分析分类后,需要在受控环境中进行行为观察
- 需要捕获恶意软件执行期间的网络流量、文件投放、注册表修改和 API 调用
- 确定完整的感染链,包括第二阶段载荷下载和持久化机制
- 基于观察到的运行时活动生成行为签名和 YARA 规则
- 对批量恶意软件样本进行自动化分析,要求一致的报告输出
**不适用于**在配置错误的沙箱中通过网络共享传播的已知勒索软件变种;请先验证网络隔离。
## 前置条件
- Cuckoo Sandbox 3.x 安装在专用分析服务器上(推荐 Ubuntu 22.04)
- 配置了 Windows 10/11 快照的客户虚拟机(安装 Cuckoo agent,在干净状态下拍取快照)
- VirtualBox、KVM 或 VMware 配置为 Cuckoo 虚拟化后端
- 隔离网络,使用 InetSim 或 FakeNet-NG 模拟互联网服务
- 集成 Suricata 或 Snort,用于分析期间的网络级签名匹配
- 足够的磁盘空间用于 PCAP 捕获和内存转储(推荐最少 500 GB)
## 工作流程
### 步骤 1:向 Cuckoo 提交样本
提交恶意软件样本进行自动化分析:
```bash
# 通过命令行提交
cuckoo submit /path/to/suspect.exe
# 提交并指定分析超时时间(300 秒)
cuckoo submit --timeout 300 /path/to/suspect.exe
# 提交并指定虚拟机和分析包
cuckoo submit --machine win10_x64 --package exe --timeout 300 /path/to/suspect.exe
# 通过 REST API 提交
curl -F "file=@suspect.exe" -F "timeout=300" -F "machine=win10_x64" \
http://localhost:8090/tasks/create/file
# 提交 URL 进行分析
curl -F "url=http://malicious-site.com/payload" -F "timeout=300" \
http://localhost:8090/tasks/create/url
# 检查任务状态
curl http://localhost:8090/tasks/view/1 | jq '.task.status'
```
### 步骤 2:实时监控执行过程
跟踪分析进度并观察实时行为:
```bash
# 查看 Cuckoo 分析日志
tail -f /opt/cuckoo/log/cuckoo.log
# 监控分析任务状态
cuckoo status
# 访问 Cuckoo Web 界面查看实时截图和进程树
# 导航到 http://localhost:8080/analysis/<task_id>/
```
执行期间需关注的关键行为事件:
- 进程创建链(父子进程关系)
- 向外部 IP 发起的网络连接尝试
- 在临时目录或系统文件夹中投放文件
- 对 Run 键或服务条目的注册表修改
- 与加密(CryptEncrypt)、注入(WriteProcessMemory)或逃避相关的 API 调用
### 步骤 3:分析进程活动
检查 Cuckoo 报告中的进程树和 API 调用跟踪:
```python
# 以编程方式解析 Cuckoo JSON 报告
import json
with open("/opt/cuckoo/storage/analyses/1/reports/report.json") as f:
report = json.load(f)
# 进程树分析
for process in report["behavior"]["processes"]:
pid = process["pid"]
ppid = process["ppid"]
name = process["process_name"]
print(f"PID: {pid} PPID: {ppid} Name: {name}")
# 提取可疑 API 调用
for call in process["calls"]:
api = call["api"]
if api in ["CreateRemoteThread", "VirtualAllocEx", "WriteProcessMemory",
"NtCreateThreadEx", "RegSetValueExA", "URLDownloadToFileA"]:
args = {arg["name"]: arg["value"] for arg in call["arguments"]}
print(f" [!] {api}({args})")
```
### 步骤 4:审查网络活动
检查网络连接、DNS 查询和 HTTP 请求:
```python
# 从 Cuckoo 报告中提取网络分析
network = report["network"]
# DNS 解析
print("DNS 查询:")
for dns in network.get("dns", []):
print(f" {dns['request']} -> {dns.get('answers', [])}")
# HTTP 请求
print("\nHTTP 请求:")
for http in network.get("http", []):
print(f" {http['method']} {http['uri']}(Host:{http['host']})")
if http.get("body"):
print(f" Body:{http['body'][:200]}")
# TCP 连接
print("\nTCP 连接:")
for tcp in network.get("tcp", []):
print(f" {tcp['src']}:{tcp['sport']} -> {tcp['dst']}:{tcp['dport']}")
# 提取 PCAP 进行更深入的 Wireshark 分析
# PCAP 位置:/opt/cuckoo/storage/analyses/1/dump.pcap
```
### 步骤 5:检查文件系统和注册表变更
记录持久化机制和投放的文件:
```python
# 文件操作
print("创建/修改的文件:")
for f in report["behavior"].get("summary", {}).get("files", []):
print(f" {f}")
# 带哈希值的投放文件
print("\n投放文件:")
for dropped in report.get("dropped", []):
print(f" 路径:{dropped['filepath']}")
print(f" SHA-256:{dropped['sha256']}")
print(f" 大小:{dropped['size']} 字节")
print(f" 类型:{dropped['type']}")
# 注册表修改
print("\n修改的注册表键:")
for key in report["behavior"].get("summary", {}).get("keys", []):
print(f" {key}")
```
### 步骤 6:检查签名和评分
检查 Cuckoo 的行为签名和威胁评分:
```python
# 触发的行为签名
print("触发的签名:")
for sig in report.get("signatures", []):
severity = sig["severity"]
name = sig["name"]
description = sig["description"]
marker = "[!]" if severity >= 3 else "[*]"
print(f" {marker} [{severity}/5] {name}: {description}")
for mark in sig.get("marks", []):
if mark.get("call"):
print(f" API: {mark['call']['api']}")
if mark.get("ioc"):
print(f" IOC: {mark['ioc']}")
# 整体评分
score = report.get("info", {}).get("score", 0)
print(f"\n整体威胁评分:{score}/10")
```
### 步骤 7:提取内存转储工件
分析执行期间捕获的完整内存转储:
```bash
# 内存转储保存位置:
# /opt/cuckoo/storage/analyses/1/memory.dmp
# 使用 Volatility 分析内存转储
vol3 -f /opt/cuckoo/storage/analyses/1/memory.dmp windows.pslist
vol3 -f /opt/cuckoo/storage/analyses/1/memory.dmp windows.malfind
vol3 -f /opt/cuckoo/storage/analyses/1/memory.dmp windows.netscan
```
## 核心概念
| 术语 | 定义 |
|------|------------|
| **动态分析** | 在受控环境中执行恶意软件以观察运行时行为,包括系统调用、网络活动和文件操作 |
| **沙箱逃避** | 恶意软件用于检测虚拟/沙箱环境并改变行为以避免分析的技术(睡眠计时器、虚拟机检测、用户交互检测) |
| **API 钩子** | Cuckoo 拦截恶意软件发出的 Windows API 调用以记录函数名称、参数和返回值的方法 |
| **InetSim** | 互联网服务模拟工具,在隔离分析网络内响应恶意软件的网络请求(HTTP、DNS、SMTP) |
| **进程注入** | 将代码注入合法进程的恶意软件技术;通过监控 VirtualAllocEx 和 WriteProcessMemory API 序列检测 |
| **行为签名** | 基于规则的检测,匹配特定的 API 调用序列、文件操作或网络活动,与已知恶意软件行为对应 |
| **分析包** | Cuckoo 模块,定义如何在客户虚拟机中执行特定文件类型(exe、dll、pdf、doc)以正确捕获行为 |
## 工具与系统
- **Cuckoo Sandbox**:开源自动化恶意软件分析系统,提供行为报告、网络捕获和内存转储
- **InetSim**:互联网服务模拟套件,为隔离恶意软件分析网络提供伪造的 HTTP、DNS、SMTP 和其他服务
- **FakeNet-NG**:FLARE 团队的网络模拟工具,拦截并重定向所有网络流量进行分析
- **Suricata**:与 Cuckoo 集成的网络 IDS/IPS,用于实时检测恶意网络流量的基于签名的检测
- **Volatility**:内存取证框架,用于分析 Cuckoo 分析期间捕获的内存转储
## 常见场景
### 场景:分析多阶段投放器
**场景背景**:静态分析发现一个导入量极少、高熵的加壳可执行文件。样本需要沙箱执行以观察解包、载荷投递和 C2 建立过程。
**方法**:
1. 以延长超时(600 秒)将样本提交给 Cuckoo,以捕获缓慢触发的行为
2. 检查进程树中的子进程创建(投放器启动载荷进程)
3. 识别 %TEMP%、%APPDATA% 或系统目录中的投放文件
4. 提取投放文件并计算哈希值以进行单独分析
5. 映射网络连接,识别初始执行后联系的 C2 基础设施
6. 检查注册表修改中的持久化机制(Run 键、计划任务、服务)
7. 将行为签名与已知恶意软件家族进行比对
**常见陷阱**:
- 使用不足的分析超时,导致沙箱在第二阶段载荷执行前终止
- 未配置 InetSim 响应 DNS 和 HTTP 请求,导致恶意软件无法完成 C2 签到
- 忽略沙箱逃避检测;如果样本立即退出,可能是在检测虚拟环境
- 未单独分析投放文件;初始投放器可能不如最终载荷重要
## 输出格式
```
动态分析报告 - CUCKOO SANDBOX
==========================================
任务 ID: 1547
样本: suspect.exe(SHA-256:e3b0c44298fc1c149afbf4c8996fb924...)
分析时间: 300 秒
虚拟机: win10_x64(Windows 10 21H2)
评分: 8.5/10
进程树
suspect.exe(PID:2184)
└── cmd.exe(PID:3456)
└── powershell.exe(PID:4012)
└── svchost_fake.exe(PID:4568)
文件系统活动
[已创建] C:\Users\Admin\AppData\Local\Temp\payload.dll
[已创建] C:\Windows\System32\svchost_fake.exe
[已修改] C:\Windows\System32\drivers\etc\hosts
注册表修改
[设置] HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsUpdate = "C:\Windows\System32\svchost_fake.exe"
[设置] HKLM\SYSTEM\CurrentControlSet\Services\FakeService\ImagePath = "C:\Windows\System32\svchost_fake.exe"
网络活动
DNS: update.malicious[.]com -> 185.220.101.42
HTTP: POST hxxps://185.220.101[.]42/gate.php(信标)
TCP: 10.0.2.15:49152 -> 185.220.101.42:443(237 个连接)
行为签名
[!] [4/5] injection_createremotethread:向远程进程注入代码
[!] [4/5] persistence_autorun:修改 Run 注册表键以实现持久化
[!] [3/5] network_cnc_http:执行 HTTP C2 通信
[*] [2/5] antiav_detectfile:检查杀毒软件产品文件
投放文件
payload.dll SHA-256: abc123... 大小:98304 类型:PE32 DLL
svchost_fake.exe SHA-256: def456... 大小:184320 类型:PE32 EXE
```Related Skills
reverse-engineering-rust-malware
使用 IDA Pro 和 Ghidra 对 Rust 编译的恶意软件进行逆向工程,掌握处理非空终止字符串、提取 crate 依赖项和 Rust 特有控制流分析的专项技术。
reverse-engineering-malware-with-ghidra
使用 NSA 的 Ghidra 反汇编器和反编译器对恶意软件二进制文件进行逆向工程,在汇编和伪 C 代码层面理解其内部逻辑、密码学例程、C2 协议和规避技术。适用于恶意软件逆向工程、反汇编分析、反编译、二进制分析或理解恶意软件内部机制等请求。
reverse-engineering-dotnet-malware-with-dnspy
使用 dnSpy 反编译器和调试器对 .NET 恶意软件进行逆向工程,分析 C#/VB.NET 源代码,识别混淆技术,提取配置信息,理解包括信息窃取器、远程访问木马(RAT)和加载器在内的恶意功能。适用于 .NET 恶意软件分析、C# 恶意软件反编译、托管代码逆向工程或 .NET 混淆分析等请求。
reverse-engineering-android-malware-with-jadx
使用 JADX 反编译器对恶意 Android APK 文件进行逆向工程,分析 Java/Kotlin 源代码,识别包括数据窃取、C2 通信、权限提升和覆盖攻击在内的恶意功能。检查 Manifest 权限、Receiver、Service 及原生库。适用于 Android 恶意软件分析、APK 逆向工程、移动端恶意软件调查或 Android 威胁分析等请求。
performing-user-behavior-analytics
执行用户和实体行为分析(UEBA),通过基于 SIEM 的行为基线和统计分析, 检测异常用户活动,包括不可能旅行、异常访问模式、权限滥用和内部威胁。 适用于 SOC 团队通过偏离既定行为规范来识别被攻陷账户或内部威胁。
performing-static-malware-analysis-with-pe-studio
使用 PEStudio 对 Windows PE(可移植可执行文件)恶意软件样本进行静态分析, 检查文件头、导入表、字符串、资源和指标,无需执行二进制文件。 识别可疑特征,包括加壳、反分析技术和恶意导入。适用于静态恶意软件分析、 PE 文件检查、Windows 可执行文件分析或执行前恶意软件分级等请求场景。
performing-malware-triage-with-yara
使用 YARA 规则对文件模式、字符串、字节序列和结构特征进行匹配,快速分级和分类恶意软件样本, 识别已知恶意软件家族及可疑指标。涵盖规则编写、扫描和与分析流程的集成。适用于 YARA 规则创建、 恶意软件分类、模式匹配、样本分级或基于签名的检测等请求场景。
performing-malware-persistence-investigation
系统性地调查 Windows 和 Linux 系统上的所有持久化机制,以识别恶意软件如何在重启后存活并维持访问。
performing-malware-ioc-extraction
恶意软件 IOC(失陷指标)提取是指通过分析恶意软件,识别可操作的失陷指标,包括文件哈希、网络指标(C2 域名、IP 地址、URL)、注册表修改、互斥体名称、嵌入字符串和行为产物。
performing-malware-hash-enrichment-with-virustotal
使用 VirusTotal API 富化恶意软件文件哈希,获取检测率、行为分析、YARA 匹配和上下文威胁情报,用于事件分类和 IOC 验证。
performing-firmware-malware-analysis
分析固件镜像中嵌入的恶意软件、后门和未授权修改,目标包括路由器、IoT 设备、UEFI/BIOS 和嵌入式系统。涵盖固件提取、文件系统分析、二进制逆向工程和 Bootkit 检测。适用于固件安全 分析、IoT 恶意软件调查、UEFI Rootkit 检测或嵌入式设备入侵评估等请求场景。
performing-automated-malware-analysis-with-cape
部署和操作 CAPEv2 沙箱,进行自动化恶意软件分析,具备行为监控、载荷提取、配置解析和反规避能力。