描述
linWinPwn 是一个 bash 脚本,可以自动执行许多 Active Directory 枚举和漏洞检查。该脚本使用了许多工具并作为它们的包装器。工具包括:impacket,bloodhound,crackmapexec,enum4linux-ng,ldapdomaindump,lsassy,smbmap,kerbrute,adonsdump,certipy,silenthound 等。
当您只能在有限的时间内访问 Active Directory 环境,并且您希望自动执行枚举过程并有效地收集证据时,linWinPwn 特别有用。此外,linWinPwn 可以取代 Windows 上枚举工具的使用,以减少创建的工件(例如,PowerShell 命令、Windows 事件、磁盘上创建的文件)的数量,并绕过某些防病毒或EDR。这可以通过创建从 Windows 主机(例如,VDI 机器或工作站或笔记本电脑)到远程 Linux 机器(例如,Pentest 笔记本电脑或 VPS)的 SSH 隧道,并使用代理链运行 linWinPwn 来执行远程动态端口转发来实现.
在 Windows 主机上,使用 PowerShell 运行:
ssh kali@<linux_machine> -R 1080 -NCqf
在 Linux 计算机上,首先更新以包含 ,然后运行:/etc/proxychains4.conf
socks5 127.0.0.1 1080
proxychains ./linWinPwn.sh -t <Domain_Controller_IP>
设置
Git 克隆存储库并使脚本可执行
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn; chmod +x linWinPwn.sh
使用脚本安装要求(使用标准帐户)install.sh
chmod +x install.sh
./install.sh
用法
模块
linWinPwn 脚本包含 6 个模块,可以单独或同时使用。
默认值:交互式– 打开交互式菜单以单独运行检查
./linWinPwn.sh -t <Domain_Controller_IP> [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
自动配置– 与目标 DC 运行 NTP 同步并在运行模块之前将条目添加到 /etc/hosts
./linWinPwn.sh -t <Domain_Controller_IP> --auto-config
LDAPS – 使用 LDAPS 而不是 LDAP(端口 636)
./linWinPwn.sh -t <Domain_Controller_IP> --ldaps
用户模块:ad_enum、kerberos、scan_shares、vuln_checks、mssql_enum
./linWinPwn.sh -t <Domain_Controller_IP> -M user [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
所有模块:ad_enum、kerberos、scan_shares、vuln_checks、mssql_enum、pwd_dump
./linWinPwn.sh -t <Domain_Controller_IP> -M all [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
ad_enum模块: Active Directory 枚举
./linWinPwn.sh -t <Domain_Controller_IP> -M ad_enum [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
kerberos模块:基于 Kerberos 的攻击
./linWinPwn.sh -t <Domain_Controller_IP> -M kerberos [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
scan_shares模块:网络共享扫描
./linWinPwn.sh -t <Domain_Controller_IP> -M scan_shares [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
vuln_checks模块:漏洞检查
./linWinPwn.sh -t <Domain_Controller_IP> -M vuln_checks [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
mssql_enum 模块: MSSQL 枚举
./linWinPwn.sh -t <Domain_Controller_IP> -M mssql_enum [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
pwd_dump 模块:密码转储
./linWinPwn.sh -t <Domain_Controller_IP> -M pwd_dump [-d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -o <output_dir>]
演示
- HackTheBox Forest
- TryHackme 攻击目录
使用案例
对于所描述的每种情况,linWinPwn 脚本执行不同的检查,如下所示。
情况 1:未经身份验证
- 模块 ad_enum
- 使用 crackmapexec 进行 RID 暴力破解
- 使用 crackmapexec、enum4linux-ng、ldapdomaindump、ldeep 的匿名枚举
- 对收集的计算机列表进行 Pre2k 身份验证检查
- 模块kerberos
- kerbrute 用户撞库
- ASREPRoast 使用收集的用户列表(并使用 john-the-ripper 和 rockyou wordlist 破解哈希)
- 盲 Kerberoast
- CVE-2022-33679 利用
- 模块 scan_shares
- SMB 在已识别的服务器上共享匿名枚举
- 模块 vuln_checks
- 已识别服务器上的 WebDav、dfscoerce、shadowcoerce 和 Spooler 服务的枚举
- 检查 ms17-010、zerologon、petitpotam、nopac、smb-sigining、ntlmv1、runasppl 漏洞
./linWinPwn.sh -t <Domain_Controller_IP_or_Target_Domain> -M user
情况 2:标准帐户(使用密码、NTLM 哈希或 Kerberos 票证)
- 使用 adidnsdump 提取 DNS
- 模块 ad_enum
- BloodHound 数据收集
- 使用 crackmapexec、enum4linux-ng、ldapdomaindump、windapsearch、SilentHound、ldeep 进行枚举
- 用户
- 机器帐户配额
- 密码政策
- 包含“pass”的用户描述
- ADCS
- 子网
- GPP 密码
- 检查是否强制执行 ldap 签名,检查 LDAP 中继
- Delegation 信息
- crackmapexec 查找 user=pass 的账户
- 域计算机上的 Pre2k 身份验证检查
- 使用 certipy 和 certi.py 提取 ADCS 信息
- 模块kerberos
- kerbrute 查找 user=pas 的帐户
- ASREPRoasting(并使用 john-the-ripper 和 rockyou wordlist 破解哈希)
- Kerberoasting(以及使用 john-the-ripper 和 rockyou wordlist 破解哈希)
- 有针对性的 Kerberoasting(以及使用 john-the-ripper 和 rockyou wordlist 破解哈希)
- 模块 scan_shares
- SMB 使用 smbmap 和 cme 的 spider_plus 在所有域服务器上共享枚举
- 所有域服务器上的 KeePass 文件和进程发现
- 模块 vuln_checks
- 所有域服务器上的 WebDav、dfscoerce、shadowcoerce 和 Spooler 服务枚举
- 检查 ms17-010、ms14-068、zerologon、petitpotam、nopac、smb-signing、ntlmv1、runasppl 弱点
- 模块 mssql_enum
- 检查 mssql 权限升级路径
./linWinPwn.sh -t <Domain_Controller_IP_or_Target_Domain> -d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -M user
案例 3:管理员帐户(使用密码、NTLM 哈希或 Kerberos 票证)
- 所有“标准用户”检查
- 模块 pwd_dump
- LAPS 和 gMSA 转储
- 所有域服务器上的 secretsdump
- 使用 impacket、crackmapexec 和 certsync 的 NTDS 转储
- 使用以下命令在所有域服务器上转储 lsass:procdump、lsassy、nanodump、handlekatz、masky
- 使用 DonPAPI 提取备份密钥
./linWinPwn.sh -t <Domain_Controller_IP_or_Target_Domain> -d <AD_domain> -u <AD_user> -p <AD_password_or_hash[LM:NT]_or_kerbticket[./krb5cc_ticket]> -M all
待办事项
- 添加更多枚举和利用工具…
学分
- 灵感: S3cur3Th1sSh1t – WinPwn
- 工具:
- 安全身份验证 – 数据包
- BYT3BL33D3R,MPGN和所有贡献者 – CrackmapExec
- 狐狸-IT-猎犬-蟒蛇
- Dirkjanm – ldapdomaindump, adonsdump
- ZER1T0 – certi.py
- ly4k – Certipy
- 肖恩德万斯 – smbmap
- Ropnop – Windapsearch, Kerbrute
- 登录安全 – DonPAPI
- layer8secure – SilentHound
- Shutdown Repo – TargetedKerberoast
- 法郎-笔测试 – LDEEP
- 加勒特福斯特13 – pre2k
- Zblurx – Certsync
- 引用:
- https://orange-cyberdefense.github.io/ocd-mindmaps/
- https://github.com/swisskyrepo/PayloadsAllTheThings
- https://book.hacktricks.xyz/
- https://adsecurity.org/
- https://casvancooten.com/
- https://www.thehacker.recipes/
- https://www.ired.team/
- https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet
- https://hideandsec.sh/
法律免责声明
未经事先双方同意,使用 linWinPwn 攻击目标是非法的。最终用户有责任遵守所有适用的地方、州和联邦法律。对于本程序造成的任何误用或损坏,开发人员不承担任何责任。仅用于教育目的。