ShareEnum 学习笔记(9.5):内网共享体检——开放共享、匿名访问与权限风险

ShareEnum 学习笔记(9.5):内网共享体检------开放共享、匿名访问与权限风险

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 分钟上手:一次标准扫描

  1. 启动 ShareEnum(建议"以管理员身份"运行)。
  2. 选择范围 :域/工作组,或直接输入 IP 段/主机列表
  3. 凭据
    • 已登录账户具备查询权限即可;跨域/工作组可先 runas /netonly 或映射凭据。
  4. 开始扫描:等待结果加载。
  5. 导出:保存 CSV,交由安全/合规跟进整改。

小贴士 :大网段请分批 ,优先扫服务器 OU文件服务器终端金库等高价值资产,缩短首轮出清时间。


4)结果判读:五类"红线"与优先级

从高到低建议排查顺序:

  1. 可写共享(Change/Full)授予 Everyone/Authenticated Users/Users
    • 影响:任意域内用户可落点木马/篡改脚本/掉包 EXE → 快速横向。
  2. Anonymous(匿名)可读/可写
    • 影响:未认证访问即可读数据或写入植入物,常见于历史兼容或误配。
  3. Guests 可访问(读/写)
  4. 共享指向可写目录 (即使共享 ACL 严格,底层 NTFS ACL 若放开仍有风险)
  5. 继承/特例混乱:同一台主机共享策略不一致、临时共享遗留。

矩阵速查(示例):

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)

  1. 启动 ShareEnum ,按域/子网范围快速枚举
  2. 导出 CSV,按"主体=Everyone/Anonymous/Guests权限包含 Change/Full"过滤;
  3. 抽样下钻 AccessChk/AccessEnum 核实 NTFS;
  4. 编制整改单:收回广泛写入 、创建业务组禁匿名/禁 SMBv1/启签名
  5. 变更前备份共享定义与 ACL,分批执行,留痕;
  6. 复扫验证 ,更新基线,纳入月度/季度巡检。

结语

ShareEnum 是"找问题"的显微镜,能在极短时间里把内网共享的暴露面 拉到你眼前。把它与 AccessEnum/AccessChk 、PowerShell 脚本、以及 GPO/CMDB/EDR 联动起来,你就具备了:发现 → 论证 → 变更 → 复核 → 基线化 的完整闭环。

下一篇,我们继续进入 ShellRunAs(9.6)最小权限特权分离场景下,如何"临时提权而不是永久提权"。

相关推荐
米粒15 小时前
操作系统原理--处理机调度
大数据
数说星榆1815 小时前
在线高清泳道图制作工具 无水印 PC
大数据·人工智能·架构·机器人·流程图
逑之5 小时前
C语言笔记16:文件操作
c语言·笔记·单片机
老胡全房源系统5 小时前
2026年1月适合房产经纪人用的房产中介管理系统
大数据·人工智能·房产经纪人培训
一瞬祈望5 小时前
⭐ 深度学习入门体系(第 11 篇): 卷积神经网络的卷积核是如何学习到特征的?
深度学习·学习·cnn
wdfk_prog5 小时前
[Linux]学习笔记系列 -- 底层CPU与体系结构宏
linux·笔记·学习
逑之5 小时前
C语言笔记15:动态内存管理
c语言·网络·笔记
GISer_Jing5 小时前
AI Agent:学习与适应、模型上下文协议
人工智能·学习·设计模式·aigc
im_AMBER5 小时前
Leetcode 100 在链表中插入最大公约数
数据结构·c++·笔记·学习·算法·leetcode·链表
今儿敲了吗5 小时前
计算机网络第三章笔记(二)
笔记·计算机网络