name: binary-re-synthesis description: 当准备好记录发现、生成报告或总结二进制分析结果时使用。将分析发现编译成结构化报告——关联初步检查/静态/动态阶段的事实,验证假设,生成带有证据链的文档。关键词 - “总结发现”、“生成报告”、“记录分析”、“我们发现了什么”、“撰写结果”、“导出发现”
分析综合(第5阶段)
目的
将所有收集到的知识汇编成可操作的情报。根据证据验证假设。生成带有可追溯发现的结构化报告。
何时使用
- 已从初步检查 + 静态 + 动态分析中收集到足够的事实
- 准备为交接或归档记录理解
- 需要向利益相关者展示发现
- 在结束分析会话之前
综合流程
步骤1:证据审查
收集所有记录的知识:
收集到的事实:
- 来自初步检查:架构、ABI、依赖项、功能
- 来自静态分析:函数、交叉引用、反编译
- 来自动态分析:系统调用、网络、文件访问
形成的假设:
- 有支持证据的
- 有矛盾证据的
- 未解决的假设
剩余的问题:
- 阻碍性问题(阻止得出结论)
- 开放性问题(未来调查)
步骤2:假设验证
对于每个假设,确定状态:
| 证据状态 | 状态 | 行动 |
|---|---|---|
| 强力支持,无矛盾 | 已确认 | 包含在结论中 |
| 部分支持,部分矛盾 | 不确定 | 记录双方证据 |
| 强力矛盾 | 已反驳 | 解释错误原因 |
| 双方均无证据 | 未验证 | 列为未知 |
步骤3:关联分析
跨阶段连接发现:
静态发现:地址0x8400处的函数调用socket()、connect()、SSL_read()
动态发现:观察到connect()连接到192.168.1.100:8443
找到的字符串:"api.vendor.com/telemetry"
关联结论:
函数0x8400是用于向api.vendor.com:8443通过TLS提交遥测数据的网络初始化函数。
步骤4:功能映射
总结二进制文件能做什么:
## 功能
### 网络
- [x] HTTP/HTTPS客户端(libcurl、libssl导入)
- [x] 自定义TCP连接(观察到socket/connect)
- [ ] 服务器功能(无bind/listen/accept)
### 文件系统
- [x] 读取配置(访问了/etc/config.json)
- [x] 写入日志(/var/log/app.log)
- [ ] 执行其他程序(无exec*调用)
### 密码学
- [x] TLS加密(SSL_*导入)
- [ ] 对称加密(无AES/DES导入)
- [ ] 哈希(无SHA*/MD5导入)
步骤5:行为总结
记录观察到的/推断出的行为:
## 行为分析
### 启动序列
1. 从/etc/config.json加载配置
2. 初始化网络子系统(函数0x8400)
3. 建立到api.vendor.com:8443的TLS连接
4. 进入主循环(函数0x10800)
### 主循环行为
- 每30秒轮询传感器数据(来自sleep()调用的时间)
- 将数据格式化为JSON(识别出jsmn库)
- 通过HTTPS POST提交
- 将结果记录到/var/log/app.log
### 错误处理
- 网络故障:使用指数退避重试
- 配置错误:以代码1退出
- 未知错误:使用默认值继续
报告模板
# 二进制分析报告
## 执行摘要
[2-3句话概述发现内容]
## 工件信息
| 属性 | 值 |
|----------|-------|
| 文件名 | [名称] |
| SHA256 | [哈希值] |
| 架构 | [架构] |
| Libc | [glibc/musl/uclibc] |
| 已剥离 | [是/否] |
| 分析日期 | [日期] |
| 分析师 | [人类 + Claude] |
## 识别
**文件类型:** ELF [32/64]位 [LSB/MSB] [可执行文件/共享对象]
**目的(假设):** [我们相信此二进制文件的作用]
**置信度:** [高/中/低] - [简要理由]
## 功能摘要
### 已确认的功能
- [功能1] - 证据:[来源]
- [功能2] - 证据:[来源]
### 潜在功能(未验证)
- [功能] - 原因:[为何怀疑]
## 技术发现
### 关键函数
| 地址 | 推断名称 | 目的 | 置信度 |
|---------|---------------|---------|------------|
| 0x8400 | network_init | 初始化网络连接 | 高 |
| 0x9200 | parse_config | 解析JSON配置 | 中 |
| 0x10800 | main_loop | 主执行循环 | 高 |
### 外部通信
| 目的地 | 端口 | 协议 | 目的 |
|-------------|------|----------|---------|
| api.vendor.com | 8443 | HTTPS | 遥测提交 |
### 文件系统访问
| 路径 | 访问 | 目的 |
|------|--------|---------|
| /etc/config.json | 读取 | 配置 |
| /var/log/app.log | 写入 | 日志记录 |
## 证据日志
### 已确认的假设
**H1:二进制文件是遥测客户端**
- 状态:已确认
- 支持证据:
- 导入libcurl(HTTP客户端)
- 在0x12340处找到字符串"telemetry"
- 观察到connect()连接到api.vendor.com:8443
- 矛盾证据:无
### 已反驳的假设
**H2:二进制文件充当服务器**
- 状态:已反驳
- 原因:未观察到bind/listen/accept导入或调用
### 未解决的问题
- Q1:什么触发遥测提交?(基于时间还是事件?)
- Q2:收集什么数据?(需要更深入的动态分析)
## 建议
### 安全审查
- [ ] 验证TLS证书验证
- [ ] 检查硬编码凭据
- [ ] 审计数据收集范围
### 进一步分析
- [ ] 在执行期间捕获网络流量
- [ ] 详细分析配置格式
- [ ] 测试配置错误时的行为
## 附录
### A. 工具输出
[关键分析步骤的截断原始输出]
### B. 时间线
[所采取分析步骤的时序日志]
### C. 文件哈希
[所有分析文件的SHA256]
置信度校准
使用一致的置信度级别:
| 级别 | 含义 | 所需证据 |
|---|---|---|
| 高 | 几乎确定 | 多个独立来源确认 |
| 中 | 很可能正确 | 一些证据,无矛盾 |
| 低 | 可能 | 有限证据,有些不确定性 |
| 推测性 | 猜测 | 基于模式,非直接证据 |
质量检查清单
最终确定报告前:
- [ ] 所有假设都有明确状态(已确认/已反驳/不确定)
- [ ] 每个结论都有可追溯的证据
- [ ] 记录的剩余未知项
- [ ] 技术细节准确(地址、名称)
- [ ] 没有将推测作为事实呈现
- [ ] 建议是可操作的
知识日志记录
综合后,为情景记忆记录最终摘要:
[BINARY-RE:synthesis] {文件名} (sha256: {哈希值})
分析完成:{日期}
完成阶段:{初步检查|静态|动态|综合}
=== 最终结论 ===
主要目的:{二进制文件的作用}
置信度:{高|中|低}
已确认的假设:
已确认:{假设}(证据:{事实})
已反驳的假设:
已反驳:{假设}(原因:{矛盾证据})
关键功能:
- {功能}:{证据摘要}
安全发现:
{严重|高|中|低|信息}:{发现}(位置:{地址/函数})
剩余未知项:
未解决:{问题}
建议:
- {可操作建议}
=== 证据索引 ===
事实:跨阶段记录{数量}个
假设:{已确认}/{总数}
问题:{已回答}/{总数}
示例最终条目
[BINARY-RE:synthesis] thermostat_daemon (sha256: a1b2c3d4...)
分析完成:2024-01-15
完成阶段:初步检查、静态、动态、综合
=== 最终结论 ===
主要目的:向供应商云报告温度/湿度的物联网遥测客户端
置信度:高
已确认的假设:
已确认:"向api.thermco.com报告的遥测客户端"(证据:URL字符串、curl导入、观察到connect())
已确认:"30秒报告间隔"(证据:主循环中的sleep(30)、strace时间)
已反驳的假设:
已反驳:"可能有本地Web服务器"(原因:无bind/listen/accept导入或调用)
关键功能:
- HTTPS客户端:libcurl + libssl,连接到api.thermco.com:443
- 配置解析:启动时读取/etc/thermostat.conf
- 日志记录:写入/var/log/thermostat.log
安全发现:
低:未检测到证书固定(标准libssl使用)
信息:配置文件可能包含API凭据(需要审查)
剩余未知项:
未解决:遥测载荷中的确切数据字段
未解决:认证机制(API密钥位置)
建议:
- 审查/etc/thermostat.conf中的敏感数据
- 监控网络流量以确认载荷内容
- 如果不需要遥测,考虑阻止
=== 证据索引 ===
事实:跨阶段记录23个
假设:2/3已确认
问题:4/6已回答
输出格式
结构化JSON(用于工具/数据库)
{
"artifact": { "sha256": "...", "arch": "arm" },
"conclusions": [
{
"statement": "二进制文件是遥测客户端",
"confidence": 0.9,
"evidence": ["fact_001", "fact_012", "obs_003"]
}
],
"capabilities": {
"network_client": true,
"network_server": false
},
"open_questions": ["Q1:触发机制"]
}
Markdown(用于人类读者)
参见上方模板。
STIX/TAXII(用于威胁情报)
如果二进制文件可能恶意,格式化发现以供共享:
{
"type": "malware",
"spec_version": "2.1",
"id": "malware--...",
"name": "telemetry-client",
"malware_types": ["spyware"],
"capabilities": ["exfiltrates-data"],
"implementation_languages": ["c"]
}
后续步骤
综合后:
- 归档分析工件
- 与利益相关者共享报告
- 记录经验教训
- 如果需要,更新工具配置