
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 várias ferramentas do 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 utilizador a grupo, RBCD, Shadow Credentials) e extração de passwords (secretsdump, lsassy, nanodump, DonPAPI). O script simplifica o uso de uma grande variedade de ferramentas: impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI e muitas outras.
Clone o repositório Git 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
# Adicionar linWinPwn_docker ao 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
# Executar linWinPwn_docker (saída no diretório atual do host)
linWinPwn_docker -t <DC_IP>
linWinPwn_docker -t <DC_IP> -d <dominio> -u <utilizador> -p <password> --auto
Ou construa 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 um menu interativo para executar verificações separadamente
linWinPwn -t <IP_Controlador_de_Dominio> [-d <dominio_AD> -u <utilizador_AD> -p <password_AD> -H <hash[LM:NT]> -K <bilhete_kerb[./krb5cc_ticket]> -A <chave_AES> -C <cert[./cert.pfx]> -o <diretorio_saida>]
2. Modo Automatizado - Utilizando o parâmetro --auto, executa ferramentas de enumeração (sem exploração, modificações ou extração de passwords)
Ao usar o modo automatizado, diferentes verificações são realizadas com base no método de autenticação.
linWinPwn -t <IP_Controlador_de_Dominio> --auto [-o <diretorio_saida>]
linWinPwn -t <IP_Controlador_de_Dominio> -d <dominio_AD> -u <utilizador_AD> [-p <password_AD> -H <hash[LM:NT]> -K <bilhete_kerb[./krb5cc_ticket]> -A <chave_AES> -C <cert[./cert.pfx]>] [-o <diretorio_saida>] --auto
Auto config - Executa sincronização NTP com o DC alvo e adiciona entrada ao /etc/hosts antes de executar os módulos
linWinPwn -t <IP_Controlador_de_Dominio> --auto-config
LDAPS - Usa LDAPS em vez de LDAP (porta 636)
linWinPwn -t <IP_Controlador_de_Dominio> --ldaps
Forçar Autenticação Kerberos - Força o uso de autenticação Kerberos em vez de NTLM (quando possível)
linWinPwn -t <IP_Controlador_de_Dominio> --force-kerb
Verbose - Ativa todos os outputs verbosos e de depuração
linWinPwn -t <IP_Controlador_de_Dominio> --verbose
Interface - Escolhe a interface de rede do atacante
linWinPwn -t <IP_Controlador_de_Dominio> -I tun0
linWinPwn -t <IP_Controlador_de_Dominio> --interface eth0
Alvos - Escolhe os alvos a serem escaneados (DC, All, IP=IP_ou_hostname, File=./caminho_para_ficheiro)
linWinPwn -t <IP_Controlador_de_Dominio> --targets All
linWinPwn -t <IP_Controlador_de_Dominio> --targets DC
linWinPwn -t <IP_Controlador_de_Dominio> -T IP=192.168.0.1
linWinPwn -t <IP_Controlador_de_Dominio> -T File=./list_servers.txt
Wordlists personalizadas - Escolhe wordlists de utilizadores e passwords personalizadas
linWinPwn -t <IP_Controlador_de_Dominio> -U /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
linWinPwn -t <IP_Controlador_de_Dominio> -P /usr/share/seclists/Passwords/xato-net-10-million-passwords.txt
linWinPwn pode ser particularmente útil quando se tem acesso a um ambiente Active Directory por um tempo limitado e se deseja ser mais eficiente no processo de enumeração e na recolha de evidências. Além disso, o linWinPwn pode substituir o uso de ferramentas de enumeração no Windows com o objetivo de reduzir o número de artefactos criados (por exemplo, comandos PowerShell, Eventos do Windows, ficheiros criados em disco) e contornar certos Antivírus ou EDRs. Isto pode ser alcançado realizando o encaminhamento dinâmico de portas remotas através da criação de um túnel SSH do host Windows (por exemplo, máquina VDI ou estação de trabalho ou portátil) para uma máquina Linux remota (por exemplo, portátil de pentest ou VPS) e executando o linWinPwn com proxychains.
No host Windows, execute usando PowerShell:
ssh.exe kali@<maquina_linux> -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 <IP_Controlador_de_Dominio> -d <dominio_AD> -u <utilizador_AD> [-p <password_AD> -H <hash[LM:NT]> -K <bilhete_kerb[./krb5cc_ticket]> -A <chave_AES> -C <cert[./cert.pfx]>] [-o <diretorio_saida>] [--auto]
ldap3: netexec, ldapdomaindump (NTLM), Certipy, pre2k, bloodhound, ldeep, GroupPolicyBackdoor, relayking
msldap: bloodyAD
netexec, ldapdomaindump, ldeep, windapsearch, godap, pre2k, ldapnomnom
Inspiração: S3cur3Th1sSh1t - WinPwn
Ferramentas:
lwp_tool_integrator.py automatiza a integração de novas ferramentas. Ele corrige linWinPwn.sh, install.sh e README.md num único passo:
authenticate() com as flags apropriadasinstall.sh para instalação automáticaREADME.mdUso:
python3 lwp_tool_integrator.py <tool_config.json>
Consulte lwp_tool_template.json para um exemplo de configuração.
A utilização do linWinPwn para atacar alvos sem consentimento mútuo prévio é ilegal. É da responsabilidade do utilizador final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem qualquer responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este programa. Utilize apenas para fins educacionais.
| Ferramenta | Null Session | Password | NTLM Hash | Bilhete Kerberos | Chave AES | Certificado |
|---|
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 | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
Referências: