Capitulo IV. PowerShell y otras herramientas: Pentesting sin limites Eg
r
Funeién Deseripcién
Esta funcion permite ejecutar un modulo pasandole
la configuracién a través del parémeiro Options. Un
ejemplo seria Invoke-MSFModlule Id -Type exploit -Name “multifhandler””-Options @
{PAYLOAD "="wwindows/meterpreter/reverse top": "LH
OST"="192.168.56.101"; "LPORT”'=4444 } Yorbose
Tabla 4.042 Funciones de Module en Posh-Metasploit.
Plugin
Esta categoria 0 m6dulo de Posh-Metasploit permite gestionar e interactuar con diferentes plugins
desarrollados para mejorar la experiencia de Metasploit durante un test de intrusién,
Por ejemplo, se pueden utilizar plugins que integren herramientas como Nessus,
con el fin de aprovechar los resultados obtenidos en la fase de explotacién. A contin
Jas funciones que aporta ef médulo:
Nmap 0 Nexpose
uacién se detallan
Funeién Deseripeién
Esta funcién proporeiona un listado de todos los pligiay cargados
en Metasploit. Un ejemplo seria Get-MSFLoadedPlugin Id
Esta funcién permite registrar un plugin y de este modo disponer
de los eomandos que el piugin aporta. Su comando equivalente
en Metasploit seria load . Un ejemplo seria Register.
Register-MSEPbigin MSFPlugin -Id -Name nessus, y
Posteriormente para ver si el plugin se ha cargado correctamente
se lanzaria Get- MSF LoadedPlugin —ld
Esta funcién permite descargar o eliminar un plugin ya cargado,
, ae Su comando equivalente en Metasplot sera unload
-Name nessus
Get-MSFLoadedPlugin
Tabla 4.05: Fumeiones le Plugin en Posh-AMetasploit.
Posh
Este médulo lleva el nombre idéntico. del framework, Permite la gestiGn de las sesiones con el servidor
remoto de Metasploit via XMLRPC, desde la creacién de dichas sesiones hasta la desconexién y
climinacién. A continuacién se describen las diferentes funciones que forman parte del médulo:Pentesting con PowerShell
Funcién
Descripeién
New-MSFServerSession
Set-MSFAuthToken
Genera una nueva sesién dado un MSFRPCD. Un ejemplo seria
‘New-MSFServerSession -ComputerName 192.168.1.104 -Port
i 55553 -Credentials (Get-Credential msf)
Configura sobre una sesidn existente un daithentication Token
Get-MSFServerSession
Remove-MSFServerSession | debe indicarse a través del parimetro Id, por ejemplo Remove-
Esta funcién devuelve un listado de las sesiones que hay abiertas
con el servidor remoto
n existente en el servidor. La sesion
Esta funcidn elimina una sesi
MSFServerSession -Id 2—Verbose
Get-MSFCoreInfo
Get-MSFAuthToken
Esta fincion devuelve informacién sobre la versién Core de una
sesién de Metasploit
Esta fimciéa devuelve informacion sobre el soken de autenticacién
de una sesion
New-MSFauthToken
Esta funcion genera un nuevo y permanente foken de autenticacion
en Metasploit
Remove-MSFAuthToken
Esta funcién elimina un soken de autenticacién conocido.
indicandole a través del parametro ~Token
Get-MSFThread
Esta funcién devuelve un listado de hilos que se ejecutan en el
servidor
Remove-MSFThread
Esta funcién detiene el hilo en ejecucién
Get-PoshMSPersion
Esta funcién devuelve la version actual de Posh-Metasploit
Tabla 4.06: Fimotones det médulo Pash-Metasploit en Posh-Metasploit
Session
Este médulo proporciona las funciones que permiten gestionar las sesiones, tras una explotacién
exitosa, que se tiene en Metasploit. La enumeracién de sesiones 0 como interactuar con ellas son
las funciones interesantes del médulo Session de Posh-
fetasploit. A continuacién se detallan las
funciones que forman parte del médulo:
Funcién
Deseripcion |
Get-MSFSession
Esta funcion devuelve un listado de las sesiones que se
encuentran abiertas tras una explotacién, Dentro de los
valores que devuelve la funcién se encuentran algunos
interesantes como SessionID, via_exploit, session_host,
via_pavload, platform o type entre otros. Un ejemplo
seria Get-MSFSession -Id Capitulo IV. PawerShell y otras herramientas: Pentesting sin limites
Funci6n
Deseripcién
USF MeterpreterConsole
Esta funcién permite escribir texto a través de la
sesion de Meverpreter obtenida tras la explotacion
de una vulnerabilidad. Un ejemplo seria Write-
MSF MeterpreterConsole -Index 0 -Sessionld -Text “sysinfo'n"
Read-MSF MeterpreterConsole
Esta funcién permite leer resultados obtenidos tras la
escritura con Write-MSFMeterpreterConsole. Es decir,
con una funcién se escribe a través de la sesién para
ejecutar una orden y con la otra funcién se recupera la
salida de lo escrito en consola. Un ejemplo seria Read-
MSF MeterpreterConsole -Id
~Sessionld
Ger-
MSF SessionCompatPostModule
Esta funcién devuelve un listado de médulos de tipo
‘post que son compatibles con la sesién que el usuario
tiene en la maquina comprometida. Un ejemplo seria
Get-MSFSessionCompaiPostModule -Id -Sessionld
Invoke-MSF MeterpreterCommand
Esta funcién ejecuta un comando a través de la consola
sobre una sesién de Meterpreter. El comando debe ser
propio de Meterpreter. Un ejemplo valido es Invoke-
MSFMMeterpreterCommand —Id
-Sessionld -Command “‘getuiel”
Write-MSFShellConsole
Esta funcién eseribe un texto a través de una sesién
de shell, Un ejemplo seria Write-MSFShellConsale
-Id -Sessiontd -Text “ping -c 2 127.0.0.0'n"
Read-MSF'ShellConsole
==.
Esta funcién permite leer la salida de los comandos
ejecutados a través de Write-MSFShellConsole. Un
ejemplo seria Read-MSF ShellConsole -Id -Sessionld
Remove-MSFSession
Esta funcién finaliza la sesién del payload que se indica a
través del parémetro Sessionid
Tabla 4.07: Funciones de Variables en Pash-Metasploit,
A continuacién se puede visualizar la ejecueién de la funcién Invoke-MSFMeterpreterCommand,
con la que se consigue ejecutar un comando a través de una sesién de Meterpreter. La salida se
muestra automdticamente, por lo que se puede decir que esta funcién automatiza el proceso de
entrada y salida de datos, es decir, una sesién més interactiva. El ejemplo puede encontrarse en la
documentacién de Posh-Metasploit.Era Pentesting con PowerShell
Fig. 4.11; Ejecuciin de comanilos de Meterpreter a través de Invoke-MS¥ MeterpreterCommand,
Variables
‘ste médulo se encarga de interactuar con las variables, sobretodo globales, del Framework.
\demés, permite gestionar el almacenamiento de las configuraciones que el usuario haya hecho
obre el entorno, lo cual equipara a la ejecucién del comando save en Metasploit. A continuacién se
escriben las funciones del médulo:
Funcién Deseripeién
; Esta funci6n permite interactuar con el Datastore global de variables.
Set- Equivale a la utilizacién del comando sedg en
sFCtobatVariabte | Metasploit. Un ejemplo seria Ser-MSFGlobalVariable -Id -Name LHOST -Value 192.168.56.101
Remave- Esta funcién permite desasignar una variable global. Un ejemplo seria
MSFGlobalVariable Remove-MSFGlobalVariable -Id -Name LHOST
Esta fancion almacena en la carpeta personal del usuario la
configuracién de Metasploit en ese instante. Es decir, todas las variables
Save-MSF Config asignadas en los médulos, todos los cambios realizados, el médulo
activo, etcétera. Un ejemplo seria Save-MSFConfig -Id
Tabla 4.08: Finciones dle Variables en Pash-MetasplotIndice alfabético
207
Indice alfabético
A G
Antak 11,170,171, 172, 207, 213 Get-Help 26, 27, 207
ASLR 88, 184, 207
H
B Handler 207
Background 207 Hardeodeado 207
Base64 10, 141, 142, 143, 144, 145, 156, 189, Hash 131, 147,207
207 Help 7, 26, 27, 173, 207
Black Hat 18, 207 Hijacking 117, 119, 207, 212
Bot 207 Hyper-V 59, 207
€ I
Cain & Abel 207 IDS 18, 207
Check 175,207 Invoke-Mimikatz 157, 166, 167, 168, 194, 195,
Command Injection 192, 207
CurrentUser 29, 207
D
DEP 88, 184, 207
E
Encodear 30, 207
EncodedCommand 30, 141, 142, 143, 145,
146, 148, 156, 170, 178, 179, 189, 193,
207
Ethical 3
Exifitration 207
Exploit 202, 207
F
Facebook 85, 207
Find-MsfPSExec 11, 186, 207
Fingerprinting 207
Flujos de trabajo 20, 207
Foca 84,207
196, 207, 211
Invoke-WebRequest 81, 82, 85, 86, 145, 207
IPS 18, 207
J
Jobs 11, 196. 198, 200, 201, 207, 213
L
LocalMachine 30, 207
M
Metasploit 11, 14, 59, 82, 84, 88, 109, 110,
112, 122, 123, 134, 146, 148, 164, 166,
186, 187, 189, 191, 192, 193, 194, 195,
196, 197, 198, 199, 200, 201,202, 203.
204, 205, 206, 207, 210, 211, 213
Microsoft 13, 14, 15, 16, 17, 18, 19, 21, 25, 26,
29, 36, 38, 39, 46, 48, 57. 65, 68, 74, 75,
84, 88, 89, 92, 102, 109, 110, 117, 124,
125, 169, 189, 193, 207. 209
Msfpayload 207feteat 110, 207
lishang 11, 18, 109, 170, 171, 172, 173, 174,
175, 176, 178, 179, 181, 182, 195, 207,
213
Imap 134, 136, 197, 203, 207
)
Jut-File $7, 170, 207
Jut-Minidump 158, 166, 168, 207
dut-Printer 57, 207
>
tass the hash 31,207
rastebin 85, 86, 178, 207
"EChecker 207
rersistence 10, 11, 154, 156, 166, 169, 178,
207,213
"ESecurity 11, 184, 185, 207
ripeline 207
Posh-SecMod 10, 18, 88, 109, 133, 134, 135,
136, 137, 138, 141, 142, 144, 145, 148,
207,2
owercat 10, 13, 110, 111, 113, 114, 115, 177,
207,210
owerpreter 171, 207
Powershell Arsenal 207
PowerShell Arsenal 154, 155, 159, 160, 161,
213
Powershell ISE 47, 48, 49, 50, 207, 209
PowerShell ISE_ 19, 20,47, 48, 49
Powersploit 18, 87, 88, 109, 154, 195, 156.
158, 161, 194, 195, 207, 213
PowerTools $8, 109, 116, 117, 207, 212
PowerUp 10,88, 117, 119, 120, 121, 123, 124,
207, 210, 212
PowerView 10, 116, 117, 125, 126, 127, 128,
129, 130, 131, 207, 208, 212
Python 11, 14, 189, 192, 207
Q
QEmu 59,207
Qurtuba 18, 84, 207
Pentesting con PowerShell
R
Recon 10, 11, 155, 158, 161, 163, 207
8
SafeSEH 88, 184, 207
ScriptBlock 33, 34, 79, 169, 170, 207
Session , 33, 34, 197, 204, 207
SET 14, 189, 190, 191, 207, 211
Shellshock 9, 79, 80, 81, 82, 83, 207, 210
Shmoocon 18, 207
SSID 173, 178, 180, 181, 207, 211
System32 46, 207
Syswow64 46, 207
T
Twitter 85, 86, 208
U
Unicorn.py 208
¥
Veil-Evasion 116, 208
Veil-Framework 10, 88, 109, 116, 117, 208,
212
Veil-PowerView 116, 208
Virtual Box 59, 60, 208
w
Windows Remote Management 31, 185. 208
WMI 9, 67, 72, 73, 74, 75, 76, 78, 133, 134,
142, 177, 208
x
XMLRPC 134, 196, 203, 208Indice de imagenes y tablas Eg
Indice de imagenes
Fig. 1.01:
Fig. 1.0;
Linea de comandos de PowerShell.
Eleccién de idioma en la descarga de PowerShell
Fig. jecucién del cmidet get-alias y obtencidn de los alias disponibles.
Fig, 1.04: Ejecucién de un proveedor que permite gestionar el registro en la ruta HKCU.
Fig. 1.05: Obtencién de los alias de set-location.
Fig, 1.06: Ejecucién de get-alias con el parimetro name para el filtrado de la salia
Fig. 1.07: Ejecucién en un pipeline
Fig, 1.08: Error sobre equipo remoto de no confianza.
Fig. 1.09: Correccién del error de equipos de confianza.....
Fig. 1.10: Creacién de sesién remota con otras credenciales.
Fig, |. 1: Eleccién de la sesién y ejecueién de una instruccién remota.
Pig. 1.12: Ejecucién de un script remoto.......
Fig. 1.13: Lanzar una PowerShell en remoto. .
Fig. 1.14: Creacién de una cadena segura obtenida por teclado....
Fig. 1.15: 2 Cadenas seguras con el mismo texto son distintas.
Fig. 1.16: Recuperacién de una clave segura a plano.
Captura de credenciales con Get-Credential...
: Mietosoft Windows SDK v7.0... Z
: Creacién de la entidad certificadora de confianza.
): Emisién del certificado con propésito de firma de cédigo.
Firma del sri sire
: Listado de informacién de Get-Command. .. :
: Propiedades para la personalizacién del entorno de PowerShell.
: Personalizacién de colores en Powershell
Powershell ISE ..
5: Fichas en Powershell ISE.
: Ejecueién de un script con Powershell ISE....
;cucién selectiva de lineas o instrucciones en Powershell ISE.
: Puntos de ruptura o breakpoint en Powershell ISE.
: Paginacidn de salida con el cmdlet Out-Host .
Obtencién de pistas en binarios de servicios sin comillas.
2 Creacién de objeto.
: Creacién de un objeto COM en Powershell...
: Utilizacion de filtros de objetos con Powershell...
Obtencidn de métodos estiticos en clases de NET Framework.....Pentesting con PowerShell
Fig, 2.15: Lectura de propiedades estaticas de clases NET Framework,
Fig. 2.16: Listado del proveedor de funciones,
Fig. 2.17: Captura de cédigo de una funcién implementad:
Fig, 2.18: Obtencién de aplicaciones instaladas con Windows Installer
Fig. 2.19: Nombres de las aplicaciones con los desinstaladores de Windows ‘Install
Fig, 2.20: Obtencién de la capacidad y espacio libre de las unidades de la maquina,
Fig. 2.21: Obtencién del estado de los servicios... .
Fig, 222: Ejecueién del soript que explota la vulnerabilidad de Shellshock. .
Fig, 2.23: Configuracién del médulo exploit/multi/handler de Metasploit para recibir conexién.
Fig. 2.24: Cédigo en un fichero TXT de una funcién que se puede cargar con el bot.
Fig, 2.25: Ejecucién de la funcién de Mimikatz.a través de PSBo .
Fig. 2.26: Ejecucién de un workflow basico,
Fig. 2.27: Ejecucién en paralelo.
Fig. 2.28: Bjecucién en paralelo con tareas secuenciales,
Fig, 2.29 : Ejecucién de InlineScript.
Fig. 2.30: Aproximacién a la estructura WinNT:.
Fig. 2.31: Acceso y listado de recursos en el proveedor deuctive Directory.
Fig, 2.32: Cambio de contenedor y listado de objetos....
Fig. Instalaci6n del médulo en la version Windows Server 2008 Ro
Fig. Importacién del médulo de IS (1* parte).
Fig. : Importacién del médulo de IIS (2* parte)...
Fig. 2.35: Acceso y listado de recursos en el proveedor de IIS.
Fig. 2.36: Creacién de un pool de aplicaciones.
Fig. 2.37: Creacién de una aplicacién web.
Fig, 2.38: Creacién de un sitio web.
Fig. 2.39: Creaci6n de un sitio FTP en Powershell.
Fig. 2.40: Creacién del backup de la configuracién de un
Fig. 3.01: Conexién a Metasploit a través del cliente powereat. ....
Fig. 3.02: Conexi6n a una powercat a la escucha que sitve una Pow! exShell
Fig. 3.03: Envio de una PowerShell a una maquina Linux a la escucha con neteat,
Fig. 3.04: Envio del contenido de un fichero a través de powercat. “
Fig, 3.05: Escaneo basico al puerto 80 de una maquina remota con powercat..
Fig, 3.06: Powercat sirve un fichero con Ia instruccién para ejecutar Meterpreter..
Fig. 3.07: Obtencién de shellcade creando conexidn con el servidor..
Fig. 3.08: Obteneién del control remoto de una maquina a través de PowerShell.
Fig. 3.09: Reporte de resultados de las funciones de escalada de PowerUp.
Fig. 3.10: Deteccién de un servicio sin comillas en [a ruta del binatio.
Fig. 3.11: Creacién del binario malicioso. '
Fig, 3.12: Obtencién del méximo privilegio en remoto a través de Meterpret
Fig, 3.13: Deteccion de binario con permisos mal configurados.
Fig, 3.14: Creacién de binario personalizado con instruccién maliciosa. ...
Fig, 3.15: Creacién de usuario y adicién al grupo administradores...
Fig, 3.16: Deteccién de configuracién errénea de AlwaysinstallElevatedindice de imagenes y tablas
Fig. 3.17: Creacién de usuario a través de aplicacién lanzada con un paquete MSI.
Fig. 3.18: Conversién de SID a nombre de usuario y viceversa.
Fig. 3.19: Recoleccién de informacisn con Invoke-Netview. . .
Fig. 3.20: Encontrando méquinas dénde el usuario tiene acceso de administrador,
Fig. 3.21: Descubrimiento de maquinas a nivel de enlace con ARP Scan......
sjecuci6n de un escaneo a través de ICMP en una red
: Ejecucion de un escaneo de puertos TCP...
: Seleccionando un rango de puertos TCP con Invoke-Poriscan,
Resolucién inversa de direcciones IP obtenidas a través de fichero personalizado,
‘ompresién de un fichero de PowerShell para su posterior ejecucién, .
Descarga en base64 de psexec y transformacién a binario. .
: Creacién de cédigo de la shell inversa.
Configuracién de exploit/multi/handler.
|: Decodificacidn de base64 a String, .....
: Generacién de cédigo para realizar el hashdumy
: Obtencién de usuarios y hashes.
: Recuperacién de informacién de un host conereta en Shodan.
Buisqueda de exploits a través de Shodan... .
Medicién de hosts encontrados en Shodan con una condicién determinada
Subida de muestra para andlisis y recuperacién de informacién de VirusTotal..
: Descubrimiento de maquinas en una red a través de ICMP...
: Descubrimiento de puertos abiertos con Invoke-Portscan.
: Obtencién de direeciones URL de un servidor.
: Obtencidn de sesién de Meterpreter con reverse_https...
: Enumeracién de tokens en el sistema.
: Dumpeo de credenciales con Mimika Fi
Obtencién de un volcado de memoria de un proceso.....
Visualizacién del yolcado de memoria...
Obtencién de instruccién encodeada para almacenarla en un registro TXT.
: Configuracién del servidor DNS. .
: Ejecucién del script recuperado a través del DNS.
: Ejecucién de comandos a través de la red WiFi...
: Descarga de script y ejecucidn a través de SSID de red WiFi
Obtencién de PowerShell inversa interactiva en remoto...
Captura de challenge/response en hashes NTLM. .. '
Obtencién de mecanismos de seguridad en los binarios de un directorio,
: Deteccién de Meterpreter con PowerShell.
: Meni de SET con distintos veetores de ataque.
Fig, 4.02: Opciones que proporciona SET sobre PowerShe'
Fig, 4.03: Configuracién de Alphanumeric Shellcode Injector
Fig. 4.04; Instruccién generada con SET para PowerShell...
Fig. 4.05: Toma de control en remoto de la maquina con acceso fisico.
Fig. 4.06: Obtencién de una PowerShell interactiva con Metasploit...Ea Pentesting con PowerShell
Fig. 4.07: Carga de scripts en la sesion de PowerShell interactiva en Metasploit... 195
Fig. 4.08: Ejec. de la funcién Invoke-Mimikatz a través de la PowerShell interactiva |* parte.... 195
Fig. 4.08: Ejec. de la funcién Invoke-Mimikatz a través de la PowerShell interactiva 2* parte.... 196
Fig, 4.09: Ejemplo de ejecucién de comandos a través de Invoke-MSFConsoleCommand, ....« 198
Fig, 4.10: Recuperacién de informacién de los job que ejecutan en Metasploit. 201
Fig. 4.11: Ejec. de comandos de Meterpreter a través de Invoke-MSFMeterpreterCommand. ....206Indice de imagenes y tablas - Eg
Indice de tablas
Tabla 1.01: Ejemplo de alias UNIX y su emdlet equivalent...
Tabla 1.02: Definiciones de los proveedores por defecto......
Tabla 1,03; Parémetros importantes para la creacién de sesiones.
Tabla 1.04: Propiedades de las cadenas seguras en PowerShel
Tabla 1.05: Métodos de los objetos SecureSiring,
Tabla 1.06: Parametros del comando makecert,
Tabla 2.01: Tipos de perfiles y rutas en Powershell.
Tabla 2.02: Ejemplos de variables predefinidas.
Tabla 2.03: Operadores aritméticos. am
Tabla 2.04: Operadores de comparacién. 3
Tabla 2.05: Operadores légicos.. 53
Tabla 2.06: Elementos de comparacién para FilterScrip 66
Tabla 2.07: Comandos para tratamiento de procesos y servicios. 72
Tabla 2.08: Recopilando informacion con Get-WmiObject. . 4
Tabla 2.09: Parametros de Register-WmiE vent. 8
‘Tabla 2.10: Pardmetros LDAP. rd
Tabla 2.11: Cmdlet de creacién de objetos. 100
Tabla 2.12: Pardmetros de New-ADUser 100
Tabla 2.13: Parametros de New-ADGroup.... oe 101
Tabla 2.14: Cmdlets para la gestién del pool de aplicaciones. .. 105
Tabla 2.15: Cmdlets para la gestién de aplicaciones web. .. 106
Tabla 2.16: Cmdlets para la gestion de sitios web. 107
Tabla 3.01: Algunos parametros de netcat. 110
Tabla 3.02: Parimetros de powereat..... 112
‘Tabla 3.03: Elementos que forman PowerTools de Veil-Framework 17
Tabla 3.04: Funciones para la enumeracién de servicios y debilidades... 117
Tabla 3.05: Funciones para el aprovechamiento de debilidades en servicios. 118
Tabla 3.06: Funciones para realizar DLL Hijacking... . 119
Tabla 3.07: Funciones para realizar el chequeo de configuraciones en el registro. 119
Tabla 3.08: Funciones Helpers de PowerUp. 120
Tabla 3.09: Funciones de la categoria otros de PowerUp. 121
Tabla 3.10: Funcionalidades de red de PowerView.... 127
Tabla 3.11: Funcionalidades de user-hunting de PowerView. .
Tabla 3.12: Funcionalidades de domain trust de PowerView.
Tabla 3.13: Metafunciones y otras funciones de PowerView.......
128
130