jueves, 28 de enero de 2021

TryHackMe: Introducción al Google Dorking

 

En esta ocasión hablaremos de Google Dorking. El Google Dorking es, en resumen, un conjunto de técnicas o trucos para refinar las búsquedas en Google. En esta entrada del blog se muestran algunos de estos trucos, además de algunas pistas  sobre lo que es el SEO y cómo funciona la indexación y el rastreo de los sitios web. Espero que lo disfrutéis.

EL VIEJO MOTOR DE BÚSQUEDA

Google es, probablemente, el ejemplo más famoso de “Motor de Búsqueda”.

Ahora bien, podría parecer bastante condescendiente explicar cómo funcionan estos “motores de búsqueda”, pero hay muchísimo más tras el telón de lo que podemos ver. Aún más importante, podemos aprovechar esto a nuestro favor para encontrar todo tipo de datos, más que con una simple lista de palabras. La investigación, especialmente en el mundo de la Ciberseguridad, encapsula también todo lo que puedas hacer como pentester. MuirlandOracle ha creado una fantástica sala para obtener aptitudes de cara a la búsqueda e investigación, y para conseguir exactamente la información que desees.

Los “Motores de Búsqueda” como Google son grandes indexadores, específicamente indexadores del contenido propagado a lo largo de la World Wide Web.

Estos motores utilizan “Crawlers” o “Arañas” para buscar ese contenido en la red, acerca de lo cual hablaremos en la próxima tarea.

APRENDAMOS ACERCA DE LOS CRAWLERS

¿Qué son los Crawlers y cómo trabajan?

Estos rastreadores encuentran el contenido por medio de varios métodos. Uno de ellos es el descubrimiento puro, donde el crawler visita una URL y se devuelve la información sobre el contenido del sitio web al motor de búsqueda. De hecho, existen montones de información que los rastreadores modernos rascan, aunque hablaremos de eso más tarde. Otro método que utilizan los crawlers es siguiendo los enlaces encontrados en páginas web visitadas anteriormente, como un virus en el sentido en que se dedica a propagarse a todos los sitios que puede.

Visualicemos algunas cosas…

El diagrama inferior muestra un alto nivel de abstracción de cómo trabajan estos rastreadores. Una vez que el crawler descubre un dominio como “mywebsite.com”, indexará todo el contenido del dominio, buscando palabras clave y otra información de interés (hablaremos de ello más tarde).


En el diagrama superior, se ha raspado “mywebsite.com” en busca de las palabras clave “Apple”, “Banana” y “Pear”. Estas palabras clave son almacenadas en un diccionario por parte del rastreador, el cual las devuelve después al motor de búsqueda, por ejemplo, Google. Debido a su persistencia, Google ahora sabe que el dominio “mywebsite.com” tiene las palabras clave “Apple”, “Banana” y “Pear”. Como si tan solo se hubiera rastreado una web, si un usuario buscara “Apple” … ”mywebsite.com” aparecería. Recibiríamos el mismo resultado con la búsqueda de “Banana”. Como el contenido indexado del rastreador informa de que el dominio contiene “Banana”, esta se mostrará al usuario.

Como en la ilustración inferior, un usuario realiza una consulta al motor de búsqueda de “Pears”. Debido a que el motor de búsqueda solo contiene información de una web que ha sido rastreada con la palabra clave “Pears”, ése será el único dominio que se presentará al usuario.


De todos modos, como mencioné anteriormente, los rastreadores intentan recorrer cada URL y archivo que encuentren. Digamos que “mywebsite.com” tiene las mismas palabras clave que antes (“Apple”, “Banana” y “Pear”), pero también tiene una URL a otra web, “anotherwebsite.com”. Por eso el rastreador intentará recorrer también esa URL (“anotherwebsite.com”) y recuperar el contenido de todo lo que haya en ese dominio.

Esto se muestra en el diagrama inferior. El crawler encuentra inicialmente “mywebsite.com”, donde rastrea todo el contenido del sitio web, encontrando las mismas palabras clave que antes (“Appel”, “Banana” y “Pear”), pero además ha encontrado una URL externa. Una vez que el crawler completa el rastreo de “mywebsite.com”, procederá a rastrear el contenido de “anotherwebsite.com”, donde encontrará otras palabras clave (“Tomatoes”, “Strawberries” y “Pineapples”). El diccionario del crawler ahora contiene las palabras de ambos sitios web, las cuales son almacenadas y guardadas en el motor de búsqueda.

Recapitulando.

El motor de búsqueda ahora tiene conocimiento de que dos dominios han sido rastreados:

  1. mywebsite.com
  2. anotherwebsite.com

Además, hay que tomar nota de que “anotherwebsite.com” solo fue indexado porque fue referenciado por el primer dominio, “mywebsite.com”. Debido a esta referencia, el motor de búsqueda conoce lo siguiente de los dos dominios:

Nombre de dominio --> Palabra clave

mywebsite.com --> Apples

mywebsite.com --> Bananas

mywebsite.com --> Pears

anotherwebsite.com --> Tomatoes

anotherwebsite.com --> Strawberries

anotherwebsite.com --> Pineapples

O como se ilustra a continuación:

 


Ahora que el motor de búsqueda tiene conocimiento de la existencia de estas palabras clave, digamos que si el usuario busca “Pears” se mostrará el dominio “mywebsite.com”, ya que es el único dominio rastreado que la contiene:


Del mismo modo, digamos que el usuario ahora busca “Strawberries”. Se mostrará el dominio “anotherwebsite.com”, ya que es el único dominio rastreado por el crawler que contiene esa palabra clave:


Esto es genial, pero ahora imagina que un sitio web tiene múltiples URL externas (como suele ocurrir). Eso requerirá de muchísimo rastreo. Siempre existe la oportunidad de que otro sitio web tenga información similar a la de un sitio web ya rastreado, ¿verdad? Entonces, ¿cómo lo hace el “Motor de Búsqueda” para decidir la jerarquía con la que estos dominios son mostrados al usuario?

En el diagrama inferior, si el usuario busca una palabra clave como “Tomatoes” (la cual contienen los sitios web 1 a 3), ¿quién decide qué sitio web se muestra y en qué orden?

 

Lo lógico sería presuponer que se mostrarían los sitios web en el orden del 1 al 3… Pero esta no es la forma en que trabajan los dominios en el mundo real.

Entonces, ¿quién (o qué) decide dicha jerarquía? Bien…

OPTIMIZACIÓN DE LOS MOTORES DE BÚSQUEDA (SEARCH ENGINE OPTIMIZATION, SEO)

Search Engine Optimization.

El Search Engine Optimization o SEO es un tema prevalente y lucrativo en los motores de búsqueda de hoy día. De hecho, hay empresas que aprovechan la mejora de un “ranking” SEO en sus dominios. Desde un punto de vista abstracto, los motores de búsqueda darán prioridad a aquellos dominios que son más sencillos de indexar. Existen diversos factores acerca de cuan óptimo es un dominio, resultando en algo similar a un sistema de puntuación.

Para señalar algunos de los factores que influyen en esta puntuación, tenemos los siguientes:

  • Cuán responsive es tu sitio web para los distintos navegadores, como Google Chrome, Firefox e Internet Explorer (esto incluye los teléfonos móviles)
  • Cuán sencillo de rastrear es tu sitio web (o incluso si el rastreo está permitido… pero esto lo veremos más tarde) gracias al uso de los “Sitemaps”.
  • Qué clase de palabras clave tiene tu sitio web (por ejemplo, en nuestros ejemplos si el usuario realizara una consulta de búsqueda como “Colours”, no se mostraría ningún dominio, ya que el motor de búsqueda (todavía) no ha rastreado ningún dominio con la palabra clave “Colours”).

Existe una amplia complejidad en cómo distintos motores de búsqueda “puntúan” individualmente estos dominios, incluyendo vastos algoritmos. Naturalmente, las compañías que corren estos motores de búsqueda, como Google, no comparten cómo trabaja esta visión jerárquica de los dominios. Además, como al fin y al cabo son negocios, puedes pagar para anunciar o mejorar el orden en el que tu dominio sea mostrado.

Hay varias herramientas online, algunas de ellas proporcionadas por los mismos motores de búsqueda, que te mostrarán cuán optimizado está tu dominio. Por ejemplo, podemos usar el Analizador de Google para comprobar la clasificación de TryHackMe:



De acuerdo con esta herramienta, TryHackMe tiene una clasificación SEO de 85/100 (a fecha de 14 de noviembre de 2020). No está del todo mal y la herramienta nos muestra los motivos por los cuales esta puntuación ha sido calculada en la parte inferior de la imagen anterior.

Pero… ¿Quién o qué regula a estos “Crawlers”?

Dejando a un lado de los motores de búsqueda el quién proporciona estos rastreadores, los propietarios de los sitios web y los servidores web mismos son los que estipulan de forma última lo que los crawlers pueden rastrear y lo que no. Los motores de búsqueda intentan obtener toda la información de un sitio web, pero existen casos en los que no querríamos que todo el contenido de nuestra web se indexe. ¿Se te ocurre alguno? ¿Qué me dices de una página de login del administrador del sistema? No queremos que todo el mundo pueda ver ese directorio, especialmente mediante una búsqueda en Google.

Es momento de hablar de Robots.txt.

BIP BIP – ROBOTS.TXT

Robots.txt

Similar al “Sitemaps” del que hablaremos más tarde, este fichero es lo primero que indexan los rastreadores cuando visitan un sitio web.

Pero, ¿qué es?

Este fichero debe encontrarse en el directorio raíz, especificado por el servidor web. Viendo la extensión de estos ficheros (.txt), es sencillo intuir que se trata de un fichero de texto.

Este fichero de texto define los permisos que los crawlers tienen en el sitio web. Por ejemplo, qué tipo de rastreador está permitido (puedes querer que solo el rastreador de Google indexe tu sitio web y que no lo haga el de MSN). Además, Robots.txt puede especificar qué ficheros y directorios queremos o no que se indexen en el rastreador.

Un ejemplo básico de Robots.txt es el siguiente:


Aquí tenéis algunas palabras clave para este fichero y sus funciones:

User-agent -> Especifica qué tipo de rastreador puede indexar tu sitio web (el asterisco es como un comodín, permitiendo a todos los “User-agents”.

Allow -> Especifica los directorios o ficheros que el crawler puede indexar.

Disallow -> Especifica los directorios o ficheros que el crawler no puede indexar.

Sitemap -> Proporciona una referencia a dónde se encuentra el sitemap (mejora el SEO como dijimos anteriormente, volveremos a esto en la próxima tarea).

En este caso:

  1. Cualquier crawler puede indexar el sitio.
  2. El crawler tiene permitido indexar el contenido completo del sitio web.
  3. El “Sitemap” se encuentra en http://mywebsite.com/sitemap.xml .

Digamos que queremos esconder algunos directorios y ficheros del rastreador. Robots.txt trabaja con una base de “listas negras”. Esencialmente, mientras no se diga lo contrario, el rastreador indexará todo lo que encuentre.

En este caso:

  1. Cualquier rastreador puede indexar el sitio.
  2. El rastreador puede indexar cualquier contenido que no se encuentre en el directorio “/super-secret-directory/”. Los rastreadores conocen la diferencia entre subdirectorios, directorios y ficheros. Como en el caso de la segunda excepción de la imagen anterior (“/not-a-secret/but-this-is/”). El rastreador indexará todo el contenido de “/not-a-secret/”, pero no indexará nada de lo contenido dentro del subdirectorio “/but-this-is/”.
  3. El “Sitemap” se encuentra en http://mywebsite.com/sitemap.xml .

¿Y qué hay si solo queremos que ciertos “Crawlers” indexen nuestro sitio web?

Podemos estipularlo, como se ve en la imagen siguiente:

En este caso:

  1. El rastreador “Googlebot” tiene permitido indexar el sitio web completo (“Allow: /”).
  2. El rastreador “msnbot” no tiene permitido indexar el sitio web (“Disallow: /”).

¿Y cómo evitamos que los ficheros se indexen?

Aunque se pueden introducir entradas para cada extensión de archivo que no quieres que se indexe, necesitarás proporcionar el directorio en el que se encuentran, además del nombre completo. Imagina que tienes un sitio web extenso. Menudo sufrimiento, ¿no? Aquí es donde podemos utilizar un poco de regexing.

En este caso:

  1. Cualquier rastreador puede indexar el sitio web.
  2. De todos modos, el rastreador no puede indexar ningún fichero con la extensión .ini que se encuentre dentro del directorio raíz o los subdirectorios del sitio web (para ello usamos “$”).
  3. El “Sitemap” se encuentra en http://mywebsite.com/sitemap.xml .

¿Por qué querrías esconder, por ejemplo, un fichero .ini? Bien, los ficheros como este contienen detalles sensibles de la configuración. ¿Se te ocurre algún otro formato de fichero que contenga información sensible?

SITEMAPS

Comparables a los mapas geográficos en la vida real, los “Sitemaps” son justamente eso, pero para sitios web.

Los “Sitemaps” son fuentes indicativas que son de ayuda para los rastreadores, ya que especifican las rutas necesarias para encontrar contenido en el dominio. La ilustración inferior es un buen ejemplo de la estructura de un sitio web, y de cómo se muestra en un “Sitemap”:


Los rectángulos azules representan la ruta al contenido anidado, similar a un directorio. Por ejemplo, “Products” para una tienda. Por otro lado, los rectángulos con extremos redondeados de color verde, representan una página. Sin embargo, esto es solo para fines ilustrativos, en el mundo real los “Sitemaps” no se ven así. Son más parecidos a algo como esto:

 

Los “Sitemaps” están en XML formateado. No explicaré la estructura de este formato de ficheros, ya que la sala XXE creada por falconfeast ya lo hace de forma adecuada, aunque esta sala es solo para suscriptores de TryHackMe.

La presencia de los “Sitemaps” otorga un gran peso en el momento de influir en la optimización del sitio web. Como dijimos en la tarea de SEO, estos mapas facilitan muchísimo el recorrido al rastreador.

¿Por qué los “Sitemaps” son favorables para los Motores de Búsqueda?

Los motores de búsqueda son muy vagos. Bueno, mejor dicho, es que tienen muchos datos que procesar. La eficiencia de cómo se recopilan estos datos es primordial. Las fuentes como los “Sitemaps” son una ayuda extremadamente útil para crawlers, tanto como las rutas necesarias al contenido ya proporcionado. Todo lo que el rastreador debe hacer es raspar el contenido, en lugar de pasar por el proceso de tener que buscar y raspar manualmente. Piensa en ello como en el uso de una lista de palabras para encontrar ficheros en lugar de buscar sus nombres de forma aleatoria.

Cuanto más sencillo de rastrear sea un sitio web, más optimizado estará para el Motor de Búsqueda.

¿QUÉ ES GOOGLE DORKING?

Usando Google para una búsqueda avanzada.

Como dijimos anteriormente, Google tiene muchísimos sitios web rastreados e indexados. El ciudadano medio usa Google para buscar imágenes de gatos (yo soy más de perros…). Mientras que Google tiene muchas imágenes de gatos indexadas listas para mostrar al ciudadano, este es un uso realmente trivial del motor de búsqueda, en comparación con lo que puede hacer.

Por ejemplo, podemos añadir operadores como en los lenguajes de programación para aumentar o disminuir nuestros resultados de búsqueda, o incluso realizar operaciones aritméticas.


Si queremos acotar más nuestra búsqueda, podemos usar las comillas (“”). Google interpretará todo lo que haya entre las comillas de forma exacta y solo devolverá los resultados de la frase exacta proporcionada, algo bastante útil para filtrar basura que no necesitamos como lo que hemos hecho a continuación:

Refinando nuestras consultas.

Podemos usar términos como “site” (como bbc.co.uk) y una consulta (como “gchq news”) para buscar la palabra proporcionada en el sitio concreto que hemos indicado y así filtrar el contenido que sería más complicado de encontrar de otras formas.

En la captura inferior, la búsqueda de “gchq news” devuelve, aproximadamente, 1.060.000 resultados de Google. El sitio web que buscamos se encuentra clasificado después del sitio actual de GCHQ:

Pero no queremos ese… Queremos el de “bbc.co.uk”, por lo que refinaremos nuestra búsqueda usando el término “site”. ¿Ves como en la captura inferior Google devuelve muchos menos resultados? Adicionalmente, la página que no queríamos ha desaparecido, dejando en primer lugar la que buscábamos.


Por supuesto, en este caso, GCHQ es un tema del que se habla, por lo que habrá una cantidad de resultados considerable.

Entonces, ¿qué hace que el “Google Dorking” sea tan atractivo?

Lo principal, y lo más importante, es que es legal. Se trata de información indexada y pública. De todos modos, en lo que hagas con ella es donde entra en juego la legalidad.

Algunos términos que podemos utilizar en nuestras búsquedas combinadas son:

filetype: busca ficheros por su extensión (por ejemplo, PDF).

cache: muestra la versión cacheada de Google de una URL específica.

Intitle: la frase especificada DEBE aparecer en el título de la página.

Por ejemplo, digamos que queremos usar Google para buscar ficheros PDF en bbc.co.uk:


Bien, ahora que hemos refinado la búsqueda en Google para consultar todos los PDF accesibles públicamente en “bbc.co.uk”, no habríamos encontrado este fichero de “Ley de Solicitud de Libertad de Información” a partir de una lista de palabras.

Aquí hemos usado la extensión PDF, pero puedes pensar en cualquier otro formato de fichero de naturaleza sensible que pueda estar accesible públicamente (a menudo, de forma no intencionada). De nuevo cabe decir que es en este punto donde entra la legalidad por medio, es por eso por lo que “Google Dorking” es tan poderoso y tan peligroso.

Aquí tenéis un recorrido de directorio simple.

He tachado lo marcado en negro para cubrirnos las espaldas a ti, a THM, a mí y a los propietarios de los dominios:




No hay comentarios:

Publicar un comentario