
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 и многих других.
Клонируйте репозиторий и установите зависимости с помощью скрипта 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
# Добавить 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
Auto config — синхронизировать NTP с целевым контроллером домена и добавить запись в /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]