nadeznamorris/Threat-Hunting-Scenario-Port-Of-Entry

GitHub: nadeznamorris/Threat-Hunting-Scenario-Port-Of-Entry

一个基于 Microsoft Defender XDR 平台的威胁狩猎实战场景项目,通过 Azuki 企业入侵事件演练 KQL 查询与攻击链分析能力。

Stars: 0 | Forks: 0

# 威胁狩猎场景-入口点:Azuki 入侵事件 **报告 ID:** INC-2025-2211 **分析师:** Nadezna Morris **日期:** 2025年11月22日 **事件日期:** 2025年11月19日 ## 执行摘要 Azuki Import/Export Trading Co. 遭遇了一次针对性的企业间谍入侵,导致确认有敏感的供应商合同和定价数据被窃取。攻击始于使用泄露的 IT 管理员凭证(`kenji.sato`)通过外部 IP `88.97.178.12` 进行的未经授权的远程桌面协议 (RDP) 访问。威胁行为者展示了高级的后漏洞利用技术——部署了一个重命名的 Mimikatz 二进制文件进行凭证收集,滥用原生 Windows 实用程序以规避防御,并通过计划任务和隐藏的后门账户建立了持久访问。被窃取的数据被集中打包成一个 ZIP 存档,并通过 Discord 渗透出去,绕过了传统的数据防泄漏控制。攻击者随后清除了安全事件日志以阻碍取证调查。受损范围超出了 `AZUKI-SL`,已确认横向移动到了内部主机 `10.1.0.188`。此次入侵与从事竞争性情报窃取的出于经济动机的攻击者行为一致。 ## 1. 调查发现 ### 关键失陷指标 | 指标 | 描述 | | --------------------------------------- | ----------------------------------| | 88.97.178.12 | RDP 初始访问源 | | 78.141.196.6 | C2 服务器 | | 10.1.0.188 | 横向移动目标 | | kenji.sato | 被攻陷的 IT 管理员 | | support | 攻击者创建的后门账户 | | C:\ProgramData\WindowsCache\ | 恶意暂存目录 | | C:\ProgramData\WindowsCache\svchost.exe | 持久化恶意载荷 | | mm.exe | 重命名的 Mimikatz 二进制文件 | | wupdate.ps1 | 初始攻击引导脚本 | | export-data.zip | 被窃取的数据存档 | | Windows Update Check | 持久化机制 | | sekurlsa::logonpasswords | Mimikatz 凭证转储模块 | | certutil.exe | 用于远程工具下载 | | mstsc.exe | 用于通过 RDP 进行横向移动 | | Discord | 渗透通道 | ***FLAG 1 - 初始访问 - 远程访问源*** **目标:** 远程桌面协议连接留下的网络痕迹可用于识别未经授权访问的来源。确定来源有助于进行威胁行为者归因并阻断正在进行的攻击。 **Flag 值:** `88.97.178.12` ``` DeviceLogonEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | project Timestamp, DeviceName, AccountName, ActionType, RemoteDeviceName, RemoteIP | order by Timestamp asc ``` image ***FLAG 2 - 初始访问 - 被攻陷的用户账户*** **目标:** 识别哪些凭证被窃取,可确定未经授权访问的范围,并指导包括密码重置和权限审查在内的修复工作。 **Flag 值:** `kenji.sato` ``` DeviceLogonEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | project Timestamp, DeviceName, AccountName, ActionType, RemoteDeviceName, RemoteIP | order by Timestamp asc ``` image ***FLAG 3: 发现 - 网络侦察*** **目标:** 攻击者枚举网络拓扑以识别横向移动的机会和高价值目标。这种侦察活动是高级持续性威胁的关键指标。 **Flag 值:** `"ARP.EXE" -a` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any ("arp", "ipconfig", "nbtstat") | project Timestamp, DeviceName, FileName, ProcessCommandLine, FolderPath, AccountName | order by Timestamp asc ``` image ***FLAG 4: 防御规避 - 恶意暂存目录*** **目标:** 攻击者建立暂存位置以组织工具和窃取的数据。识别这些目录能揭示入侵范围,并帮助定位其他恶意工件。 **Flag 值:** `C:\ProgramData\WindowsCache` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has "attrib" | project Timestamp, DeviceName, ActionType, FileName, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 5: 防御规避 - 文件扩展名排除*** **目标:** 攻击者向 Windows Defender 添加文件扩展名排除项,以防止恶意文件被扫描。统计这些排除项能揭示攻击者防御规避策略的广度。 **Flag 值:** `3` ``` DeviceRegistryEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where RegistryKey has_any ("\\Exclusions\\Extensions") | project Timestamp, DeviceName, ActionType, RegistryValueName, RegistryKey | order by Timestamp asc ``` Flag 5 ***FLAG 6: 防御规避 - 临时文件夹排除*** **目标:** 攻击者向 Windows Defender 添加文件夹路径排除项,以防止用于下载和执行恶意工具的目录被扫描。这些排除项使得恶意软件能够不被察觉地运行。 **Flag 值:** `C:\Users\KENJI~1.SAT\AppData\Local\Temp` ``` DeviceRegistryEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where RegistryKey has_any ("Paths") | project Timestamp, DeviceName, ActionType, RegistryValueName, RegistryKey, InitiatingProcessFolderPath | order by Timestamp asc ``` image ***FLAG 7: 防御规避 - 滥用下载实用程序*** **目标:** 合法的系统实用程序常被武器化以在逃避检测的同时下载恶意软件。识别这些技术有助于改进防御控制。 **Flag 值:** `certutil.exe` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any ("appinstaller.exe", "bitsadmin.exe", "certoc.exe", "certreq.exe", "certutil.exe", "cmd.exe") | project Timestamp, DeviceName, ActionType, FileName, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 8: 持久化 - 计划任务名称*** **目标:** 计划任务在系统重启后提供可靠的持久性。任务名称通常试图伪装成合法的 Windows 维护例程。 **Flag 值:** `Windows Update Check` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any ("schtasks") | project Timestamp, DeviceName, ActionType, FileName, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 9: 持久化 - 计划任务目标*** **目标:** 计划任务在系统重启后提供可靠的持久性。任务名称通常试图伪装成合法的 Windows 维护例程。 **Flag 值:** `C:\ProgramData\WindowsCache\svchost.exe` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any ("schtasks") | project Timestamp, DeviceName, FileName, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 10: 命令与控制 (C2) - C2 服务器地址*** **目标:** 命令与控制基础设施允许攻击者远程控制受损系统。识别 C2 服务器可支持网络阻断和基础设施追踪。 **Flag 值:** `78.141.196.6` ``` DeviceNetworkEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where InitiatingProcessFileName in~ ("powershell.exe", "cmd.exe", "curl.exe", "wget.exe", "bitsadmin.exe") | project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP | order by Timestamp asc ``` image ***FLAG 11: 命令与控制 (C2) - C2 通信端口*** **目标:** C2 通信端口可指示所使用的框架或协议。此信息支持网络检测规则和威胁情报关联。 **Flag 值:** `443` ``` DeviceNetworkEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where InitiatingProcessFileName in~ ("powershell.exe", "cmd.exe", "curl.exe", "wget.exe", "bitsadmin.exe") | project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort | order by Timestamp asc ``` image ***FLAG 12: 凭证访问 - 凭证窃取工具*** **目标:** 凭证转储工具从系统内存中提取身份验证机密。这些工具通常会被重命名以避免基于签名的检测。 **Flag 值:** `mm.exe` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any (".exe") | where ProcessVersionInfoProductName has_any ("Mimikatz", "LaZagne", "lsassy", "nanodump", "ProcDump") | project Timestamp, DeviceName, FileName, ProcessVersionInfoProductName, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 13: 凭证访问 - 内存提取模块*** **目标:** 凭证转储工具使用特定模块从安全子系统提取密码。记录所使用的确切技术有助于检测工程。 **Flag 值:** `sekurlsa::logonpasswords` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any (".exe") | where ProcessVersionInfoProductName has_any ("Mimikatz", "LaZagne", "lsassy", "nanodump", "ProcDump") | project Timestamp, DeviceName, FileName, ProcessVersionInfoProductName, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 14: 收集 - 数据暂存存档*** **目标:** 攻击者压缩窃取的数据以便高效地渗透。存档文件名通常包含日期或攻击者组织的描述性名称。 **Flag 值:** `export-data.zip` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any (".zip") | project Timestamp, DeviceName, FileName, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 15: 渗透 - 渗透通道*** **目标:** 具有上传功能的云服务经常被滥用于数据窃取。识别该服务有助于确定事件范围和潜在的数据恢复。 **Flag 值:** `discord` ``` DeviceNetworkEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where InitiatingProcessAccountName == "kenji.sato" | where RemotePort == "443" | project Timestamp, DeviceName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort | order by Timestamp asc ``` image ***FLAG 16: 反取证 - 日志篡改*** **目标:** 清除事件日志会破坏取证证据并阻碍调查工作。日志清除的顺序可以反映攻击者的优先级和复杂程度。 **Flag 值:** `Security` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where FileName == "wevtutil.exe" | project Timestamp, DeviceName, FileName, ActionType, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 17: 影响 - 持久化账户*** **目标:** 隐藏的管理员账户为未来的操作提供备用访问权限。这些账户通常被配置为避免出现在正常的用户界面中。 **Flag 值:** `support` ``` DeviceProcessEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where ProcessCommandLine has_any ("add") | project Timestamp, DeviceName, FileName, ActionType, ProcessCommandLine | order by Timestamp asc ``` image ***FLAG 18: 执行 - 恶意脚本*** **目标:** 攻击者经常使用脚本语言来自动化其攻击链。识别初始攻击脚本能揭示入侵的入口点和所使用的自动化方法。 **Flag 值:** `wupdate.ps1` ``` DeviceFileEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where FolderPath has_any ("temp", "Temp") | where FileName !startswith "__PSScriptPolicyTest" | where FileName has_any (".ps1") | project Timestamp, DeviceName, ActionType, FileName, FolderPath, InitiatingProcessCommandLine | order by Timestamp asc ``` image ***FLAG 19: 横向移动 - 次要目标*** **目标:** 横向移动目标的选择是基于其对敏感数据或网络权限的访问能力。识别这些目标能揭示攻击者的意图。 **Flag 值:** `10.1.0.188` ``` DeviceNetworkEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where InitiatingProcessCommandLine has_any ("cmdkey", "mstsc") | project Timestamp, DeviceName, ActionType, InitiatingProcessCommandLine | order by Timestamp desc ``` image ***FLAG 20: 横向移动 - 远程访问工具*** **目标:** 内置的远程访问工具是进行横向移动的首选,因为它们能与合法的管理活动混淆。这种技术比自定义工具更难被检测到。 **Flag 值:** `mstsc.exe` ``` DeviceNetworkEvents | where DeviceName == "azuki-sl" | where Timestamp between (datetime(2025-11-19) .. datetime(2025-11-20)) | where InitiatingProcessCommandLine has_any ("cmdkey", "mstsc") | project Timestamp, DeviceName, ActionType, InitiatingProcessCommandLine | order by Timestamp asc ``` image ## 2. 调查摘要 威胁行为者通过源于 `88.97.178.12` 的未经授权的 RDP 连接,使用账户 `kenji.sato` 被窃取的 IT 管理员凭证,获得了对 `AZUKI-SL` 的初始访问权限。获得访问权限后,执行了 PowerShell 脚本 `wupdate.ps1` 以引导攻击链,随后攻击者在 `C:\ProgramData\WindowsCache` 创建了一个暂存目录,并通过向 Windows Defender 添加三个文件扩展名排除项以及对 `C:\Users\KENJI~1.SAT\AppData\Local\Temp` 的文件夹排除项,修改了 Defender 以实现不被检测的工具执行。接着,原生 Windows 二进制文件 `certutil.exe` 被滥用于从远程源下载重命名的 Mimikatz 二进制文件(`mm.exe`),该文件随后使用 `sekurlsa::logonpasswords` 模块执行,以从 LSASS 内存中转储明文凭证。随后建立了两种持久化机制——一个名为 `"Windows Update Check"` 并指向 `C:\ProgramData\WindowsCache\svchost.exe` 的计划任务,以及一个为长期重新进入而创建的隐藏本地管理员账户 `support`。建立了一个通过端口 `443` 指向 `78.141.196.6` 的 C2 beacon,以使其与合法的 HTTPS 流量混淆。利用收集到的凭证,攻击者使用 `ARP.EXE -a` 执行网络侦察以枚举局域网主机,随后使用原生 RDP 客户端 `mstsc.exe` 横向移动到 10.1.0.188。收集的数据被压缩进 `export-data.zip` 并通过 Discord 渗透出去,绕过了传统的 DLP 控制。最后,Windows 安全事件日志被清除,以销毁取证证据并阻碍调查。 ## 3. MITRE ATT&CK 映射 | 战术 | 技术 | 证据 | | -------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------- | | Initial Access | T1133 — External Remote Services | 来自 88.97.178.12 的未经授权的 RDP | | Initial Access | T1078 — Valid Accounts | 被攻陷的 kenji.sato IT 管理员账户 | | Execution | T1059.001 — PowerShell | 使用 wupdate.ps1 引导攻击 | | Persistence | T1053.005 - Scheduled Task/Job: Scheduled Task | "Windows Update Check" → C:\ProgramData\WindowsCache\svchost.exe | | Persistence | T1136.001 - Create Account: Local Account | 创建了隐藏的管理员账户 support | | Privilege Escalation | T1078 - Valid Accounts | 转储后重用管理员级别的凭证 | | Defence Evasion | T1562.001 - Impair Defences: Disable or Modify Tools | 添加了 3 个 Defender 扩展名排除项 + 临时文件夹排除项 | | Defence Evasion | T1070.001 - Indicator Removal: Clear Windows Event Logs | 清除了 Windows 安全日志 | | Defence Evasion | T1036.005 - Masquerading: Match Legitimate Name or Location | 载荷名为 svchost.exe;Mimikatz 重命名为 mm.exe | | Defence Evasion | T1218.003 - System Binary Proxy Execution: CMSTP | 滥用 certutil.exe 下载工具 (LOLBin) | | Credential Access | T1003.001 - OS Credential Dumping: LSASS Memory | mm.exe (sekurlsa::logonpasswords) 转储了 LSASS | | Discovery | T1018 - Remote System Discovery | ARP.EXE -a 枚举了局域网主机 | | Lateral Movement | T1021.001 - Remote Services: Remote Desktop Protocol | mstsc.exe 移动到 10.1.0.188 | | Collection | T1560.001 - Archive Collected Data: Archive via Utility | 数据被压缩进 export-data.zip | | Command & Control | T1071.001 - Application Layer Protocol: Web Protocols | 通过端口 443 连接 78.141.196.6 的 C2 流量 | | Command & Control | T1105 - Ingress Tool Transfer | certutil.exe 从远程源拉取了恶意工具 | | Exfiltration | T1567 - Exfiltration Over Web Service | export-data.zip 通过 Discord 渗透 | ## 4. 建议 ### 立即行动 - 将 AZUKI-SL 和 10.1.0.188 从网络隔离,等待完整的取证镜像。 - 禁用被攻陷的账户 kenji.sato,并重置所有与其共享系统的用户的凭证。 - 删除隐藏账户 support,并审计整个环境中的所有本地管理员账户。 - 在边界防火墙阻断威胁行为者的 IP:88.97.178.12 和 78.141.196.6。 - 删除恶意计划任务 "Windows Update Check" 并删除 C:\ProgramData\WindowsCache。 - 撤销攻击者添加的所有 Windows Defender 排除项,并运行完整的 AV 扫描。 ### 短期修复 - 在所有 RDP 和远程访问点上强制实施 MFA——单因素凭证访问是导致此次违规的根本原因。 - 将 RDP 访问限制在 VPN 或跳板机内;在边界阻断直接面向互联网的 RDP (TCP/3389)。 - 在 Windows 工作站上启用 Credential Guard,以防止 LSASS 内存转储。 - 通过 AppLocker 或 Windows Defender Application Control (WDAC) 阻止或审计 certutil.exe 的使用——标记任何涉及下载操作的使用。 - 在代理/防火墙级别阻断 Discord 和非业务云服务;针对已知被滥用于渗透的域实施 DNS 过滤。 - 启用 Windows 事件日志转发至集中式 SIEM,以确保独立于本地主机状态的日志完整性。 ### 长期加固 - 实施 Privileged Access Workstation (PAW) 模型——IT 管理员账户应限于专用、已加固的机器,而非通用工作站。 - 部署具有 LSASS 保护、PowerShell 脚本块日志记录和 LOLBin 监控功能的 EDR 解决方案。 - 强制执行 PowerShell Constrained Language Mode 并要求脚本签名,以防止滥用 .ps1 执行。 - 实施数据防泄漏 (DLP) 解决方案,以检测并阻止批量文件压缩和上传至个人云/消息服务。 - 进行定期威胁狩猎,重点关注计划任务创建、新的本地账户和 Defender 排除项修改——这些都是可靠的敌对行为。 - 网络分段——一家拥有扁平局域网拓扑的 23 人公司允许通过 mstsc.exe 进行简单的横向移动。将文件服务器和敏感数据主机置于具有访问控制的单独 VLAN 中。 - 开展涵盖网络钓鱼和凭证管理的员工安全意识培训,特别关注行政管理人员。 **报告状态:** 已完成 **下次审查:** 2025年11月29日 **分发:** Cyber Range
标签:PE 加载器, 入侵分析, 子域名变形, 安全事件响应, 攻击复现报告, 数字取证, 自动化脚本