malathi-cyber-sketch/Living-off-the-Land-Ransomware-Precursor-Detection-Lab
GitHub: malathi-cyber-sketch/Living-off-the-Land-Ransomware-Precursor-Detection-Lab
一个攻防兼备的 SOC 家庭实验室,模拟勒索软件部署前的完整攻击链并编写自定义 Wazuh 关联规则实现多阶段行为检测。
Stars: 0 | Forks: 0
# Living-off-the-Land 勒索软件前体检测实验





这是我搭建的家庭实验室,用于演练一次入侵的攻防两面:从 Kali 攻击 Windows 10 虚拟机,然后转换角色,像 SOC 分析师一样在 Wazuh 中进行调查。攻击模拟了类似勒索软件部署前的活动,包括暴力破解登录、植入持久化、删除卷影副本,我还构建了一个自定义检测规则来捕获整个行为模式,而不仅仅是单一事件。
## 目录
- [项目简介](#what-this-project-is)
- [为什么采用这种构建方式](#why-i-built-it-this-way)
- [实验环境配置](#lab-setup)
- [使用的工具](#tools-used)
- [攻击与调查时间线](#timeline-of-the-attack-and-investigation)
- [MITRE ATT&CK 映射](#mitre-attck-mapping)
- [自定义检测规则](#the-custom-detection-rule)
- [截图文件夹](#screenshot-folders)
- [漏洞扫描结果](#vulnerability-scan-results)
- [我的发现](#what-i-found)
- [我练习的技能](#skills-i-practiced)
- [下次我会做出的改变](#what-id-do-differently-next-time)
- [仓库结构](#repo-layout)
- [关于我](#about-me)
## 项目简介
我配置了两台虚拟机,一台用于发动攻击的 Kali 主机和一台作为目标的 Windows 10 主机,将它们连接到运行在 Docker 中的 Wazuh SIEM,然后执行了一条真实的攻击链:扫描、暴力破解 SMB、使用窃取的凭据登录、探查系统、运行一些 living-off-the-land 二进制文件,最后像勒索软件在加密一切之前的通常做法一样删除卷影副本。
然后我切换到分析师视角,在 Wazuh 中查看日志,看看捕获到了什么、遗漏了什么,并构建了一条规则来弥补这一缺口。
## 为什么采用这种构建方式
许多初学者的作品集要么展示一个攻击性实验室(比如 HackTheBox 的攻击复盘),要么展示一个防御性实验室(一张 Wazuh 的仪表盘截图),但并没有将两者联系起来。我想要自己生成真实的攻击日志,而不是使用样本数据;并且我想发现并修复一个真实的检测缺口,而不是仅仅展示现成的告警。
默认的 Wazuh 规则可以很好地捕获攻击的各个独立部分,但没有任何规则将它们整合在一起并发出“这看起来像是一次正在进行中的攻击”的告警。因此我自己编写了这个规则。
## 实验环境配置
```
Kali Linux (attacker) --SMB/RDP--> Windows 10 Pro (victim, Sysmon installed)
|
Wazuh agent traffic
v
Wazuh Manager (Docker, single node)
Indexer + Dashboard + custom rules
```
| 组件 | 作用 |
|---|---|
| Kali Linux | 攻击机,使用 nmap、hydra 以及手动执行命令 |
| Windows 10 Pro (VirtualBox) | 目标机,安装了 Sysmon 以实现更好的日志记录 |
| Wazuh (Docker 单节点) | 收集日志,运行关联规则,展示告警 |
| Sysmon | 让 Wazuh 能够更好地监控进程创建和注册表更改 |
## 使用的工具
- 攻击方:nmap、hydra 以及大量 Windows 原生二进制文件 (mshta、rundll32、certutil、bitsadmin、schtasks、wmic、vssadmin、reg)
- 防御方:Wazuh Manager、Indexer、Dashboard
- 端点日志记录:Sysmon、Windows Event Viewer
- 检测工程:自定义的 Wazuh 规则文件 (local_rules_addition.xml)
- 虚拟化:VirtualBox
## 攻击与调查时间线
| 阶段 | 攻击者做了什么 | 检测到什么 / 我是如何调查的 |
|---|---|---|
| 1. 侦察 | 对目标进行全端口扫描 (`nmap -p-`),发现 SMB、RPC、NetBIOS 处于开放状态 | 记录下暴露的服务,作为可能的入侵入口点 |
| 2. 初始访问 | 使用用户名/密码字典配合 hydra 暴力破解 SMB,成功获取 `labuser:Password123!` | Wazuh 记录了在此尝试时间窗口内出现的一大批登录/注销事件 |
| 3. 确认访问 | 使用窃取的凭据远程登录 | Wazuh 规则 92657 触发,将 NTLM 登录标记为可能的 pass-the-hash 模式 |
| 4. 环境探测 | 运行了 `whoami`、`net user`、`hostname`、`ipconfig`、`systeminfo`、`wmic useraccount get name,sid` | 默认情况下这些命令不会触发任何告警,但它们紧随登录告警之后发生,这对构建时间线非常重要 |
| 5. 运行 LOLBins | mshta、rundll32、certutil、bitsadmin、schtasks,所有被滥用的原生 Windows 工具 | 规则 92201 和 92004 捕获到了 PowerShell 派生 shell 并释放脚本的行为 |
| 6. 持久化 | 向注册表 Run 键添加了一个 Base64 编码的值,并添加了另一个指向 calc.exe 的值 | 规则 92041 (类 Base64 注册表值) 和 92302 (通过 reg.exe 修改注册表) 均被触发 |
| 7. 危险操作 | `vssadmin delete shadows /all /quiet`,删除所有卷影副本 | 这是整个链条中置信度最高的单一信号,几乎没有合法程序会运行此命令 |
| 8. 关联告警 | 上述多个事件在 5 分钟内接连发生 | 我的自定义规则 100220 触发,级别 15,“在同一主机上检测到多个勒索软件前体技术” |
| 9. 调查 | — | 进入 Threat Hunting,针对 `vssadmin`、`reg.exe`、`registry` 进行查询以构建时间线 |
| 10. 撰写报告 | — | 生成了本仓库以及 SOC_Response_Guide.md |
### 精选截图
如果你想查看其余内容,所有 24 张截图都在 [`screenshots/`](./screenshots/) 文件夹中。
## MITRE ATT&CK 映射
| 战术 | 技术 | ID | 我做了什么 |
|---|---|---|---|
| Reconnaissance | Active Scanning | T1595 | nmap 全端口扫描 |
| Credential Access | Brute Force | T1110.001 | 针对 SMB 进行 Hydra 暴力破解 |
| Initial Access | Valid Accounts | T1078 | 使用恢复的凭据登录 |
| Credential Access | Pass-the-hash pattern | T1550.002 | 被 Wazuh 规则 92657 标记 |
| Discovery | System Owner/User Discovery | T1033 | whoami, net user |
| Discovery | System Information Discovery | T1082 | systeminfo, ipconfig |
| Execution | System Binary Proxy Execution | T1218 | mshta, rundll32, certutil |
| Command and Control | Ingress Tool Transfer | T1105 | certutil -urlcache, bitsadmin /transfer |
| Persistence | Registry Run Keys | T1547.001 | 对 HKCU Run 键执行 reg add |
| Persistence | Scheduled Task | T1053.005 | schtasks /create |
| Defense Evasion | Obfuscated payload (Base64) | T1027 | 注册表中的 Base64 值 |
| Impact | Inhibit System Recovery | T1490 | vssadmin delete shadows |
## 自定义检测规则
Wazuh 的内置规则可以很好地捕获独立的部分——比如注册表写入、PowerShell 派生 cmd——但没有将它们联系起来。所以我编写了一个小型规则集 (`local_rules_addition.xml`) 并将其部署到 Manager 上:
```
docker cp ~/local_rules_addition.xml single-node-wazuh.manager-1:/var/ossec/etc/rules/local_rules_addition.xml
```
我添加的规则:
| 规则 ID | 级别 | 捕获内容 |
|---|---|---|
| 100210 | 14 | 删除卷影副本/恢复机制 |
| 100211 | 13 | 计划任务执行编码过的 PowerShell |
| 100212 | 13 | 尝试禁用安全工具 |
| 100213 | 6 | 通过 reg.exe 修改注册表 Run 键 |
| 100214 | 10 | 写入注册表的类 Base64 值 |
| 100215 | 4 | PowerShell 派生 cmd.exe |
| 100220 | 15 | 5 分钟内在同一主机上发生上述多个事件——这是真正起作用的核心告警 |
规则 100220 不针对单一事件进行检测;它是一个频率规则,用于监视在同一 agent 上相继触发的、带有特定标签的子规则。这些命令本身都不是恶意的(IT 管理员一直在运行 reg.exe 和 vssadmin),是组合方式和发生速度使其变得可疑。
规则部署与关联逻辑:


## 截图文件夹
| 文件夹 | 包含内容 |
|---|---|
| `00-lab-environment-setup/` | 配置易受攻击的测试账户 |
| `01-recon-and-initial-access/` | Nmap、Hydra 以及第一条 Wazuh 告警 |
| `02-post-exploitation-enumeration/` | 登录后的基础侦察命令 |
| `03-persistence-and-defense-evasion/` | LOLBins、注册表持久化、删除卷影副本 |
| `04-detection-engineering/` | 构建与部署自定义规则 |
| `05-siem-investigation-threat-hunting/` | 告警、仪表盘、狩猎查询 |
| `06-vulnerability-assessment/` | 针对受害主机的漏洞扫描 |
包含我审查过的每一张截图(包括被我舍弃的截图及原因)的详细解析都在 [`docs/screenshot-audit.md`](./docs/screenshot-audit.md) 中。
## 漏洞扫描结果
我还使用 Wazuh 的 Vulnerability Detection 模块针对这台 Windows 10 agent 运行了扫描。它返回了 816 条发现结果,其中大部分与过时的 Firefox 安装有关,包括几个严重的 CVE(sandbox escape、same-origin bypass)。虽然这跟我模拟的入侵没有直接关系,但它很好地提醒了我们:未打补丁的软件通常也是真实安全事件的一部分。

## 我的发现
- 像 (`Password123!`) 这种字典类型的弱密码,足以让 Hydra 在不到一分钟的真实尝试中暴力破解 SMB。
- Wazuh 的默认规则能很好地捕获独立的事件,但如果没有自定义关联规则,就会漏掉多阶段的攻击模式。
- `vssadmin delete shadows` 是你可以搜寻的置信度最高的指标之一——基本上除了在批准的备份流程中,它没有任何运行的理由。
- 出现在注册表键中的 Base64 值在搜寻持久化痕迹时值得作为追踪的切入点。
- Firefox 的漏洞虽然与攻击本身无关,但无论如何它都作为真实风险出现在了同一台主机上。
## 我练习的技能
SIEM 管理、使用 XML 编写 Wazuh 检测规则、Threat Hunting、日志分析、将行为映射到 MITRE ATT&CK、漏洞管理、基础的 Windows 命令行取证、Sysmon 配置、ocker,以及清晰地撰写调查报告。
## 下次我会做出的改变
我的一些 Threat Hunting 查询返回为空(将 `reg.exe` 或 `registry` 作为纯文本搜索),因为 Wazuh 的搜索并不总是像你期望的那样匹配自由文本。像 `data.win.eventdata.commandLine:` 这样限定字段的查询效果好得多。下次我会直接从这些查询开始,而不是靠猜测关键词。
我还想添加一个 Shuffle SOAR playbook,以便在规则 100220 触发时自动隔离主机,并改进规则,使其能够真正解码 Base64 payload,而不是仅仅对其进行模式匹配。
## 仓库结构
```
Living-off-the-Land-Ransomware-Precursor-Detection-Lab/
├── README.md
├── SOC_Response_Guide.md
├── docs/
│ └── screenshot-audit.md
└── screenshots/
├── 00-lab-environment-setup/
├── 01-recon-and-initial-access/
├── 02-post-exploitation-enumeration/
├── 03-persistence-and-defense-evasion/
├── 04-detection-engineering/
├── 05-siem-investigation-threat-hunting/
└── 06-vulnerability-assessment/
```
## 关于我
我是一名位于印度海得拉巴的初级 SOC/VAPT 分析师。获得了 CEH 认证,拥有电子与通信工程 (ECE) 的 B.Tech 学位,目前正在像这样构建一系列实践实验室作品集,同时正在申请 SOC Analyst I 和 VAPT Analyst 职位。
- GitHub: [github.com/malathi-cyber-sketch](https://github.com/malathi-cyber-sketch)
- LinkedIn: [linkedin.com/in/malathi-mittapalli-enola-b73208413](https://linkedin.com/in/malathi-mittapalli-enola-b73208413)
| **Hydra 找到有效的 SMB 凭据**  | **Wazuh 捕获到引发的 RDP 登录**  |
| **注册表持久化 + 删除卷影副本**  | **关联规则捕获到了整个行为模式**  |
标签:SOC分析, Wazuh, 勒索软件检测, 安全实验室, 攻击模拟, 知识库安全, 请求拦截, 驱动签名利用