28 oct 2015

Actualiza las versiones de software: Protégete contra los Bad Boys - OSINT y Known-Vulnerabilities (Parte I de III)

Hace unas semanas tuve la suerte de estar en el congreso Albahaca CON 2015 celebrado en Huesca. La ponencia que tenía un título parecido a ¿Cómo los chicos malos pueden conquistar el mundo? En honor al inglés del gran Rafa Otal, es una idea sencilla basada en las fuentes abiertas de información y procesamiento de ésta con el objetivo de encontrar máquinas distribuidas por el mundo que contengan software vulnerable. Una de las preguntas que podemos hacernos es, ¿Qué es exactamente conquistar el mundo? Pueden ser muchas cosas, pero para algunos usuarios podría definirse como la posibilidad de tener mucha presencia, gran capacidad de cómputo y tener todo esto de manera distribuido alrededor del mundo. Con este fin es difícil parar o bloquear a este ejército cibernético.

El vector de partida en esta investigación son las fuentes OSINT, las cuales proporcionan gran cantidad de información. La pregunta de la charla es: ¿Si procesáramos las fuentes de forma adecuada obtendríamos información sensible la cual podría ser utilizada para obtener el control de un gran número de máquinas distribuido? La vía para tomar el control de las máquinas está claro que podría ser un exploit público. ¿Existirán muchas vulnerabilidades conocidas? Ésta es una pregunta de difícil respuesta, al menos podemos intuir que sí, pero a ciencia cierta es complejo decir si mucho o poco. Entonces, ¿Qué queremos comprobar?

1. Encontrar las fuentes de información abiertas que pueden proporcionar información sobre software y máquinas en Internet.
2. Listar para el caso particular un número de software y versiones concretas.
3. Procesar esta información con el fin de detectar software no seguro y para el que existe un exploit público que permitiría a un usuario malicioso tomar el control de las máquinas.
4. Una vez detectadas las máquinas con software vulnerable se necesita una herramienta que permita demostrar cómo se podría tomar el control de las máquinas. Para esta ocasión se quiere ejecutar un módulo de Metasploit implementado por mí para hacer algo muy similar a lo que hacía el famoso autopwn.
5. Las máquinas, ¿Dónde están? La geolocalización es fácil de realizar. Nos interesa demostrar la distribución de las máquinas, por lo que se puede obtener el país y provincia dónde se encuentra la máquina. Esto nos proporciona la posibilidad de realizar un mapa distribuido, que siempre ayudará a ver todo el impacto gráficamente.



Análisis de OSINT y escaneos a IPv4

El primer paso en todo esto es verificar de dónde sacar la información que queremos procesar. En primer lugar uno siempre se dirige a Shodan si quiere realizar búsquedas de dispositivos. En Shodan podréis encontrar resultados asombrosos con software como Freesshd 1.2.6 instalado en más de 20.000 máquinas en todo el mundo. Utilizando un listado de otras aplicaciones con vulnerabilidades conocidas fui buscando más resultados en Shodan y todo hacía indicar que los números de máquinas serían grandes. Otra alternativa que me planteé fue la de utilizar ZMap para barrer el direccionamiento de IPv4 y mediante la herramienta ZGrab poder detectar máquinas con servicios vulnerables en Internet. Para el que no conozca ZGrab solo decir que la herramienta realiza una conexión al puerto en cuestión y nos permite almacenar el banner del servicio. En muchas ocasiones los servicios FTP, por ejemplo, nos proporcionan en el propio banner la información necesaria para detectar la versión. Hay que tener en cuenta que en otras ocasiones el banner que se puede leer de un servicio puede estar falseado, por lo que esta información no es 100% válida, aunque si nos permite hacernos una idea del número de máquinas que podríamos “trastear”.

Mientras pensaba en qué opción utilizar para obtener la información lo más en bruto posible mi compañero de Eleven Paths y amigo Rafa Sánchez me comentó un sitio web llamado scans.io. En este sitio podemos encontrar bases de datos gigantescas con diferentes scopes. Por ejemplo, encontré que cada mes realizan entre 3 y 4 escaneos a todo IPv4 con ZMap y ZGrab y publican los resultados de lo encontrado. Entonces recordé una de las cosas que me decían mucho los profesores en la Universidad: “reutiliza”. Así que pensé que utilizar estas bases de datos podría ser interesante. Antes de seguir quiero dejaros qué tipos de bases de datos podemos encontrar en scans.io: escaneo completo a IPv4 con captura de handshakes en HTTPs, escaneos a IPv4 para detectar la vulnerabilidad de Heartbleed, escaneo completo a IPv4 con recopilación de banner grab, escaneos al primer millón de dominios de Alexa, escaneo completo a IPv4 y recopilación de servidores HTTP, certificados, etcétera. ¿Cuáles son las fuentes? Los escaneos son llevados a cabo por los equipos de Rapid7, Universidad de Michigan, Fedora Project, Project 25499, etcétera. Cómo mencioné anteriormente vi que en scans.io existe un escaneo periódico, entre 3 y 4 veces mensuales, a los servidores FTP accesibles en IPv4 y que recolectaban los banners de dichos servicios. Decidí descargar unas cuantas versiones de las bases de datos, aunque cada una era entre 3 y 4 GB.

Procesar información de la base de datos y detección para estudio

Analizando el fichero json que nos descargamos de scans.io podemos ver qué campos son los que nos interesan. Accediendo al campo del banner y del host sabemos que “escupe” el servicio cuando le preguntas y en qué dirección IP se encuentra. Para la ponencia fue interesante estudiar diferentes FTP como son:

  • ProFTPd 1.3.3c
  • warFTPd 1.65
  • WS_FTP Server 5.0.3
  • WS_FTP Server 5.0.5
  • PCMan FTPd 2.0.7

A priori, a muchos le sonarán de poco, pero para la prueba de concepto es más que suficiente. Todas estas aplicaciones son identificables por el banner que devuelven, aunque hay que recordar que existen honeypots que nos pueden engañar. Mediante el uso de expresiones regulares podemos ir detectando las versiones que se vuelvan en los banners y almacenándolos. La información recopilada por el primer script que se montó, denominado con un nombre original como procesar.rb, es la siguiente:

  • Host
  • Fecha
  • Respuesta en la conexión (banner)

Además, el script cuando finaliza nos indica el número de máquinas que cumplen con las condiciones propuestas en la expresión regular.



No hay comentarios:

Publicar un comentario