--- name: re-ti description: > 威胁情报查询与关联:VT/Any.run/hybrid-analysis、MISP。 触发词:威胁情报、VirusTotal、Any.run、沙箱查询、MISP、样本关联 capabilities: [threat-intel] --- # 威胁情报查询与关联 ## 何时使用 / 何时不用 - 用:拿到样本 hash / 域名 / IP 要查已知恶意背景("这个样本是什么""哪个家族");沙箱报告解读;家族/团伙关联;MISP 事件关联;情报进报告 - 用:分析完成后用情报验证结论([[re-malware]] / [[re-forensics]] 的线索需要外部佐证) - 不用:只想跑行为分析——那走 [[re-sandbox]] / [[re-behavior]],沙箱查询只是情报手段之一 - 不用:纯离线环境无外网(只能做静态本地匹配);VT 无结果≠干净(见坑 1) ## 工具准备 本技能以查询/解读为主,不运行样本;上传到沙箱的动态执行须在 [[re-sandbox]] 内(默认沙箱最高原则,见 [[re-analyze/platform-tips]])。 ### VirusTotal(核心查询,网页 + API) - 网页: https://www.virustotal.com/ —— 查 hash/域名/IP,无安装 - API key: https://www.virustotal.com/gui/my-apikey 生成;存环境变量 `VT_API_KEY`(`export VT_API_KEY=...`,Windows 用 `setx`) - 验证: `[ -n "$VT_API_KEY" ] && echo ok`;带 key 请求返回 JSON(401/403 说明 key 无效或配额用完) - 隐私注意:查私有样本前确认数据策略——VT 是共享情报,上传会向第三方公开,内部样本先问归属/权限(见坑 2) ### curl —— API 请求 - Linux: `apt install curl` / `dnf install curl` / `pacman -S curl`(多数自带) - macOS: 自带 - Windows/WSL: Windows 10+ 自带 curl.exe;WSL 用 Linux 包 - 验证: `curl --version` ### Any.run / hybrid-analysis(沙箱报告,网页) - Any.run: https://any.run/ 注册即可查/提交(网页交互式沙箱,有公开报告库) - hybrid-analysis: https://www.hybrid-analysis.com/ 注册即可查/提交(API 免费额度) - 无安装;上传样本前同样确认数据公开策略 ### MISP(可选,团队自建情报库) - 部署(Linux): `docker run -d --name misp -p 8080:80 harvarditsecurity/misp`(社区镜像,正式部署按官方文档) - 验证: 浏览器打开 https://localhost:8080 能登录(默认账号 admin@admin.test / admin) - 没有现成 MISP 实例时跳过本环节,不阻塞查询 ### jq(可选,解析 API JSON) - Linux: `apt install jq` / `dnf install jq` / `pacman -S jq` - macOS: `brew install jq` - Windows: `winget install jqlang.jq` - 验证: `jq --version` ## 操作步骤 按顺序执行;步骤 1-3 对每个线索(hash/域名/IP)都过一遍,记下结果与查询时间(证据)。 1. **哈希/域名/IP 查询(VT)**: ```sh curl -s --request GET \ --url "https://www.virustotal.com/api/v3/search?query=" \ -H "x-apikey: $VT_API_KEY" | jq '.data[0].attributes | {last_analysis_stats, names, tags, popular_threat_category}' ``` - 网页同样可查:hash 页看检测数(`last_analysis_stats` 的 malicious 计数)、厂商命中、tags、popular_threat_category - 域名/IP 页看解析记录、历史检测、关联样本;查不到检测不直接判干净(见坑 1) - 隐私选项:上传/查询私有对象用 VT 的私有 API(企业版)或先确认数据公开风险(见坑 2) 2. **沙箱报告解读(Any.run / hybrid-analysis)**: - 查询: 在 Any.run/hybrid-analysis 搜同一 hash,找公开报告;提交新样本执行须在 [[re-sandbox]] 隔离环境内(网络隔离 INetSim/fake DNS,见 [[re-analyze/platform-tips]] 最高原则) - hybrid-analysis API(key 在个人 profile 的 API key 页生成,请求头 `api-key`): ```sh curl -s -H "api-key: $HA_API_KEY" \ "https://hybrid-analysis.com/api/v2/search/hash?hash=" | jq '{sha256s, verdicts: [.reports[].verdict]}' ``` - Any.run 有 API(api.any.run,key 在 profile 生成),端点与鉴权以官方文档为准;未配置 key 时网页查询同样可用 - 解读三块: - **行为**: 启动的进程树(有无注入/镂空)、持久化动作(Run 键/计划任务/服务)、文件操作(写哪、删哪) - **网络**: 回连域名/IP/端口、DNS 解析、请求 URL(对照 [[re-behavior]] 的捕获) - **文件操作**: 释放的文件与 hash(dropper 落盘产物,进 [[re-ioc]]) - 记录报告编号与截图时间戳作为证据;报告不可全信(见坑 3) 3. **家族/团伙关联(VT graph、tag)**: ```sh curl -s --request GET \ --url "https://www.virustotal.com/api/v3/files//graphs" \ -H "x-apikey: $VT_API_KEY" | jq '.data[].type' | sort -u ``` - 端点注意:关联图端点是 `/graphs`(复数)——`/graph` 是 API v2 时代的路径,v3 返回 404 - VT hash 页的关联: 同 C2 域名/同签名/同互斥体命中的其他样本、`popular_threat_category`(如 "trojan.agent")与 family 标签 - tags 与 graph 把样本归到家族——写进报告时标注依据(哪些厂商归的、关联靠什么属性) - 家族名以多厂商一致为准,单厂商命名只做参考 4. **MISP 事件关联(如有实例)**: ```sh # 查询事件的属性(hash/域名/IP)——POST + JSON body curl -s --request POST "https:///events/restSearch" \ -H "Authorization: " \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ --data-binary '{"returnFormat":"json","value":""}' | jq '.response[]?.Event | {info, date, orgc}' ``` - body 必须原样 JSON(`--data-urlencode` 会把它 URL 编码,MISP 解析不到 value);`value` 传字符串 - 响应形如 `{"response": [{"Event": {...}}]}`——jq 用 `.response[]?.Event` 展开;不同 MISP 版本响应结构有差异(见 [[gotchas]]) - 命中说明组织内已标记过该样本/基础设施——引用事件编号(event ID)作为内部证据 - 没实例就跳过,此步不阻塞结论 5. **情报进报告(衔接 [[re-ioc]])**: - 汇总: 每个线索一行——类型(hash/域名/IP)、VT 检测数、家族/分类、关联样本、来源(报告编号/事件 ID)、查询时间 - 情报直接进 [[re-ioc]] 报告: IOC 列表(外部确认的恶意指标 + 可信度)、摘要段的家族判定依据、结论段引外部情报佐证 - 只写结论不写来源等于没查(证据链要求,见坑 4) ## 跨域联合 - [[re-forensics]]:本网关工作流第 4 步——本技能是情报关联环节 - [[re-malware]]:恶意样本分析第 6 步前用本技能佐证家族/判定;反沙箱样本的静态情报尤其依赖本技能 - [[re-behavior]]:步骤 2 解读沙箱报告的基线来自行为分析产物(进程/网络/文件对照) - [[re-ioc]]:步骤 5 情报汇总进 IOC 列表与报告(衔接) - [[re-sandbox]]:本技能动态执行必须在其内(默认沙箱最高原则,见 [[re-analyze/platform-tips]]) - 回传 [[re-analyze]]:按 RE_REPORT 偏好把情报摘要写进最终报告 ## 常见坑与陷阱 - **私有样本 VT 无结果 ≠ 干净**:现象——查某个 hash 检测数为 0 或报"not found",据此判定无害;原因——VT 只有公开库,私有/未公开样本查不到是常态(也可能是新样本未收录);对策——无结果只标"未见记录"并注明查询时间,用 [[re-behavior]] / [[re-mem-forensics]] 的实际行为证据下结论;多渠道交叉(Any.run/hybrid-analysis/MISP)后再定性 - **上传私有样本泄露情报**:现象——内部样本/客户样本传上 VT/Any.run 后对外公开,触发保密问题;原因——沙箱与 VT 默认共享数据(公开报告);对策——上传前确认数据策略:VT 用私有 API(企业)或先脱敏(去 PII 后上传),任何.run/hybrid-analysis 选 private 分析(如有),拿不准先问归属方 - **沙箱报告不可全信(反沙箱样本)**:现象——沙箱报告显示"无恶意行为/进程退出",但实际环境检测到回连;原因——样本检测到沙箱特征(VM 硬件、调试器、网络环境)后休眠/走正常分支,报告是假的阴性;对策——结合 [[re-behavior]] 真实环境结果与 [[re-mem-forensics]] 内存残留交叉验证;反沙箱样本靠静态深挖([[re-binary-core]])与内存线索 - **API 配额/限速**:现象——VT 免费 key 请求返回 403/429,或者批量查询中途被限;原因——免费 key 有日配额与分钟限速,批量脚本不打间隔必触发;对策——脚本循环内 sleep(如 15 秒)、用 `/search` 批量聚合、配额耗尽换网页查询或等重置;jq 只取需要的字段减少请求次数 - **哈希误报需多重确认**:现象——某个厂商把良性文件标成恶意(hash 误报),或哈希命中但样本内容不匹配(改名/拼接的旧哈希);原因——单厂商签名粒度粗、VT 聚合统计不加权,原始 hash 与文件内容没有强绑定验证;对策——"恶意"判定看多厂商一致 + 家族标签 + 行为证据,不认单厂商;查询前先对本地文件重算 sha256 与查询值核对(防错 hash 查询) - 端点速查与操作序列见 [[commands]];API 版本与数据质量坑见 [[gotchas]]