
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]
ldap3: netexec, ldapdomaindump (NTLM), Certipy, pre2k, bloodhound, ldeep, GroupPolicyBackdoor, relayking
msldap: bloodyAD
netexec, ldapdomaindump, ldeep, windapsearch, godap, pre2k, ldapnomnom
Вдохновение: S3cur3Th1sSh1t — WinPwn
Инструменты:
lwp_tool_integrator.py автоматизирует интеграцию новых инструментов. Он исправляет linWinPwn.sh, install.sh и README.md за один шаг:
authenticate() с соответствующими флагамиinstall.sh для автоматической установкиREADME.mdИспользование:
python3 lwp_tool_integrator.py <tool_config.json>
Пример конфигурации см. в lwp_tool_template.json.
Использование linWinPwn для атак на цели без предварительного взаимного согласия является незаконным. Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе. Разработчики не несут никакой ответственности и не несут ответственности за любое неправильное использование или ущерб, вызванный этой программой. Используйте только в образовательных целях.
| Инструмент | Null Session | Пароль | NTLM Hash | Kerberos Ticket | AES Key | Сертификат |
|---|
netexec | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Impacket | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
bloodhound-python | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ldapdomaindump | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
enum4linux-ng | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
bloodyAD | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
SilentHound | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
ldeep | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
windapsearch | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
LDAPWordlistHarvester | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
LDAPConsole | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pyLDAPmonitor | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
sccmhunter | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ldapper | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
Adalanche | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
GPOwned | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ACED | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
breads | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
godap | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
adcheck | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
certi.py | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Certipy | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
certsync | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pre2k | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
orpheus | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
smbmap | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
FindUncommonShares | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
smbclient-ng | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
manspider | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
coercer | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
privexchange | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
RunFinger.py | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
mssqlrelay | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
targetedKerberoast | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pygpoabuse | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
DonPAPI | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
hekatomb | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
ExtractBitlockerKeys | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
evilwinrm | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
mssqlpwner | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
SoaPy | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
SCCMSecrets | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Soaphound | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
gpoParser | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
spearspray | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
GroupPolicyBackdoor | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
NetworkHound | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
ShareHound | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
DACLSearch | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ScriptScout | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
relayking | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
ADWS Domain Dump | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
PyADRecon | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
PyADRecon-ADWS | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
ADPulse | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
PowerView.py | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
evil-winrm-py | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
Ссылки: