Open Source Intelligence [OSINT]: The power of the Search Engine Attacks – Parte I

En este artículo vamos a hablar y mostrar de forma práctica como poder utilizar los diferentes buscadores que tenemos en internet para realizar labores de OSINT. Lo primero de todo seria definir qué es eso de OSINT… Podríamos decir que OSINT es una forma de recolectar información y datos a los que aplicarle una cierta inteligencia lo cual implica encontrar, seleccionar y adquirir información desde fuentes públicas como buscadores para poder analizarla y obtener gran cantidad de información acerca del objetivo.


Esto vamos a hacerlo nosotros Google, Bing, Yahoo y por supuesto Shodan, centrándonos en este último y Google.

Para poder realizar búsquedas avanzadas que nos permitan obtener ciertos datos de valor deberemos saber primero los operadores/comandos de los diferentes buscadores así que voy a pasar a mostrar cuales son los principales que podíamos utilizar para realizar OSINT.

Google

En el caso de Google los principales son los siguientes:

site:

Nos permite definir que únicamente queremos que los resultados que nos muestre sean de ese sitio en concreto. Por ejemplo:

site:highsec.es

Esto mostrara resultados solo resultados dentro del dominio de highsec.es

intitle:

Buscara la cadena que le introduzcamos en el titulo, pudiendo estar solo parte de dicha cadena en el titulo. Por ejemplo.

intitle:”index of /”

Esto nos permitirá buscar servidores que tengan un listado de archivos mediante un index of.

allintitle:

Similar al anterior pero indica que expresamente y obligatoriamente toda la cadena que introduzcamos tiene que estar en el titulo. Por ejemplo:

allintitle:”index of /admin/”

Esto nos buscara todos los resultados que coincidan exactamente.

inurl:

Nos permitirá buscar una determinada cadena dentro de la URL. Por ejemplo:

inurl:”c99.php”

Lo cual nos mostrara los servidores que tengan instalada una shell c99 en php.

allinurl:

Similar al anterior “all”, pues la diferencia con inurl es que en este comando todo debe aparecer obligatoriamente en la URL. Por ejemplo:

allinurl:”and+1=0+union+select+1″

Esta query nos devolverá páginas que muy posiblemente sean vulnerables a un SQLi.

intext:

Básicamente nos permite hacer una búsqueda de la cadena en el texto de los resultados, ni en el titulo, ni en URL, etc… Por ejemplo:

intext:”@gmail.com password=”

Este resultado nos podría mostrar algunas cuentas de correos de Google con su usuario/email y contraseña.

allintext:

Como ya hemos visto con los “all”, esto nos permitirá buscar los resultados que solo contengan de forma exacta lo que hemos buscado. Por ejemplo:

allintext:”@yahoo.es:pass”

Este comando nos podría permitir buscar algunas cuentas de yahoo.es.

cache:

Nos permitirá ver una página en la cache de Google, por lo que no tendremos que conectarnos a la página real. Esto es muy práctico en la fase de fingerprint en un test de intrusión. Por ejemplo:

cache:highsec.es

Esto nos mostraría la página de highsec.es que tiene Google en cache.

info:

Nos proporcionara cierta información acerca de un dominio. Por ejemplo:

info:highsec.es

Donde nos dirá si queremos mostrar la pagina en cache, si queremos ver webs similares, si queremos ver aquellas páginas que tengan un enlace a highsec.es, si queremos buscar las diferentes páginas de HighSec o si queremos buscar las web donde aparezca la frase highsec.es.

link:

Nos permite buscar las páginas que tienen un determinado link que nosotros buscamos. Por ejemplo:

link: http://www.highsec.es

Es importante recalcar que buscara SOLO ese link, que sería distinto de highsec.es

ext:

Buscara la cadena que introducimos como la extensión del archivo. Por ejemplo:

ext:php3

Esto nos permitirá hacer búsquedas donde los resultados sean archivos .php3

filetype:

Similar al anterior, pero Google nos ayudara a encontrar unos determinados tipos bien conocidos como: pdf, doc, docx, xml, txt…

filetype:txt inurl:robots

Esta búsqueda nos sacara los archivos robots.txt

‘-’ (El menos):

Nos permitirá negar un determinado operando. Por ejemplo:

-filetype:pdf

Esto nos buscara cualquier resultado menos archivos pdf.

‘||’:

Nos permitirá añadir varias condiciones (Es un OR). Por ejemplo:

ext:txt || ext:sql intext:password intext:username

Esto sería un comando que nos podría permitir obtener algunos archivos con usuarios y contraseñas que tengan extensión txt o sql.

 ‘&&’:

 Nos permite hacer un AND de dos condiciones, es decir que tiene que cumplirse las dos en los resultados a buscar. Por ejemplo:

ext:txt || ext:sql intext:password && intext:username

o

(ext:txt || ext:sql) (intext:password && intext:username)

Esta búsqueda seria similar a la anterior pero se impone como condición que tiene que aparecer tanto password como username en el texto.

Estos serian los comandos más importantes para el tema que vamos a tratar aquí, luego hay algunos más pero que no tienen que ver tanto con el tema de Open Source Intelligence.

Vamos a explicar ahora muy resumidamente que es la Google Hacking DataBase (GHDB). Esto es un proyecto que surgió hace años donde la gente va subiendo sus dorks que es como se le llaman a las búsquedas avanzas que hacen uso de operadores para conseguir una cierta información. Si queréis podéis echarle un ojo en este enlace:

http://www.exploit-db.com/google-dorks/

http://www.hackersforcharity.org/ghdb/

 

Como veréis tiene muchos dorks, pero suelen ser viejos porque no está muy actualizado, aunque sin duda para empezar sirve ya que nos da ideas y una visión general de como podríamos plasmar en un comando de Google lo que nosotros estamos buscando en internet de una forma precisa, aunque como veremos más abajo es cuestión de pensar un poco y tener algo de imaginación ;)

Antes de meterme con los dorks y mostrar un poco el pensamiento que debemos tener cuando nos planteamos como podemos buscar algo en internet os voy a comentar que este, el “Google Hacking” es uno de los métodos principales que utilizan/utilizaban grupos como Lulz o Anonymous para llevar a cabo sus ataques, esto se debe a que pueden llegar a conseguir gran cantidad de información de la víctima como pueden ser cuentas de redes sociales, información confidencial y un sin fin de cosas como vamos a ver a continuación.

También me gustaría decir que para estas labores es realmente práctico usar la cache de Google para ver una página, ya que de esta forma no nos estaremos conectando al objetivo y por lo tanto no estaremos dejando en el ningún rastro.

Ahora que ya estamos listos vamos a ver el tema de cómo construir nuestros propios dorks echándole algo de imaginación.

En este articulo vamos a ver diversas cosas que un atacante podría llegar a conseguir como por ejemplo: cuentas de correo, encontrar servidores mal configurados, obtener documentos confidenciales, encontrar paginas que han sido hackeadas, localizar vulnerabilidades web, encontrar cámaras IP…

Vamos a comenzar por las cuentas de correo. La forma de pensar seria preguntarnos en qué tipo de archivos podrían estar almacenadas unas cuentas en un servidor, yo para los ejemplos busque en archivos sql, log y xls. Después podríamos pensar como buscaríamos un correo y después como localizaríamos una contraseña dentro de un fichero. Tras darle alguna vuelta podemos llegar a algo así:

ext:sql (intext:@hotmail.* || intext:@gmail.* || intext:@outlook.*) (intext:password || pass)

Donde estaríamos buscando en un archivo sql las cadenas “@hotmail.”, “@gmail.” y “@outlook.”, lo cual nos permitirá encontrar cuentas de cualquier país ya sean @gmail.es o @gmail.com por ejemplo. Y por ultimo buscamos en el texto que aparezca ‘password’ o ‘pass’.

Como podemos ver hemos encontrado un par de resultados:

osint_1

Ahora sencillamente seleccionamos el que queremos y le damos a ver en cache, de tal forma que únicamente se quedara registrado en Google:

osint_2

Esto podríamos seguir desarrollándolo para dar lugar a otros dorks como por ejemplo:

Cuentas de correo:

ext:sql (intext:@hotmail.* || intext:@gmail.* || intext:@outlook.*) (intext:password || pass)

ext:xls (intext:@hotmail.* || intext:@gmail.* || intext:@outlook.*) (intext:password || pass)

                   

Cuentas de correo de gobiernos:

ext:sql (intext:@gov.* || intext:@gob.*) (intext:password || pass)

ext:xls (intext:@gov.* || intext:@gob.*) (intext:password || pass)

(ext:sql ||ext:xls) (intext:@gov.* || intext:@gob.*) (intext:password || pass)

 

Cuentas de correo en general:

(ext:sql ||ext:xls) (intext:@hotmail.* || intext:@gmail.* || intext:@outlook.* || intext:@gov.* || intext:@gob.*) intext:password 

ext:log (intext:@hotmail.* || intext:@gmail.* || intext:@outlook.* || intext:@gov.* || intext:@gob.*) intext:password

 

Cuentas de correo en los logs:

ext:log (intext:@hotmail.* || intext:@gmail.* || intext:@outlook.* || intext:@gov.* || intext:@gob.*) intext:password

Ahora vamos a ver algunos ejemplos de cómo podríamos encontrar servidores vulnerables. Es importante especificar que depende de que queramos buscar, ya sea una vulnerabilidad, si tienen alguna configuración por defecto y demás el comando variara. En nuestro primer caso vamos a ver cómo sería posible sacar las configuraciones de un servidor para obtener los credenciales de acceso vía web y por ftp.

filetype:config inurl:web.config inurl:ftp

Otros posibles ejemplos podrían ser los siguientes:

Index of de sitios gubernamentales:

(site:gob.* || site:gov.*) intitle:”index of /” intext:”Last modified Size Description”

 

Servidores ftp gubernamentales:

(site:gob.* || site:gov.*) inurl:”ftp://ftp” site:ftp.*

intext:warning  intext:/var/www/ ext:php (site:gob.* || site:gov.*)

Vamos a ver ahora como podríamos obtener documentos confidenciales. Lo primero que se podría hacer es filtrar la búsqueda únicamente a dominio de cualquier gobierno, después buscar de diversas formas la palabra ‘confidencial’ o ‘confidential’. Algunos ejemplos podrían ser los siguientes en donde se buscar documentos que no sean públicos de gobiernos, documentos que sean algún tipo de reporte y datos confidenciales referentes a contabilidad y datos bancarios.

Archivos confidenciales de sitios gubernamentales:

(site:gob.* || site:gov.*) &&  (intitle:confidential || intitle:confidencial) ext:pdf future

(site:gob.* || site:gov.*) intext:”confidential reports” ext:pdf future

 

Que no sean públicos:

(site:gob.* || site:gov.*) intext:”confidential reports” ext:pdf -”public”

 

Contabilidad y bancarios:

(site:gob.* || site:gov.*) intext:”confidential” ext:xls -”public” 

(site:gob.* || site:gov.*) intext:”confidential” ext:xls -”public” “financial” 

intext:”confidential” ext:xls -”public” “financial” “bank” “account”

Ahora que ya vamos viendo la potencia que realmente tienen los operadores avanzados de Google para obtener información vamos a ver cómo podríamos localizar pagina que hayan sido hackeadas del gobierno. Para ello un ejemplo podría ser el siguiente:

(site:gob.* || site:gov.*) intitle:”hacked by”

Continuemos buscando por ejemplo archivos /etc/passwd públicos en sitios gubernamentales que nos podrían permitir acceso al servidor. Un par de ejemplos serian:

inurl:”/etc/passwd” ext:php (site:gob.* || site:gov.*)

intext:root:x:0:0:root:/root:/bin/bash ext:php (site:gob.* || site:gov.*)

Ahora vamos a meternos a ver cómo podríamos localizar vulnerabilidades web. Para ello podemos por ejemplo buscar por un error muy típico de MySQL que es “Warning: mysql_fetch_array” que nos indica que hay un error en la consulta que está haciendo la aplicación web a la base de datos y que muy posiblemente sea susceptible a un SQL Injection. Para buscar esto podríamos hacer una consulta como:

intext:”warning mysql_fetch_array” inurl:.php?*= ext:php

También podríamos buscar paginas susceptibles a SQL Injection donde alguien ya ha intentado realizar el ataque lo cual podría significar que son vulnerables como por ejemplo:

(site:gob.* || site:gov.*) inurl:”union+select+1″ filetyp:php

 

Para terminar vamos a ver cómo podríamos localizar algunas cámaras IP, aunque para esto veremos más adelante que el buscador Shodan es mucho mejor. En este caso el dork que hemos sacada es gracias a que hemos conseguido saber que solo ese tipo de modelo de cámaras IP tiene esa URL, por lo tanto es algo identificativo que al buscar en Google nos permite encontrar las cámaras. El ejemplo sería el siguiente:

inurl:/control/userimage.html

 

Como he dicho este es un caso puntual, pero si quisiéramos buscar otro tipo solo tendríamos que investigar algún patrón que sea identificativo, ya sea que siempre se pone el mismo título, que en la web siempre aparece alguna cadena concreta, etc… Para localizarlas.

Y hasta aquí llegamos con Google, sencillamente  os he mostrado algunos ejemplo básicos de cómo realizar búsquedas que nos permitan encontrar información muy precisa, pero es cuestión de imaginación y de tener claro que quieres conseguir y de quien. Os recomiendo que probéis los dorks para que veáis la inmensa cantidad de resultados que nos da Google, eso sí, siempre mejor usando la cache.

Por último decir que muchas veces he decidido buscar en sitios gubernamentales que se suponen más seguros y contra los cuales realizar tareas de OSINT sería más complicado, pero se podría realizar contra cualquier objetivo.

Ahora voy a pasar a mostrar algunas diferencias que tenemos entre Google y los buscadores Bing y Yahoo, pero no me voy a meter a exponer ejemplos ya que eso como hemos dicho es cuestión de conocer los operadores, tener claro tu objetivo y echarle imaginación.

 

Bing

En el caso de Bing que es el buscador de Microsoft comparte operadores con Google como pueden ser: ext, filetype, intitle, site, los operadores || y &&, y algunos más que no hemos tocado aquí. En este caso no voy a meterme con ejemplo como con Google porque básicamente es lo mismo, lo único que cambia es el operador.

Por otro lado tiene otros como:

ip:

Nos permitira buscar por una IP concreta.

url:

Sustituye al inurl

Aunque Bing es otro buscador que usamos cuando realizamos labores de OSINT o cuando estamos investigando un objetivo en un test de intrusión hay que decir que tiene menos resultados que Google, aunque a veces pueden ser distintos, ahí la necesidad de mirar los dos.

 

Yahoo

Ahora a modo muy resumido ya que de los buscadores no es el más importante aunque como hemos dicho no hay que obviar ninguno vamos a ver qué comandos principales tiene el buscador de Yahoo.

Comparte con Google los siguientes: site, link, inurl, intitle, y además tiene:

hostname:

Que nos permite buscar por un dominio concreto

Y con esto terminamos el primer artículo centrado en realizar labores de OSINT en los diferentes buscadores y como los atacantes podrían utilizarlos para poder obtener gran cantidad de información y aplicarla en labores de inteligencia. En el siguiente artículo veremos cómo utilizar el buscador Shodan. He decidido no poner imágenes debido a que sino iba a resultar realmente extenso y también porque es la primera parte de una articulo que se va a publicar en Thiber.org, para quien no lo conozca le aconsejo echarle un ojo ya que es de los primeros Think Tank en materia de Ciberseguridad a nivel europeo.

Un saludo y espero que os haya gustado,

Eduardo – eduardo@highsec.es – @_Hykeos

Fuente utilizada: http://highsec.es/2013/11/open-source-intelligence-osint-the-power-of-the-search-engine-attacks-parte-i/
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s