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.
 |
Figura 1: Conquistar el mundo con OSINT & Known-Vulnerabilities (Parte 1 de 2) |
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.
 |
Figura 2: Esquema de idea de trabajo |
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 qué “escupe” el servicio cuando le preguntas y en qué dirección
IP se encuentra. Para la ponencia fue interesante estudiar diferentes servidores
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.
 |
Figura 3: Resultados del script tras procesar las expresiones regulares |
Tras recopilar información sobre diferentes bases de datos de servicios
FTP en
IPv4 se pueden sacar algunas cosas en claro. Algo llamativo es la diferencia de máquinas entre los meses de
Abril y
Julio de
2015. En
Abril de
2015 podemos encontrar con más de
14.000 máquinas que responden con
banners de software vulnerable, asumiendo un
50% de falsos positivos, que pueden ser demasiados, podemos encontrar con más de
7.000 máquinas distribuidas vulnerables y que se encuentran a un “
botonazo” para que cualquiera las pueda controlar, si no lo hacen ya.
 |
Figura 4: Máquinas descubiertas en el escaneo de Abril de 2015 |
En el mes de
Julio de
2015 se pueden encontrar en las bases de datos publicadas en
scans.io más de
52.000 máquinas con alguno de los
banners listados anteriormente. Se puede observar cómo las versiones de
software vulnerables aumentan considerablemente. Quizá uno de los que más llama la atención sea el
software ProFTPd 1.3.3c que incrementa los
banners de
9546 máquinas a
35168.
 |
Figura 5: Máquinas descubiertas en Julio de 2015 |
Procesar todas estas fuentes de datos
OSINT a la vez, es decir,
Shodan,
Scans.io y los escaneos personalizados que se hagan para localizar los objetivos y los
exploits que hay que ejecutar es una tarea perfecta para hacerlo usando
Sinfonier. Con este proyecto - que puedes utilizar libremente en la versión
Community -, puedes hacer
topologías que procesen la información constantemente y vayan realizando las acciones necesarias.
En este caso se podría haber utilizado para que fuera el orquestador que localice los objetivos analizando los repositorios
OSINT, para ello se utilizan los componentes
SPOUT, localizar el
exploit público desde otra fuente o tirando de bases de datos internos con los componentes
BOLT y sacando con
DRAINS los resultados. Si quieres conocer más sobre Sinfonier, en la
Comunidad de Eleven Paths se ha abierto un
foro para Sinfonier con el objeto de que puedas aprender más. Si te animas, tienes el
Sinfonier Community Contest para llevarte hasta
3.000 USD en Bitcoins haciendo cosas como esta.
Creando el nodo central de ejecución (Remake de autopwn?)
Una vez identificadas las máquinas candidatas debemos pensar en centralizar esfuerzos. La idea de un nodo central de ejecución de
exploits con toda la información procesada previamente nació de centralizar esfuerzos. Es cierto que quizá disponer de varias máquinas en el mundo y poder distribuir esfuerzos para la consecución del control sería una táctica mejor, pero la idea de la prueba de concepto es hacerlo lo más sencillo posible.
En la charla muchos vieron en este módulo una idea similar al
autopwn de
Metasploit, el cual ya no se encuentra en la edición
Community. La información procesada previamente se clasifica en un fichero de texto con un formato específico, el cual será leído por el módulo que realicemos. El formato definido es el siguiente:
• Cada línea del fichero representa una máquina vulnerable en Internet encontrada mediante el uso de las bases de datos OSINT.
• Los valores que deben ser leídos y que muestran diferentes atributos están separados por pipes.
• El primer valor indica la dirección IP de la máquina vulnerable.
• El segundo valor indica el módulo de Metasploit que debe ser cargado y configurado automáticamente.
• El tercer valor indica el puerto remoto dónde el servicio se encuentra a la escucha. Este valor se leerá y configurará en el módulo automáticamente por nuestro módulo.
• El cuarto valor indica qué tipo de payload se ejecutará en caso de que la ejecución del módulo indicado en el atributo 2 sea correcta.
• El quinto valor es opcional, pudiendo indicar atributos avanzados de los módulos, como por ejemplo InitialAutoRunScript, el cual indica que cuando se ejecute un Meterpreter se migre automáticamente de proceso.
 |
Figura 6: Información para automatizar la explotación de las máquinas vulnerables |
Más adelante se podrán ver más detalles sobre el módulo, ya que tiene algunos detalles a bajo nivel que son interesantes. Además,
se puede encontrar en mi Github.
Continuará: Conquistar el mundo con OSINT & Known-Vulnerabilities (PARTE 2 de 2)
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking" y “Pentesting con Powershell”