
Bash-Skript, das Active Directory-Tools für automatisierte Enumeration, Schwachstellenprüfung, Exploitation und Passwort-Entnahme über LDAP, RPC, Kerberos und SMB kapselt.
linWinPwn ist ein Bash-Skript, das eine Reihe von Active-Directory-Tools für die Enumeration (LDAP, RPC, ADCS, MSSQL, Kerberos, SCCM), Schwachstellenprüfungen (noPac, ZeroLogon, MS17-010, MS14-068), Objektänderungen (Passwortänderung, Benutzer zu Gruppe hinzufügen, RBCD, Shadow Credentials) und Passwort-Dumping (secretsdump, lsassy, nanodump, DonPAPI) umhüllt. Das Skript optimiert die Nutzung einer großen Anzahl von Tools: impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI und viele andere.
Git clone das Repository und installiere die Anforderungen mit dem install.sh-Skript
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
Alternativ verwende das vorgefertigte Docker-Image von 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
Oder baue aus dem Quellcode
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
Das linWinPwn-Skript kann im interaktiven Modus (Standard) oder im automatisierten Modus (nur Enumeration) ausgeführt werden.
1. Interaktiver Modus (Standard) - Öffnet ein interaktives Menü, um Prüfungen separat auszuführen
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. Automatisierter Modus - Mit dem Parameter --auto werden Enumerationstools ausgeführt (keine Ausnutzung, Änderungen oder Passwort-Dumping)
Bei Verwendung des automatisierten Modus werden je nach Authentifizierungsmethode verschiedene Prüfungen durchgeführt.
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 - Führt NTP-Synchronisation mit dem Ziel-DC durch und fügt einen Eintrag in /etc/hosts hinzu, bevor die Module ausgeführt werden
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - LDAPS anstelle von LDAP verwenden (Port 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Force Kerberos Auth - Erzwingt die Verwendung der Kerberos-Authentifizierung anstelle von NTLM (wenn möglich)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose - Aktiviert alle ausführlichen und Debug-Ausgaben
linWinPwn -t <Domain_Controller_IP> --verbose
Interface - Wähle die Netzwerkschnittstelle des Angreifers
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Targets - Wähle die zu scannenden Ziele (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 - Wähle benutzerdefinierte Benutzer- und Passwort-Wortlisten
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 kann besonders nützlich sein, wenn Sie nur für begrenzte Zeit Zugang zu einer Active-Directory-Umgebung haben und den Enumerationprozess sowie die Beweissicherung effizienter gestalten möchten. Darüber hinaus kann linWinPwn die Verwendung von Enumerationstools unter Windows ersetzen, um die Anzahl der erstellten Artefakte (z. B. PowerShell-Befehle, Windows-Ereignisse, auf der Festplatte erstellte Dateien) zu reduzieren und bestimmte Anti-Virus- oder EDR-Systeme zu umgehen. Dies kann durch remote dynamisches Port-Forwarding über die Erstellung eines SSH-Tunnels von einem Windows-Host (z. B. VDI-Maschine oder Workstation oder Laptop) zu einer entfernten Linux-Maschine (z. B. Pentest-Laptop oder VPS) und die Ausführung von linWinPwn mit proxychains erreicht werden.
Führe auf dem Windows-Host mit PowerShell aus:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
Aktualisiere auf der Linux-Maschine zunächst /etc/proxychains4.conf, um socks5 127.0.0.1 1080 einzufügen, und führe dann aus:
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]