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 反向解析, 安全运营, 库, 应急响应, 扫描框架, 数字取证, 网络调试, 自动化, 自动化脚本, 逆向工具