farazahmeddd/huntlog
GitHub: farazahmeddd/huntlog
一款零依赖的Python CLI威胁狩猎工具,用SIEM风格的规则解析Linux/Windows认证日志并标记可疑活动,无需昂贵授权即可识别暴力破解、密码喷洒等攻击行为。
Stars: 0 | Forks: 0
# huntlog
一款用于解析 Linux auth logs 或 Windows Security Event logs 并标记可疑活动的 CLI 工具。构建它的初衷是为了弄明白 SIEM 检测规则的底层原理,而无需支付每年 10 万美金的 Splunk 许可费用。
除 `rich`(可选,用于彩色输出)外无其他依赖。
```
$ python huntlog.py --demo
[CRITICAL] Successful Login After Multiple Failures
tactic: Credential Access
detail: login for 'admin' from 185.234.100.55 after 8 failures
response: Treat account as compromised. Disable it, rotate creds...
[CRITICAL] Root Login via SSH
...
3 critical / 5 high / 5 medium
```
## 设置
```
git clone https://github.com/yourusername/huntlog
cd huntlog
pip install rich # optional but makes output way nicer
```
## 用法
```
# 针对内置 demo 日志运行(无需文件)
python huntlog.py --demo
python huntlog.py --demo --log-type windows
# 将其指向真实日志
python huntlog.py --file /var/log/auth.log
python huntlog.py --file security.csv --log-type windows
# 将发现导出为 JSON
python huntlog.py --demo --export findings.json
# 查看所有规则
python huntlog.py --list-rules
```
## 检测内容
| ID | 规则 | 严重程度 | MITRE |
|---|---|---|---|
| HL-001 | 暴力破解登录 (同一 IP 失败 5 次以上) | High | T1110.001 |
| HL-002 | 多次失败后的成功登录 | Critical | T1110.001 |
| HL-003 | 可疑的 sudo 命令 | Medium | T1548.003 |
| HL-004 | 新建用户账户 | High | T1136.001 |
| HL-005 | 密码喷洒 (多个 IP,同一用户名) | High | T1110.003 |
| HL-006 | 非工作时间登录 | Medium | T1078 |
| HL-007 | 通过 SSH 的 Root 登录 | Critical | T1078.003 |
| HL-008 | 来自已知 Tor/代理出口节点的登录 | High | T1090 |
| HL-009 | RDP 登录 (Windows Logon Type 10) | Medium | T1021.001 |
| HL-010 | 账户锁定风暴 | High | T1110 |
## 工作原理
共有四种检测类型,对应了真实 SIEM 规则的工作方式:
**threshold(阈值)** -- 当事件计数超过限制时触发。如果同一 IP 登录失败超过 5 次,HL-001 就会触发。如果同一个用户名从 3 个以上不同的 IP 被攻击,HL-005 就会触发(这就是喷洒与暴力破解的区别)。
**pattern(模式)** -- 当单个事件匹配特定字段时触发。只要用户名为 `root` 的成功登录发生,HL-007 就会触发。
**sequence(序列)** -- 当事件 B 在满足事件 A 的先决条件后发生时触发。HL-002 仅当同一来源 IP 先发生 3 次以上失败后的成功登录时才会触发。
**time_anomaly(时间异常)** -- 当事件发生在特定时间窗口内时触发。HL-006 会标记 UTC 时间晚上 10 点到凌晨 5 点之间的登录。
所有规则都是文件顶部 `RULES` 列表中的 Python dicts,因此添加自己的规则非常容易。
## 获取真实日志
**Linux:**
```
python huntlog.py --file /var/log/auth.log
# 较旧的系统可能使用 /var/log/secure
# 如果使用 journald
journalctl _COMM=sshd --since "7 days ago" > sshd.log
python huntlog.py --file sshd.log
```
**Windows** (以管理员身份运行 PowerShell):
最简单的方法是直接运行包含的辅助脚本,它会一步完成日志导出和 huntlog 的运行:
```
.\run_huntlog.ps1
```
如果 PowerShell 因执行策略错误阻止了它,请先运行:
```
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
```
或者如果您想手动操作,这是分两步的版本(在同一个 PowerShell 窗口中):
```
# 步骤 1:将日志导出为 csv
Get-WinEvent -LogName Security -MaxEvents 5000 | ForEach-Object {
"$($_.TimeCreated.ToString('yyyy-MM-ddTHH:mm:ss')),$($_.Id),$($_.Properties[5].Value),$($_.Properties[18].Value),$($_.Properties[8].Value)"
} | Out-File security.csv -Encoding utf8
# 步骤 2:针对其运行 huntlog
python huntlog.py --file security.csv --log-type windows
```
同时将结果导出为 JSON:
```
python huntlog.py --file security.csv --log-type windows --export findings.json
```
原生 .evtx 解析需要 python-evtx。上面的 CSV 导出对于大多数用例来说已经足够好了。
## 添加规则
```
{
"id": "HL-011",
"name": "Your Rule Name",
"mitre": "T1059.001",
"tactic": "Execution",
"severity": "high", # critical / high / medium / low
"applies_to": ["linux"], # linux, windows, or both
"type": "pattern", # threshold, pattern, sequence, time_anomaly, ip_reputation
"description": "What this catches and why it matters.",
"match": {
"event_type": "sudo",
"command_pattern": r"your_regex",
},
"recommendation": "What to do when this fires.",
},
```
## 为什么暴力破解和密码喷洒是不同的规则
暴力破解 (HL-001) 是一个 IP 多次猛烈攻击一个账户。密码喷洒 (HL-005) 是多个 IP 分别对同一个账户尝试一次。喷洒很难通过简单的计数来捕捉,因为没有单个 IP 越过阈值。真实的 SIEM 通过不同的分组关联规则来处理这种情况,这就是 HL-005 所做的。
## JSON 输出格式
```
{
"generated": "2024-01-14T15:30:00",
"event_count": 31,
"finding_count": 8,
"findings": [
{
"rule_id": "HL-002",
"rule_name": "Successful Login After Multiple Failures",
"severity": "critical",
"mitre": "T1110.001",
"tactic": "Credential Access",
"detail": "login for 'admin' from 185.234.100.55 after 8 failures",
...
}
]
}
```
## 待添加功能
- `--watch` 模式,用于实时跟踪 (tail) 日志文件
- 从 check.torproject.org 拉取实时 Tor出口节点列表,而不是使用硬编码的集合
- sigma 规则导入,以便您可以使用社区检测规则
- 源 IP 的 GeoIP 查询
- HTML 报告输出
标签:C2通信, Cloudflare, Linux Auth Log, MITRE ATT&CK, PoC, Python, RDP登录检测, SIEM检测规则, Windows安全日志, 密码喷射, 异常检测, 文档结构分析, 无后门, 日志解析, 暴力破解, 系统日志, 红队行动, 证书伪造, 逆向工具