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!