miércoles, 10 de junio de 2009

TargetSearch v0.1

Nota: Ya existe una nueva versión que corrige los problemas encontrados en esta versión.

Hace alguna semanas tomando un café con un colega profesional de la seguridad le comentaba que me había hecho un pequeño Script en Perl llamado TargetSearch que pretendía automatizar una tarea que realizaba yo anteriormente para descubrir objetivos sobre los que realizar un test de intrusión. Una tontería, según le comenté, pero su contestación diciéndome que a veces esas pequeñas tonterías son las más útiles me ha hecho decidirme a publicarlo.

Aparte de muchos otros métodos más "a lo bestia" como el escaneo del rango, la resolución inversa de cada IP del rango o el intento de transferencias de zona, búsqueda de nombres por fuerza bruta, obtener algunos mediante correos y luego buscar nombres relacionados con Google Sets (algo que ya comenté en otro momento), y un largo etcetera, una de las técnicas que suelo emplear es buscar en Google "sites:dominioabuscar.com", lo cual nos saca todas las webs que tiene cacheadas Google, de todos los nombres de ese dominio e inferiores que contengan alguna web, lo cual ya resulta muy útil para localizar objetivos sobre los que hace una auditoría de las webs que nos pueda servir como ayuda durante la realización del test de intrusión, y todo esto de forma totalmente invisible para los sistemas objetivo. Target Search hace esto, pero de forma automática y mostrándonos una única aparición de cada nombre de dominio.

Esto me ha resultado especialmente útil, sobretodo en empresas grandes y con un control descentralizado de los sistemas de información, porque siempre encuentras el sistema del año catapum sin actualizar, que entre unos y otros se ha quedado ahí, y que nadie encuentra ni sabe que está. Nadie... salvo Google, que lo sabe todo :)

El Script se puede desgargar de la nueva sub-web que acabamos de crear desde pentester.es: tools.pentester.es, una web en la que iremos poniendo estas pequeñas herramientillas (porque la verdad es que por el momento no tenemos tiempo de programarnos un gran suite, aunque nos gustaría) que nos vamos haciendo para facilitar nuestro trabajo diario. De momento sólo está la herramienta que os presento, pero poco a poco esperamos ir poniendo más, que por supuesto iremos publicando también en este blog.

Y como se suele decir, como a pentestear se aprende pentesteando... vamos con un ejemplo de lo que encuentra este script por ejemplo en mi Alma Máter, la Universidad de Valencia:

$ ./TargetSearch.pl uv.es
##############################
# TargetSearch v0.1 - 10/06/2009 #
# Buscador de nombres de dominio #
# Jose Selvi - http://www.pentester.es #
##############################

Buscando nombres de hosts victima.........

Objetivos encontrados:
eees.uv.es(147.156.222.65)
uvpress.uv.es(147.156.164.76)
www.uv.es(147.156.1.4)
alufis35.uv.es(147.156.98.243)
extensio.uv.es(147.156.1.29)
debian.uv.es(147.156.2.72)
auladeedicion.uv.es(147.156.5.7)
eee.uv.es(147.156.26.170)
edumic.uv.es(147.156.17.54)
ific.uv.es(147.156.163.23)
industrial.uv.es(147.156.26.134)
grev.uv.es(147.156.13.180)
parnaseo.uv.es(147.156.1.51)
mcuser.uv.es(147.156.28.38)

IPs encontradas:
Buscando nombres extra para 147.156.222.65
Buscando nombres extra para 147.156.164.76
Buscando nombres extra para 147.156.1.4
Buscando nombres extra para 147.156.98.243
Buscando nombres extra para 147.156.1.29
Buscando nombres extra para 147.156.2.72
Buscando nombres extra para 147.156.5.7
Buscando nombres extra para 147.156.26.170
Buscando nombres extra para 147.156.17.54
Buscando nombres extra para 147.156.163.23
Buscando nombres extra para 147.156.26.134
Buscando nombres extra para 147.156.13.180
Buscando nombres extra para 147.156.1.51
Buscando nombres extra para 147.156.28.38

7 comentarios :

GigA ~~ dijo...

Buenas Jose!

Muy interesante Google Sets, no lo vi en la anterior entrada y la verdad es que funciona muy bien :)

Con respecto a Target Search estoy probandolo y no me funciona ya que no localiza la libreria de google:

Can't locate REST/Google/Search.pm in @INC (@INC contains: C:/Perl/site/lib

La he estado buscando pero nanai, ¿alguna pista? (utilizo Active Perl)

Salu2

Jose Selvi dijo...

Hola GigA, sí, utiliza una clase Perl llamada REST::Google::Search (http://search.cpan.org/~ejs/REST-Google-1.0.4/lib/REST/Google/Search.pod) para usar la API de Google.

La manera más cómoda de instalarsela es usar CPAN, así te instala ya todas las dependencias y todo.

Ya me cuentas que tal te ha funcionado.
Saludos!

Pedro Laguna dijo...

Muy buenas,

Antes de nada responder a GigA. Yo tambien uso ActivePerl e incluye un gestor de paquetes desde el que puedes buscar REST:Google y marcarlo para instalar.

El script me ha parecido muy bueno, pero se pierden bastante subdominios para paginas muy grandes, te explico lo que yo hago:

- Buscar site:dominio.com
- Leer los subdominios que aparecen en la primera pagina
- Modificar la busqueda para que sea del tipo -www -mail -img site:dominio.com
- Volver a repetir

Mirando en el codigo fuente parece que haces uso de la funcion de busqueda de la libreria con un parametro "large". Si haces una busqueda con tu programa para renfe.es aparecen los siguientes subdominios:
www.renfe.es(194.224.66.48)
web02.renfe.es(213.144.33.206)
mercancias.renfe.es(213.144.50.64)
mail.renfe.es(213.144.33.227)
horarios.renfe.es(194.224.66.112)

Con mi metodo ademas aparecen los siguientes:
-mail
-messl
-boletines
-backup
-w1
-w5
-clubave
-w4
-w2
-asista
-web02
-horarios
-mercancias
-www
site:renfe.es

Espero que te sirva como sugerencia para la version 0.2 o si no tendre que implementarmelo yo :P

Un saludo!

Jose Selvi dijo...

Hola Pedro, gracias por tu aportación!

La verdad es que no lo había probado con más opciones aparte del "site", pero este Google siempre consigue sorprenderme :)

No hay problema Pedro, incorporaré la sugerencia para la versión 0.2 lo antes que pueda, para eso es una versión 0.x y por eso la publico, para poderlo mejorar con las sugerencias que me lleguen ;)

Muchas gracias!

GigA ~~ dijo...

Me siento hyper-manco. He probado a bajarlo manualmente pero comienzan a surgir dependencias de otros paquetes como si fueran setas.

Utilizando ppm añado el repositorio de CPAN y encuentra de todo menos REST:Google

En fin, gracias por vuestra ayuda, lo voy a dejar para mañana xd

GigA ~~ dijo...

jeje, no hay nada como ponerte con otra cosa cuando estás atascado.

Ya lo he conseguido, la verdad que REST:Google tiene un montón de dependencias y una vez compilado (manualmente) no se copia correctamente en el /lib de Perl, de ahí los problemas.

Target Search funciona de perlas aunque como dice Pedro se deja bastantes cosillas por el camino. Esperaremos la siguiente versión :)

Buen trabajo anyway, salu2

Jose Selvi dijo...

Para la semana que viene ya tenemos post (lo ha escrito un compañero), así que el post con la publicación de la versión 0.2 lo pondré dentro de dos, pero yo en cuanto lo tenga lo publicaré en tools.pentester.es, si quereis ir mirando o mandarme un correo para que tenga yo el vuestro y os avise...

Gracias por los aportes!
Un saludo!