sarandeny/Threat-Hunting-in-Azure-Investigating-Internal-Port-Scan-Activity
GitHub: sarandeny/Threat-Hunting-in-Azure-Investigating-Internal-Port-Scan-Activity
记录了一次使用 Microsoft Defender for Endpoint 和 KQL 调查内网端口扫描活动、追踪网络性能下降根因的完整威胁狩猎过程。
Stars: 0 | Forks: 0
# 🔍 威胁狩猎:突发网络性能下降 —— 内部端口扫描调查
## 📋 目录
- [概述](#overview)
- [场景背景](#scenario-background)
- [狩猎方法论](#hunt-methodology)
- [关键发现](#key-findings)
- [MITRE ATT&CK 映射](#mitre-attck-mapping)
- [采取的响应行动](#response-actions-taken)
- [经验教训](#lessons-learned)
- [KQL 查询参考](#kql-query-reference)
- [项目结构](#project-structure)
- [工具与技术](#tools--technologies)
## 概述
本仓库记录了在实时 Azure CyberRange 环境中,使用 **Microsoft Defender for Endpoint (MDE)** 和 **Kusto Query Language (KQL)** 进行的**威胁狩猎练习**。此次狩猎是在服务器团队报告 `10.0.0.0/16` 网络中的旧设备出现严重网络性能下降后发起的。
在排除了外部 DDoS 攻击后,调查转向内部——最终发现从 `saranpc2` (`10.3.0.42`) 通过在 `labuser` 帐户下执行的 PowerShell 脚本 (`portscan.ps1`) 正在进行**主动端口扫描**。
**结论 (BLUF):** 一个端口扫描脚本从内部主机启动,通过大规模连接尝试失败导致网络变慢。该设备已被隔离,恶意软件扫描结果为干净,作为预防措施建议完全重建。
## 场景背景
服务器团队报告连接到 `10.0.0.0/16` 网络的旧设备出现**严重的网络性能下降**。初步分诊排除了外部 DDoS 活动。安全团队将重心转向内部,指出:
- 所有内部流量**默认被允许** —— 没有东西向分段
- **PowerShell 在整个环境中不受限制**
- 性能下降指向**大文件传输**或**内部端口扫描**
**假设:**
## 狩猎方法论
本调查遵循结构化的**威胁狩猎生命周期**:
```
1. Preparation → 2. Data Collection → 3. Data Analysis
↑ ↓
7. Improvement ← 6. Documentation ← 4. Investigation
↓
5. Response
```
有关完整的分步演练,请参阅 [`reports/hunt-report.md`](reports/hunt-report.md)。
## 关键发现
| 发现 | 详情 |
|---|---|
| **受影响设备** | `saranpc2` — IP `10.3.0.42` |
| **根本原因** | PowerShell 端口扫描脚本 (`portscan.ps1`) |
| **执行帐户** | `labuser` |
| **脚本启动时间** | `2026-03-27T10:47:50.0391688Z` |
| **检测方法** | 揭示扫描模式的顺序连接失败 |
| **检测到恶意软件?** | ❌ 否 —— 扫描结果为干净 |
| **设备状态** | 🔒 已隔离 —— 建议重建 |
## MITRE ATT&CK 映射
| TTP ID | 技术 | 战术 | 观察到 |
|---|---|---|---|
| [T1046](https://attack.mitre.org/techniques/T1046/) | Network Service Discovery | Discovery | 通过 `portscan.ps1` 进行端口扫描 |
| [T1059.001](https://attack.mitre.org/techniques/T1059/001/) | PowerShell | Execution | 通过 `powershell.exe -ExecutionPolicy Bypass` 执行脚本 |
| [T1078](https://attack.mitre.org/techniques/T1078/) | Valid Accounts | Persistence / Defense Evasion | 脚本在 `labuser` 帐户下启动 |
有关详细分析,请参阅 [`mitre/ttp-mapping.md`](mitre/ttp-mapping.md)。
## 采取的响应行动
1. **设备隔离** — 通过 MDE 将 `saranpc2` 从网络中移除,以停止正在进行的扫描活动。
2. **恶意进程终止** — 停止 `portscan.ps1` PowerShell 进程。
3. **恶意软件扫描完成** — 完整系统扫描未发现检测结果。
4. **日志保留** — 保留 `DeviceNetworkEvents` 和 `DeviceProcessEvents` 以供分析。
5. **建议重建** — 提交工单以重镜像/重建 `saranpc2` 作为预防措施。
## 经验教训
- 🔴 环境中**不受限制的 PowerShell** 是一个重大风险 —— 执行策略绕过被轻易利用。
- 🔴 **扁平的内部网络**(默认允许所有流量)使扫描能够畅通无阻地到达所有主机。
- 🟡 `DeviceNetworkEvents` 中的**顺序端口模式**是扫描的可靠指标 —— 易于设置警报。
- 🟢 **跨表透视**(`NetworkEvents` → `ProcessEvents`)是快速追踪根本原因的有效技术。
- 🟢 **通过 MDE 进行设备隔离**允许在无需物理访问的情况下快速遏制。
## KQL 查询参考
本次狩猎中使用的所有 KQL 查询都记录在 [`queries/kql-queries.md`](queries/kql-queries.md) 中,包括:
- 识别具有过多连接失败的主机
- 按时间顺序隔离特定 IP 的连接失败
- 透视到进程事件以查找负责的脚本
- 用于未来端口扫描警报的检测工程规则
## 项目结构
```
📁 soc-network-slowdown/
├── 📄 README.md ← You are here
├── 📁 reports/
│ └── 📄 hunt-report.md ← Full investigation report
├── 📁 queries/
│ └── 📄 kql-queries.md ← All KQL queries with explanations
├── 📁 mitre/
│ └── 📄 ttp-mapping.md ← MITRE ATT&CK framework mapping
├── 📁 playbooks/
│ └── 📄 internal-portscan-response.md ← IR playbook for this scenario
└── 📁 assets/
└── 📄 timeline.md ← Attack timeline reconstruction
```
## 工具与技术
| 工具 | 用途 |
|---|---|
| **Microsoft Defender for Endpoint (MDE)** | 端点遥测和遏制 |
| **Kusto Query Language (KQL)** | 日志分析和威胁狩猎查询 |
| **Microsoft Sentinel / MDE Portal** | SIEM/XDR 查询界面 |
| **MITRE ATT&CK Navigator** | TTP 映射和对手行为分析 |
| **Azure CyberRange** | 实践练习的实验室环境 |
| **PowerShell** | 攻击模拟工具 (portscan.ps1) |
## 关于本项目
本项目是作为** CyberRange 威胁狩猎练习**的一部分完成的,模拟了真实世界的 SOC 分析师调查。它展示了:
- 内部威胁假设开发
- 多表 KQL 透视(网络 → 进程 → 文件事件)
- MITRE ATT&CK 框架应用
- 设备隔离和事件遏制
- 专业 SOC 文档和报告
*最后更新:2026 年 3 月 27 日 | 作者:Saran*
标签:AI合规, Azure CyberRange, KQL, Kusto 查询语言, MDE, Microsoft Defender for Endpoint, OpenCanary, PE 加载器, PowerShell 脚本, 入侵调查, 内部端口扫描, 发现, 安全运营, 恶意软件扫描, 战术, 执行, 扫描框架, 技术, 插件系统, 根因分析, 私有化部署, 端点隔离, 网络安全, 网络安全审计, 网络性能下降, 网络流量分析, 防御规避, 隐私保护