
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 rationalise 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 à l'aide du script install.sh
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
Vous pouvez également utiliser 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 compilez depuis les 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) - Ouvre 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 ni 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 - Exécute une synchronisation NTP avec le DC cible et ajoute une entrée dans /etc/hosts avant d'exécuter les modules
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - Utilise LDAPS au lieu de LDAP (port 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Force Kerberos Auth - Force l'utilisation de l'authentification Kerberos au lieu de NTLM (lorsque c'est possible)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose - Active toutes les sorties verbeuses et de débogage
linWinPwn -t <Domain_Controller_IP> --verbose
Interface - Choisit l'interface réseau de l'attaquant
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Targets - Choisit les cibles à scanner (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 - Choisit 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 seulement, et que vous souhaitez être plus efficace dans le processus d'énumération et dans la collecte de preuves. De plus, linWinPwn peut remplacer l'utilisation d'outils d'énumération sous 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 Anti-Virus ou EDR. Cela peut être réalisé en effectuant une 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]