
Script de Bash que envuelve herramientas de Active Directory para enumeración automatizada, verificación de vulnerabilidades, explotación y volcado de contraseñas a través de LDAP, RPC, Kerberos y SMB.
linWinPwn es un script bash que envuelve una serie de herramientas de Active Directory para enumeración (LDAP, RPC, ADCS, MSSQL, Kerberos, SCCM), comprobaciones de vulnerabilidades (noPac, ZeroLogon, MS17-010, MS14-068), modificaciones de objetos (cambio de contraseña, agregar usuario a grupo, RBCD, Shadow Credentials) y volcado de contraseñas (secretsdump, lsassy, nanodump, DonPAPI). El script agiliza el uso de una gran cantidad de herramientas: impacket, bloodhound, netexec, enum4linux-ng, ldapdomaindump, lsassy, smbmap, kerbrute, certipy, silenthound, bloodyAD, DonPAPI y muchas otras.
Clona el repositorio e instala los requisitos usando el script install.sh
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
Alternativamente, usa la imagen Docker preconstruida de Docker Hub
docker pull lefayjey/linwinpwn:latest
# Agregar linWinPwn_docker al 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
# Ejecutar linWinPwn_docker (salida al directorio actual del host)
linWinPwn_docker -t <DC_IP>
linWinPwn_docker -t <DC_IP> -d <dominio> -u <usuario> -p <contraseña> --auto
O compilar desde el código fuente
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
El script linWinPwn puede ejecutarse en modo interactivo (predeterminado), o en modo automatizado (solo enumeración).
1. Modo Interactivo (Predeterminado) - Abre un menú interactivo para ejecutar comprobaciones por separado
linWinPwn -t <IP_Del_Controlador_De_Dominio> [-d <dominio_AD> -u <usuario_AD> -p <contraseña_AD> -H <hash[LM:NT]> -K <ticket_kerb[./krb5cc_ticket]> -A <clave_AES> -C <cert[./cert.pfx]> -o <directorio_salida>]
2. Modo Automatizado - Usando el parámetro --auto, ejecuta herramientas de enumeración (sin explotación, modificaciones ni volcado de contraseñas)
Cuando se usa el modo automatizado, se realizan diferentes comprobaciones según el método de autenticación.
linWinPwn -t <IP_Del_Controlador_De_Dominio> --auto [-o <directorio_salida>]
linWinPwn -t <IP_Del_Controlador_De_Dominio> -d <dominio_AD> -u <usuario_AD> [-p <contraseña_AD> -H <hash[LM:NT]> -K <ticket_kerb[./krb5cc_ticket]> -A <clave_AES> -C <cert[./cert.pfx]>] [-o <directorio_salida>] --auto
Auto config - Realiza sincronización NTP con el DC objetivo y agrega entrada a /etc/hosts antes de ejecutar los módulos
linWinPwn -t <IP_Del_Controlador_De_Dominio> --auto-config
LDAPS - Usa LDAPS en lugar de LDAP (puerto 636)
linWinPwn -t <IP_Del_Controlador_De_Dominio> --ldaps
Forzar autenticación Kerberos - Fuerza el uso de autenticación Kerberos en lugar de NTLM (cuando sea posible)
linWinPwn -t <IP_Del_Controlador_De_Dominio> --force-kerb
Verbose - Habilita todas las salidas verbose y de depuración
linWinPwn -t <IP_Del_Controlador_De_Dominio> --verbose
Interfaz - Elige la interfaz de red del atacante
linWinPwn -t <IP_Del_Controlador_De_Dominio> -I tun0
linWinPwn -t <IP_Del_Controlador_De_Dominio> --interface eth0
Objetivos - Elige los objetivos a escanear (DC, All, IP=IP_o_hostname, File=./ruta_al_archivo)
linWinPwn -t <IP_Del_Controlador_De_Dominio> --targets All
linWinPwn -t <IP_Del_Controlador_De_Dominio> --targets DC
linWinPwn -t <IP_Del_Controlador_De_Dominio> -T IP=192.168.0.1
linWinPwn -t <IP_Del_Controlador_De_Dominio> -T File=./lista_servidores.txt
Wordlists personalizadas - Elige wordlists de usuarios y contraseñas personalizadas
linWinPwn -t <IP_Del_Controlador_De_Dominio> -U /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
linWinPwn -t <IP_Del_Controlador_De_Dominio> -P /usr/share/seclists/Passwords/xato-net-10-million-passwords.txt
linWinPwn puede ser particularmente útil cuando solo tienes acceso a un entorno de Active Directory por un tiempo limitado y deseas ser más eficiente en el proceso de enumeración y en la recopilación de evidencia. Además, linWinPwn puede reemplazar el uso de herramientas de enumeración en Windows con el objetivo de reducir la cantidad de artefactos creados (por ejemplo, comandos PowerShell, Eventos de Windows, archivos creados en disco) y eludir ciertos Antivirus o EDR. Esto se puede lograr realizando un reenvío de puertos dinámico remoto mediante la creación de un túnel SSH desde el host Windows (por ejemplo, máquina VDI o estación de trabajo o laptop) a una máquina Linux remota (por ejemplo, laptop de pentest o VPS), y ejecutando linWinPwn con proxychains.
En el host Windows, ejecuta usando PowerShell:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
En la máquina Linux, primero actualiza /etc/proxychains4.conf para incluir socks5 127.0.0.1 1080, luego ejecuta:
linWinPwn_proxychains -t <IP_Del_Controlador_De_Dominio> -d <dominio_AD> -u <usuario_AD> [-p <contraseña_AD> -H <hash[LM:NT]> -K <ticket_kerb[./krb5cc_ticket]> -A <clave_AES> -C <cert[./cert.pfx]>] [-o <directorio_salida>] [--auto]
ldap3: netexec, ldapdomaindump (NTLM), Certipy, pre2k, bloodhound, ldeep, GroupPolicyBackdoor, relayking
msldap: bloodyAD
netexec, ldapdomaindump, ldeep, windapsearch, godap, pre2k, ldapnomnom
Inspiración: S3cur3Th1sSh1t - WinPwn
Herramientas:
lwp_tool_integrator.py automatiza la integración de nuevas herramientas. Parchea linWinPwn.sh, install.sh y README.md en un solo paso:
authenticate() con los flags apropiadosinstall.sh para la instalación automáticaREADME.mdUso:
python3 lwp_tool_integrator.py <tool_config.json>
Consulta lwp_tool_template.json para un ejemplo de configuración.
El uso de linWinPwn para atacar objetivos sin consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no son responsables de ningún uso indebido o daño causado por este programa. Úselo solo con fines educativos.
| Herramienta | Null Session | Contraseña | Hash NTLM | Ticket Kerberos | Clave 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 | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
Referencias: