kitavim2-commits/threat-hunting-scenario-Azuki-Import-Export-

GitHub: kitavim2-commits/threat-hunting-scenario-Azuki-Import-Export-

基于Microsoft Defender for Endpoint的完整威胁狩猎场景,还原针对日本航运公司的企业间谍攻击全流程,提供KQL查询示例用于检测与响应训练。

Stars: 0 | Forks: 0

# 🕵️ 威胁狩猎 — Azuki Import/Export · 梓貿易株式会社 **类别:** 威胁狩猎 | Microsoft Defender for Endpoint **日期:** 2025年11月19–20日 **难度:** 中级 **工具:** KQL · Microsoft Defender for Endpoint · DeviceLogonEvents · DeviceProcessEvents · DeviceFileEvents · DeviceNetworkEvents · DeviceRegistryEvents ## 📋 场景 **公司:** Azuki Import/Export Trading Co. — 23名员工,日本/东南亚航运物流 **受感染系统:** `AZUKI-SL`(IT管理员工作站) **可用证据:** Microsoft Defender for Endpoint 日志 ### 假设 攻击者通过钓鱼或窃取的凭证获得了IT管理员工作站(`AZUKI-SL`)的访问权限,并利用该访问权限定位并窃取供应商合同和定价数据。数据被暂存并外泄到外部服务,然后发布在地下论坛,使竞争对手能够以低于Azuki合同价3%的价格竞标。该活动表明这是针对性的**企业间谍活动**,而非机会性恶意软件攻击。 ## 🔍 调查 ### 🔵 初始访问 — 远程访问来源 远程桌面协议连接会留下网络痕迹,可识别未经授权访问的来源。 **问题:** 识别RDP连接的来源IP地址? **答案:** `10.0.8.9` ``` DeviceLogonEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where isnotempty(RemoteIP) | where DeviceName == "azuki-sl" | where ActionType == "LogonSuccess" | project TimeGenerated, AccountName, DeviceName, ActionType, RemoteIP, RemoteIPType ``` ### 🔵 初始访问 — 受感染用户账户 确定哪些凭证被泄露可以确定未经授权访问的范围并指导修复工作。 **问题:** 确定用于初始访问的用户账户? **答案:** `kenji.sato` ``` DeviceLogonEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where isnotempty(RemoteIP) | where DeviceName == "azuki-sl" | where ActionType == "LogonSuccess" | project TimeGenerated, AccountName, DeviceName, ActionType, RemoteIP, RemoteIPType ``` ### 🟡 发现 — 网络侦察 攻击者会枚举网络拓扑,以系统地映射网络内的结构、设备和连接。 **问题:** 识别用于枚举网络邻居的命令和参数? **答案:** `arp -a` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where AccountName == "kenji.sato" | project TimeGenerated, AccountName, DeviceName, ActionType, ProcessCommandLine, InitiatingProcessAccountName ``` ### 🔴 防御规避 — 恶意软件暂存目录 攻击者建立暂存位置来组织工具和窃取的数据。识别这些目录可以揭示感染范围。 **问题:** 识别恶意软件存储的主要暂存目录? **答案:** `C:\ProgramData\WindowsCache` **日志证据:** - 目录被创建然后使用以下命令**隐藏**:`attrib.exe +h +s C:\ProgramData\WindowsCache` - 恶意有效载荷存储在此处: - `svchost.exe`(通过`certutil.exe`下载) - `mm.exe`(下载时从`AdobeGC.exe`重命名) - `export-data.zip`(用于外泄的暂存存档) - 创建了一个名为"Windows Update Check"的计划任务,以从该目录运行可执行文件 ``` DeviceFileEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where InitiatingProcessAccountName == "kenji.sato" ``` ### 🔴 防御规避 — 文件扩展名排除 攻击者添加文件扩展名排除以防止Windows Defender扫描恶意文件。 **问题:** 有多少文件扩展名被排除在Windows Defender扫描之外? **答案:** `3` ``` DeviceRegistryEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where InitiatingProcessAccountName == "kenji.sato" | project TimeGenerated, DeviceName, ActionType, InitiatingProcessAccountName, RegistryValueName, RegistryKey ``` ### 🔴 防御规避 — 临时文件夹排除 攻击者添加文件夹路径排除以防止Windows Defender扫描用于下载和执行恶意文件的目录。 **问题:** 哪个临时文件夹路径被排除在Windows Defender扫描之外? **答案:** `C:\Users\KENJI~1.SAT\AppData\Local\Temp` ``` DeviceRegistryEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | project TimeGenerated, DeviceName, ActionType, InitiatingProcessAccountName, RegistryValueName, RegistryKey | distinct RegistryValueName | where RegistryValueName in ("C:\\Users\\KENJI~1.SAT\\AppData\\Local\\Temp", "C:\\ProgramData\\WindowsCache") ``` ### 🔴 防御规避 — 下载工具滥用 合法的系统工具经常被武器化以在逃避检测的同时下载恶意软件。 **问题:** 识别攻击者滥用来下载文件的Windows原生二进制文件? **答案:** `certutil.exe` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" ``` ### 🟠 持久性 — 计划任务名称 计划任务可在系统重启后提供可靠的持久性。任务名称通常试图与合法的Windows进程融合。 **问题:** 识别为持久性创建的计划任务名称? **答案:** `"Windows Update Check"` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" ``` ### 🟠 持久性 — 计划任务目标 计划任务操作定义了在运行时执行的内容。这揭示了确切的持久性机制和正在使用的恶意软件二进制文件。 **问题:** 识别计划任务中配置的可执行文件路径? **答案:** `C:\ProgramData\WindowsCache\svchost.exe` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" ``` ### 🟣 命令与控制 — C2服务器地址 命令与控制基础设施允许攻击者远程控制受感染系统。 **问题:** 识别命令与控制服务器的IP地址? **答案:** `78.141.196.6` ``` -- Complex KQL DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where AccountName == "kenji.sato" | where ProcessCommandLine has_any ("http://", "https://", "Invoke-WebRequest", "certutil", "curl") | extend C2_Server_IP = extract(@'http://([\d\.]+)', 1, ProcessCommandLine) | where isnotempty(C2_Server_IP) | summarize FirstSeen = min(TimeGenerated), ConnectionCount = count() by C2_Server_IP, ProcessCommandLine | sort by FirstSeen asc -- Simple KQL DeviceNetworkEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where InitiatingProcessFolderPath == "c:\\programdata\\windowscache\\svchost.exe" | project TimeGenerated, ActionType, DeviceName, InitiatingProcessFolderPath, LocalIP, RemoteIP ``` ### 🟣 命令与控制 — C2通信端口 C2通信端口指示使用的框架或协议。此信息支持网络检测规则和防火墙配置。 **问题:** 识别用于C2通信的目标端口? **答案:** `443` ``` DeviceNetworkEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where InitiatingProcessFolderPath == "c:\\programdata\\windowscache\\svchost.exe" | project TimeGenerated, ActionType, DeviceName, InitiatingProcessFolderPath, LocalIP, RemoteIP, RemotePort ``` ### 🔑 凭证访问 — 凭证窃取工具 凭证转储工具从系统内存中提取身份验证秘密。这些工具通常被重命名以避免基于签名的检测。 **问题:** 识别凭证转储工具的文件名? **答案:** `mm.exe`(下载时从`AdobeGC.exe`重命名) ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where FileName == "mm.exe" | project TimeGenerated, AccountName, DeviceName, ActionType, ProcessCommandLine, InitiatingProcessAccountName ``` ### 🔑 凭证访问 — 内存提取模块 凭证转储工具使用特定模块从安全子系统中提取密码。 **问题:** 识别用于从内存中提取登录密码的模块? **答案:** `sekurlsa::logonpasswords` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where FileName == "mm.exe" ``` ### 📦 收集 — 数据暂存存档 攻击者压缩窃取的数据以提高外泄效率。 **问题:** 识别用于数据外泄的压缩存档文件名? **答案:** `export-data.zip` ``` DeviceFileEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where FileName contains "zip" ``` ### 📤 外泄 — 外泄通道 具有上传功能的云服务经常被滥用进行数据盗窃。 **问题:** 识别用于外泄窃取数据的云服务? **答案:** `Discord` ``` DeviceNetworkEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" ``` ### 🧹 反取证 — 日志篡改 清除事件日志会销毁取证证据并阻碍调查工作。 **问题:** 识别攻击者清除的第一个Windows事件日志? **答案:** `Security` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where ProcessCommandLine contains "wevtutil.exe" | project TimeGenerated, AccountName, DeviceName, ActionType, ProcessCommandLine ``` ### 💀 影响 — 后门账户 隐藏的管理员账户为未来操作提供替代访问。 **问题:** 识别攻击者创建的后门账户用户名? **答案:** `support` **攻击者使用的命令:** ``` net.exe user support ********** /add net1 user support ********** /add net.exe localgroup Administrators support /add net1 localgroup Administrators support /add ``` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where ProcessCommandLine contains "account" | project TimeGenerated, AccountName, ActionType, DeviceName, FileName, ProcessCommandLine, InitiatingProcessAccountName ``` ### ⚡ 执行 — 恶意脚本 攻击者经常使用脚本语言来自动化攻击链。 **问题:** 识别用于自动化攻击链的PowerShell脚本文件? **答案:** `wupdate.ps1` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where ProcessCommandLine endswith ".ps1" | project TimeGenerated, AccountName, ActionType, DeviceName, FileName, ProcessCommandLine, InitiatingProcessAccountName ``` ### ➡️ 横向移动 — 次要目标 横向移动目标根据其对敏感数据或网络权限的访问来选择。 **问题:** 哪个IP地址被作为横向移动的目标? **答案:** `10.10.0.186` ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where ProcessCommandLine contains "mstsc" | project TimeGenerated, AccountName, ActionType, DeviceName, FileName, ProcessCommandLine, InitiatingProcessAccountName ``` ### ➡️ 横向移动 — 远程访问工具 内置的远程访问工具是横向移动的首选,因为它们与合法的管理活动融合在一起。 **问题:** 识别用于横向移动的远程访问工具? **答案:** `mstsc.exe`(Microsoft Remote Desktop Client) ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-11-19) .. datetime(2025-11-20)) | where DeviceName == "azuki-sl" | where ProcessCommandLine contains "mstsc" | project TimeGenerated, AccountName, ActionType, DeviceName, FileName, ProcessCommandLine, InitiatingProcessAccountName ``` ## 🗺️ 攻击时间线摘要 | 阶段 | 战术 | 技术 | 详情 | |-------|--------|-----------|--------| | 1 | 初始访问 | 使用窃取凭证的RDP | 来源: `10.0.8.9` · 账户: `kenji.sato` | | 2 | 发现 | 网络侦察 | 使用`arp -a`映射本地网络 | | 3 | 防御规避 | 暂存+AV绕过 | `C:\ProgramData\WindowsCache`已隐藏;3个扩展名+临时文件夹已排除 | | 4 | 防御规避 | LOLBin滥用 | 使用`certutil.exe`下载恶意软件 | | 5 | 持久性 | 计划任务 | `"Windows Update Check"` → `svchost.exe` | | 6 | C2 | 加密回连 | 通过伪装的`svchost.exe`连接到`78.141.196.6:443` | | 7 | 凭证访问 | 内存转储 | `mm.exe`(Mimikatz)→ `sekurlsa::logonpasswords` | | 8 | 收集 | 数据归档 | `export-data.zip`暂存在`WindowsCache`中 | | 9 | 外泄 | Discord webhook | `curl.exe` → Discord | | 10 | 反取证 | 日志清除 | `wevtutil` — Security日志最先被清除 | | 11 | 影响 | 后门账户 | `support`已添加到本地Administrators组 | | 12 | 横向移动 | RDP支点 | `mstsc.exe` → `10.10.0.186` | ## 🛡️ MITRE ATT&CK映射 | 战术 | 技术ID | 技术名称 | |--------|-------------|----------------| | 初始访问 | T1078 | 有效账户 | | 发现 | T1018 | 远程系统发现 | | 防御规避 | T1564.001 | 隐藏工件:隐藏文件 | | 防御规避 | T1562.001 | 削弱防御:禁用或修改工具 | | 防御规避 | T1218.002 | LOLBin:certutil | | 持久性 | T1053.005 | 计划任务 | | C2 | T1071.001 | Web协议(HTTPS) | | 凭证访问 | T1003.001 | OS凭证转储:LSASS内存 | | 收集 | T1074.001 | 本地数据暂存 | | 外泄 | T1567 | 通过Web服务外泄 | | 反取证 | T1070.001 | 清除Windows事件日志 | | 持久性 | T1136.001 | 创建账户:本地账户 | | 横向移动 | T1021.001 | 远程服务:RDP |
标签:KQL查询, Microsoft Defender for Endpoint, PE 加载器, RDP攻击, StruQ, 企业渗透, 员工工作站入侵, 商业机密泄露, 商业间谍, 地下论坛, 恶意访问, 数据外泄, 横向移动, 终端检测与响应, 编程规范, 远程桌面协议