| name | performing-dynamic-analysis-with-any-run |
| description | 使用 ANY.RUN 云沙箱进行交互式动态恶意软件分析,实时观察执行行为、与恶意软件提示进行交互, 并捕获进程树、网络流量和系统变化。适用于交互式沙箱分析、基于云的恶意软件引爆、 实时行为观察或 ANY.RUN 使用等请求场景。
|
| domain | cybersecurity |
| subdomain | malware-analysis |
| tags | ["malware","dynamic-analysis","sandbox","ANY.RUN","interactive-analysis"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 ANY.RUN 进行动态分析
适用场景
- 需要交互式恶意软件分析,分析人员必须点击对话框、输入凭据或操作安装界面
- 无需维护本地沙箱基础设施的快速云端沙箱分析
- 恶意软件需要用户交互才能通过反沙箱检查(如文档宏需要"启用内容")
- 通过公开或私有任务 URL 与团队成员共享分析结果
- 在 ANY.RUN 提供的不同 OS 版本(Windows 7、10、11)间比较行为差异
不适用于不能上传到云服务的高度敏感样本;应改用 Cuckoo 等本地沙箱。
前置条件
- ANY.RUN 账号(免费社区版或付费订阅)
- 支持 WebSocket 的现代网络浏览器,用于交互式会话流
- 已准备好上传的样本文件(免费版最大 100 MB,付费版最大 256 MB)
- 了解样本类型以选择适当的执行环境
- 在分析会话期间访问 ANY.RUN 门户时使用 VPN 或安全网络
工作流程
步骤 1:配置分析环境
设置 ANY.RUN 任务的适当参数:
ANY.RUN 任务配置:
━━━━━━━━━━━━━━━━━━━━━━━━━━
OS 选择: Windows 10 x64(推荐默认)
Windows 7 x64(针对旧版恶意软件)
Windows 11 x64(针对现代样本)
执行时间: 60 秒(默认)/ 120-300 针对慢速恶意软件
网络: 已连接(捕获真实 C2 流量)
住宅代理(绕过地理封锁)
隐私: 公开(免费版)/ 私有(付费版,不被索引)
MITM 代理: 启用以解密 HTTPS 流量
Fake Net: 启用以模拟网络服务(当样本检查网络连接时)
基于 API 提交(付费版):
curl -X POST "https://api.any.run/v1/analysis" \
-H "Authorization: API-Key $ANYRUN_API_KEY" \
-F "file=@suspect.exe" \
-F "env_os=windows" \
-F "env_version=10" \
-F "env_bitness=64" \
-F "opt_timeout=120" \
-F "opt_network_connect=true" \
-F "opt_privacy_type=bylink"
curl "https://api.any.run/v1/analysis/$TASK_ID" \
-H "Authorization: API-Key $ANYRUN_API_KEY" | jq '.data.status'
步骤 2:在执行过程中与恶意软件交互
使用交互式会话触发恶意软件行为:
分析期间的交互操作:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 文档宏: 在提示时点击"启用内容"/"启用编辑"
2. 安装界面: 逐步点击安装对话框
3. UAC 提示: 点击"是"允许提权(观察权限提升行为)
4. 凭据采集: 输入虚假凭据以观察钓鱼行为
5. 浏览器重定向: 如果恶意软件打开浏览器窗口,导航到对应 URL
6. 文件对话框: 如果恶意软件显示文件选择器,选择目标文件
7. 超时延长: 如果恶意软件存在延迟执行,延长分析时间
步骤 3:分析进程树
审查完整的进程执行链:
进程树分析要点:
━━━━━━━━━━━━━━━━━━━━━━━━━━━
父子关系:
- WINWORD.EXE -> cmd.exe -> powershell.exe(宏执行链)
- explorer.exe -> suspect.exe -> svchost.exe(进程注入)
需要注意的进程事件:
- 带有可疑命令行参数的进程创建
- 带有编码命令的 PowerShell(-enc / -encodedcommand)
- cmd.exe 执行脚本文件(.bat、.vbs、.js)
- 从异常父进程派生的合法进程
- 进程终止(自删除行为)
步骤 4:审查网络活动
检查 DNS、HTTP/HTTPS 和 TCP/UDP 连接:
ANY.RUN 网络面板分析:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DNS 请求:
- 带威胁情报标签的域名解析
- 快速流量或 DGA 域名模式
- DNS over HTTPS(DoH)检测
HTTP/HTTPS 流量(启用 MITM 时):
- HTTP 的完整请求/响应体
- 解密的 HTTPS 流量(显示 C2 命令)
- 下载的载荷及其内容类型
- 包含被泄露信息的 POST 数据
连接图:
- C2 服务器位置的地理可视化
- 显示信标模式的连接时间线
- 网络流量触发的 Suricata 告警
步骤 5:检查 IoC 和威胁情报
提取指标并映射到已知威胁:
ANY.RUN IoC 分类:
━━━━━━━━━━━━━━━━━━━━━━
文件: 投放文件的哈希、YARA 匹配、VirusTotal 结果
网络: 执行期间访问的 IP、域名、URL
注册表: 为持久化创建/修改的键
进程: 可疑进程名称和命令行
互斥锁: 创建的命名互斥锁(用于单实例检查)
签名: 触发的 Suricata 规则、匹配的行为签名
MITRE ATT&CK 映射:
- ANY.RUN 自动将观察到的行为映射到 ATT&CK 技术
- 在 ATT&CK 矩阵标签页中查看技术覆盖情况
- 导出 ATT&CK Navigator 层用于报告
步骤 6:导出分析结果
下载综合报告和分析产物:
curl "https://api.any.run/v1/analysis/$TASK_ID/report" \
-H "Authorization: API-Key $ANYRUN_API_KEY" \
-o report.json
curl "https://api.any.run/v1/analysis/$TASK_ID/pcap" \
-H "Authorization: API-Key $ANYRUN_API_KEY" \
-o capture.pcap
curl "https://api.any.run/v1/analysis/$TASK_ID/files" \
-H "Authorization: API-Key $ANYRUN_API_KEY" \
-o dropped_files.zip
核心概念
| 术语 | 定义 |
|---|
| 交互式沙箱 | 允许分析人员实时与正在执行的样本交互的分析环境,可触发依赖用户操作的行为 |
| MITM 代理 | ANY.RUN 中的中间人 TLS 拦截,解密 HTTPS 流量以获取对加密 C2 通信的可见性 |
| 住宅代理 | ANY.RUN 功能,通过住宅 IP 地址路由恶意软件流量,以绕过地理 IP 和数据中心 IP 规避检查 |
| Suricata 告警 | 执行期间触发的网络 IDS 签名,提供对已知恶意流量模式的即时识别 |
| 进程树 | 父子进程关系的层次化可视化,显示从初始样本到最终载荷的完整执行链 |
| 行为标签 | ANY.RUN 根据观察到的行为自动应用的分类标签(如"trojan"、"stealer"、"ransomware") |
工具与系统
- ANY.RUN:基于云的交互式恶意软件沙箱,提供实时执行监控、进程树、网络捕获和 MITRE ATT&CK 映射
- ANY.RUN API:REST API,用于程序化样本提交、状态检查和报告/产物获取
- Suricata:集成在 ANY.RUN 中的网络 IDS,提供基于签名的恶意网络流量检测
- MITRE ATT&CK Navigator:框架集成,将观察到的恶意软件行为映射到对手技术和战术
- VirusTotal 集成:自动对样本和投放文件进行哈希查询,获取 VirusTotal 检测结果
常见场景
场景:分析需要用户交互的宏启用文档
背景:钓鱼邮件包含 .docm 文件,需要点击"启用内容"才能触发宏载荷。传统的非交互式沙箱无法触发恶意行为。
方法:
- 将 .docm 上传到安装了 Microsoft Office 的 ANY.RUN Windows 10 环境
- 当 Word 打开并显示安全提示时,交互式地点击"启用内容"
- 在进程树中观察宏执行(Word -> cmd.exe -> powershell.exe)
- 监控网络面板,观察 PowerShell 下载第二阶段载荷
- 如果出现 UAC 提示,点击"是"允许载荷执行以观察完整行为链
- 查看 Suricata 告警,检查下载的载荷是否有已知恶意软件签名
- 导出 IoC(下载 URL、投放文件哈希、C2 域名)用于封锁
注意事项:
- 不要忘记启用 MITM 代理,否则加密的 HTTPS 流量将无法可见
- 对于有延迟执行或睡眠计时器的恶意软件,不要设置过短的执行超时时间
- 当样本包含敏感组织数据时,不要上传到公开分析
- 不要跳过所有提示;某些恶意软件需要多次用户交互才能完整执行
输出格式
ANY.RUN 分析报告
=========================
任务 URL: https://app.any.run/tasks/<task_id>
样本: invoice_q3.docm
SHA-256: e3b0c44298fc1c149afbf4c8996fb924...
判定: 恶意(评分:95/100)
家族: Emotet
标签: [trojan, banker, spam, macro]
进程树
WINWORD.EXE(PID:2184)
└── cmd.exe(PID:3456)"/c powershell -enc JABXAG..."
└── powershell.exe(PID:4012)
└── rundll32.exe(PID:4568)"C:\Users\...\payload.dll,Control_RunDLL"
网络指标
DNS: update.emotet-c2[.]com -> 185.220.101.42
HTTPS: POST hxxps://185.220.101[.]42/wp-content/gate/(C2 信标)
HTTP: GET hxxp://compromised-site[.]com/invoice.dll(载荷下载)
SURICATA 告警
[1:2028401] ET MALWARE Emotet CnC Beacon
[1:2028402] ET MALWARE Win32/Emotet Activity
MITRE ATT&CK 技术
T1566.001 钓鱼攻击:鱼叉式钓鱼附件
T1204.002 用户执行:恶意文件
T1059.001 命令和脚本解释器:PowerShell
T1218.011 Rundll32 执行
T1071.001 应用层协议:Web 协议
投放文件
payload.dll SHA-256:abc123... 检测率:48/72(VirusTotal)
config.dat SHA-256:def456...(加密配置)