linWinPwn 是一个 bash 脚本,它封装了大量 Active Directory 工具,用于枚举(LDAP、RPC、ADCS、MSSQL、Kerberos、SCCM)、漏洞检查(noPac、ZeroLogon、MS17-010、MS14-068)、对象修改(密码更改、将用户添加到组、RBCD、影子凭据)和密码转储(secretsdump、lsassy、nanodump、DonPAPI)。该脚本简化了大量工具的使用:impacket、bloodhound、netexec、enum4linux-ng、ldapdomaindump、lsassy、smbmap、kerbrute、certipy、silenthound、bloodyAD、DonPAPI 等。
使用 install.sh 脚本克隆仓库并安装依赖:
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
或者,使用 Docker Hub 上的预构建 Docker 镜像:
docker pull lefayjey/linwinpwn:latest
# 将 linWinPwn_docker 添加到 PATH
echo -e "docker run --rm --init -it --net=host -v \$(pwd):/opt/lwp-output lefayjey/linwinpwn:latest \$@" | sudo tee "/usr/local/sbin/linWinPwn_docker"
sudo chmod 755 /usr/local/sbin/linWinPwn_docker
# 运行 linWinPwn_docker(输出到主机的当前目录)
linWinPwn_docker -t <DC_IP>
linWinPwn_docker -t <DC_IP> -d <domain> -u <user> -p <password> --auto
或者从源码构建:
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
linWinPwn 脚本可以以交互模式(默认)或自动模式(仅枚举)运行。
1. 交互模式(默认) - 打开交互菜单以单独运行检查
linWinPwn -t <Domain_Controller_IP> [-d <AD_domain> -u <AD_user> -p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]> -o <output_dir>]
2. 自动模式 - 使用 --auto 参数,运行枚举工具(不进行利用、修改或密码转储)
使用自动模式时,根据身份验证方法执行不同的检查。
linWinPwn -t <Domain_Controller_IP> --auto [-o <output_dir>]
linWinPwn -t <Domain_Controller_IP> -d <AD_domain> -u <AD_user> [-p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]>] [-o <output_dir>] --auto
自动配置 - 与目标 DC 同步 NTP 并在运行模块之前添加条目到 /etc/hosts
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - 使用 LDAPS 代替 LDAP(端口 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
强制 Kerberos 身份验证 - 强制使用 Kerberos 身份验证代替 NTLM(在可能的情况下)
linWinPwn -t <Domain_Controller_IP> --force-kerb
详细 - 启用所有详细和调试输出
linWinPwn -t <Domain_Controller_IP> --verbose
接口 - 选择攻击者的网络接口
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
目标 - 选择要扫描的目标(DC、All、IP=IP_or_hostname、File=./path_to_file)
linWinPwn -t <Domain_Controller_IP> --targets All
linWinPwn -t <Domain_Controller_IP> --targets DC
linWinPwn -t <Domain_Controller_IP> -T IP=192.168.0.1
linWinPwn -t <Domain_Controller_IP> -T File=./list_servers.txt
自定义字典 - 选择自定义用户名和密码字典
linWinPwn -t <Domain_Controller_IP> -U /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
linWinPwn -t <Domain_Controller_IP> -P /usr/share/seclists/Passwords/xato-net-10-million-passwords.txt
当你只有有限时间访问 Active Directory 环境,并希望更高效地进行枚举和收集证据时,linWinPwn 特别有用。此外,linWinPwn 可以替代 Windows 上的枚举工具,以减少创建的工件数量(例如 PowerShell 命令、Windows 事件、磁盘上的文件),并绕过某些防病毒或 EDR。这可以通过从 Windows 主机(例如 VDI 机器或工作站或笔记本电脑)创建 SSH 隧道到远程 Linux 机器(例如渗透测试笔记本电脑或 VPS),并使用 proxychains 运行 linWinPwn 来实现。
在 Windows 主机上,使用 PowerShell 运行:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
在 Linux 机器上,首先更新 /etc/proxychains4.conf 包含 socks5 127.0.0.1 1080,然后运行:
linWinPwn_proxychains -t <Domain_Controller_IP> -d <AD_domain> -u <AD_user> [-p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]>] [-o <output_dir>] [--auto]
ldap3: netexec、ldapdomaindump (NTLM)、Certipy、pre2k、bloodhound、ldeep、GroupPolicyBackdoor、relayking
msldap: bloodyAD
netexec、ldapdomaindump、ldeep、windapsearch、godap、pre2k、ldapnomnom
灵感来源:S3cur3Th1sSh1t - WinPwn
工具:
lwp_tool_integrator.py 自动完成新工具的集成。它一次性修补 linWinPwn.sh、install.sh 和 README.md:
authenticate()install.sh 以自动安装README.md 中添加引用和身份验证表行用法:
python3 lwp_tool_integrator.py <tool_config.json>
配置示例请参阅 lwp_tool_template.json。
在未事先获得双方同意的情况下使用 linWinPwn 攻击目标是违法的。最终用户有责任遵守所有适用的地方、州和联邦法律。开发者不承担任何责任,也不对因使用本程序造成的任何滥用或损害负责。仅用于教育目的。
| 工具 | 空会话 | 密码 | NTLM 哈希 | Kerberos 票据 | AES 密钥 | 证书 |
|---|
netexec | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Impacket | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
bloodhound-python | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ldapdomaindump | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
enum4linux-ng | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
bloodyAD | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
SilentHound | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
ldeep | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
windapsearch | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
LDAPWordlistHarvester | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
LDAPConsole | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pyLDAPmonitor | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
sccmhunter | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ldapper | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
Adalanche | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
GPOwned | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ACED | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
breads | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
godap | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
adcheck | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
certi.py | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Certipy | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
certsync | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pre2k | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
orpheus | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
smbmap | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
FindUncommonShares | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
smbclient-ng | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
manspider | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
coercer | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
privexchange | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
RunFinger.py | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
mssqlrelay | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
targetedKerberoast | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pygpoabuse | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
DonPAPI | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
hekatomb | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
ExtractBitlockerKeys | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
evilwinrm | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
mssqlpwner | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
SoaPy | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
SCCMSecrets | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Soaphound | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
gpoParser | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
spearspray | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
GroupPolicyBackdoor | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
NetworkHound | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
ShareHound | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
DACLSearch | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ScriptScout | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
relayking | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
ADWS Domain Dump | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
PyADRecon | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
PyADRecon-ADWS | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
ADPulse | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
PowerView.py | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
evil-winrm-py | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
参考资料: