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, 企业渗透, 员工工作站入侵, 商业机密泄露, 商业间谍, 地下论坛, 恶意访问, 数据外泄, 横向移动, 终端检测与响应, 编程规范, 远程桌面协议