sábado, 12 de mayo de 2012

5. Educando con el miedo. Caso práctico: WhatsAppSniffer

"Ningún gobierno puede sostenerse sin el principio del temor así como del deber. Los hombres buenos obedecerán a este último, pero los malos solamente al primero" -
Thomas Jefferson

Miedo


¡Muy Buenas!

Al hilo del último artículo publicado en el blog, Securizando Android, concretamente del comentario de mi amigo Adrián, estuve haciendo una prueba con la última aplicación de esnifado de moda, WhatsAppSniffer, que me ha hecho reflexionar sobre la fuerza del miedo.


Releamos la frase célebre de este artículo y cambiemos el concepto de "hombres buenos/malos" por "personas sensibilizadas o no", y el concepto de "gobierno" por "estado de seguridad" y será fácil adivinar dónde quiero llegar, sería algo como:
"Ningún estado de seguridad puede sostenerse sin el principio del temor así como del deber. Las personas sensibilizadas obedecerán a este último, pero las que no lo están solamente al primero"
Espero que coincidáis conmigo en que es más recomendable una buena formación y sensibilización que jugar con el miedo, no obstante esta es una arma muy poderosa que bien utilizada puede ser mucho más efectiva.


Sin más preámbulos vayamos con el ejemplo:


Hace tiempo que estoy descontento con las medidas de seguridad que aporta WhatsApp, pero debido a su amplia difusión es difícil deshacerse de él y cualquier explicación sobre sus debilidades suele volver contra mí en forma de burlas sobre mi salud mental, con calificativos que varían entre paranoico, obsesionado, enfermo, etc.; sí, "cría cuervos y te sacarán los ojos".

La debilidad más conocida de este software es la transmisión de la información sin cifrar que puede ser capturada en redes WiFi; es rápidamente comprobada mediante algún software de esnifado de red, como por ejemplo WireShark (antes Ehereal). Sin embargo mostrar al público general sus comunicaciones con esta herramienta no causa demasiada impresión, por lo oscuro y complicado que parece.

No obstante, hace unos días, un portal de amplia difusión como es El androide libre, se hacía eco de la publicación en Google Play de una nueva herramienta llamada WhatsAppSniffer en el siguiente artículo:  Whatsapp Xtract y Whatsapp Sniffer: explotando los fallos de seguridad de Whatsapp



Con esta herramienta se pone al alcance de lo menos entendidos la posibilidad de obtener las conversaciones de cualquier WhatsApp que esté funcionando en la misma red Wifi, con una interfaz muy sencilla.

Al poco tiempo de su publicación en Google Play, la aplicación fue eliminada por Google pero, por supuesto, no de la red (recuerda que en cuanto algo se hace público en Internet, se pierde su control), así que no es muy difícil hacerse con una copia.

Así que con esta nueva herramienta en mi smartphone me dispuse ha hacer unas pruebas iniciales en mi casa y, al ver su correcto funcionamiento, el siguiente escenario era la oficina. Allí llegué este miércoles y, tras avisar del inicio de la "auditoría" y 5 minutos de pruebas para los más incrédulos, conseguí lo que llevaba varios meses intentado, convencerlos a todos del peligro de utilizar WhatsApp.

Y he aquí la demostración de la fuerza que tiene el miedo para modificar las conductas y percepciones de las personas, tan solo 5 minutos bastaron.

Sin embargo, como he comentado al principio, esta arma no debe ser utilizada más que en momentos puntuales. Es conocido el uso que hacen muchas empresas de seguridad del miedo para tratar de vender sus soluciones, estrategia que algunas veces funcionará pero que muy probablemente acaba saturando al cliente.

Volviendo a la aplicación WhatsAppSniffer, esta no es, ha sido, ni será la única aplicación que abusa del uso de transmisiones en texto plano. La solución es bastante evidente: que dichas aplicaciones mejoren o dejar de utilizarlas, pero esto muchas veces no es tan fácil debido a su implantación (como decíamos WhatsApp es muy popular) o a la ausencia de alternativas.

Pero, como nos comentaba Adrián, hay una contramedida, utilizar aplicaciones que detecten el esnifado de red como DroidSheep Guard, que es capaz de detectar un ataque de ARP spoofing y desconectarnos automáticamente de la red.

DroidSheep Guard

Así, después de mi demostración en la oficina conseguí distintos efectos:

  • Concienciación. He cambiado la perspectiva de la posibilidad de sufrir estos ataques.
  • Reducción del riesgo mediante utilización de contramedidas. Algunos compañeros ya utilizan DroidSheep Guard.
  • Evitar el riesgo dejando de utilizar la red Wifi. Otros compañeros han decidido utilizar únicamente la conexión móvil.
  • Asumir el riesgo. Otros compañeros, de cuyo nombre no quiero acordarme, han optado por no hacer nada ya que consideran que su información no es tan importante o confían en  nosotros...
  • Interés por WhatsAppSniffer. Algunos incluso me han pedido la aplicación, esperemos que para hacer el bien y concienciar a más gente, esperemos.
  • ¿Respeto? Bueno, ahora ya no me califican tan severamente cuando proclamo los peligros de WhatsApp... :)


Y, ¿cual es mi postura? Pues la siguiente:



Bueno, un artículo más que espero os sea de interés. Os animo a que dejéis vuestros comentarios y no solo solicitudes del WhatsAppSniffer.

¡Saludos!

martes, 1 de mayo de 2012

4. Securizando Android


"El mal es vulgar y siempre humano, comparte nuestra cama y come en nuestra mesa" - W. H. Auden


¡Muy Buenas!

En este artículo voy a tratar un tema nuevo en el blog, ofreciendo unas cuantas soluciones para fortalecer un terminal Android.

Como sabréis, la expansión del sistema operativo Android ha sido enorme durante sus pocos años de vida, de forma que hoy en día hay más de 250 millones de terminales activos que lo utilizan. Este crecimiento lo ha convertido en un blanco muy interesante para los creadores de malware que están haciendo importantes esfuerzos e inversiones en él.

Sin querer entrar en la controversia de si la arquitectura de Android es mejor o peor que la de IOS (que como todo tiene sus ventajas e inconvenientes), es verdad que su apertura y menor control por parte de Google favorece la aparición de aplicaciones malignas y riesgos que es necesario conocer por su público, sea o no de perfil técnico.




Así pues voy a dirigiros una serie de recomendaciones de forma algo original, presentándoos una aplicación que añade algo de seguridad al sistema junto con una explicación de la fortaleza adquirida. Es necesario comprender que seguramente podréis encontrar mejores aplicaciones que las que yo os redacto hoy, ya sea porque son posteriores a mi redacción, por que se ajusta mejor a vuestro uso o, seguramente, porque yo no las conocía. Aquí van:




Esta aplicación te permite no tener que poner tu código de desbloqueo en el terminal cada vez que vas a utilizarlo si estás conectado a una Wifi en la que confías. Su uso más habitual es asociarlo a la red inalámbrica de tu casa, porque entiendes que si tu móvil está en casa nadie va a cogerlo con malas intenciones (esto no es siempre cierto, al menos si están mis hermanos en casa...).

La idea de esta aplicación es que tu teléfono o tableta debe estar siempre protegida por un código, patrón o similar a no ser que confíes en el entorno en que se encuentra.



Google Play es el repositorio por defecto de aplicaciones de Android, el que proporciona Google. Este repositorio implementa un conjunto de medidas de seguridad para tratar de evitar las aplicaciones malintencionadas, la última medida anunciada es Bouncer.

Existen multitud de "markets" alternativos donde conseguir aplicaciones, algunas incluso piratas (esto lleva para un nuevo artículo, pero de momento lo dejo con el enlace proporcionado), pero que normalmente tienen menos control que el "oficial" y donde la probabilidad de encontrarse una sorpresa aumenta.

No obstante hay que tener en cuenta que incluso en Google Play se han colado unas cuantas aplicaciones con malware.

Por lo tanto la recomendación es utilizar el sentido común (sí, se que es el menos común de los sentidos) y buscar referencias sobre una aplicación antes de instalarla en nuestro smartphone, donde podemos tener mucha información suculenta.




Esta es una aplicación de las que cuando te acostumbras a tener te sientes desnudo sin ella. LBE Privacy Guard te gestiona para cada aplicación que tengas instalada en el terminal los permisos que se le conceden.

Según la arquitectura de Android hay un conjunto de permisos que puede solicitar cada aplicación según las tareas que desea realizar. Los listo a continuación (para mayor detalle podéis consultar en HTCSpain):
- Comunicación de red
- Almacenamiento
- Tu información personal
- Servicios por los que tienes que pagar
- Herramientas del sistema


De este modo al instalar cualquier aplicación se te preguntará si deseas concederle todos los permisos que solicita o solo los que tu consideres.

Esto se ve mejor con un ejemplo: la aplicación para Android de Facebook te solicita poder acceder a "servicios por los que tienes que pagar", concretamente al envío de SMS y a mí, sinceramente, ¡no me da la gana! Sin LBE tendríamos que elegir entre instalar la aplicación y confiar en que no envíe mensajes o no instalarla; con LBE podemos manejar estos permisos.

Esta aplicación se vuelve muy útil cuando instalamos algo de lo que no estamos completamente convencidos.

Así, la moraleja es utilizar un mecanismo de seguridad muy recomendable en todo sistema informático, el principio del mínimo privilegio, donde damos los permisos mínimos necesarios a cada aplicación para realizar las tareas que queremos permitirle.



Esta aplicación es similar a la anterior, aunque con menos potencia, ya que no se encarga de permitir o denegar ciertos privilegios sino que realiza un informe sobre las aplicaciones potencialmente dañinas debido a sus permisos, es decir, aplicaciones que solicitan funcionalidades más delicadas ya que pueden:
- "acceder a tus contactos"
- "acceder a tus cuentas"
- "acceder a tus mensajes"
- "pueden costarte dinero"
- "pueden aceder a tu historial de navegación
- "pueden compartir tu ubicación"

Su uso viene bien para conocer tu nivel de exposición.

Esta aplicación te permite conocer tu nivel de riesgo y así poder tomar las medidas oportunas, como desinstalar cierta aplicación o restringir sus permisos con LBE Privacy Guard, por ejemplo.


  • Lookout - Antivirus y localización
La utilización de antivirus en sistemas Android está envuelta en una gran controversia ya que mucha gente opina que son de escasa o nula efectividad. Sin embargo, en distintas ocasiones, Lookout ha reportado aplicaciones maliciosas a Google, por lo que su reputación es muy saludable.

Además Lookout tiene una funcionalidad adicional, la localización de tu terminal. Imaginemos que hemos perdido nuestro terminal ya sea porque alguien "se lo ha encontrado" o porque somos un poco despistados y nos lo hemos dejado en el polideportivo.  Podemos acceder a su página web con nuestras credenciales y solicitar la localización de nuestro teléfono, que se enviará a la cuenta de correo que hallamos proporcionado. Incluso podemos indicarle al teléfono que empiece a sonar como un loco :)

Con esta aplicación nos protegemos de (algunos) virus y podemos encontrar el teléfono perdido.


  • Plan B - Localización in extremis
De los mismos desarrolladores de la anterior aplicación, Plan B nos aporta la funcionalidad de la localización del teléfono si no tenemos ninguna aplicación de este tipo instalada. Es sencillo de entender con un ejemplo:
- acabamos de perder el teléfono
- recordamos ese artículo que tanto nos gustó de Una cita célebre más una guía de seguridad
- nos damos golpes en la pared por no haber instalado Lookout (o similar)
- entonces recordamos que podemos instalar Plan B en remoto ya que con Google Play podemos instalar aplicaciones desde el navegador
- instalamos la aplicación
- iniciamos el proceso de localización
- encontramos el teléfono y somos muy felices :)

Por lo tanto esta aplicación nos da la posibilidad de localizar el teléfono sin haber previsto esta situación.


Este tipo de aplicaciones pueden ser muy útiles para repeler oleadas de SPAM telefónico o "amigos" muy pesados. En ellas se puede configurar una lista de llamantes bloqueados o de llamantes permitidos, uno de los dos modos de funcionamiento, y distintas funcionalidades como colgar el teléfono, descolgar la llamada y dejarles escuchando una bonita canción, etc, así como tramos horarios y distintas funcionalidades.

No os he dejado ninguna aplicación concreta porque no he probado las de Google Play (el enlace proporcionado lleva a una búsqueda con distintas opciones a elegir), sino que utilizo la aplicación integrada en la ROM que utilizo, MIUI (si desconocéis el término ROM os recomiendo dar un vistazo por El Androide Libre, concretamente el tercer apartado: "¿Qué son las ROMs?).

Con esta aplicación conseguiremos proteger un poco nuestra salud psicológica.


Debido a que cada día tenemos más información en nuestro smartphone es muy recomendable realizar una copia de seguridad de nuestros datos. Esto se puede realizar con Titanium Backup que requiere ser root (de nuevo si desconoces este término puedes consultar El Androide Libre) o con muchas otras aplicaciones, si no se desea "rootear" el teléfono, disponibles en Google Play.


Esta aplicación no protege estrictamente a nuestro terminal Android sino la cuenta de correo de Google a la que está asociado, pero hay que tener en cuenta que nuestro Android depende profundamente de esta.

Si nos detenemos a pensar la importancia que el sistema de correo acaba teniendo en nuestra vida digital veremos lo crítico que es, ya que, por ejemplo, casi cualquier cuenta de un servicio web tiene asociada su recuperación a nuestra cuenta de correo. Google viendo la importancia que estaba cobrando la seguridad de nuestra cuenta decidió implementar la autenticación con dos factores en Gmail para evitar suplantaciones como las que se hicieron a algunos disidentes tibetanos (esto es una opinión propia). Para apoyar a este sistema creó la aplicación Google Authenticator.

Como la autenticación en dos pasos de Google está muy bien explicada por ellos os remito a la fuente oficial.


Para los que no conocéis LastPass os recomiendo encarecidamente que lo probéis. Se trata de un gestor de contraseñas que se instala en los principales navegadores como un plugin y sirve como contenedor cifrado de contraseñas, esto es: hoy en día manejamos una gran cantidad de contraseñas y su gestión se vuelve complicada de modo que acabamos con uno, o varios, de estos comportamientos:
- repetimos contraseñas entre servicios
- utilizamos contraseñas poco robustas
- utilizamos contraseñas que dependen del nombre del servicio (ej: contraseña4hotmail, contraseña4yahoo, etc.) y si alguien descubre alguna obtendrá fácilmente las otras
- las apuntamos en un papel o fichero no cifrado
- etc.

LastPass intenta solucionar esta problemática sirviendo de almacén de credenciales, así como generador de contraseñas robustas, etc. No me voy a extender más en esta explicación porque no es la finalidad de este artículo, podéis ver más información muy bien explicada (con videos y tutoriales) en su página web LastPass , incluso poniendo el idioma en español.

Así pues, existe una versión gratuita y una Premium (de coste 10€/año aprox.). En la versión de pago disponemos de plugins para algunos navegadores de Android como Dolphin Browser HD que nos posibilitará disfrutar de la potencia de LastPass en nuestro Smartphone.

NOTA: Si sois más paranoicos que yo podéis utilizar keePassDroid que no mantiene la base de datos en la nube sino en vuestras manos.


Esta aplicación, que de momento permanece en fase beta, pretende ser un sustituto al popular WhatsApp. Sus principales desventajas son que de momento solo está desarrollado para Android (aunque "están en ello"), que sigue en fase beta y, sobretodo, que WhatsApp está muy implantado. En cambio, aporta algunas novedades muy interesantes:
- Comunicaciones cifradas con AES de 256 bits
- Contenido eliminado de Spotbros a los 30 días (tendrías que ver todo lo que puede hacer WhatsApp con nuestras comunicaciones)
- Creación de grupos de tamaño ilimitado
- Para que una persona se convierta automáticamente en contacto, debe existir una coincidencia bidireccional de números de teléfono, es decir, uno debe tener en su agenda el teléfono del otro y viceversa, evitando el SPAM.
- Shouts: Mensaje a las personas que están a tu alrededor (1500m)
- Spots: Grupos de interés (también de tamaño ilimitado)

Puedes encontrar más información en la web Spotbros.

¿Y porqué desconfío tanto de WhatsApp si es tan popular? Pues por sus múltiples agujeros de seguridad, entre otros los que tan bien han descubierto en Security by Default:
- WhatsApp y su seguridad, ¿pwn3d?
- Lo que no te cuenta WhatsApp
Cómo registrar cualquier número de teléfono en WhatsApp
- WhatsApp al descubierto
Casi 10 millones de móviles españoles con WhatsApp instalado.
- ¿Arruinamos a WhatsApp?

Bueno, en este artículo os he bombardeado con mil aplicaciones y conceptos, si deseáis profundizar en alguno o rebatirme con alguna aplicación que consideréis mejor o que he omitido, os agradeceré vuestros apuntes en los comentarios.

¡Saludos!

domingo, 12 de febrero de 2012

3. Imagen personal en Internet: privacidad vs control


"Entre la idea y la realidad, entre los actos y el gesto, cae la sombra" - T. S. Eliot





¡Muy Buenas!

Este va a ser un artículo diferente, que no tiene nada que ver con mi idea original del blog, voy a probar con un post de opinión; sí, nada técnico y que puede llegar a una audiencia más amplia (gente no técnica) o menor (¿a alguien le interesa?).

El asunto sobre el que quiero teorizar es sobre la presencia en Internet como individuo, la imagen que se puede obtener de nosotros en la web. Los tiempos cambian y es muy conocido el dicho "adaptarse o morir" y voy a exponer la evolución de mi visión y las razones con que la sostengo:


  • Etapa anonimato
Trabajando en el mundo de la seguridad mi primera etapa fue la de búsqueda de la privacidad absoluta, convirtiéndome en un talibán de la privacidad:
- Nunca hacía búsquedas en Google estando autenticado en Gmail
- Tenía las IPs de Google Analytics en el fichero hosts redireccionadas a mi equipo (traducción: cortaba este flujo de información a Google)
- Nada de Facebook, Tuenti y similares
- Etc., etc., etc.


  • Etapa paranoia
Un buen día me cree la cuenta de Facebook con la única finalidad de evitar que alguien me suplantara y, al mismo tiempo, enterarme de lo que se podía decir de mí. Sinceramente, desconfiaba de mis amigos más cercanos; en todos los aspectos de la vida hacen que debas estar atento día y noche :p (hay antecedentes de un foro que tuve que cerrar por fuerza mayor).


  • Etapa apertura
Las redes sociales y webs 2.0 hace tiempo que están marcando un cambio social y tecnológico muy importante y como parte de este mundo y, sobretodo, profesional de la informática, no me podía quedar a un lado, así que empecé a abrirme a la posibilidad de formar parte de él y a intentar conocer estas tecnologías.

Recuerdo especialmente la charla que tuve con mi amigo y ex-jefe Javier Megias (@jmegias), muy activo en Twitter, sobre esta red social. Me explicaba que después de la primera fase de utilización como fuente de información de actualidad, Twitter te permitía crear una "marca" propia, definirte en la red, dar visibilidad de tu trabajo, perfil e inquietudes.


  • Etapa de autorretrato
Tras exponer brevemente las distintas etapas por las que he pasado, llega el momento de justificar el momento en que me encuentro.


Es necesario estar concienciado de que los datos que subimos a Internet dejan de ser nuestros, perdemos el control sobre ellos. Para ilustrarlo, os pongo un enlace a un vídeo que utilicé en una charla sobre privacidad en Internet hace ya algunos años, pero que sigue siendo muy válido:



El mensaje es claro "Piensa antes de publicar" (Think before you post).

Por lo tanto, sabiendo que al subir algo a Internet perdemos el control sobre él, lo que aconsejo es tener un gran control sobre cada palabra o imagen. Puede que te preguntes: "¿pero porqué no puedo ser natural y publicar lo que quiera?" Por un simple motivo, no tienes acotada la visibilidad de esa información, no puedes definir los límites del alcance de esas palabras. Veámoslo con un ejemplo:

¿Hablas igual delante de un guardia civil que de tus amigos? Entonces, ¿eres un hipócrita? No, simplemente hay que saber estar en cada situación o ambiente. ¿Pero que pasa si no puedes asegurarte de quién te está escuchando? Que deberás de moderarte, por si acaso. Pues en Internet haz lo mismo.


Hay distintos ejemplos de duras consecuencias a la publicación de información en la red, entre ellos están el de un despido por información publicada en Facebook (el individuo decía en el trabajo que estaba enfermo y a continuación publicaba fotografías de sus "vacaciones"); o que actualmente en el 80% de los procesos de divorcio que se tramitan en EEUU se usa información obtenida de redes sociales y chats privados; o uno bastante reciente sobre Twitter en el que quiero detenerme por su lectura más detallada.


Resulta que dos chicos británicos tenía planeado irse de vacaciones a EEUU, y se dedicaron a publicar tweets en los que anunciaban que se iban a pegar la gran fiesta con frases como "vamos a quemar Troya" o a "destruir américa", frases aparentemente inofensivas. Pues cual fue su sorpresa, que al aterrizar en EEUU fueron retenidos y más tarde enviados de vuelta a casa (noticia original en www.publico.es). Y es que el FBI ha reconocido públicamente que se dedica a monitorizar las redes sociales.

Después de intentar concienciar sobre la importancia del estricto control de la información publicada, os detallo algunas de las medidas que tomo yo actualmente:

  • Utilizo la red social Google+, pero tengo desactivado el famoso "instant upload" (que al hacer una fotografía desde el móvil se suba automáticamente a tu cuenta).
  • No me hago ni haré jamás fotos desnudo, ni con una cámara normal ni menos con un smartphone (¿conocéis el caso #scarlettjohanssoning?)
  • No utilizo Google Latitude, ¿para que estar siempre localizado? Me gusta mi intimidad.
  • Utilizo Fousquare pese a la pérdida de privacidad que supone ya que valoro más sus bondades
  • Tengo desactivado el geoposicionamiento de las fotos
  • Intento evitar dar muchas pistas de que estoy de vacaciones y por tanto mi casa está totalmente deshabitada y a merced de los amigos de lo ajeno. Hay webs dedicas exclusivamente a averiguar si cierto individuo puede estar de vacaciones pero creo que mejor no pongo el enlace
  • Quiero implementar una arcaica medida de protección en mi portátil que ya utiliza @chemaalonso, que consiste en tapar la webcam con un esparadrapo o similar, por si las moscas...


Recientemente he leído un artículo de @enriquedans en el que comentaba que, como sabemos, hoy en día todo departamento de recursos humanos que se precie realiza una búsqueda en Google de información sobre los aspirantes. pero hay algunos que incluso ya no te solicitan el CV, sino que lo que encuentren en la red les servirá como tu carta de presentación. El artículo es el siguiente: ¿Curriculum vitae? Are you from the past?


Así pues, después del rollo que he soltado (nota mental: escribir post más cortos), sobre si es conveniente esconderse o publicar a destajo, yo abogo por el control y la conclusión es sencilla: ¡píntate a ti mismo!



Bueno, este artículo se presta mucho a las opiniones, así que os animo a que dejéis la vuestra y veamos los distintos puntos de vista en los comentarios.

¡Saludos!

jueves, 12 de enero de 2012

2. Protección contra clickjacking


"Trabaja en impedir delitos para no necesitar castigos" - Confucio




¡Muy Buenas!

En este mi segundo artículo voy a hablar de las distintas medidas que se han utilizado para evitar la técnica de "clickjacking" o secuestro del clic, cuya definición en español enlazo de la Wikipedia o, incluso más desarrollada, en inglés.

He de reconocer que peleé contra estas medidas cuando trataba de saltar una restricción que, además, no era estrictamente un secuestro de clic, sino que intentaba cargar una popular página (de cuyo nombre no quiero acordarme) en un marco o "frame". Mi intención era poder interactuar con esta página desde un frame propio mediante Javascript.


Sin embargo me topé con varias contra-medidas que intentan evitar el comportamiento anterior para imposibilitar la técnica de secuestro del clic. Esto es así porque esta capacidad se puede forzar para conseguir controlar los clic de los usuarios.

Tratando de desarrollar el concepto del clickjacking he encontrado una explicación muy buena y que os recomiendo leer en un blog que desconocía, ya que queda muy claro: http://rooibo.wordpress.com/2008/10/05/clickjacking-a-fondo-y-con-ejemplos/

Así pues vamos a ver las defensas que se han venido utilizando para evitar este ataque.

Una posible solución consiste en utilizar complementos para el navegador (extensiones o plugins), que protejan contra este ataque. La primera opción es el popular NoScript para Firefox, que permite hacer una lista blanca de los dominios en los que confiamos para ejecutar su Javascript. Sin embargo esta opción no es válida para todos los públicos, por la complejidad que añade y, sobretodo, porque se traslada la responsabilidad al usuario final, que no tiene porqué saber nada de Clickjacking, Javascript o condensadores de fluzo.

Entendiendo por tanto que no es responsabilidad del usuario, se deben trasladar los controles al lado del servidor.

La opción más utilizada ha sido siempre la inserción de código Javascript propio en el código de la web, para dificultar lo máximo posible este ataque, medidas no estándares y ad-hoc desarrolladas con el mejor hacer de sus programadores más la ofuscación de este código. Estas protecciones eran objetivo de un constante intento por sortearlas, por ello en las páginas más populares hemos visto auténticas carreras de medidas, contra-medidas, contra-contra-medidas, etc.

En el siguiente enlace vemos como se desarrolla un código Javascript para evitar que una página web sea incluida en un marco "frame-buster" y al mismo tiempo se indica cómo es posible saltarse dicha protección "frame-buster-buster": StackOverflow Frame buster buster

Pues en este punto me hallaba yo, tratando de obtener mi anti-anti-protección_contra_frames, peleando con Javascript, cuando me di cuenta de que existía una nueva medida de protección que superaba este planteamiento del gato y el ratón.

Y esta medida es una sencilla idea que Microsoft implementó en IE8, una meta etiqueta que se inserta en la cabecera del código HTML que no quiere ser incluido en un marco, llamada X-FRAME-OPTION. De este modo cuando el navegador ve esta etiqueta entiende que la página no quiere ser incluida en un frame y no lo cargará. Esta medida pronto se convirtió en un estándar de hecho, implementada en la mayaría de los navegadores.

Por lo tanto la única manera de saltarse esta protección es modificando el navegador del usuario, lo que impide un ataque masivo.

Así que con esto se frustraba definitivamente mi idea ya que mi intención era añadir funcionalidad a esta página web, no engañar al usuario para que se instale un complemento que modifique el funcionamiento de su navegador, para este propósito es más ético y sencillo realizar un complemento que consiga directamente la funcionalidad que deseaba.

Bueno, esta no ha sido una entrada para enseñar alguna técnica de ataque o auditoría, sino todo lo contrario, como proteger una web fruto de no haber podido conseguir una "funcionalidad extra".

¡Saludos!


PD: Este artículo ha tardado en salir más de 3 meses, cuando mi intención era al menos una publicación mensual. Prometo ponerme las pilas y que el próximo salga mucho antes, ya tengo varias ideas sobre las que estoy trabajando.

lunes, 26 de septiembre de 2011

1. Obtención de contraseñas por fuerza bruta con iMacros!


"Para que pueda surgir lo posible, es preciso intentar una y otra vez lo imposible" - Hermann Hesse



¡Muy Buenas!

En este artículo, mi primero con contenido, voy a presentaros una alternativa a las herramientas habituales de fuerza bruta web, utilizadas para obtener credenciales en un portal.

La historia comienza un buen día, en el que me encontraba auditando una web con un formulario vulnerable a ataques de fuerza bruta (por aquello de no implementar tiempos de espera entre peticiones), y quería aportar una evidencia que lo demostrase ya que, como sabréis, no es lo mismo decir "el fuego quema" que "mira pon la mano aquí y verás que calentito", la segunda opción es más impactante.

Así pues, intenté utilizar una de las herramientas más conocidas para este propósito, como es Medusa / Hydra, y estaba volviéndome loco para intentar escribir la orden que consiguiera encajar con aquel formulario, pero no había manera. El problema era que los identificadores de los campos del formulario se generaban dinámicamente con JavaScript y tenían la simpática costumbre de ir cambiando, por lo que me era imposible referenciarlos (si alguien sabe hacerlo, por favor, que me lo explique).

Descartando la utilización de las herramientas habituales pensé en utilizar iMacros, que se presenta como una extensión para Firefox (y además forma parte de la excelente suite FireCatMantra), que te permite automatizar tareas en el navegador con mucha versatilidad. 

Conozco iMacros de hace unos años porque un amigo, el señor Adrián Capdevila, lo utilizaba para automatizar tareas repetivas y, posteriormente, algunas mentes inquietas exportamos esta idea para jugar con ventaja en juegos web.

El caso es que esta extensión te permite grabar una tarea y posteriormente repetirla hasta la saciedad y esto, en esencia, se parece bastante a un ataque de fuerza bruta, solo había que ver si era posible manejar datos variables para, como reza el título "intentar una y otra vez lo imposible" y que "pueda surigir lo posible".

Así que, como os imaginaréis al haber escrito el artículo, sí que lo pude conseguir y os voy a explicar cómo:

  • Entramos en nuestro formulario objetivo (podéis ver uno muy sencillo que creé para la ocasión, ya que no veía muy ético mostar un ejemplo real que se pudiera reutilizar fácilmente) y cargamos la extensión.





  • A continuación, en la pestaña "Rec" indicamos que el modo de clic debe ser X/Y, ya que el valor de la etiqueta HTML era lo que iba cambiando y no nos vale.



  • Posteriormente lo que hacemos es pulsar en "Record" y realizar los pasos necesarios para un intento de conexión, que son:
    • Clic en el campo usuario
    • Escribir un nombre de usuario (cualquiera)
    • Clic en el campo contraseña
    • Escribir una contraseña (cualquiera)
    • Clic sobre el botón autenticar
    • Clic en "Stop"
    • Guardamos el fichero creado con "Save"

NOTA: Es muy importante realizar estas acciones con clics del ratón y no mediante el tabulador o pulsando intro, ya que queremos que se registren las posiciones donde se ha pulsado.



  • El fichero resultado tendrá un aspecto similar a este:
VERSION BUILD=7400919 RECORDER=FX
TAB T=1
URL GOTO=http://10.0.0.5/index.html
CLICK X=324 Y=113
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/cgi-bin/validar.pl ATTR=NAME:user CONTENT=usuario
CLICK X=324 Y=113 CONTENT=usuario
CLICK X=324 Y=140
SET !ENCRYPTION NO
CONTENT=contrasenya
CLICK X=192 Y=164



  • Que se puede simplificar para no arrastrar basura como:
VERSION BUILD=7400919 RECORDER=FX
TAB T=1
URL GOTO=http://10.0.0.5/index.html
CLICK X=324 Y=113 CONTENT=usuario
SET !ENCRYPTION NO
CLICK X=324 Y=140 CONTENT={{!COL2}}
CLICK X=192 Y=164




  • Probamos su funcionamiento desde la pestaña "Play" y, si va bien, ya tenemos una base que modificar para que pueda funcionar de forma iterativa.

  • Ahora es necesario añadir un fichero como origen de datos con los usuarios y contraseñas. En este caso he utilizado un fichero con formato CSV porque iMacros los maneja muy bien y con un pequeño script en Perl he rellenado previamente unos cuantas líneas con el formato "usuario", "contraseña".
' Fichero con los usuarios y contraseñas a probar. Es un CSV de 2 columnas
SET !DATASOURCE /home/users/jluispellicer/diccionario.csv
SET !DATASOURCE_COLUMNS 2
 


  • A continuación hay que definir mediante el comando !LOOP la iteración sobre este fichero.
 ' Inciamos la recursion con el valor incial 1
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}



  • Y finalmente substituir los valores por las variables que contendrán los datos del fichero.
 ' Rellenamos el nombre
CLICK X=324 Y=113 CONTENT={{!COL1}}

' Rellenamos la contraseña
CLICK X=324 Y=140 CONTENT={{!COL2}}



  • Este es el código final con comentarios, que funciona en mi formulario.
VERSION BUILD=7400919 RECORDER=FX

' Cerrar todas las pestañas menos la actual
TAB CLOSEALLOTHERS
TAB T=1

' Fichero con los usuarios y contraseñas a probar. Es un CSV de 2 columnas
SET !DATASOURCE /home/users/jluispellicer/diccionario.csv
SET !DATASOURCE_COLUMNS 2

' Inciamos la recursion con el valor incial 1
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}

' Cargar la pagina
'URL GOTO=http://10.0.0.5/index.html

' Rellenamos el nombre
CLICK X=324 Y=113 CONTENT={{!COL1}}

' Rellenamos la contraseña
SET !ENCRYPTION NO
CLICK X=324 Y=140 CONTENT={{!COL2}}

' Click en el boton Autenticar
CLICK X=192 Y=164




  • Una vez totalmente preparado, lo lanzamos indicando un valor alto en "Repeat Macro Max" y pulsando sobre "Play (Loop)" tal y como muestra el siguiente vídeo, con la  obtención final de la contraseña:

Como veréis no es un método muy eficiente, ya que espera que se cargue totalmente la página, y tampoco he programado ninguna condición de parada, pero iMacros ofrece muchas más posibilidades, desde la interfaz web se puede escribir a fichero, utilizar código Javascript, etc., pero además se puede utilizar en distintos lenguajes de programación.

Bueno, espero que os haya gustado, si os surge alguna duda podéis preguntar en los comentarios y si os viene bien algún script o fichero utilizado me lo podéis pedir sin problemas. No he querido entrar en demasiado detalles, como por ejemplo, la API de la extensión, para no centrarme en ellos, sino más bien en la posibilidad de utilizar iMacros con este propósito.

¡Saludos!

Editado: Corregidos varios fallos gracias a Enric

jueves, 22 de septiembre de 2011

0. Apertura del Blog


"La imaginación es más importante que el conocimiento. El conocimiento es limitado, la imaginación rodea al mundo." - Albert Einstein



¡Muy Buenas!


Curioso título para un blog de seguridad, ¿verdad?

Hace ya algunos años que soy un usuario pasivo de Internet y sobretodo de los foros y blogs de seguridad que llenan mi RSS, en los que alguna vez he aportado algo pero básicamente he sido un gran consumidor, y hoy es el día en que he considerado dar el salto y empezar a aportar en mi propio blog.

La intención es bastante sencilla, utilizar una cita célebre para introducir un artículo sobre seguridad. Estos "artículos" consistirán más bien en guías que habitualmente redacto para mi mismo sobre alguna tarea que he tenido que realizar y decido anotar por si hay que repetirla en un futuro, ya que mi memoria no es un lugar que considere fiable.

No se el ritmo que voy a llevar con las publicaciones, espero que al menos una al mes y a ver si esto se anima con vuestra participación y no termina siendo una ampliación de mi repositorio de "howtos".
 
¡Saludos!