ShareEnum 学习笔记(9.5):内网共享体检------开放共享、匿名访问与权限风险
- [ShareEnum 学习笔记(9.5):内网共享体检------开放共享、匿名访问与权限风险](#ShareEnum 学习笔记(9.5):内网共享体检——开放共享、匿名访问与权限风险)
-
- 1)工具定位与亮点
- 2)工作原理(通俗版)
- [3)3 分钟上手:一次标准扫描](#3)3 分钟上手:一次标准扫描)
- 4)结果判读:五类"红线"与优先级
- [5)和 NTFS 权限的"交叉验证"](#5)和 NTFS 权限的“交叉验证”)
- 6)PowerShell:多主机共享枚举脚本(可直接用)
- 7)整改策略与命令模板(先备份、分批回滚)
- [8)与其他 Sysinternals 的"组合拳"](#8)与其他 Sysinternals 的“组合拳”)
- 9)性能与稳定性建议
- 10)标准操作流程(SOP)
- 结语
ShareEnum 学习笔记(9.5):内网共享体检------开放共享、匿名访问与权限风险
适用读者 :域管/运维/安全/合规;需要快速盘点 局域网/域内的文件共享 与权限暴露 ,发现"人人可写 ""匿名可读 "等高危点并闭环整改。
一句话 :ShareEnum 用 GUI 扫描内网主机的 SMB 共享与访问权限 ,帮你一眼识别 Everyone/Anonymous 的读写风险,生成清单便于审计与修复。
1)工具定位与亮点
- 零代理、解压即用:适合临时体检与应急盘点。
- 一键扫描域/工作组/子网:自动发现计算机 → 读取其共享与 ACL。
- 风险着色 :将 可写/匿名访问 的共享高亮,直达问题点。
- 导出报表:CSV/文本留证,方便与整改单匹配核销。
与 9.4 的 AccessEnum 不同:ShareEnum 关注"主机层面的共享暴露面 ",是外向 视角;AccessEnum 是对本地路径/注册表/服务 做内向细查。两者联用="发现入口 → 下钻验证"。
2)工作原理(通俗版)
- 通过 SMB/RPC 枚举主机的共享(
net share等同级接口):- 常见内置共享:
ADMIN$、C$、IPC$(默认受控,不是重点) - 业务/自建共享:
\\HOST\ShareName(重点)
- 常见内置共享:
- 读取共享的 DACL / 访问权限 ,归纳主体与权限级别:
- 主体:Everyone / Authenticated Users / Users / Anonymous / Guests / 具体组/用户
- 权限:Read / Change(Write) / Full
- 输出主机---共享---路径---权限矩阵并标注风险。
3)3 分钟上手:一次标准扫描
- 启动 ShareEnum(建议"以管理员身份"运行)。
- 选择范围 :域/工作组,或直接输入 IP 段/主机列表。
- 凭据 :
- 已登录账户具备查询权限即可;跨域/工作组可先
runas /netonly或映射凭据。
- 已登录账户具备查询权限即可;跨域/工作组可先
- 开始扫描:等待结果加载。
- 导出:保存 CSV,交由安全/合规跟进整改。
小贴士 :大网段请分批 ,优先扫服务器 OU 、文件服务器 、终端金库等高价值资产,缩短首轮出清时间。
4)结果判读:五类"红线"与优先级
从高到低建议排查顺序:
- 可写共享(Change/Full)授予 Everyone/Authenticated Users/Users
- 影响:任意域内用户可落点木马/篡改脚本/掉包 EXE → 快速横向。
- Anonymous(匿名)可读/可写
- 影响:未认证访问即可读数据或写入植入物,常见于历史兼容或误配。
- Guests 可访问(读/写)
- 共享指向可写目录 (即使共享 ACL 严格,底层 NTFS ACL 若放开仍有风险)
- 继承/特例混乱:同一台主机共享策略不一致、临时共享遗留。
矩阵速查(示例):
| Host | Share | Path | Principal | Permission | 风险判断 |
|---|---|---|---|---|---|
| FS01 | 公共资料 | D:\Share\Public | Everyone | Change | 高(人人可写) |
| FS02 | Reports | E:\Data\Rpt | Anonymous | Read | 高(匿名可读) |
| APP01 | Deploy | C:\Deploy | Users | Read | 中 |
| FILE03 | HR | D:\HR | HR-Group | Change | 低(业务最小) |
5)和 NTFS 权限的"交叉验证"
- 共享权限 与 NTFS ACL 共同决定最终权限 :
- 访问权限 = 共享权限 ∩ NTFS 权限
- ShareEnum 看到的是共享层面的"门槛",最终生效还需看目标路径的 NTFS。
- 实操建议:对标记为"有写入风险"的共享,用 AccessChk/AccessEnum 下钻核实 NTFS ACL。
快速核查命令(本地/远程):
bat
:: 查看共享列表(本机)
net share
:: 查看共享对应路径的 NTFS ACL(本机示例)
icacls "D:\Share\Public"
:: 远程(具备权限时,可用 PowerShell 会话)
Invoke-Command -ComputerName FS01 -ScriptBlock { net share; icacls "D:\Share\Public" }
6)PowerShell:多主机共享枚举脚本(可直接用)
powershell
$hosts = @("FS01","FS02","APP01")
$creds = Get-Credential # 跨域/工作组时建议显式凭据
$results = foreach ($h in $hosts) {
try {
$shares = Invoke-Command -ComputerName $h -Credential $creds -ScriptBlock {
Get-SmbShare | Where-Object {$_.Name -notin 'ADMIN$','C$','IPC$'} |
ForEach-Object {
$acc = (Get-SmbShareAccess -Name $_.Name | Select-Object AccountName, AccessRight)
[PSCustomObject]@{
Host = $env:COMPUTERNAME
Share = $_.Name
Path = $_.Path
Access = ($acc | ForEach-Object { "$($_.AccountName):$($_.AccessRight)" }) -join "; "
}
}
}
$shares
} catch {
[PSCustomObject]@{ Host=$h; Share='(error)'; Path=''; Access=$_.Exception.Message }
}
}
$results | Format-Table -AutoSize
$results | Export-Csv .\shareenum_report.csv -NoTypeInformation -Encoding UTF8
注 :
Get-SmbShare/Get-SmbShareAccess适用于 Win8+/Server 2012+ ;更老系统可回退wmic share/net share+ WMI/CIM。
7)整改策略与命令模板(先备份、分批回滚)
原则:
- 共享权限:默认 Read ;严禁将 Change/Full 授予 Everyone/Authenticated Users/Users。
- 写入需求:创建专用业务组授予最小权限;不使用宽泛大组。
- 禁止匿名访问/访客。禁止 SMBv1,强制 SMB 签名(按合规策略执行)。
备份共享定义(脚本/文档化)
bat
net share > \\fileserver\audit\share_backup_%COMPUTERNAME%.txt
快速调降共享权限(示例)
建议使用 GUI/组策略/配置管理统一执行;命令行示意如下:
powershell
# 将共享权限收紧为只读(示例:移除 Everyone 写入)
Revoke-SmbShareAccess -Name "公共资料" -AccountName "Everyone" -Force -Confirm:$false
Grant-SmbShareAccess -Name "公共资料" -AccountName "Domain Users" -AccessRight Read -Force
关闭匿名相关策略(本地策略/GPO 更佳)
- 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项:
- 网络访问:不允许匿名枚举 SAM 帐户
- 网络访问:不允许匿名枚举 SAM 帐户和共享
- 网络访问:让 Everyone 权限应用于匿名用户(禁用)
- 同步禁用 SMBv1 、启用/要求 SMB 签名(按域策略与兼容性评估执行)。
8)与其他 Sysinternals 的"组合拳"
- ShareEnum → AccessEnum/AccessChk :发现可疑共享 → 下钻NTFS ACL。
- ShareEnum → Sysmon/Log :对重要共享开启访问日志(文件服务器/EDR),可关联可疑源主机与时间线。
- ShareEnum → PsExec/PsService:批量下发脚本、重启相关服务、刷新策略。
9)性能与稳定性建议
- 分批次/分 OU 扫描,优先服务器与重要部门。
- 对网络质量一般的分支,采用就近跳板扫描,减少超时。
- 结果分级归档:高危(当日闭环)/中危(周内)/低危(月内)+ 复查计划。
- 建立基线 :将"健康共享清单"固化,后续只看差异 与新增。
10)标准操作流程(SOP)
- 启动 ShareEnum ,按域/子网范围快速枚举;
- 导出 CSV,按"主体=Everyone/Anonymous/Guests 且 权限包含 Change/Full"过滤;
- 抽样下钻 AccessChk/AccessEnum 核实 NTFS;
- 编制整改单:收回广泛写入 、创建业务组 、禁匿名/禁 SMBv1/启签名;
- 变更前备份共享定义与 ACL,分批执行,留痕;
- 复扫验证 ,更新基线,纳入月度/季度巡检。
结语
ShareEnum 是"找问题"的显微镜,能在极短时间里把内网共享的暴露面 拉到你眼前。把它与 AccessEnum/AccessChk 、PowerShell 脚本、以及 GPO/CMDB/EDR 联动起来,你就具备了:发现 → 论证 → 变更 → 复核 → 基线化 的完整闭环。
下一篇,我们继续进入 ShellRunAs(9.6) :最小权限 与特权分离场景下,如何"临时提权而不是永久提权"。