PowerHuntShares 是一个 PowerShell 工具,旨在帮助网络安全团队和渗透测试人员更好地识别、理解、攻击和修复其保护的 Active Directory 环境中的 SMB 共享。每个黑客都有滥用 SMB 共享的故事,但网络安全团队仍然难以防御这一攻击面。该项目旨在提供一个开源的概念验证工具,用于创建全面的共享清单,利用统计、图表、图形和语言模型来情境化共享、总结关系、评估风险并优先修复。
它支持以下功能:
额外功能:
PowerHuntShares v2 资源:
PowerHuntShares v1 资源:
PowerHuntShares 会盘点配置了“过度权限”的 SMB 共享 ACL,并突出显示“高风险”ACL。以下是它们在此上下文中的定义。
过度权限
过度读取和写入共享权限定义为任何包含针对“Everyone”、“Authenticated Users”、“BUILTIN\Users”、“Domain Users”或“Domain Computers”组的显式 ACE(访问控制条目)的网络共享 ACL。由于权限继承问题,所有这些都允许域用户访问受影响的共享。请注意,有一个参数允许操作员添加自己的目标组。
以下是一些额外背景:
请注意:共享权限可能被 NTFS 权限覆盖。另外,请注意测试排除了包含以下关键字的共享名称:
print$, prnproc$, printer, netlogon, and sysvol
高风险共享
在本报告的上下文中,高风险共享定义为允许未经授权远程访问系统或应用程序的共享。
默认情况下,这包括共享
wwwroot, inetpub, c$, 和 admin$
以下是可以用于将 PowerHuntShares 加载到当前 PowerShell 会话中的命令列表。请注意,每次运行 PowerShell 时都必须运行其中一个。它不是持久性的。
# 绕过执行策略限制
Set-ExecutionPolicy -Scope Process Bypass
# 导入当前目录中的模块
Import-Module .\PowerHuntShares.psm1
或
# 降低 SSL 操作级别以支持连接到 github
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12
# 下载并将 PowerHuntShares.psm1 加载到内存中
IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/PowerHuntShares/main/PowerHuntShares.psm1")
重要提示:所有命令都应以非特权域用户的身份运行。
.EXAMPLE 1: 从域计算机运行。默认执行 Active Directory 计算机发现。
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test
.EXAMPLE 2: 使用备用域凭据从域计算机运行。默认执行 Active Directory 计算机发现。
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -Credential domain\user
.EXAMPLE 3: 以当前用户身份从域计算机运行。目标主机在文件中指定,每行一个。
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -HostFile c:\temp\hosts.txt
.EXAMPLE 4: 使用凭据从非域计算机运行。默认执行 Active Directory 计算机发现。
C:\temp\test> runas /netonly /user:domain\user PowerShell.exe
PS C:\temp\test> Import-Module PowerHuntShares.psm1
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -RunSpaceTimeout 10 -OutputDirectory c:\folder\ -DomainController 10.1.1.1 -Credential domain\user
=============================================================== PowerHuntShares =============================================================== 此函数自动执行以下任务: o 确定当前计算机的域 o 枚举域计算机 o 过滤响应 ping 请求的计算机 o 过滤 TCP 445 端口开放且可访问的计算机 o 枚举 SMB 共享 o 枚举 SMB 共享权限 o 识别具有潜在过度权限的共享 o 识别提供读取和写入访问权限的共享 o 识别高风险的共享 o 识别常见的共享所有者、名称和目录列表 o 生成创建、最后写入和最后访问时间线 o 生成 html 摘要报告和详细的 csv 文件 注意:在大型环境中运行可能需要数小时。 --------------------------------------------------------------- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| --------------------------------------------------------------- 共享发现 --------------------------------------------------------------- [*][03/01/2021 09:35] 扫描开始 [*][03/01/2021 09:35] 输出目录: c:\temp\smbshares\SmbShareHunt-03012021093504 [*][03/01/2021 09:35] 成功连接域控制器: dc1.demo.local [*][03/01/2021 09:35] 对 demo.local 域关联的计算机执行 LDAP 查询 [*][03/01/2021 09:35] - 找到 245 台计算机 [*][03/01/2021 09:35] Ping 245 台计算机 [*][03/01/2021 09:35] - 55 台计算机响应了 ping 请求。 [*][03/01/2021 09:35] 检查 55 台计算机的 TCP 端口 445 是否开放 [*][03/01/2021 09:36] - 49 台计算机的 TCP 端口 445 开放。 [*][03/01/2021 09:36] 从 49 台计算机获取 SMB 共享列表 [*][03/01/2021 09:36] - 找到 217 个 SMB 共享。 [*][03/01/2021 09:36] 从 217 个 SMB 共享获取共享权限 [*][03/01/2021 09:37] - 枚举了 374 个共享权限。 [*][03/01/2021 09:37] 从 33 个 SMB 共享获取目录列表 [*][03/01/2021 09:37] - 目标最多 3 层嵌套目录 [*][03/01/2021 09:37] - 枚举了 563 个文件和文件夹。 [*][03/01/2021 09:37] 识别潜在的过度共享权限 [*][03/01/2021 09:37] - 在 12 个系统上发现 33 个潜在的过度权限。 [*][03/01/2021 09:37] 扫描完成 --------------------------------------------------------------- 共享分析 --------------------------------------------------------------- [*][03/01/2021 09:37] 分析开始 [*][03/01/2021 09:37] - 在 12 个系统上,14 个共享可读取。 [*][03/01/2021 09:37] - 在 1 个系统上,1 个共享可写入。 [*][03/01/2021 09:37] - 在 32 个系统上,46 个共享被视为非默认共享。 [*][03/01/2021 09:37] - 在 0 个系统上,0 个共享被视为高风险。 [*][03/01/2021 09:37] - 识别了过度共享的前 5 位所有者。 [*][03/01/2021 09:37] - 识别了前 5 个共享组。 [*][03/01/2021 09:37] - 识别了前 5 个共享名称。 [*][03/01/2021 09:37] - 识别了过去 90 天内创建的共享。 [*][03/01/2021 09:37] - 识别了过去 90 天内访问过的共享。 [*][03/01/2021 09:37] - 识别了过去 90 天内修改过的共享。 [*][03/01/2021 09:37] 分析完成 --------------------------------------------------------------- 共享报告摘要 --------------------------------------------------------------- [*][03/01/2021 09:37] 域: demo.local [*][03/01/2021 09:37] 开始时间: 03/01/2021 09:35:04 [*][03/01/2021 09:37] 结束时间: 03/01/2021 09:37:27 [*][03/01/2021 09:37] 运行时间: 00:02:23.2759086 [*][03/01/2021 09:37] [*][03/01/2021 09:37] 计算机摘要 [*][03/01/2021 09:37] - 找到 245 台域计算机。 [*][03/01/2021 09:37] - 55 台 (22.45%) 域计算机响应了 ping。 [*][03/01/2021 09:37] - 49 台 (20.00%) 域计算机的 TCP 端口 445 可访问。 [*][03/01/2021 09:37] - 32 台 (13.06%) 域计算机拥有非默认共享。 [*][03/01/2021 09:37] - 12 台 (4.90%) 域计算机拥有可能具有过度权限的共享。 [*][03/01/2021 09:37] - 12 台 (4.90%) 域计算机拥有允许 READ 访问的共享。 [*][03/01/2021 09:37] - 1 台 (0.41%) 域计算机拥有允许 WRITE 访问的共享。 [*][03/01/2021 09:37] - 0 台 (0.00%) 域计算机拥有高风险共享。 [*][03/01/2021 09:37] [*][03/01/2021 09:37] 共享摘要 [*][03/01/2021 09:37] - 找到 217 个共享。我们预计至少有 98 个共享, [*][03/01/2021 09:37] 因为 49 个系统开放了端口,并且通常有两个默认共享。 [*][03/01/2021 09:37] - 在 32 个系统上,46 个 (21.20%) 共享是非默认的。 [*][03/01/2021 09:37] - 在 12 个系统上,14 个 (6.45%) 共享配置了 33 个潜在的过度 ACL。 [*][03/01/2021 09:37] - 在 12 个系统上,14 个 (6.45%) 共享允许 READ 访问。 [*][03/01/2021 09:37] - 在 1 个系统上,1 个 (0.46%) 共享允许 WRITE 访问。 [*][03/01/2021 09:37] - 在 0 个系统上,0 个 (0.00%) 共享被视为高风险。 [*][03/01/2021 09:37] [*][03/01/2021 09:37] 共享 ACL 摘要 [*][03/01/2021 09:37] - 找到 374 个 ACL。 [*][03/01/2021 09:37] - 374 个 (100.00%) ACL 与非默认共享关联。 [*][03/01/2021 09:37] - 33 个 (8.82%) ACL 被确定为潜在的过度。 [*][03/01/2021 09:37] - 32 个 (8.56%) ACL 允许 READ 访问。 [*][03/01/2021 09:37] - 1 个 (0.27%) ACL 允许 WRITE 访问。 [*][03/01/2021 09:37] - 0 个 (0.00%) ACL 与高风险共享名称关联。 [*][03/01/2021 09:37] [*][03/01/2021 09:37] - 最常见的 5 个共享名称是: [*][03/01/2021 09:37] - 14 个已发现的共享中,有 9 个 (64.29%) 与前 5 个共享名称关联。 [*][03/01/2021 09:37] - 4 backup [*][03/01/2021 09:37] - 2 ssms [*][03/01/2021 09:37] - 1 test2 [*][03/01/2021 09:37] - 1 test1 [*][03/01/2021 09:37] - 1 users [*] -----------------------------------------------




作者
Scott Sutherland (@_nullbind)
使用的开源代码
以下个人编写了在本项目中使用的开源代码。非常感谢他们及其工作!
| 名称 | 站点 |
|---|---|
| Will Schroeder (@harmj0y) | https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1 |
许可证
BSD 3-Clause
待修复/缺陷
待添加功能
以下是 PowerHuntShares 工作方式、提取的数据以及如何呈现可操作结果的视觉演练。
提供已发现共享和相关风险的高级视图。

自动生成的报告,便于分析和离线查看。

共享名称及其属性的详细映射。

建议的修复步骤,以解决已识别的风险。

已发现问题的可视化时间分布。

比较不同系统上的已发现共享和权限。

将相关文件夹和共享分组,以获得更好的上下文。

显示基于已发现指纹的资产暴露情况。

已发现共享和关系的可视化表示。

突出显示扫描期间发现的敏感信息和秘密。

列出共享中可能有趣或有价值的文件。

突出显示敏感数据可能暴露的区域。

综合风险暴露视图及详细分析。

| Warren F (@pscookiemonster) | https://github.com/RamblingCookieMonster/Invoke-Parallel |
| Luben Kirov | http://www.gi-architects.co.uk/2016/02/powershell-check-if-ip-or-subnet-matchesfits/ |