
Script Bash enveloppant des outils Active Directory pour l'énumération automatisée, les vérifications de vulnérabilités, l'exploitation et l'extraction de mots de passe via LDAP, RPC, Kerberos et SMB.
linWinPwn est un script bash qui encapsule un certain nombre d'outils Active Directory pour l'énumération (LDAP, RPC, ADCS, MSSQL, Kerberos, SCCM), les vérifications de vulnérabilités (noPac, ZeroLogon, MS17-010, MS14-068), les modifications d'objets (changement de mot de passe, ajout d'utilisateur à un groupe, RBCD, Shadow Credentials) et l'extraction de mots de passe (secretsdump, lsassy, nanodump, DonPAPI). Le script simplifie l'utilisation d'un grand nombre d'outils : impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI et bien d'autres.
Clonez le dépôt Git et installez les dépendances avec le script install.sh
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
Sinon, utilisez l'image Docker pré-construite depuis 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
Ou construisez à partir des sources
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
Le script linWinPwn peut être exécuté en mode interactif (par défaut) ou en mode automatisé (énumération uniquement).
1. Mode interactif (par défaut) - Ouvrir un menu interactif pour exécuter les vérifications séparément
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. Mode automatisé - En utilisant le paramètre --auto, exécute les outils d'énumération (pas d'exploitation, de modifications ou d'extraction de mots de passe)
Lors de l'utilisation du mode automatisé, différentes vérifications sont effectuées en fonction de la méthode d'authentification.
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 - Effectuer une synchronisation NTP avec le contrôleur de domaine cible et ajouter une entrée dans /etc/hosts avant d'exécuter les modules
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - Utiliser LDAPS au lieu de LDAP (port 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Forcer l'authentification Kerberos - Forcer l'utilisation de l'authentification Kerberos au lieu de NTLM (lorsque possible)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose - Activer toutes les sorties verbeuses et de débogage
linWinPwn -t <Domain_Controller_IP> --verbose
Interface - Choisir l'interface réseau de l'attaquant
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Cibles - Choisir les cibles à analyser (DC, All, IP=IP_ou_nom_hôte, File=./chemin_vers_fichier)
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
Wordlists personnalisées - Choisir des wordlists personnalisées d'utilisateurs et de mots de passe
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 peut être particulièrement utile lorsque vous avez accès à un environnement Active Directory pour une durée limitée et que vous souhaitez être plus efficace dans le processus d'énumération et la collecte de preuves. De plus, linWinPwn peut remplacer l'utilisation d'outils d'énumération sur Windows dans le but de réduire le nombre d'artefacts créés (par exemple, commandes PowerShell, événements Windows, fichiers créés sur le disque) et de contourner certains antivirus ou EDR. Cela peut être réalisé en effectuant un redirection de port dynamique à distance via la création d'un tunnel SSH depuis l'hôte Windows (par exemple, machine VDI, poste de travail ou ordinateur portable) vers une machine Linux distante (par exemple, ordinateur portable de pentest ou VPS), et en exécutant linWinPwn avec proxychains.
Sur l'hôte Windows, exécutez avec PowerShell :
ssh.exe kali@<linux_machine> -R 1080 -NCqf
Sur la machine Linux, mettez d'abord à jour /etc/proxychains4.conf pour inclure socks5 127.0.0.1 1080, puis exécutez :
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]