fooying/Diting
GitHub: fooying/Diting
谛听是一款入侵后排查与攻击链路溯源辅助工具,帮助安全专家将主机痕迹与云审计证据统一汇总分析并生成事件报告。
Stars: 0 | Forks: 0
# 谛听 · Diting
**入侵后排查、证据采集和攻击链路溯源辅助工具**
Diting 面向 Linux 主机和公有云环境。它不是常驻 Agent,也不是实时防护系统;它用于入侵发生之后,帮助安全专家把主机痕迹、云审计、业务异常、IOC 和样本线索汇总到一个本地 Case 里,尽量还原“从哪里进来、做了什么、影响了什么、还留下了什么”。
[](LICENSE)
[]()
[]()
中文 | [English](README.en.md)
## 适合谁用
- **被入侵方/客户**:按安全专家给的命令在受害主机上执行离线采集;按云导出指引导出云侧证据;交付 `.dtgz` 证据包,不交付云账号密码、MFA 或长期密钥。
- **安全专家**:初始化 Case、发采集指引、导入主机和云证据、执行分析、复核专家报告、输出处置建议。
## 工作方式
1. 受害主机通常不能联网,只运行一次 `diting-collector collect`,采集完成即退出。
2. 云侧资料由被入侵方从控制台/合规流程导出;AWS、阿里云、腾讯云也支持被入侵方使用临时只读 Key 自动导出基础材料。
3. 安全专家在自己的可信电脑上导入所有证据并运行 `diting case analyze`。
4. 威胁情报、远程 LLM、在线样本服务只在分析机显式配置后调用;源码/样本正文上传必须显式开启。
## 工作流程图
flowchart LR
A["安全专家初始化 Casecase init / intake init / case plan"] --> B["被入侵方离线采集主机
diting-collector collect"] A --> C["被入侵方导出云证据
cloud guide / api-plan / api-collect"] B --> D["交付证据包
*.dtgz"] C --> E["交付云证据包
cloud-evidence.dtgz"] D --> F["安全专家导入 Case
case import"] E --> G["安全专家导入云证据
case cloud import"] H["可选外部产物
EDR / 网关 / 沙箱 / 取证结果"] --> I["字段映射导入
forensic register / import"] F --> J["统一分析
case analyze"] G --> J I --> J J --> K["自动关联
IOC / Timeline / 横向移动 / 云主机关联 / 样本分析"] K --> L["专家报告与交付
report.html / IOC / Timeline / 补采建议"] ## 快速开始 ### 1. 安全专家初始化 Case diting case init IR-001 --timezone Asia/Shanghai --output-dir ./cases/IR-001 diting intake init --case ./cases/IR-001 --output ./cases/IR-001/incident-intake.yaml diting case plan ./cases/IR-001 --intake ./cases/IR-001/incident-intake.yaml --output collect-plan.md 把 `incident-intake.yaml` 和 `collect-plan.md` 发给被入侵方: - `incident-intake.yaml`:由被入侵方填写业务侧已知事实,例如发现时间、异常现象、受影响系统、已知异常 IP/账号/URL/文件;填写后需要回传给安全专家。 - `collect-plan.md`:给被入侵方的执行指引,不需要导入工具;里面的命令按资产名替换后执行。 - 安全专家收到填写后的 `incident-intake.yaml` 后,把它保存/覆盖到 Case 目录,例如 `./cases/IR-001/incident-intake.yaml`;后续 `case analyze --intake` 会把这些业务异常作为分析输入。 ### 2. 被入侵方在每台主机执行离线采集 sudo ./diting-collector collect --case IR-001 --asset web-01 --profile smart --since 7d --intake incident-intake.yaml --out-dir ./evidence/IR-001 sudo ./diting-collector collect --case IR-001 --asset app-01 --profile smart --since 7d --intake incident-intake.yaml --out-dir ./evidence/IR-001 `smart` 模式会在本机做轻量离线预分析,优先打包高价值证据,降低下载体积。`--intake incident-intake.yaml` 会把填写后的模板嵌入证据包用于留痕;真正影响最终分析的是安全专家在 `case analyze --intake ./cases/IR-001/incident-intake.yaml` 传入的那份回传模板。进程、fd、socket、网络连接等核心数据优先读取 `/proc` 和 `/proc/net/*`,`ps/ss/lsof` 只作为辅助视图,用于识别系统命令被 Hook 或替换的差异。 ### 3. 被入侵方导出云侧资料 手工导出指引: diting cloud guide --provider aws --case-id IR-001 --output cloud-guide.md diting cloud guide --provider aliyun --case-id IR-001 --output cloud-guide.md diting cloud guide --provider tencent --case-id IR-001 --output cloud-guide.md diting cloud guide --provider huawei --case-id IR-001 --output cloud-guide.md diting cloud guide --provider gcp --case-id IR-001 --output cloud-guide.md diting cloud guide --provider azure --case-id IR-001 --output cloud-guide.md 自动导出基础云证据,目前支持 AWS、阿里云、腾讯云,建议被入侵方新建临时只读 Key,用完删除: diting cloud api-plan --provider tencent --output api-plan.json TENCENTCLOUD_SECRET_ID="..." TENCENTCLOUD_SECRET_KEY="..." \ diting cloud api-collect --provider tencent --region ap-guangzhou --since 14d --output-dir ./cloud-evidence-IR-001-api 所有云证据统一打包: diting cloud validate ./cloud-evidence-IR-001 --provider tencent diting cloud pack ./cloud-evidence-IR-001 --output cloud-evidence-IR-001.dtgz ### 4. 安全专家导入证据并分析 diting case import ./cases/IR-001 ./evidence/IR-001/*.dtgz diting case cloud import ./cases/IR-001 ./cloud-evidence-IR-001.dtgz # 可选:导入外部 EDR/网关/沙箱/取证衍生产物 diting forensic register ./gateway.jsonl --type external --format corp-gateway-jsonl --asset web-01 --output gateway.manifest.json diting case forensic import ./cases/IR-001 gateway.manifest.json diting case analyze ./cases/IR-001 \ --intake ./cases/IR-001/incident-intake.yaml \ --report-profile expert \ --jobs 8 \ --progress \ --output ./cases/IR-001/reports/report.html `case analyze` 会自动完成 IOC 提取、时间线、横向移动、多机器关联、WebShell/样本检测、云审计关联、攻击路径和报告生成。通常不需要单独执行 IOC search 或 timeline 命令;二次导出命令主要用于人工复核和交付。 ## 安全专家本地配置 项目目录放一个 `config.json` 即可长期复用常用配置。命令行参数优先级最高;命令行没指定时读取配置文件。 diting config init # 生成 ./config.json diting config show # 查看生效配置,默认隐藏 API Key diting config doctor # 检查 LLM/TI/样本工具配置 # 或直接参考 config.sample.json 示例: { "llm": { "base_url": "https://api.example.com/v1", "api_key": "", "api_key_env": "DITING_LLM_API_KEY", "model": "security-analyst-model" }, "ti": { "providers": { "threatbook": { "adapter": "threatbook", "api_key": "", "api_key_env": "DITING_THREATBOOK_API_KEY" } }, "cache_dir": ".diting/ti-cache" }, "sample": { "providers": { "threatbook": { "adapter": "threatbook", "url": "https://api.threatbook.cn", "api_key": "", "api_key_env": "DITING_THREATBOOK_API_KEY" }, "virustotal": { "adapter": "virustotal", "url": "https://www.virustotal.com/api/v3", "api_key": "", "api_key_env": "DITING_VIRUSTOTAL_API_KEY" } }, "detectors": "local,ai", "tool_name": "", "tool_bin": "", "tool_args": "" } } 如果这是安全专家自己的本地电脑,可以把 API Key 直接写入对应 provider 的 `api_key`;如果不想让 Key 落盘,就只写 `api_key_env` 并用环境变量或系统密钥管理器提供。微步在线 ThreatBook 免费 API 已作为默认 TI/样本 hash 查询适配之一:TI 查询填 `ti.providers.threatbook.api_key`,样本 hash 查询填 `sample.providers.threatbook.api_key`;VirusTotal 填 `sample.providers.virustotal.api_key`。 ## WebShell 和样本检测 默认链路为 `local,ai`;`online` 和 `tool` 需要在 `sample.detectors` 或命令行中显式启用。 1. `local`:本地静态特征,优先识别常见 WebShell、命令执行、编码混淆、矿池/木马关键词。 2. `ai`:可选远程 LLM 代码意图识别,配置模型并显式启用后执行。 3. `online`:可选在线样本服务,默认只上传 hash、大小、类型和特征;正文必须显式开启。 4. `tool`:可选通用本地工具扩展,只在安全专家可信分析机执行。 独立扫描: diting sample scan ./suspect.php --detectors local,ai --with-ai --output sample-report.json 声明式 HTTP provider 和通用本地工具扩展: { "sample": { "detectors": "local,ai,tool,online", "tool_name": "corp-webshell-scanner", "tool_bin": "/opt/scanner/scan-sample", "tool_args": "--file {file}" } } 企业内部样本/WebShell 平台优先用声明式 HTTP provider 接入;如果要接本地工具,用 `tool` 检测器统一接入。Diting 不再内置 ShellPub/河马专用适配。 diting provider test extensions/custom/my-corp-ir-extension/providers/sample-corp-webshell.json --sample ./suspect.php --output provider-test.json ## 主要能力 - 主机离线采集:进程、fd、socket、网络、账户、登录、计划任务、systemd、SSH、PAM、LD_PRELOAD、SUID、Web 目录、日志和可疑文件。 - 反弹 Shell:基于 `/proc`、fd/socket、进程树、TTY、命令语义、Web 日志和网络连接综合判断。 - Rootkit 辅助:`/proc` 与系统命令视图交叉比对,关键命令 hash 和包管理器校验线索,可编排 chkrootkit/rkhunter 等外部工具。 - WebShell/漏洞入口:静态特征、AI 意图识别、上传/访问日志关联、自研代码危险函数片段和 RCE/SSRF/JNDI/SQLi 线索。 - 云侧分析:AWS、阿里云、腾讯云、华为云、Google Cloud、Azure 的审计日志、身份权限、访问密钥、网络暴露、对象存储和云上服务线索。 - 多机器关联:共享 IOC、共享文件 hash、时间聚集、横向移动候选、云控制面与主机事件关联。 - 外部取证导入:内存/磁盘镜像登记,Volatility、Plaso/bodyfile、IOC 文件,以及通过字段映射模板接入 EDR、网关、沙箱、自研业务日志等衍生产物。 - 报告输出:专家研判报告、客户版报告、IOC/Timeline/Lateral/Hypotheses/Follow-up 导出。 ## 常用二次命令 diting case query ./cases/IR-001 --ioc 1.2.3.4 --output query.json diting case export-ioc ./cases/IR-001 --output iocs.csv diting case export-timeline ./cases/IR-001 --format html --output timeline.html diting case export-lateral ./cases/IR-001 --format html --output lateral.html diting report generate --case ./cases/IR-001 --format html --profile customer --output customer-report.html ## 构建和发布 go test ./... go build -o bin/diting ./cmd/diting make package VERSION=dev make release VERSION=v0.1.0 发布包: - `diting-collector-
标签:C2, EVTX分析, 主机取证, 库, 应急响应, 攻击溯源, 数字取证, 文档结构分析, 日志审计, 漏洞利用检测, 自动化脚本