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安全日志, 密码喷射, 异常检测, 文档结构分析, 无后门, 日志解析, 暴力破解, 系统日志, 红队行动, 证书伪造, 逆向工具