
Script Bash che integra strumenti Active Directory per enumerazione automatizzata, controlli delle vulnerabilità, sfruttamento e dump delle password tramite LDAP, RPC, Kerberos e SMB.
linWinPwn è uno script bash che racchiude una serie di strumenti per Active Directory per l'enumerazione (LDAP, RPC, ADCS, MSSQL, Kerberos, SCCM), controlli di vulnerabilità (noPac, ZeroLogon, MS17-010, MS14-068), modifiche agli oggetti (cambio password, aggiunta utente al gruppo, RBCD, Shadow Credentials) e dumping delle password (secretsdump, lsassy, nanodump, DonPAPI). Lo script semplifica l'uso di un gran numero di strumenti: impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI e molti altri.
Clona il repository con Git e installa i requisiti usando lo script install.sh
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
In alternativa, usa l'immagine Docker pre-costruita da 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
Oppure compila dai sorgenti
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
Lo script linWinPwn può essere eseguito in modalità interattiva (predefinita), o in modalità automatizzata (solo enumerazione).
1. Modalità Interattiva (Predefinita) - Apre il menu interattivo per eseguire i controlli separatamente
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. Modalità Automatizzata - Usando il parametro --auto, esegue gli strumenti di enumerazione (nessuna exploitation, modifica o dumping delle password)
Quando si utilizza la modalità automatizzata, vengono eseguiti controlli diversi in base al metodo di autenticazione.
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 - Esegue la sincronizzazione NTP con il DC target e aggiunge una voce a /etc/hosts prima di eseguire i moduli
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - Usa LDAPS invece di LDAP (porta 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Force Kerberos Auth - Forza l'uso dell'autenticazione Kerberos invece di NTLM (quando possibile)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose - Abilita tutti gli output verbosi e di debug
linWinPwn -t <Domain_Controller_IP> --verbose
Interface - Scegli l'interfaccia di rete dell'attaccante
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Targets - Scegli i target da scansionare (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 - Scegli wordlist personalizzate per utenti e password
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 può essere particolarmente utile quando hai accesso a un ambiente Active Directory solo per un tempo limitato, e desideri essere più efficiente nel processo di enumerazione e nella raccolta di prove. Inoltre, linWinPwn può sostituire l'uso di strumenti di enumerazione su Windows allo scopo di ridurre il numero di artefatti creati (ad esempio, comandi PowerShell, Eventi Windows, file creati su disco), e aggirare alcuni Anti-Virus o EDR. Questo può essere ottenuto eseguendo il port forwarding dinamico remoto attraverso la creazione di un tunnel SSH dall'host Windows (ad esempio, macchina VDI o workstation o laptop) verso una macchina Linux remota (ad esempio, laptop da Pentest o VPS), ed eseguendo linWinPwn con proxychains.
Sull'host Windows, esegui usando PowerShell:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
Sulla macchina Linux, prima aggiorna /etc/proxychains4.conf per includere socks5 127.0.0.1 1080, poi esegui:
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]