dendazzle3-sketch/IncidentHawk

GitHub: dendazzle3-sketch/IncidentHawk

IncidentHawk 是一款 Linux 事件响应自动化工具,以只读方式快速采集主机取证快照并标记异常,帮助安全团队在事件发生后的「黄金一小时」内完成初步分诊。

Stars: 0 | Forks: 0

# 🦅 IncidentHawk — Linux 事件响应自动化工具 IncidentHawk 自动化了 Linux 主机上事件响应的第一个小时。 它收集只读的取证快照 —— 系统信息、用户、进程、 网络状态、持久化机制和日志工件 —— 并使用 内置启发式算法标记异常,最终将所有内容打包成一个带有时间戳的、 计算了 SHA-256 哈希值的证据包,您可以将其移交以进行更深入的分析。 **IncidentHawk 绝不会修改、终止、阻止或删除任何内容。** 它只 进行读取和报告 —— 在正在运行且可能遭到入侵的系统上运行也是安全的。 ## 1. 要求 - Linux(已在 Ubuntu/Debian/Kali 上测试;适用于大多数带有标准 coreutils 的发行版) - Python 3.6+(仅使用标准库 —— 无需 pip 安装) - 以 **root** (`sudo`) 身份运行以获取完整结果 —— 某些数据(其他用户的 crontab、`/var/log/auth.log`、其他用户的 SSH 密钥)仅 root 可读。 检查您的 Python 版本: ``` python3 --version ``` ## 2. 安装 ### 选项 A — 直接运行 ``` sudo python3 incidenthawk.py --output ./evidence ``` ### 选项 B — 作为 `incidenthawk` 命令进行系统级安装(推荐) ``` chmod +x incidenthawk.py sudo cp incidenthawk.py /usr/local/bin/incidenthawk incidenthawk --version ``` 现在您可以在任何地方运行 `sudo incidenthawk` 了。 ## 3. 快速开始 ``` # 完整 triage,证据保存在 ./cases 下 sudo incidenthawk --output ./cases # 更快的 triage(跳过文件系统范围的 SUID/隐藏文件扫描) sudo incidenthawk --output ./cases --quick # 生成可以在浏览器中打开的 HTML 报告,并附带证据包 sudo incidenthawk --output ./cases --format html ``` 每次运行都会创建一个新的带时间戳的案例文件夹,例如: ``` ./cases/incidenthawk_20260712_101530/ ./cases/incidenthawk_20260712_101530.tar.gz ``` ## 4. 完整命令参考 | 标志 | 描述 | 默认值 | |---|---|---| | `--output DIR`, `-o DIR` | **(必填)** 写入证据包的目录。系统会在其中创建一个带时间戳的案例子文件夹。 | — | | `--quick` | 跳过较慢的全文件系统 SUID/隐藏文件扫描,以实现更快的分流处理。 | off | | `--since HOURS` | “最近修改的文件”扫描的回溯时间窗口(小时)。 | `48` | | `--no-hash` | 跳过对收集证据的 SHA-256 哈希计算(速度更快,但监管链较弱)。 | off | | `--no-archive` | 不将证据文件夹压缩为 `.tar.gz` 包。 | off | | `--format {console,json,html,all}` | 在证据包之外额外生成的报告格式。 | `console` | | `--no-color` | 禁用 ANSI 颜色(在通过管道输出到文件时很有用)。 | off | | `--version` | 显示版本并退出。 | — | | `-h`, `--help` | 显示帮助。 | — | ## 5. 使用示例 ### 5.1 标准的全面分流 ``` sudo incidenthawk --output /root/ir_cases ``` ### 5.2 活跃事件期间的快速分流(追求速度而非深度) ``` sudo incidenthawk --output /root/ir_cases --quick ``` ### 5.3 将“最近修改的文件”时间窗口扩大到 7 天 ``` sudo incidenthawk --output /root/ir_cases --since 168 ``` ### 5.4 生成与证据包一并输出的所有报告格式(console + JSON + HTML) ``` sudo incidenthawk --output /root/ir_cases --format all ``` ### 5.5 跳过哈希计算和归档以实现最快运行速度 ``` sudo incidenthawk --output /root/ir_cases --quick --no-hash --no-archive ``` ### 5.6 将控制台输出通过管道传递到日志文件(无 ANSI 颜色) ``` sudo incidenthawk --output /root/ir_cases --no-color > triage_$(date +%F).log ``` ### 5.7 作为响应剧本的一部分,在疑似受感染的主机上运行 ``` # 1. 立即拍摄证据快照,在任何人接触该主机之前 sudo incidenthawk --output /root/ir_cases --format all # 2. 将生成的 .tar.gz 从主机复制到安全的分析工作站 scp /root/ir_cases/incidenthawk_*.tar.gz analyst@secure-host:/evidence/ # 3. 传输后根据 sha256_manifest.json 验证 archive 的证据 tar -xzf incidenthawk_*.tar.gz sha256sum -c <(python3 -c "import json;[print(v,'',k) for k,v in json.load(open('incidenthawk_*/sha256_manifest.json')).items()]") ``` ## 6. 收集的内容 | 类别 | 收集的工件 | |---|---| | **系统信息** | 主机名、内核版本、操作系统版本、运行时间、收集时间戳 | | **用户** | 当前登录的用户、最近 30 次登录记录、`/etc/passwd`、sudoers 配置、UID-0 账户检查 | | **进程** | 完整的 `ps auxww` 列表、进程树 | | **网络** | 监听端口、已建立的连接、ARP/邻居缓存 | | **持久化** | 系统 crontab、`/etc/cron.d/`、所有用户的 crontab、已启用的 systemd 服务、`/etc/rc.local`、`/etc/ld.so.preload`、所有用户的 SSH `authorized_keys` | | **文件系统** *(使用 `--quick` 时跳过)* | 最近修改的文件、SUID/SGID 二进制文件、临时目录中的隐藏文件、全局可写目录 | | **日志** | auth 日志和 syslog 的最后 200 行、每个用户 bash 历史记录的最后 50 行 | ## 7. 内置威胁启发式规则 IncidentHawk 会自动标记: - 🔴 **严重 (CRITICAL)** — UID 为 0 的非 root 账户(经典后门技术) - 🔴 **严重 (CRITICAL)** — 已填充内容的 `/etc/ld.so.preload`(rootkit/库劫持持久化) - 🔴 **严重 (CRITICAL)** — 在已知的后门/shell 端口(4444、1337、31337 等)上的监听器 - 🟠 **高危 (HIGH)** — 从 `/tmp`、`/dev/shm` 或 `/var/tmp` 运行的进程 - 🟠 **高危 (HIGH)** — 包含下载/反向 shell 指示符(`curl`、`wget`、`/dev/tcp`、`bash -i` 等)的 Cron 条目 - 🟡 **中危 (MEDIUM)** — 临时目录中的隐藏文件 - 🔵 **低危 (LOW)** — 常见系统允许列表之外的 SUID/SGID 二进制文件 ## 8. 证据包结构 ``` incidenthawk_20260712_101530/ ├── system_info/ # hostname, kernel, os_release, uptime... ├── users/ # logged_in_now, last_logins, passwd_file, sudoers... ├── processes/ # process_list, process_tree ├── network/ # listening_ports, established_connections, arp_cache ├── persistence/ # crontabs, systemd services, rc.local, authorized_keys... ├── filesystem/ # recently_modified, suid_sgid_binaries, hidden_files... ├── logs/ # auth_log_tail, syslog_tail, bash_histories ├── findings.json # all flagged anomalies with severity └── sha256_manifest.json # SHA-256 hash of every evidence file (chain of custody) ``` ## 9. 注意事项与限制 - 以 **root** 身份运行以进行完整收集 —— 否则,其他用户的 crontab、SSH 密钥和受保护的日志将不可读,且系统不会给出提示。 - IncidentHawk 是一款**分流和证据收集**工具,而不是完整的取证镜像套件 —— 如需进行深入分析,请根据需要结合使用磁盘镜像和内存取证工具。 - 启发式分析结果是调查的起点,而不是判定已被入侵的最终结论 —— 请务必检查原始证据。 - 在对疑似受感染的主机采取任何补救措施**之前**运行收集,以免丢失易失性证据(正在运行的进程、网络连接)。 ## 10. 卸载 ``` sudo rm /usr/local/bin/incidenthawk ```
标签:DNS 反向解析, 安全运营, 库, 应急响应, 扫描框架, 数字取证, 网络调试, 自动化, 自动化脚本, 逆向工具