Reconocimiento Pasivo / OSINT

En esta entrada de este blog se verá cómo obtener información de la organización a partir de fuentes abiertas, lo que denomina "reconocimiento pasivo" u OSINT (del inglés Open Source Intelligence).

Con el reconocimiento pasivo se buscará toda la información posible sobre la red y los sistemas del objetivo sin establecer conexión directa con el mismo. Internet proporciona una gran ayuda a la hora de buscar información en fuentes abiertas, por lo que será la base para realizar este reconocimiento. 

Durante el reconocimiento pasivo se buscará información relativa, entre otras cosas a: nombres de dominio; direcciones IP; organizaciones con las que se relaciona; tecnologías empleadas; infraestructura de red; direcciones de correo; nombres de empleados, sus cargos e información personal de los mismos. Asimismo, es necesario obtener cuanta información sea posible de cómo funciona la organización, sus ubicaciones físicas (sobre todo en el caso de que el test de penetración incluya una parte física), su estructura jerárquica, el área de negocio de la organización, la terminología empleada por personal de la organización. Para ello, las herramientas que se utilizarán serán comunes y al alcance de cualquiera:

  • Buscadores web.
  • Redes sociales.
  • Foros.
  • Aplicaciones colaborativas.
  • Ofertas de empleo.
  • Bases de datos offline.
  • Búsqueda de metadatos en archivos.

Estos aspectos se tratarán en los siguientes apartados, pero antes de entrar en ellos es necesario mencionar una técnica que aunque parezca antigua, hoy en día puede seguir proporcionando información interesante. Se dice que "la basura de uno es el tesoro de otro" y esto es especialmente cierto en el mundo de la ciberseguridad, donde se ha adoptado el término "Durnpster diving" para definir algo que se ha realizado toda la vida: buscar en la basura para obtener información útil sobre la organización o sobre el personal de la misma o sus clientes.

Redes sociales
Este tipo de sitios se crearon con el fin de facilitar las relaciones sociales entre los usuarios a los que permiten y animan a incluir y compartir información personal o empresarial de toda índole. 

Dado que actualmente existen numerosos tipos de redes sociales, se abre un gran abanico de posibilidades a la hora de recopilar información sobre los intereses personales de los usuarios de un determinado objetivo. Además, dado que existen redes sociales dedicadas a establecer contactos en el mundo laboral, también es posible recopilar datos de las posibles tecnologías utilizadas en la empresa. 

La mayoría de redes sociales permiten buscar información acerca de otros usuarios aunque en la actualidad restringen parte de esta información a los usuarios no registrados. El tipo de Información, que se puede recopilar en las redes sociales, que puede ser útil para un atacante es el siguiente.

  • Datos de contacto: Nombre completo y dirección de correo que nos pueden ayudar para enumerar usuarios o para realizar ataques de Phishing.
  • Intereses personales: Intereses personales de los usuarios pueden servirnos de ayuda para diseñar campañas de phishing e ingeniería social mucho más específicos a los usuarios de nuestro objetivo. También podemos utilizar esta información para generar un diccionario de posibles contraseñas basadas en los intereses de estos usuarios (aficiones, nombre de equipo deportivo, ciudades...)
  • Tecnologías utilizadas en la empresa: Podremos comprobar si se usa alguna tecnología susceptible de presentar alguna vulnerabilidad y conocer los mecanismos de defensa que pueda tener la compañía.

Herramientas

  • twitterscrapper: Recopila información de todo los datos expuestos en una cuenta de twitter. Ya sean tweets, retweets, hashtags, lista de favoritos, información pública del perfil, etc. Útil para conocer las inquietudes de una determinada persona para realizar labores de ingeniería social, o incluso generar diccionarios de posibles contraseñas basadas en sus aficiones. Información útil para ingeniería social o generar diccionarios de contraseñas. twitterscraper.
  • Ultimate Facebook Scrapper: Herramienta para recopilar datos de un perfil de Facebook tales como videos, fotos, lista de amigos, estados, mensajes en el muro, etc. Útil para conocer las inquietudes de una determinada persona para realizar labores de ingeniería social, o incluso generar diccionarios de posibles contraseñas basadas en sus aficiones. Ultimate-Facebook-Scraper
  • scrapedin crawler: Recopila información de los perfiles de LinkedIn, útil para extraer información de las tecnologías utilizadas en una determinada organización. scrapedin-linkedin-crawler.

Aplicaciones colaborativas
Existen bastantes aplicaciones colaborativas que el personal de tecnología utiliza en su día a día para compartir información, o consultar dudas a cerca de una determinada plataforma tecnológica. Si en estas aplicaciones o portales de consulta se indica información sensible, fragmentos de código de una aplicación interna, dudas sobre una determinada tecnología, o incluso credenciales de usuario o claves de API. Esta información puede ser accesible por un tercero. 

Las más utilizadas son StackOverflow y Pastebin. 

El tipo de Información, que se puede recopilar en las redes sociales, que puede ser útil para un atacante es el siguiente.

  • Tecnologías utilizadas en la organización: Podremos comprobar si se usa alguna tecnología susceptible de presentar alguna vulnerabilidad y conocer los mecanismos de defensa que pueda tener la compañía.
  • Porciones de código o información sensible: Podremos obtener información sensible escrita en el código, localizar alguna vulnerabilidad a nivel de código. Librerías utilizadas.
  • Credenciales de usuario: En ocasiones también se pueden localizar la divulgación de credenciales de usuario en el código o que se las pasan abiertamente.
  • APIKEYS: Claves para el uso de ciertas APIS internas o incluso de pago, nos pueden servir para poder utilizar una API como si fuéramos el usuario y expandir nuestras posibilidades de ataque.

Herramientas

  • pastehunter: Herramienta que realiza búsquedas en pastebin buscando información sensible o fragmentos de código. PasteHunter.
  • shhgit: Herramienta para buscar información sensible en GitHub, encuentra credenciales, APIKeys, ficheros de configuración, etc. shhgit.

Buscadores Web
Utilizaremos buscadores para buscar información pública relacionada con la empresa o dominio que queremos auditar, así como posibles páginas de desarrollo/pruebas que no debieron haberse indexado. 

Es aconsejable consultar las opciones avanzadas (operadores avanzados de búsqueda) soportadas por los distintos buscadores con el fin de precisar las búsquedas obteniendo así mejores resultados. 

A continuación se enumeran los buscadores más utilizados junto con sus principales características.

  • Google: Uno de los buscadores más utilizados, tiene numerosos operadores de búsqueda para realizar búsquedas avanzadas.

Google es, sin lugar a dudas, el mayor indexador de contenidos de internet. Dado esta característica. ¿Por qué no aprovecharla para obtener más información sobre el objetivo? Para poder afinar las búsquedas se pueden utilizar los operadores de Google que permiten realizar búsquedas más precisas. En el siguiente enlace tenéis una recopilación de los operadores de Google que podréis utilizar en las busquedas (https://www.googleguide.com/advanced_operators_reference.html).

Por otro lado, existen ciertas búsquedas específicas compuesta de varios operadores de búsqueda para localizar cierta información sobre tecnologías o información sensible que estuviera indexada. A este tipo de búsquedas tan específicas se les conoce como Google dorks y existe una base de datos "Google Hacking Database" (https://www.exploit-db.com/google-hacking-database) que se nutre de los aportes de la comunidad, que recopila gran cantidad de Google dorks.

Operadores
De todos los posibles operadores que ofrece google para restringir las búsquedas a continuación se enumeran los más utilizados.

  • site: Este operador permite indicar el nombre de un sitio o un dominio sobre el que se limitarán las búsquedas. Por ejemplo: site:sitioejemplo.es Se pueden combinar diferentes operadores para acotar más la búsqueda. Los resultados de las búsqueda también cambiarán según se utilicen o no comillas, por lo que puede resultar interesante probar distintas formas de buscar. Por ejemplo:
    site:"sitioejemplo.es" intext:"windows"
  • related: Este operador se utiliza para buscar páginas con un contenido similar a la página que se indica el nombre de un sitio o un dominio sobre el que se harán las búsquedas. En muchas ocasiones no devolverá nada de interés, pero puede servir para encontrar alguna relación entre organizaciones en función del contenido de sus sitios web o los hipervinculos existentes. Por ejemplo, si se buscan los sitios relacionados con un banco cualquiera, se encontrarán páginas de otras entidades. Por ejemplo: related:bancoejemplo.es
  • link: Busca únicamente en páginas que tienen un enlace a un sitio web. Por ejemplo: Iink:sitioejemplo.es
  • intitle: Con este operador se restringen las búsquedas a palabras en el titulo de la página. Este operador resulta muy útil para localizar sitios web que muestren el indice de archivos y carpetas ubicados en un directorio, lo que permitirá a un atacante acceder a información sensible. Por ejemplo: intitle:index.of "parent directory"
  • inurl: Este operador busca de manera especifica direcciones URL que contengan un texto determinado. Se puede utilizar para buscar scripts correspondientes a implementaciones de sitios web con vulnerabilidades conocidas. En el siguiente ejemplo se busca una extensión concreta de WordPress con vulnerabilidades conocidas y se refina la búsqueda para encontrar archivos que permitan identificar la versión. Por ejemplo: inurl:wp-content/plugins/my-calendar changelog
  • intext: Este operador busca exclusivamente en el texto de la página. Por ejemplo: intext:windows Uno de los elementos más interesantes a buscar durante la fase de reconocimiento son archivos (ofimáticos o de otro tipo), no solamente por su contenido, sino por los metadatos que puedan contener. Para poder analizar los metadatos es necesario disponer previamente de los archivos y los buscadores web facilitan la búsqueda, dado que identifican distintos tipos de archivos en función de su extensión.
  • filetype: En Google este operador se comporta igual que el operador ext, lo que permite buscar archivos si Google los ha identificado por su extensión. Si este operador se utiliza sin aplicar un mayor filtrado, en muchas ocasiones Google no devolverá resultados. El operador site visto anteriormente es uno de los operadores que se suelen combinar con este, puesto que permite buscar archivos concretos en un sitio especifico. Por ejemplo: filetype:xlsx site:google.es
Además de combinar varios operadores en la barra de búsquedas, estos se pueden modificar para excluir elementos de búsquedas concretas. Para ello se antepondrá un guion delante. Por ejemplo, la siguiente búsqueda se limitará al sitio sitioejemplo.es y mostrará todas las páginas indexadas que no contengan en su texto la palabra Windows: site:sitioejemplo.es -intext:windows
  • Bing
Buscador de Microsoft. La principal diferencia de este buscador con los demás es que permite realizar búsquedas basadas en direccionamiento IP.
  • DuckDuckGo
Al igual que google, también permite utilizar operadores avanzados de búsqueda.
  • Censys
Este buscador parecido a shodan se utiliza principalmente para buscar dominios que compartan el mismo certificado, o que tengan ciertos datos en el certificado expedido (Empresa, dominio, etc.)
  • Archive.org
Este buscador tiene indexadas versiones antiguas de las páginas a lo largo de varios años. De esta manera podremos comprobar tecnologías que se estuvieran utilizando, parámetros de entrada o páginas que aunque no se encuentren enlazadas puedan estar presentes, etc.
  • Shodan
Es un buscador que en vez de indexar páginas web indexa tecnologías y servicios publicados en internet, pudiendo realizar búsquedas por una versión concreta de un determinado software, o por todas las tecnologías de una determinada organización, etc.

Shodan es muy útil para realizar un filtrado rápido de sistemas publicados. Por ejemplo, en el supuesto de localizarse una vulnerabilidad para una versión específica del servidor web Apache, podría realizarse una búsqueda en shodan para comprobar todos los sistemas que estuvieran expuestos con esa versión concreta del software.
 
Disponemos de varios operadores que nos permiten acotar las búsquedas. A continuación se enumeran los más utilizados.

Operadores
  • city: Filtro para buscar dispositivos que se encuentren en una determinada ciudad o área.
  • country: Igual que el anterior, pero en este caso el filtro se aplica por país.
  • geo: búsqueda zona geográfica, según coordenadas de longitud y latitud.
  • hostname: Busca sistemas cuto nombre de host concuerde con el término de búsqueda (WWW, FTP, VPN, etc.).
  • net: Limita los resultados de la búsqueda a una determinada dirección IP o subred específica.
  • os: Filtra por un determinado sistema operativo.
  • port: Filtra la búsqueda por un puerto específico. Útil para localizar servicios
    expuestos.

Whois
Todas las direcciones IP públicas en internet han de estar registradas en las Bases de Datos Whois con la finalidad de conocer a quién pertenecen, persona de contacto rango de direccionamiento al que pertenecen, etc. Algunos de los datos que podemos consultar en las Bases de datos Whois son los siguientes:

  • Servidores DNS
  • Registrador u organización
  • Información de contacto

Estas bases de Datos se mantienen y gestionan por 5 organizaciones llamadas Regional Internet Registry (RIR) que se encuentran repartidas según su área geográfica.

  • ARIN: América del Norte
  • LACNIC: América del Sur, América Central y Caribe
  • RIPE NCC: Europa, el medio Este y Asia Central
  • APNIC: Asia del Pacífico
  • AfriNIC: Africa
Herramientas
Existen diferentes herramientas que podemos utilizar para realizar consultas a las BBDD Whois, pero básicamente se pueden agrupar en las dos siguientes categorías:
  • Herramientas whois de consola: Herramienta en modo consola, es decir, accesible desde la línea de comandos. Existen versiones para Microsoft Windows y distribuciones Linux. $ whois + dirección_IP
  • Servicios web: Existen diversos servicios web que facilitan la realización de estas consultas a través de aplicativos o portales en internet, por ejemplo (whois.domaintools.com). E incluso nos ofrecen la posibilidad de realizar búsquedas más específicas que por no soporta la herramienta whois.
Email harvesting
Esta técnica consiste en la búsqueda de correos electrónicos pertenecientes a una determinada organización. De esta manera obtenemos correos electrónicos válidos para la realización de ciertas técnicas como ataques de fuerza bruta o password spraying, ingeniería social, envío de correos con malware, etc.
  • TheHarvester: Herramienta que recopila información sobre direcciones de correo electrónico de un determinado dominio. (Herramienta incluída en la distribución Kali)
  • Maltego: Es toda una suite de búsqueda de relaciones entre entidades, utilizada en la rama de inteligencia. Es muy potente y entre otros muchas capacidades puede recopilar direcciones de correo electrónico. (Herramienta incluída en la distribución Kali)
Foros
Existen numerosos foros donde se tratan temas técnicos donde los administradores de los sistemas suelen hacer preguntas acerca de configuraciones o problemas que se encuentran en su trabajo diario y es posible que revelen el nombre de su organización de manera inadvertida o intencionadamente, o que se les pueda relacionar de alguna manera con la misma. En este caso, a través de los foros se puede obtener información acerca de las tecnologías empleadas por una organización, e identificar alguna vulnerabilidad o mala configuración.
 
Ofertas de empleo
En las ofertas de empleo para personal informático las organizaciones suelen relacionar las tecnologías que deben conocer los futuros empleados, por lo que son una buena fuente de información para un atacante, que únicamente tiene que leerlas para hacer una relación inicial de posibles tecnologías y herramientas, aunque deberá confirmarla y ampliarla posteriormente.