
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 Aufzählung (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) bündelt. Das Skript optimiert die Nutzung einer Vielzahl von Tools: impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI und viele andere.
Repository klonen und Abhängigkeiten mit dem install.sh-Skript installieren
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
Alternativ kann das vorgefertigte Docker-Image von Docker Hub verwendet werden
docker pull lefayjey/linwinpwn:latest
# linWinPwn_docker zum PATH hinzufügen
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 ausführen (Ausgabe in das aktuelle Verzeichnis des Hosts)
linWinPwn_docker -t <DC_IP>
linWinPwn_docker -t <DC_IP> -d <domain> -u <user> -p <password> --auto
Oder selbst aus dem Quellcode bauen
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 automatischen Modus (nur Aufzählung) ausgeführt werden.
1. Interaktiver Modus (Standard) – Interaktives Menü öffnen, 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. Automatischer Modus – Mit dem --auto-Parameter werden Aufzählungstools ausgeführt (keine Ausnutzung, Änderungen oder Passwort-Dumping)
Bei Verwendung des automatischen Modus werden basierend auf der 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-Konfiguration – NTP-Synchronisierung mit Ziel-DC ausführen und Eintrag zu /etc/hosts hinzufügen, 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
Kerberos-Authentifizierung erzwingen – Kerberos-Authentifizierung anstelle von NTLM erzwingen (wenn möglich)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Ausführlich – Alle ausführlichen und Debug-Ausgaben aktivieren
linWinPwn -t <Domain_Controller_IP> --verbose
Interface – Netzwerkschnittstelle des Angreifers auswählen
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Ziele – Ziele zum Scannen auswählen (DC, Alle, IP=IP_oder_Hostname, Datei=./Pfad_zur_Datei)
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
Benutzerdefinierte Wortlisten – Benutzerdefinierte Benutzer- und Passwort-Wortlisten auswählen
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 Zugriff auf eine Active Directory-Umgebung haben und den Aufzählungsprozess sowie das Sammeln von Beweisen effizienter gestalten möchten. Darüber hinaus kann linWinPwn den Einsatz von Aufzählungstools unter Windows ersetzen, um die Anzahl der erstellten Artefakte (z. B. PowerShell-Befehle, Windows-Ereignisse, erstellte Dateien auf der Festplatte) zu reduzieren und bestimmte Anti-Viren- oder EDR-Lösungen zu umgehen. Dies kann durch die Durchführung einer dynamischen Remote-Portweiterleitung über die Erstellung eines SSH-Tunnels vom Windows-Host (z. B. VDI-Maschine oder Workstation oder Laptop) zu einer entfernten Linux-Maschine (z. B. Pentest-Laptop oder VPS) und Ausführung von linWinPwn mit proxychains erreicht werden.
Auf dem Windows-Host mit PowerShell ausführen:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
Auf der Linux-Maschine zunächst /etc/proxychains4.conf aktualisieren, um socks5 127.0.0.1 1080 aufzunehmen, dann ausführen:
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
Inspiration: S3cur3Th1sSh1t - WinPwn
Werkzeuge:
lwp_tool_integrator.py automatisiert die Integration neuer Tools. Es patcht linWinPwn.sh, install.sh und README.md in einem Schritt:
authenticate() mit entsprechenden Flagsinstall.sh für die automatische InstallationREADME.md hinzuVerwendung:
python3 lwp_tool_integrator.py <tool_config.json>
Siehe lwp_tool_template.json für ein Konfigurationsbeispiel.
Die Nutzung von linWinPwn zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze einzuhalten. Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden. Nur für Bildungszwecke verwenden.
| Tool | Null Session | Password | NTLM Hash | Kerberos Ticket | AES Key | Certificate |
|---|
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 | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
Referenzen: