
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]
ldap3: netexec, ldapdomaindump (NTLM), Certipy, pre2k, bloodhound, ldeep, GroupPolicyBackdoor, relayking
msldap: bloodyAD
netexec, ldapdomaindump, ldeep, windapsearch, godap, pre2k, ldapnomnom
Inspiration : S3cur3Th1sSh1t - WinPwn
Outils :
lwp_tool_integrator.py automatise l'intégration de nouveaux outils. Il patche linWinPwn.sh, install.sh et README.md en une seule étape :
authenticate() avec les options appropriéesinstall.sh pour une installation automatiqueREADME.mdUtilisation :
python3 lwp_tool_integrator.py <tool_config.json>
Voir lwp_tool_template.json pour un exemple de configuration.
L'utilisation de linWinPwn pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, étatiques et fédérales applicables. Les développeurs déclinent toute responsabilité et ne sont pas responsables des mauvais usages ou dommages causés par ce programme. À utiliser uniquement à des fins éducatives.
| Tool | Session Null | Mot de passe | Hash NTLM | Ticket Kerberos | Clé AES | Certificat |
|---|
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 | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
Références :