Logo Studenta

(5) Análisis y explotación de vulnerabilidades

¡Este material tiene más páginas!

Vista previa del material en texto

Análisis y explotación 
de vulnerabilidades
Índice
3
3
4 
5
10
10
11
1 | Análisis de vulnerabilidades
1.1 | Introducción
1.2 | MBSA, Microsoft Baseline 
Security Analyzer
1.3 | Nessus
2 | Explotación de vulnerabilidades
2.1 | Introducción
2.2 | Tipos de explotación
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 3
La fase de fingerprint permite averiguar información sobre 
los objetivos o máquinas remotas. En la fase de análisis de 
vulnerabilidades se procesa la información recopilada en la fase 
anterior y se determina la existencia de vulnerabilidades en los 
sistemas analizados. En muchas ocasiones se puede determinar 
si una aplicación es vulnerable o no, por ejemplo, a través de la 
identificación de la versión, o analizando la respuesta de la aplicación 
o el sistema operativo. Existen diversas herramientas que pueden 
ser utilizadas para automatizar este proceso. 
Para poder aprender más sobre las herramientas y los objetivos 
de éstas se pueden agrupar por ámbitos. Los escáneres de 
vulnerabilidades a nivel de sistemas se presentan los siguientes:
• MBSA.
• Nessus. 
• PSI Secunia.
Los escáneres de vulnerabilidades web que se presentan los 
siguientes:
• W3af.
• Vega.
• Acunetix.
• Wikto/Nikto.
• Webcruiser.
• Web Security Scanner.
• App Scan.
• ZAProxy.
1. Análisis de vulnerabilidades
1.1 | Introducción 
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 4
Esta herramienta permite identificar sistemas Windows vulnerables. 
La herramienta es de ejecución local, es decir, se necesita tener 
acceso a la máquina o disponer de credenciales para ejecutar la 
herramienta en remoto, por lo que podemos entender como una 
caja blanca. La herramienta escanea buscando actualizaciones no 
aplicadas en el sistema y fallos en la configuración del software. 
Escanea distintas versiones de Windows y distintas aplicaciones, 
por ejemplo, IIS o SQL Server. Se generan informes en formato XML 
sobre los resultados de cada equipo. El potencial de la herramienta 
es poder escanear un dominio Windows, es decir, todas las máquinas 
del dominio, siempre y cuando se dispongan de credenciales para 
ello, por ejemplo, un administrador de dominio.
1.2 | MBSA1, Microsoft Baseline Security Analyzer
Imagen 88 MBSA - InformeImagen 87 MBSA
1 https://technet.microsoft.com/es-es/security/cc184924.aspx 
http://technet.microsoft.com/es-es/security/cc184924.aspx
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 5
Nessus es un escáner de vulnerabilidades 
que permite ser gestionado a través de un 
portal web. Nessus implementa diferentes 
plugins, los cuales se encargan de realizar 
distintas verificaciones. El auditor puede 
elegir qué tipo de plugins quiere o necesita 
lanzar, por ejemplo, en función del ámbito 
de la auditoría (si es caja blanca o negra). 
Cuando Nessus encuentra vulnerabilidades, 
a través de sus plugins, las engloba en Info, 
Low, Medium, High y Critical. El auditor que 
quiere lanzar un escaneo con Nessus debe 
tener claro diferentes circunstancias. A 
modo de ejemplo, en las siguientes líneas, 
se va a ir realizando un paso a paso de un 
escaneo con la herramienta.
En primer lugar, y una vez se tiene acceso 
al portal web tras la instalación, en la 
barra de menú superior se encuentra la 
palabra “Scans”. Se debe seleccionar y, 
posteriormente, clicar sobre el botón “New 
Scan”, con el objetivo de añadir un nuevo 
escaneo con Nessus.
Imagen 89 Logo Nessus
Imagen 90 Nessus
1.3 | Nessus2
2 https://www.tenable.com/products/nessus-vulnerability-scanner
http://www.tenable.com/products/nessus-vulnerability-scanner
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 6
La adición de un nuevo escaneo llevará 
al auditor a una nueva vista dónde podrá 
seleccionar diferentes opciones. Se puede 
programar el escaneo en una fecha concreta, 
pero quizá lo más importante es la política de 
escaneo o scan policy. Este valor indica qué 
ámbito o tipo de escaneo es, por lo que se 
indicará qué tipo de pruebas o de plugins se 
tienen que utilizar en este caso. Además, en 
el apartado scan targets se debe indicar el 
rango de máquinas que serán escaneadas.
Imagen 91 Nessus - Tipos de escaneo
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 7
En el caso de que el auditor quiera configurar 
su propia política de escaneo, y no utilizar 
una de las que vienen predefinidas, puede 
clicar en la barra superior en “Policies”. Al 
acceder a esta vista el auditor encontrará 
las políticas creadas en el sistema. En la 
parte derecha de la página se encuentra el 
botón “Add”, el cual deberá ser activado si se 
quiere añadir una nueva política de escaneo. 
Hay que recordar que lo que se busca con 
la creación de una nueva política es poder 
elegir el tipo de pruebas que se quiere 
realizar en un escaneo. 
El formulario para crear una nueva política 
presenta 4 elementos importantes: 
compliance, credentials, plugins y settings. 
Las partes importantes son tanto credentials 
como plugins. En credentials lo que se indica 
es la posibilidad de utilizar credenciales en 
el proceso de escaneo. En otras palabras, 
el auditor en una auditoría de caja blanca 
podría tener acceso a un servicio o un 
sistema y comprobar la configuración de 
éste o políticas aplicadas a éste.
Imagen 92 Nessus - Políticas
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 8
En la pestaña de plugins se pueden ir 
seleccionando cuales se quieren tener 
disponibles en la política. De este modo 
cuando el auditor cree un nuevo escaneo 
y seleccione la nueva política de escaneo, 
los plugins seleccionados aquí serán los 
lanzados en el proceso. Lo ideal sería 
disponer de diferentes políticas de escaneo 
en función del ámbito del trabajo que se 
esté realizando.
Una vez se ha creado la nueva política se 
puede utilizar un nuevo escaneo. Cuando 
se lanza un escaneo con Nessus el proceso 
puede llevar bastante tiempo dependiendo 
del número de máquinas, número de 
plugins, ... 
Imagen 92 Nessus - Políticas
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 9
En la pestaña de plugins se pueden ir 
seleccionando cuales se quieren tener 
disponibles en la política. De este modo 
cuando el auditor cree un nuevo escaneo 
y seleccione la nueva política de escaneo, 
los plugins seleccionados aquí serán los 
lanzados en el proceso. Lo ideal sería 
disponer de diferentes políticas de escaneo 
en función del ámbito del trabajo que se 
esté realizando.
Una vez se ha creado la nueva política se 
puede utilizar un nuevo escaneo. Cuando 
se lanza un escaneo con Nessus el proceso 
puede llevar bastante tiempo dependiendo 
del número de máquinas, número de 
plugins, ... 
Imagen 93 Nessus - Configuración política
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 10
En este apartado se hace un resumen de los tipos de vulnerabilidades 
que se pueden encontrar en el software. En este apartado no se 
hablarán de vulnerabilidades web y se centrará en vulnerabilidades 
de aplicaciones como pueden ser servidores ftp, servidores web, 
servidores ssh, aplicaciones de escritorio, ... A continuación, se 
describen algunos tipos de vulnerabilidades:
• Desbordamiento de buffer. Esta es quizá la vulnerabilidad más 
clásica e histórica de todas. Es un error que se produce cuando 
se intenta copiar una cantidad de datos mayor que la zona de 
datos que tenemos reservada para almacenar. Es decir, imagina 
que se tiene un buffer de 60 bytes para almacenar información 
e intentamos almacenar 80 bytes. Si esto no se controla los 
80 bytes sobrescribirán los 60 bytes del buffer destino y los 
20 bytes restantes se escribirán en posiciones contiguas de 
memoria al buffer destino. Las consecuencias de escribir en 
una zona de memoria imprevista pueden ser impredecibles. 
Este tipo de vulnerabilidades pueden provocar la parada de un 
servicio (denegación de servicio) o, incluso, la ejecución de código 
arbitrario, es decir, poder tomar el control de la máquina.• Race condition. Generalmente este tipo de problemas suelen 
darse bien por la interacción entre hilos en un proceso multihilo 
o bien por la concurrencia de otros procesos ajenos al proceso 
vulnerable.
• Integer overflow. Generalmente suceden al intentar almacenar 
un valor demasiado grande en la variable asociada generando un 
resultado inesperado (valores negativos, valores inferiores, ...). Este 
tipo de error puede tener consecuencias graves cuando el valor 
que genera el integer overflow es resultado de alguna entrada de 
usuario (es decir, que puede ser controlado por el mismo) y cuando, 
de este valor, se toman decisiones de seguridad, se toma como base 
para hacer asignaciones de memoria, índice de un array, concatenar 
datos, hacer bucles. ... En el año 2016 Apple tuvo un grave problema 
con la gestión de la fecha por parte del sistema operativo iOS. 
• Cadenas de formato o String format. Durante el diseño de un 
programa puede resultar útil permitir que un usuario introduzca 
datos de entrada para posteriormente ser mostrados por pantalla. 
En algunos lenguajes de programación se debe identificar el tipo 
de dato que se desea mostrar, de forma que el programador 
deberá describir si el dato a mostrar va a ser en hexadecimal, un 
carácter, un string, un número entero, un número real, ...
 La mejor manera de evitar los desbordamientos de buffer es 
mediante una programación segura, hay que tener mucho cuidado 
siempre que se escriba en un buffer, cuidando no sobrepasar el 
tamaño de éste. Los programadores que usan C deben evitar usar 
funciones que no comprueban los límites: strcpy(), strcat(), sprintf(), 
scanf(), sscanf(), fscanf(), vfscanf(), vsprintf, vscanf(), vsscanf(), 
streadd(), strecpy(), strtrns().
2. Explotación de vulnerabilidades
2.1 | Introducción 
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 11
La explotación de sistemas puede ser altamente compleja, pero 
existen frameworks que simplifican la tarea. Es el caso de Metasploit 
framework, el cual es una de las herramientas de auditoría más 
utilizada, potente y versátil. Después de la fase de análisis de 
vulnerabilidades se debe tener en cuenta la fase de explotación, 
quizá una de las que más adrenalina proporciona al auditor, ya que 
en muchos casos conseguirá control sobre diferentes máquinas. 
En este apartado se tratarán diferentes tipos de explotación, 
ejemplificándose cada uno de ellos. A continuación, se enumeran 
los diferentes tipos:
• Explotación remota con conectividad directa entre máquinas. 
• Explotación local de vulnerabilidades, generalmente para lograr 
elevar privilegios en la máquina. 
• Explotación a través de ataques en el lugar del cliente, conocidos 
como Client-Side Attacks. 
• Explotación a través de ataques Fileformat.
Explotación remota con conectividad directa
El escenario es sencillo la máquina A es la del atacante y tiene 
conectividad con la máquina B, por ejemplo, la máquina de una 
organización que tiene un servidor FTP, web o SSH, por ejemplo. El 
software FTP, Web o SSH de la máquina B es vulnerable a alguna 
vulnerabilidad conocida, y simplemente por tener conectividad el 
atacante de la máquina A podría lanzar un exploit contra la máquina 
B y tomar el control de dicha máquina.
Para ejemplificar esto con imágenes, se supone que la máquina B 
tiene un servidor FTP denominado Easy File Sharing FTP Server 
versión 3.5. La aplicación está siendo ejecutada en una máquina 
Windows 8.1 y tiene una vulnerabilidad de tipo Stack Buffer Overflow. 
El exploit no es más que un código, por ejemplo, escrito en lenguaje 
C, Ruby o Python, que sabe aprovecharse de la vulnerabilidad y 
conseguir ejecutar un código arbitrario.
2.2 | Tipos de explotación
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 12
Aquí es dónde se mostrará la facilidad de uso de Metasploit. No hace 
falta saber de exploiting para utilizar Metasploit, sencillamente vale 
con saber qué módulo utilizar y configurar una serie de atributos. Los 
módulos de tipo exploit en Metasploit reflejan qué vulnerabilidad se 
quiere aprovechar, no hace falta saber más del exploit, ni como está 
hecho por debajo.
Imagen 94 Metasploit - Exploit
En la máquina A, el atacante configura el módulo indicándole 
la dirección IP de la máquina B, el payload que quiere utilizar, 
en este caso un Meterpreter, el cual proporciona gran cantidad 
de funcionalidad. Al payload se le indica a qué dirección IP debe 
devolver el control si el exploit tiene éxito. Por eso el atributo 
LHOST indica la dirección IP de la máquina del atacante. El atributo 
RHOST es la dirección IP de la máquina con el servidor FTP. Como 
se puede ver Metasploit simplifica el proceso bastante. Una vez 
se obtiene el Meterpreter, comienza la fase de post-explotación, 
es decir, todas las cosas que se puede hacer desde esa máquina 
hacia otras. 
Explotación local de vulnerabilidades
La explotación local de vulnerabilidades permite a un usuario sin 
privilegio o con privilegios reducidos poder saltar los mecanismos de 
seguridad de un sistema operativo con el objetivo de poder ejecutar 
acciones privilegiadas. Metasploit tiene una serie de módulos de 
tipo exploit que permiten, una vez se disponga de una sesión remota 
ejecutar un exploit local a través de dicha sesión. Esto es potente, ya 
que en el apartado anterior puede que hayamos conseguido solo el 
privilegio del usuario “normal”, pero con este tipo de vulnerabilidades 
se consiga obtener el máximo privilegio, por ejemplo “System” en 
Windows o “root” en Linux. 
Para ejemplificar el uso de una vulnerabilidad local en un sistema 
Windows 7 se hablará de la vulnerabilidad con CVE-2014-4113 
apareció en octubre de 2014 y fue un 0day que permitía la escalada de 
privilegio sobre sistemas Windows. La vulnerabilidad fue parcheada 
por Microsoft en el boletín MS14-058. Un grupo de hackers publicó 
un exploit con el que se podía realizar una escalada de privilegio a los 
sistemas Windows, hasta la versión 7 SP1, aunque la vulnerabilidad 
afecta a sistemas Windows 8, pero el exploit público no era válido 
para dichas versiones.
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 13
En este ejemplo es importante entender que un usuario con acceso 
físico a la máquina y a la sesión de usuario, y sin privilegio ninguno, 
puede ejecutar un exploit que le permita obtener una cmd como 
System. Partiendo de que el usuario no tiene ningún privilegio, y será 
miembro del grupo de usuarios normales del sistema, se logrará 
elevar el privilegio y poder lanzar acciones cómo si se fuera “System”. 
En otras palabras, se englobaría en una escalada de privilegio total 
sobre el sistema, ya que en la prueba de concepto se partirá como 
usuario normal no perteneciente al grupo administradores, y tras 
la ejecución del exploit se obtendrá una cmd con privilegio máximo.
Imagen 95 Escalado de privilegios
Como se puede visualizar en la imagen es realmente sencillo 
conseguir la escalada de privilegio y disponer de una cmd como 
System. Hay que tener en cuenta que se debe conocer el tipo de 
código que se está ejecutando, y no es recomendable ejecutar 
exploits en auditorías de los cuales no se tiene control. 
Algo que puede ser muy interesante, una vez se tiene la cmd con 
el privilegio de System, es la ejecución de un binario, dll o script 
de PowerShell que devuelva una Meterpreter en remoto. De esta 
manera el proceso de la Meterpreter se ejecutará con identidad 
de System, por lo que se devuelve el control de la máquina a otra 
máquina controlada o gestionada por el usuario en remoto, y se 
gana con todas las funcionalidades que Meterpreter aporta.
El exploit se encuentra disponible para versiones de 32 y 64 bits. 
Además, el módulo de Metasploit para explotar la vulnerabilidad, se 
encuentra en exploit/windows/local/ms14_058_track_popup_menu.
Explotación local con OS X
En el año 2015, el sistema operativo OS X fue afectado por varias 
vulnerabilidades que permitían elevar privilegios enel sistema3. 
En muchas ocasiones se piensa que solo existen exploits para 
Windows, pero esto no es verdad. Cualquier sistema operativo es 
afectado por vulnerabilidades, y por consiguiente existen exploits 
que se aprovechan de dichas vulnerabilidades. 
Una vulnerabilidad conocida como Rootpipe permitía elevar 
priviliegio, y pasar de un usuario sin privilegio a ser root en un 
sistema OS X.. 
El punto de partida en este ejemplo será una sesión de Metasploit 
sobre un sistema OS X. Una vez tenemos la sesión se debe colocar la 
shell en background, aunque antes podemos visualizar los permisos 
que se tienen en la shell obtenida. Se puede visualizar el uid del 
usuario logueado, y otros grupos a los que dicho usuario pertenece.
Imagen 96 Metasploit sobre OS X
3 El exploit está accesible en la siguiente dirección URL http://www.exploit-db.com/exploits/36692/ 
http://www.exploit-db.com/exploits/36692/
Análisis y explotación de vulnerabilidades | TELEFÓNICA // 14
Cuando dejemos la shell en background configuramos el módulo de 
explotación local de Rootpipe. Hay varios atributos que configurar como 
son la sesión por la que se lanzará el exploit, en este caso utilizaremos 
el identificador obtenido anteriormente. Además, el exploit permite 
configurar que directorio será utilizado por Rootpipe para escribir, 
tanto exploit como payload. Si lo dejamos por defecto escribiremos en 
/.Trashes, la cual es una carpeta que necesita privilegio para escribir, 
por lo que si podemos escribir tendrá buena pinta.
Imagen 97 - Metasplloit - Comando exploit
Una vez lanzado el exploit a través de la sesión se ejecutará como 
si estuviera en local. Si la elevación de privilegios funciona, se abrirá 
una nueva shell como root, es decir, uid=0. 
Explotación a través de Client-Side
Los ataques client side son ataques que son llevados a cabo en el 
lugar del cliente, es decir, es un usuario el que tiene que realizar una 
petición a un servidor controlado por un atacante para que éste le 
devuelva una respuesta maliciosa. Por ejemplo, un exploit. 
El ejemplo básico sería el siguiente:
• El usuario “normal” navega por Internet tranquilamente. Accede a 
un foro y lee un mensaje que le llama la atención. En ese mensaje se 
anuncia un producto que le interesa y hay un link para acceder a más 
información. Cuando el usuario pincha sobre el link, el navegador 
se dirige a otra ubicación. El sitio web al que se accede puede ser 
legítimo, pero supongamos que alguien de forma malintencionada 
ha colocado un código HTML en ese sitio que obligue al navegador 
del usuario a realizar una petición a otro dominio.
• El dominio en cuestión es malicioso, y está gestionado por el 
atacante. Al recibir la petición, la cual se ha hecho de formar 
trasparente, se envía un HTML malicioso, el cual contiene un 
exploit para una versión concreta del navegador de la víctima. 
• Cuando el navegador ejecuta el fichero HTML se encuentra que el 
exploit aprovecha la vulnerabilidad y se consigue ejecutar código 
arbitrario de forma remota. 
Un ejemplo gráfico sería el siguiente:
Imagen 98 Esquema Client-Side
VULNERABLE 
WEB SERVER
ATTACKER
VICTIM USER
(3) Malicious Payload Reply
(2) Malicious Request URL
(1) Malicious e-Mail Message
(4) Shell Spawn

Continuar navegando