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森林

交互模式:

a801f80ead204214

自动化模式:

43f89fc7dc204309

  • TryHackme 攻击目录

    4fdb0c8a29204357

用例

对于所描述的每种情况,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

  • 添加更多枚举和开发工具…

 

标签:工具分享, Active Directory