kimd155/GhostLock
GitHub: kimd155/GhostLock
GhostLock 是一款 SMB 拒绝共享句柄研究工具,利用合法 Windows API 以零写入、零加密方式实现勒索软件级别的文件共享可用性中断。
Stars: 114 | Forks: 15

**SMB 拒绝共享句柄可用性研究工具**
[](https://python.org)
[](https://github.com/kimd155/ghostlock)
[](LICENSE)
[](https://github.com/kimd155/ghostlock)
[](https://zenodo.org/records/20070064)
[](https://ghostlock.io)
*勒索软件级别的可用性影响。零写入。零加密。在您的 SIEM 中不留任何痕迹。*
[**研究站点**](https://ghostlock.io) · [**白皮书 (PDF)**](https://zenodo.org/records/20070064) · [**LinkedIn**](https://www.linkedin.com/in/kim-d-5b3114111/)
## 概述
GhostLock 证明,一个对 SMB 共享具有标准读取权限的低特权 Windows 域用户,可以在零写入、零加密,并且在现代企业安全栈部署的每一项行为防御中均不产生任何信号的情况下,造成**等同于勒索软件的组织可用性影响**。
两种技术,一种原语:
**v1 — 文件级锁定:** 对共享中的每个文件使用 `dwShareMode=0` 的 `CreateFileW`。32 线程并行扫描器。几分钟内即可处理数十万个句柄。
**v2 — 目录级锁定:** 对目录对象使用带有 `dwShareMode=0` 和 `FILE_FLAG_BACKUP_SEMANTICS` 的 `CreateFileW`。只需一个句柄。一次 API 调用。整个文件夹在 SMB 上即变成命名空间中断。
**无 CVE。无补丁。无漏洞。** 自 Windows NT 3.1 以来,这是正确且已记录的 Windows API 行为。
## 为什么这会改变一切
| 检测信号 | 加密型勒索软件 | GhostLock |
|---|---|---|
| 大量写入 I/O | 可检测 | **无** |
| 文件重命名 / 新扩展名 | 可检测 | **无** |
| 蜜罐文件触发 | 写入金丝雀文件 | **仅限读取打开** |
| 行为 AI (写入速率) | 触发告警 | **无写入** |
| 终端 EDR | Shellcode / 注入 | **看起来像文件索引器** |
| DLP / 内容检查 | 大量读取异常 | **与备份难以区分** |
| 网络流量异常 | 大量 SMB 写入 | **与 Word 打开文档完全相同** |
| 存储会话打开文件数 | 不相关 | **唯一可靠的信号** |
## v2 — 目录级命名空间中断
通过 SMB 在目录子目录上持有一个句柄,会产生以下经实验确认的结果:
| 操作 | 本地 NTFS | 通过 SMB |
|---|---|---|
| 重命名目录内的文件 | **被阻止** | **被阻止** |
| **列出目录内容** | 允许 | **被阻止** |
| **递归复制 / 备份** | 允许 | **被阻止** |
| 打开目录对象 | **被阻止** | **被阻止** |
SMB 服务器在命名空间级别强制执行目录排他性。`Get-ChildItem`、资源管理器浏览、备份代理和搜索索引器均会失败。该目录在操作上变得不可见。已知路径下的单个文件仍然可以访问——真正被破坏的是**可发现性**。
## 系统要求
- Windows 10 / Server 2016 或更高版本
- Python 3.9+
- 对目标共享具有读取权限的域用户账户
- v1 模式的 Sentinel 文件(参见安全机制)
无需第三方包。纯 Python stdlib。
## 安装说明
```
git clone https://github.com/kimd155/ghostlock.git
cd ghostlock
```
## 使用方法
### 交互模式
```
python ghostlock.py
```
```
Select mode:
[1] Manual path — paste a UNC path and lock all files
[2] Auto-discover — find shared folders on the network, pick which to lock
[3] Directory lock — lock an entire directory with a single handle (v2)
[q] Quit
```
**选项 1** — 文件级锁定,32 线程扫描器,数十万个句柄:
```
[?] Target UNC path : \\fileserver\share\dept
[+] 4,819 handles acquired
[~] Holding ... 47s | 4,819 files locked
```
**选项 2** — 自动发现 SMB 共享,多选:
```
[OK] \\server\finance 12 files visible
[OK] \\server\projects 84 files visible
Select : 1,2
```
**选项 3** — 目录级命名空间中断,只需一个句柄:
```
[?] Target directory : \\fileserver\share\finance
[+] Exclusive directory handle acquired!
Handle: 0x240
[~] Holding ... 12s | directory locked
```
### CLI 模式
```
# 文件级无限期 hold
python ghostlock.py "\\server\share\path" `
--existing-folder --confirm-existing-lock --hold-indefinite
# 带有受害者模拟的定时 hold
python ghostlock.py "\\server\share\path" `
--existing-folder --confirm-existing-lock `
--locks 256 --hold-seconds 120 --victims 16
```
## 安全机制
对于文件级锁定,目标目录中必须存在一个 sentinel 文件:
```
New-Item -ItemType File "\\server\share\targetfolder\.ghostlock_authorized"
```
目录级锁定(选项 3)不需要 sentinel —— 它获取的是您明确提供的一个路径上的一个句柄。
## 输出
```
GhostLock_PoC_report_YYYYMMDD_HHMMSS/
lock_impact_result.json
lock_impact_result.md
ghostlock_cache.json
```
## 研究
**阅读完整论文:** [zenodo.org/records/20070064](https://zenodo.org/records/20070064)
**研究站点:** [ghostlock.io](https://ghostlock.io)
## 仅限授权使用
```
THIS TOOL IS FOR AUTHORIZED SECURITY TESTING AND RESEARCH ONLY.
Running GhostLock against any system or network without explicit
written authorization from the system owner is illegal and unethical.
```
## 许可证
MIT — 参见 [LICENSE](LICENSE)
**Kim Dvash** · [linkedin.com/in/kim-d-5b3114111](https://www.linkedin.com/in/kim-d-5b3114111/) · [ghostlock.io](https://ghostlock.io)
`dwShareMode = 0x00000000`
标签:Conpot, CreateFileW, Python, SIEM绕过, SMB, Windows API, Windows安全, 代理, 企业共享安全, 勒索软件模拟, 可用性破坏, 嗅探欺骗, 域环境渗透, 底层机制研究, 拒绝服务, 文件锁定, 无后门, 无文件攻击, 权限维持, 灰哥战术, 端点可见性, 网络安全, 行为防御绕过, 逆向工具, 错误配置检测, 隐私保护, 零痕迹