miércoles, junio 01, 2016

Censys: Un buscador con los scans de tus servers #OSINT

Hace una semana hablábamos en el artículo dedicado a OSINT Framework de la importancia que pueden tener las fuentes de información abierta en distintos ámbitos de la ciberseguridad. Footprinting en etapas tempranas de una auditoría, vigilancia digital, descubrimiento de amenazas o fugas de información son solo unos ejemplos de lo que se puede hacer con OSINT.  Y aprovechando que esta semana nuestro compañero da una charla gratuita el jueves por la tarde dedicada a la disciplina OSINT, vamos a profundizar un poco más en el tema.

Figura 1: Censys, un buscador con los scans de tus servers

En el artículo de hoy quería hablar de Censys, una plataforma que nos ofrece un buscador, una API y la información en crudo para lo que necesitemos.

¿Qué ofrece Censys?

Censys es una plataforma de la gente de scans.io, de los que ya os he hablado en la charla de “Cómo los malos pueden conquistar el mundo”. Censys es un motor que permite realizar búsquedas que proporciona respuestas a los investigadores sobre los hosts y la red que compone Internet.


Figura 2: Cómo los malos pueden conquistar el mundo

Vamos a ver por separado qué tipo de información proporciona Censys y cómo podemos interactuar con ella. Censys recopila datos de equipos y sitios web a través de escaneos diarios con ZMap y ZGran sobre el espacio de direccionamiento de IPv4. Al final con Censys tenemos instantáneas con periodicidad de cómo los equipos y sitios web están configurados. Como he comentado anteriormente, se puede interactuar a través de:
- Buscador en la página web. 
- API para integraciones de plugins. 
- Descargándose en modo “Raw data” las bases de datos
Estas últimas son ficheros JSON bastante grandes y, por ejemplo, en el caso de mi charla descargaba un fichero de más de 4,3 GB,  que representaba todas las máquinas de IPv4 con el puerto 21 abierto y con banner grabbing realizado sobre la máquina.

Figura 3: Paper sobre Censys

Se puede encontrar mucha más información sobre la arquitectura sobre la que Censys se encuentra montado y sus funcionalidades en el paper que sus autores publicaron. Desde el frontend web y la API se accede a diferentes elementos, Google Datastore, Elastic Search y Google BigQuery. Otra opción, comentada anteriormente, es la descarga de información en crudo a través de ficheros comprimidos que albergan un JSON.

Figura 4: Arquitectura de Censys

Como se puede ver en la imagen, la arquitectura de Censys es compleja y tiene el concepto de Worker, similar al que nosotros tenemos en nuestro servicio de pentesting persistente Faast. En el caso de Censys, el Worker realiza operaciones de fingerprinting a través de la ejecución de ZMap y ZGrab, reportando los resultados al elemento de almacenamiento denominado Google Cloud Storage.

Figura 5: Arquitectura del planificador de tareas en Censys

Si hacemos zoom en el Scheduler, conceptualmente es el elemento de repartir el trabajo, podemos observar como los Workers se convierten en procesos de ZMap y ZGrab que realizan diferentes operaciones. En la imagen anterior se puede ver como ZMap devuelve direcciones IP con puertos abiertos, y ZGrab puede obtener el Handshake completo. Una vez se “normalizan” los datos se almacenan en base de datos.

Opciones del buscador

Desde el propio buscador que hay en el sitio web, si queremos hacer un poco de hacking con buscadores, podemos elegir qué tipo de búsqueda realizar, por ejemplo, si queremos realizar búsqueda sobre los resultados de los escaneos sobre sitios web podemos elegir la opción “Websites”.  Las tres posibilidades son:

Figura 6: Opciones de búsqueda en Censys
- IPv4 Hosts: Esta opción permite realizar búsquedas sobre los hosts descubiertos con anterioridad. Tenemos la posibilidad de filtrar la búsqueda con los “fields”. Estos campos permiten realizar filtros al más puro estilo “Wireshark” o “TCPDump”.

- Websites: Esta opción permite realizar búsquedas sobre los equipos que se han catalogado como websites. De ellos se puede sacar información como: puertos abiertos, subdominios, visibilidad según el ranking de Alexa, etcétera.
Figura 7: Búsqueda en Censys sobre servicios FTP 
- Certificates: Al igual que el proyecto de SSL Observatory realizaba un dumpeo de todos los certificados en IPv4, Censys proporciona dicha información. Como veremos más adelante se puede juntar esta información con tools proporcionadas por Censys con el fin de generar informes o reportes de interés.
Tools en Censys

Al igual que Shodan dispone de diversas herramientas que aportan inteligencia a los datos recopilados como, por ejemplo, la posibilidad de descubrir exploits públicos para ciertos hosts con ciertas condiciones. Censys presenta varias herramientas para analizar la información que se ha recopilado previamente.

En el apartado de IPv4 Hosts podemos hacer la búsqueda “*”, por lo que obtendremos un volcado paginado de toda la información. Vemos una pestaña denominada Tools, en la que podemos elegir 3. Tenemos la posibilidad de consultar metadatos encontrados en los hosts, como por ejemplo el sistema operativo que corre en la máquina, la posibilidad de situar hosts en un mapa y verificar en qué zona se encuentran y la de construir un reporte.

Figura 8: Tools en Censys

En el caso del reporte podemos construir en base a unos parámetros históricos almacenados. A modo de ejemplo se selecciona el puerto 21, con servicio ftp y banner. Le indicamos el número máximo de buckets que queremos, indicando en este caso 25.

Figura 9: Construcción de un informe

Podemos ver en la imagen cómo se construye el reporte en base a palabras que aparecen en el banner. Más de 15 millones de hosts respondieron en su banner con un “220” código de conexión con dicho servicio.

Figura 10: Informe generado en Censys

Esto es un ejemplo sencillo, pero podemos ver la potencia que Censys puede otorgar en un análisis de los datos almacenados en la base de datos.

More Censys: API & Raw Data

Que una plataforma como Censys proporcione una API es algo fundamental. La posibilidad de crear plugins y aprovecharse del consumo de la información que Censys genera es de gran utilidad. A través de su API este servicio proporciona una serie de opciones o endpoints. Además, existe una librería en Python para acceder a la API.

Figura 11: Información sobre la API

Por último, para mostrar la opción de “Raw Data” podemos descargar un fichero comprimido que alberga un JSON. Este JSON tiene que ser parseado y le aplicaremos la lógica que nosotros queramos o necesitemos. Podemos fácilmente crearnos un script en Ruby o Python con el que parsear el fichero JSON e ir quedándonos con la información que necesitamos. En el siguiente script se puede ver cómo se va analizando y parseando el JSON.

Figura 12: Ejemplo de procesado del JSON de Censys

Se escoge el campo [‘log’][‘data’][‘response’] que corresponde con el campo dónde se almacena el banner de los FTP en este fichero. Se pasa una expresión regular para filtrar por ese tipo de software “matcheado” con banner grabbing. En el caso de que se matchee se almacena en un fichero.

Pensamientos finales

Al final Censys nos proporciona diferentes formas de procesar y analizar la información que va capturando con sus escaneos periódicos lo que lo hace de gran utilidad. Censys es una fuente de información interesante que, como hemos visto, proporciona diferentes mecanismos para “jugar” con la información y construir cosas interesantes, como aplicar inteligencia sobre los datos y cruzarla con exploits públicos para conseguir "conquistar el mundo". Por supuesto, si eres responsable de seguridad de una empresa, es una fuente útil para ver qué puede estar recopilando de tu infraestructura cualquier posible atacante.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking" y “Pentesting con Powershell

No hay comentarios:

Publicar un comentario