linWinPwn是一个bash脚本,可以自动进行一些AD枚举和漏洞检查
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/lefayjey/linWinPwn
linWinPwn - Active Directory 漏洞扫描器
描述
linWinPwn 是一个 bash 脚本,可以自动执行许多 Active Directory 枚举和漏洞检查。 该脚本使用了许多工具并作为它们的包装器。 工具包括:impacket、bloodhound、crackmapexec、ldapdomaindump、lsassy、smbmap、kerbrute、adidnsdump、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 到 include 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>]
启用 NTP 同步 - 在运行模块之前与目标 DC 运行 NTP 同步(参数应在最后设置)
./linWinPwn.sh -t <Domain_Controller_IP> --ntp
用户模块:ad_enum、kerberos、scan_shares、vuln_checks、mssql_enum
./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>] -M user
所有模块:ad_enum、kerberos、scan_shares、vuln_checks、mssql_enum、pwd_dump
./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>] -M all
模块 ad_enum: Active Directory 枚举
./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>] -M ad_enum
模块 kerberos: 基于 Kerberos 的攻击
./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>] -M kerberos
模块 scan_shares: 网络共享扫描
./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>] -M scan_shares
模块 vuln_checks: 漏洞检查
./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>] -M vuln_checks
模块 mssql_enum: MSSQL 枚举
./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>] -M mssql_enum
模块 pwd_dump: 密码转储
./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>] -M pwd_dump
演示
- HackTheBox森林
交互模式:
自动化模式:
用例
对于所描述的每种情况,linWinPwn 脚本执行不同的检查,如下所示。
情况 1:未经身份验证
- 模块 ad_enum
- 摆脱蛮力
- 用户枚举
- ldapdomaindump 匿名枚举
- 检查是否强制执行 ldap 签名,检查 LDAP 中继
- 模块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 数据收集
- ldapdomaindump 枚举
- SilentHound 枚举
- crackmapexec user=pass 枚举
- 委托信息抽取
- GPP 密码提取
- 使用 certipy 提取 ADCS 信息
- 检查是否强制执行 ldap 签名,检查 LDAP 中继
- 提取用户的 MachineAccountQuota、密码策略和包含“pass”的用户描述
- 模块kerberos
- kerbrute 用户=传递枚举
- ASREPRoasting(并使用 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、zerologon、petitpotam、nopac、smb-sigining、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
- 使用以下命令在所有域服务器上转储 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
TODO
- 添加更多枚举和开发工具…


