<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>El autor:
Luis Delgado
http://ldelgado.es</description><title>Luis Delgado</title><generator>Tumblr (3.0; @ldelgadoj)</generator><link>http://ldelgadoj.tumblr.com/</link><item><title>XMPP, algo más que chat (2/2)</title><description>&lt;p&gt;&lt;p class="MsoNormal"&gt;&lt;span&gt;Siguiendo con lo comentado en &lt;a href="http://ldelgadoj.tumblr.com/post/21260691920/xmpp-algo-mas-que-chat-1-2"&gt;la entrega anterior&lt;/a&gt;, en esta segunda parte lo que voy a comentar es la &lt;strong&gt;parte práctica&lt;/strong&gt; relacionada con &lt;strong&gt;Tuenti &lt;/strong&gt;y, en mayor medida, &lt;strong&gt;Google Talk&lt;/strong&gt;.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;Con respecto a Tuenti, comenté que podíamos aprovechar que la operadora Tuenti Tu nos ofrecía navegación móvil gratuita por la red social (creo que ya no es así, necesitas hacer recargas todos los meses) para &lt;strong&gt;tunelizar nuestro tráfico a través de XMPP&lt;/strong&gt; y que, por tanto, éste tuviera como &amp;#8220;primer destino&amp;#8221; los servidores de Tuenti y, por tanto, que entrara dentro de las condiciones del servicio gratuito.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;Las aplicaciones para la prueba de concepto las desarrollé en Java por lo que el rendimiento es bastante pobre (la idea era probarlo en Android, y por comodidad desarrollé directamente todo en el mismo lenguaje), así que, del siguiente esquema, realmente lo que nos interesa es el retardo con los servidores de Tuenti (~130ms) que sería con lo que tendríamos que jugar para aumentar el rendimiento del servicio (p.e más de una petición por cada comunicación XMPP).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;a href="http://www.ldelgado.es/tumblr/xmpp_diagram.png"&gt;&lt;span&gt;&lt;span&gt;&lt;img border="0" height="141" src="http://www.ldelgado.es/tumblr/xmpp_diagram.png" width="434"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;br/&gt;Este concepto de tunelización no es nada nuevo, y son de obligada mención otros desarrollos del estilo como la tunelización a través de Facebook (&lt;/span&gt;&lt;a href="http://www.pentester.es/2012/02/covert-channels-over-social-networks.html"&gt;&lt;strong&gt;&lt;span&gt;Facecat&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;span&gt; de &lt;/span&gt;&lt;/strong&gt;&lt;a href="http://www.pentester.es/"&gt;&lt;strong&gt;&lt;span&gt;Jose Selvi&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span&gt;), &lt;/span&gt;&lt;a href="http://www.flu-project.com/msntunnel-tuneliza-conexiones-tcp-usando-msn-messenger.html"&gt;&lt;span&gt;MSN&lt;/span&gt;&lt;/a&gt;&lt;span&gt; o &lt;/span&gt;&lt;a href="https://code.google.com/p/skypeproxy/"&gt;&lt;span&gt;Skype&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, proxy a través de &lt;/span&gt;&lt;a href="http://www.antoniorinaldi.it/use-google-spreadsheet-as-a-proxy/"&gt;&lt;span&gt;Google Spreadsheet&lt;/span&gt;&lt;/a&gt;&lt;span&gt; o &lt;/span&gt;&lt;a href="http://www.ihteam.net/hacking-news/using-facebook-as-a-proxy/"&gt;&lt;span&gt;Facebook&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, etc.&lt;br/&gt;&lt;br/&gt; Visto esto, pasemos a la parte de Google Talk.&lt;!-- more --&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Antes de empezar, comentar que todo lo descrito a continuación se basa en la &lt;strong&gt;realización previa de una ataque man-in-the-middle&lt;/strong&gt; y que sólo se analizan las opciones/servicios ofrecidos de forma&lt;strong&gt; oficial&lt;/strong&gt; por Google.&lt;br/&gt;&lt;br/&gt; ¿Qué vectores de ataque podemos encontrar en Google Talk? Pues antes que nada, hay que ver qué formas de acceso al servicio nos pone a nuestra disposición Google. En este caso, nos encontramos la aplicación para dispositivos Android, el formato móvil (Talk Gadget) y la aplicación de escritorio.&lt;br/&gt;&lt;br/&gt; Lo primero que se nos puede ocurrir es ver si realmente todas ellas cifran el tráfico&amp;#8230; (por eso anteriormente no he nombrado la implementación de GTalk en GMail, cuya comunicación ya va cifrada). Analicemos cada una de las situaciones.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Dispositivos Android&lt;/strong&gt;&lt;br/&gt; En este caso podemos comprobar como cifran la comunicación desde el primer momento (ya entenderemos luego a qué me refiero), por lo que no nos interesa (y podemos estar &amp;#8216;algo más tranquilos&amp;#8217;).&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Formato móvil&lt;/strong&gt;&lt;br/&gt; En un primer momento el tráfico no se cifraba por lo que, al tratarse de un servicio de Google sin SSL por defecto, podíamos iniciar sesión en el servicio capturando la cookie no-ssl de la sesión del usuario&lt;span&gt; (explicado en el post anterior). Actualmente ya obliga a que el tráfico se cifre por lo que quedaría descartada (en ningún momento se pretende hacer ninguna suplantación de certificados, la clave es que sean técnicas totalmente transparentes).&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span&gt;Aplicación de escritorio&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;En este caso ocurre una situación curiosa porque sólamente la versión inglesa cifra el tráfico (&lt;strong&gt;y ya veremos que en XMPP es una medida insuficiente&lt;/strong&gt;) por lo que todos aquellos que se descarguen la versión en su idioma directamente tendrán todo el tráfico en texto claro. Por lo tanto, será en este caso en el que nos centraremos.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;Además, cabe destacar que hace unas semanas Google publicó &lt;/span&gt;&lt;/span&gt;&lt;a href="https://chrome.google.com/webstore/detail/nckgahadagoaajjgafhacjanaoiihapd"&gt;&lt;span&gt;una extensión para Chrome&lt;/span&gt;&lt;/a&gt;&lt;span&gt; que permite utilizar Google Talk sin tener abierto el navegador. En ese caso, junto con la implementación en Gmail comentada anteriormente, no se tiene en cuenta por ser un servicio BOSH a través de SSL.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;Vistos los tres vectores de ataque&amp;#8230; ¿a qué nos enfrentamos?&lt;/span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;strong&gt;&lt;span&gt;La cadena de conexión&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;[stream:features][starttls xmlns=&amp;#8221;urn:ietf:params:xml:ns:xmpp-tls&amp;#8221;][required][/required][/starttls][mechanisms xmlns=&amp;#8221;urn:ietf:params:xml:ns:xmpp-sasl&amp;#8221;][mechanism]X-GOOGLE-TOKEN[/mechanism][mechanism&amp;amp;gt;X-OAUTH2[/mechanism][/mechanisms][/stream:features]&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;lt;auth xmlns=&amp;#8221;urn:(&amp;#8230;):xmpp-sasl&amp;#8221; mechanism=&amp;#8221;X-GOOGLE-TOKEN&amp;#8221;&amp;amp;gt;(&amp;#8230;)&amp;amp;lt;/auth&amp;amp;gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Como podemos ver, &lt;strong&gt;la autenticación se hace a través de un token&lt;/strong&gt; obtenido a partir del servicio &lt;/span&gt;&lt;a href="https://developers.google.com/accounts/docs/AuthForInstalledApps"&gt;&lt;span&gt;ClientLogin&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. Podríamos pensar que se trata de un token de un sólo uso pero a parte de no cumplirse eso, además &lt;strong&gt;tiene un timeout bastante generoso&lt;/strong&gt;. Por lo tanto, si se accediese al proceso de autenticación obtendríamos un token válido de la sesión del usuario generado para el servicio &lt;strong&gt;mail&lt;/strong&gt;. Por suerte, actualmente ese tipo de token tiene restringido el acceso a &amp;#8216;sólamente&amp;#8217; el &lt;/span&gt;&lt;a href="https://developers.google.com/google-apps/gmail/gmail_inbox_feed"&gt;&lt;span&gt;feed de Gmail&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, por lo que sólo tendría permisos de lectura de los snippets/resúmenes de los correos no leídos (aunque veremos más adelante que no es así).&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Siguiendo con el tema de la conexión, podemos observar que es el servidor el que le indica al cliente qué mecanismos de autenticación tiene habilitados, pero&amp;#8230; &lt;strong&gt;¿podríamos forzar la autenticación en claro&lt;/strong&gt; (mechanism=&amp;#8217;PLAIN&amp;#8217;)? A pesar de que los servidores de Google nos rechazarían la autenticación por no soportar esa opción, podríamos obligar (debido al ataque MiTM para el cliente somos nosotros el servidor XMPP) que el cliente utilice ese mecanismo y, &lt;strong&gt;la aplicación de escritorio, en ningún momento rechaza esta situación&lt;/strong&gt; (y debería por tratarse del cliente oficial, que debería evitar que los credenciales se utilicen fuera de la autenticación por ClientLogin que sí que utiliza SSL).&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Continuando por este camino, si nos fijamos vemos que el servidor obliga al cliente a iniciar una comunicación cifrada (starttls required) pero, ¿es un requisito también del cliente?. Sabiendo que las versiones no-inglesas no cifran el tráfico ya sabemos que no pero aún así, &lt;strong&gt;si forzáramos al cliente a no cifrar la comunicación éste no lo rechazaría&lt;/strong&gt; y, por tanto, podemos volver a forzar al cliente a que se comunique bajo los requisitos de nuestra pasarela.&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Para estas acciones desarrollé una pequeña aplicación (cuyo enlace al ejecutable/código está al final del post) que simplemente abre dos sockets, uno para el cliente (a modo de servidor) y otro para Google (a modo de cliente). Aprovechándose de un ataque DNS-Spoofing (desarrollado junto al ataque MiTM) &lt;strong&gt;las conexiones del cliente al dominio talk.google.com irán a parar a nuestra pasarela&lt;/strong&gt; que enrutará a los servidores de Google previa manipulación en base a los filtros que hayamos utilizado. Viendo más en detalle los filtros quedaría:&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;u&gt;&lt;span&gt;Obtención de los credenciales del usuario de forma transparente&lt;/span&gt;&lt;/u&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Cuando el usuario inicia la conexión, en la respuesta del servidor &lt;strong&gt;se reemplaza el mecanismo X-GOOGLE-TOKEN por PLAIN&lt;/strong&gt; (o se eliminan todos y se añade éste último). De esta forma, en la respuesta del cliente obtendremos codificado en base64 su usuario y su contraseña. Con estos datos se genera un token a partir del servicio ClientLogin y se envía la petición correcta a Google estableciendo como mecanismo X-GOOGLE-TOKEN y en base64 el usuario y token generado (realmente el usuario lo obvia y autentica en base al token); a partir de aquí el resto del tráfico se enruta sin modificaciones. De esta manera, de forma totalmente transparente al usuario, éste se autentica pero &lt;strong&gt;nosotros obtenermos sus credenciales de Google&lt;/strong&gt;.&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;u&gt;&lt;span&gt;Evitar el cifrado de la comunicación&lt;/span&gt;&lt;/u&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;En este caso, cuando el usuario inicia la conexión, en la respuesta del servidor &lt;strong&gt;se elimina el tag starttls&lt;/strong&gt; forzando al usuario a no cifrar la comunicación. Puesto que Google lo permite en sus servidores (aunque lo mande como obligatorio, luego no lo exige) no es necesario que la comunicación de la pasarela con los servidores sea cifrada.&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Como podéis ver, con dos técnicas sin ciencia alguna (y apoyadas en el ataque MiTM, más que conocido) &lt;strong&gt;es posible obtener en claro toda la comunicación XMPP&lt;/strong&gt; aunque se fuerze a cifrarla y, lo que es más grave, &lt;strong&gt;conseguir las credenciales de la cuenta&lt;/strong&gt; (por una mala gestión, en el cliente, de los mecanismos permitidos). No nos olvidemos que, al tratarse siempre de clientes oficiales, éstos no tienen que tener configuraciones globales, sino las adaptadas al único servicio que soportan (y habrá casos que se puedan entender, pero estos dos deberían estar contemplados).&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Rizando algo más el rizo, en el post anterior comentábamos cómo XMPP es un protocolo muy &amp;#8216;extensible&amp;#8217;, permitiéndo implementar funcionalidades adicionales de una forma muy sencilla (normalmente a través de las stanzas IQ). Por este motivo, &lt;strong&gt;¿qué más cosas se pueden hacer con una sesión de Google Talk?&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Si acudimos a la página de desarrolladores de Google Talk podemos encontrarnos con &lt;strong&gt;extensiones de acceso al correo y de manejo de contactos&lt;/strong&gt; (entre otras).&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;En el caso del correo, antes comentábamos que el token generado para el servicio mail nos permite acceder únicamente al feed de gmail (correos no leidos). Si observamos, en este caso a través de XMPP también podemos acceder a los snippets/resúmenes (y con información más detallada del mensaje). Lo peligroso del tema es que en este caso &lt;strong&gt;se nos permite realizar búsquedas&lt;/strong&gt; (como las que realizamos desde Gmail) por lo que podemos utilizar parámetros como &amp;#8216;in:anywhere&amp;#8217; para obtener todos los correos, &amp;#8216;in:chats&amp;#8217; para acceder a conversaciones guardadas, y todo lo que se nos ocurra.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal"&gt;&lt;span&gt; &lt;/span&gt;&lt;a href="http://www.ldelgado.es/tumblr/xmpp_mail.png"&gt;&lt;span&gt;&lt;span&gt;&lt;img border="0" height="236" src="http://www.ldelgado.es/tumblr/xmpp_mail.png" width="446"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt; En el caso de los contactos, puesto que el roster del chat está ligado con este servicio, &lt;strong&gt;podemos acceder a todos los contactos de la cuenta&lt;/strong&gt; (estén o no en nuestra agenda de Gtalk) y, además, si forzamos la subscripción con alguna cuenta lo que estaremos haciendo paralelamente es añadir esa cuenta a los contactos del usuario (p.e podría resultar útil para futuro spam, pudiéndose utilizar diferentes técnicas para &amp;#8216;ocultar&amp;#8217; el remitente). De esta forma, en este caso no nos limitamos a una situación &amp;#8216;read only&amp;#8217; como con los correos sino que &lt;strong&gt;podemos incluso gestionar los contactos de la cuenta&lt;/strong&gt; (añadir registros, bloquear usuarios, etc).&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal"&gt;&lt;span&gt; &lt;/span&gt;&lt;a href="http://www.ldelgado.es/tumblr/xmpp_roster.png"&gt;&lt;span&gt;&lt;span&gt;&lt;img border="0" height="235" src="http://www.ldelgado.es/tumblr/xmpp_roster.png" width="417"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;br/&gt; En este video podéis ver la demo con todo lo explicado anteriormente:&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;a href="https://www.youtube.com/watch?v=Fj5kbwqXsqY"&gt;&lt;a href="https://www.youtube.com/watch?v=Fj5kbwqXsqY"&gt;https://www.youtube.com/watch?v=Fj5kbwqXsqY&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Visto ya todos los &amp;#8216;descuidos&amp;#8217; que nos podemos encontrar en la aplicación oficial de Google Talk para escritorio, si vamos un paso más allá podemos comprobar como no cifra el tráfico ni para comprobar las actualizaciones por lo que, a través de otro DNS Spoofing podríamos manipular la respuesta a esa consulta. Si bien parece que firma las peticiones, no tengo del todo claro si lo que firma es el ejecutable de la nueva versión (y en caso contrario podríamos forzar la instalación de malware en el equipo) o la respuesta en sí (que en caso contrario podríamos manipular los comandos que se ejecutan con la instalación de la actualización).&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal"&gt;&lt;span&gt; &lt;/span&gt;&lt;a href="http://www.ldelgado.es/tumblr/xmpp_update.png"&gt;&lt;span&gt;&lt;span&gt;&lt;img border="0" height="313" src="http://www.ldelgado.es/tumblr/xmpp_update.png" width="445"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Y esto es todo. Espero que haya resultado cuanto menos curioso (que era el objetivo) y que nos quedemos con la idea de que es importante securizar hasta el servicio más pequeño (como en este caso el chat) porque sino, a través de él, es posible comprometer servicios críticos como es el caso de Gmail o Google Contacts (o en el caso del robo de credenciales, la cuenta completa de Google).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Directorio de la aplicación (la descarga aún no está habilitada):&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ldelgado.es/?xmpploit"&gt;&lt;a href="http://www.ldelgado.es/?xmpploit"&gt;http://www.ldelgado.es/?xmpploit&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Podéis acceder a las slides de la presentación (en PDF) &lt;/span&gt;&lt;a href="http://www.slideshare.net/rootedcon/luis-delgado-xmpp-algo-ms-que-chat-rootedcon-2012"&gt;&lt;span&gt;aquí&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/23922700044</link><guid>http://ldelgadoj.tumblr.com/post/23922700044</guid><pubDate>Mon, 28 May 2012 12:27:00 +0200</pubDate></item><item><title>XMPP, algo más que chat (1/2)</title><description>&lt;p&gt;&lt;div&gt;Hace ya más de un mes desde la &lt;a href="http://www.rootedcon.es/"&gt;RootedCON 2012&lt;/a&gt; y aún no había publicado un resumen de lo que comenté en la charla y la aplicación que utilicé para hacer las pruebas de concepto con Google Talk, asi que ya era hora&amp;#8230;&lt;br/&gt;&lt;br/&gt;Como dije en la charla, no voy a centrarme en explicar el protocolo &lt;a href="https://en.wikipedia.org/wiki/XMPP"&gt;XMPP&lt;/a&gt;, simplemente decir que tiene estructura XML, basado en conexiones TCP de larga duración (en el caso de HTTP sería &lt;a href="https://en.wikipedia.org/wiki/BOSH"&gt;BOSH&lt;/a&gt;, utilizando un elemento intermedio denominado &amp;#8216;Connection Manager&amp;#8217; que hace la traducción de la comunicación HTTP a XMPP) y con intercambio asíncrono de información.&lt;br/&gt;&lt;br/&gt;Los mensajes XML que se intercambian entre entidades se denominan stanzas y existen tres tipos, siendo a grandes rasgos:&lt;br/&gt;&lt;br/&gt;Message: enviar mensajes de una entidad a otra, pudiéndose organizar en &amp;#8216;threads&amp;#8217;&lt;br/&gt;Presence: es la forma básica de broadcast entre una entidad y todos sus subscriptores (anunciar la disponibilidad, permitir que un usuario pueda contactar con otro, etc)&lt;br/&gt;IQ: permite intercambiar información entre entidades (ya sean clientes o servidores). Aquí cabe destacar la presencia de las extensiones.&lt;br/&gt;&lt;br/&gt;Si alguno está interesado en profundizar en el protocolo, os recomiendo el libro &lt;a href="http://www.blogger.com/www.amazon.com/XMPP-Definitive-Real-Time-Applications-Technologies/dp/059652126X"&gt;XMPP: The definitive guide&lt;/a&gt;, completo e interesante.&lt;br/&gt;&lt;!-- more --&gt;&lt;br/&gt;En este primer post me voy a centrar en un breve resumen de la parte correspondiente a la seguridad en el protocolo. En el próximo hablaré de los casos prácticos&lt;br/&gt;&lt;br/&gt;Antes de nada, comentar que la seguridad se ha tomado como un pilar importante desde la propia definición del protocolo (al igual que la privacidad). Además, cabe destacar que, desde 1999, se han reportado pocas vulnerabilidades y ninguna de ellas ha sido crítica (es decir, a nivel de código).&lt;br/&gt;&lt;br/&gt;¿A qué nos enfrentamos?&lt;br/&gt;&lt;br/&gt;Básicamente nos podríamos encontrar rogue servers, address spoofing, ataques de denegación de servicio, spam y phising, fuga de información, almacenamiento indebido de logs, fallos a nivel de código&amp;#8230;&lt;br/&gt;&lt;br/&gt;Entrando algo más en detalle en alguno de los vectores de ataque comentados anteriormente:&lt;br/&gt;&lt;br/&gt;1. Comunicación cifrada (TLS-SSL):&lt;br/&gt;&lt;br/&gt;Hay dos tipos de comunicaciones, las que interviene cliente y servidor y aquellas en las que la comunicación es entre los servidores de los dominios de las entidades que se comunican (la conexión es directa, el tráfico no pasa por servidores intermedios). A pesar de ésto, nadie nos garantiza que no se guarden logs de las conversaciones (aunque se pueda especificar en las preferencias de cada usuario y que los clientes deberían tener en cuenta) por lo que es siempre recomendable optar por cifrado &amp;#8216;end-to-end&amp;#8217; (p.e PGP).&lt;br/&gt;&lt;br/&gt;2. Autenticación e identidad&lt;br/&gt;&lt;br/&gt;Una de las ventajas en cuanto a la lucha contra el address spoofing es que la etiqueta &amp;#8216;from&amp;#8217; no se tiene en cuenta a la hora de manejar las stanzas (es el servidor el que la asigna, por lo que en el caso de que se haya utilizado una ésta es sobreescrita con el identificador correspondiente a la sesión activa).&lt;br/&gt;&lt;br/&gt;Con respecto a la comunicación entre servidores, ya hemos dicho antes que ésta se realiza sin saltos intermedios (p.e si se comunican los usuarios luis@server1 y manuel@server2, la comunicación se establece directamente entre server1 y server2) pero&amp;#8230; ¿es posible suplantar la identidad en esa comunicación?. Dejando de lado las posibilidades de un ataque en una misma red, los servidores destino comprueban la identidad a través de un sistema/protocolo denominado &amp;#8216;&lt;a href="http://xmpp.org/extensions/xep-0185.html"&gt;dial-back&lt;/a&gt;&amp;#8217; que, a grandes rasgos, consiste en un intercambio de tokens que se comprueba con el servidor raiz de ese dominio (resolución DNS) y, en función de que éste de el visto bueno con respecto al token entregado por el servidor emisor del mensaje, se valida la comunicación o no. De esta forma, si el token entregado a la hora de establecer la comunicación no es validado por el servidor raiz del dominio, el servidor destino rechaza la conexión.&lt;br/&gt;&lt;br/&gt;Además, no hay que descuidar el tema de la codificación. Puesto que XMPP trabaja con el set de caracteres unicode, recae en el cliente la gestión &amp;#8216;segura&amp;#8217; de estos para evitar casos como paypal.com &amp;amp;lt;-&amp;amp;gt; paypa1.com o el caso de la a &amp;amp;lt;-&amp;amp;gt; a(cirílica).&lt;br/&gt;&lt;br/&gt;3. Spam&lt;br/&gt;&lt;br/&gt;Debido al sistema de subscripciones que incorpora XMPP ya no es posible, como ocurre con el correo electrónico, mandar mensajes a entidades arbitrarias puesto que primero ésta tiene que autorizarnos esa comunicación (presence - subscripción). Por este motivo, el spam en XMPP no es rentable y hace que no se explote como en otros servicios.&lt;br/&gt;&lt;br/&gt;Además, incorpora un límite de envíos en un tiempo determinado (si bien es recomendable acompañarlo con sistemas de tipo Captcha para evitar la creación automática de cuentas).&lt;br/&gt;&lt;br/&gt;Al final, vistas algunas de las medidas de seguridad que implementa el protocolo podemos intuir que las vulnerabilidades se encontrarán probablemente en la implementación que hagan de él (autenticación, cifrado&amp;#8230;) y los clientes que lo utilicen (gestión de las subscripciones, ataques en redes locales&amp;#8230;).&lt;br/&gt;&lt;br/&gt;Antes de terminar, voy a aprovechar para comentar un tema que nos servirá para entender uno de los vectores de ataque del próximo post.&lt;br/&gt;&lt;br/&gt;Como sabréis, Google nos permite autenticarnos en todos sus servicios con sólo introducir una vez las credenciales a través Google Accounts. Por comodidad resulta un comportamiento muy interesante pero, por el mero hecho de sólo introducir las credenciales una vez, estamos almacenando en nuestro explorador una/s cookie/s que funcionan a modo de llave maestra en todos los servicios ofrecidos por Google (que son muchos y algunos bastante críticos).&lt;br/&gt;&lt;br/&gt;Si nos fijamos más en detalle en esas &amp;#8216;llaves maestras&amp;#8217; podemos ver, a muy grandes rasgos que se tratan de dos conjuntos de cookies, las que denominaremos No-SSL y SSL. El porqué de estos dos grupos tiene su explicación en que, en Google, tenemos dos tipos de servicios, los que ofrecen navegación utilizando SSL por defecto y los que son a elección del usuario (y por tanto, permiten ambas situaciones). Por lo tanto, es fácil intuir que la llave maestra No-SSL se utilizará para acceder a los servicios que no obligan a utilizar SSL y la llave SSL que permite acceder a todos los servicios (con SSL por defecto o sin él).&lt;br/&gt;&lt;br/&gt;Por lo tanto, aquí nos encontramos con un problema puesto que las cookies No-SSL se intercambian en conexiones no cifradas (accesibles de forma trivial a través de un ataque MiTM) y que el tráfico hacia el dominio &amp;#8216;google.com&amp;#8217; es excesivamente común (aunque no sea directo), por lo que, sin navegar expresamente por servicios de Google, estamos &amp;#8216;compartiendo&amp;#8217; esas cookies con la red de forma bastante habitual.&lt;br/&gt;&lt;br/&gt;Ahora bien, ¿qué servicios no utilizan SSL por defecto?. Si acudimos al listado proporcionado por Google en su sección de productos veremos que son la minoría (p.e Picasapero que, curiosamente, hay hasta servicios delicados como Youtube o Blogger (y ya podemos imaginar cuanto daño puede hacer a una persona con presencia en la red un ataque a esos servicios) y otros como Picasa, Google Code o Google Groups.&lt;br/&gt;&lt;br/&gt;Para evitar, en cierta medida, esta situación, es recomendable utilizar extensiones en el navegador que fuercen el uso de SSL, como puede ser &lt;a href="https://www.eff.org/https-everywhere"&gt;HTTPS Everywhere&lt;/a&gt; (Firefox y Chrome).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Vista esta pequeña introducción, en la próxima entrega comentaré el caso de Tuenti y la tunelización de tráfico a través de XMPP y el caso de Google Talk y los ataques que se pueden hacer a los usuarios de su cliente de escritorio (en redes locales, previa realización de un man-in-the-middle y dns spoofing).&lt;/div&gt;&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/21260691920</link><guid>http://ldelgadoj.tumblr.com/post/21260691920</guid><pubDate>Tue, 17 Apr 2012 10:19:07 +0200</pubDate></item><item><title>Entrevista al equipo de Backend de Tuenti</title><description>&lt;p&gt;Mucho se ha hablado en &lt;a href="http://www.securitybydefault.com"&gt;Security by Default&lt;/a&gt; sobre redes sociales (en mi caso, centrándome siempre en Tuenti) y siempre hemos tenido solamente una visión, la nuestra. Se me ocurrió hace unos meses que podía ser interesante organizar una entrevista con el equipo de Backend de Tuenti (evitando a departamentos de comunicación) y que nos contaran, desde la perspectiva de la seguridad, el funcionamiento interno de la red social. En un primer momento iba a ser una entrevista en video pero voy a estar unos meses ‘fuera de combate’ asi que&lt;br/&gt;hemos optado por la opción clásica.&lt;/p&gt;
&lt;p&gt;Agradecer a Guillermo Pérez (&lt;a href="http://www.twitter.com/bisho"&gt;@bisho&lt;/a&gt;), responsable de Backend y Seguridad, todas las facilidades que ha puesto para poder llevar a buen puerto la entrevista. Todos los que hayáis reportado alguna vez una vulnerabilidad habréis tratado con él, y a los que no, deciros que el trato recibido siempre ha sido ejemplar (y eso que no siempre hemos coincidido y hemos tenido algún que otro roce… :D). Agradezco también a &lt;a href="http://www.elladodelmal.com/"&gt;Chema Alonso&lt;/a&gt; (&lt;a href="http://www.twitter.com/chemaalonso"&gt;@chemaalonso&lt;/a&gt;) por las preguntas que me propuso.&lt;/p&gt;
&lt;p&gt;La entrevista la estructuré en cinco partes, seguridad del lado del equipo de desarrollo, del de la empresa, acerca del reporte de vulnerabilidades, seguridad/privacidad y finalmente un par de ‘offtopic’.&lt;/p&gt;
&lt;p&gt;Podéis acceder a ella en &lt;a href="http://www.securitybydefault.com/2012/02/entrevista-al-equipo-de-backend-de.html"&gt;el post de SbD&lt;/a&gt; o en &lt;a href="http://www.ldelgado.es/otros/entrevistas/tuenti_backend.pdf"&gt;el PDF&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/20231162576</link><guid>http://ldelgadoj.tumblr.com/post/20231162576</guid><pubDate>Sat, 31 Mar 2012 18:41:00 +0200</pubDate></item><item><title>XSRF en Gmail</title><description>&lt;p&gt;Hace unos meses reporté a Google un XSRF en su servicio de correo (Gmail). Creo que ya comenté en su día por donde iban los tiros pero no me centré en los detalles del mismo.&lt;/p&gt;
&lt;p&gt;¡Comencemos!&lt;/p&gt;
&lt;p&gt;Google ofrece un servicio feed en formato atom para acceder a los correos sin leer de nuestra bandeja de entrada y etiquetas. La dirección en cuestión es:&lt;br/&gt;&lt;em&gt;&lt;a href="https://mail.google.com/mail/feed/atom/"&gt;https://mail.google.com/mail/feed/atom/&lt;/a&gt;(etiqueta)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cual fue mi sorpresa cuando me di cuenta de que no se validaba correctamente la etiqueta a la que se intentaba acceder, pudiendo &amp;#8220;crear&amp;#8221; feeds de etiquetas inexistentes y, por tanto, crear dichas etiquetas en la cuenta del usuario.&lt;/p&gt;
&lt;p&gt;Por lo tanto, bastaba con acceder a un link con una etiqueta con nombre arbitrario para poderla crear en la cuenta del usuario que lo ejecutara.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Un ejemplo:&lt;br/&gt;&lt;a href="https://mail.google.com/mail/feed/atom/publicidad"&gt;https://mail.google.com/mail/feed/atom/publicidad&lt;/a&gt;&lt;br/&gt; &amp;lt;img src=&amp;#8221;https://mail.google.com/mail/feed/atom/publicidad&amp;#8221; /&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;br/&gt;Algunos vectores de ataque podrían ser:&lt;/p&gt;
&lt;p&gt;1. Publicidad: como las etiquetas que se crean por defecto se muestran (o mostraban en la interfaz antigua) en el panel lateral, podías inyectar publicidad.&lt;/p&gt;
&lt;p&gt;2. &amp;#8220;Broma pesada&amp;#8221;: para eliminar las etiquetas es necesario hacerlo de forma manual (de una en una) por lo que se podía crear un script que generara miles de etiquetas en la cuenta del usuario.&lt;/p&gt;
&lt;p&gt;A la hora de notificarlo al security team de Google (podéis acceder al formulario a través de &lt;a href="http://goo.gl/vulnz"&gt;goo.gl/vulnz&lt;/a&gt;) tuve que intercambiar con ellos varios correos asi que, finalmente, hice un &amp;#8216;screencast&amp;#8217; con todo el procedimiento:&lt;/p&gt;
&lt;p&gt;Video:&lt;br/&gt;&lt;a href="https://www.youtube.com/watch?v=2PqEKDaMwpM"&gt;&lt;a href="https://www.youtube.com/watch?v=2PqEKDaMwpM"&gt;https://www.youtube.com/watch?v=2PqEKDaMwpM&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;¡Y hasta aquí todo!&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/15938681348</link><guid>http://ldelgadoj.tumblr.com/post/15938681348</guid><pubDate>Mon, 16 Jan 2012 09:13:31 +0100</pubDate></item><item><title>XSS en Google Code</title><description>&lt;p&gt;Accediendo a la página de &lt;a href="https://code.google.com/p/dvwa/"&gt;Damn Vulnerable Web App (DVWA) de Google Code&lt;/a&gt; me ha saltado el típico MessageBox que se utiliza cuando se descubre un XSS [alert(&amp;#8216;XSS&amp;#8217;)]. Sorprendido, me he puesto a mirar el código para comprobar dónde estaba la vulnerabilidad.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ldelgado.es/tumblr/googlecode_xss.png"&gt;&lt;img src="http://www.ldelgado.es/tumblr/googlecode_xss.png" height="123" width="437"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si nos fijamos, vemos que en la descripción del proyecto se carga (sin contenido) un gadget. La inyección se realiza a través de un iframe que apunta hacia la página Google User Content que se encarga de mostrar el gadget a través de su fichero XML con su especificación.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-opensocial.googleusercontent.com/gadgets/ifr?url=http://www.ethicalhack3r.co.uk/spam/test1.xml"&gt;&lt;a href="http://code-opensocial.googleusercontent.com/gadgets/ifr?url=http://www.ethicalhack3r.co.uk/spam/test1.xml"&gt;http://code-opensocial.googleusercontent.com/gadgets/ifr?url=http://www.ethicalhack3r.co.uk/spam/test1.xml&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;Si accedemos al fichero XML vinculado podemos ver lo siguiente:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;Module&amp;gt;&lt;br/&gt;     &amp;lt;ModulePrefs author="Project Hosting Team" (...)&amp;gt;&lt;br/&gt;          &amp;lt;Require feature="flash"/&amp;gt;&lt;br/&gt;     &amp;lt;/ModulePrefs&amp;gt;&lt;br/&gt;     &amp;lt;UserPref datatype="string" name="video"/&amp;gt;&lt;br/&gt;     &amp;lt;Content type="html"&amp;gt;&lt;br/&gt;          &amp;lt;script&amp;gt;alert('XSS');&amp;lt;/script&amp;gt;&lt;br/&gt;     &amp;lt;/Content&amp;gt;&lt;br/&gt;&amp;lt;/Module&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Por lo tanto, basta con crear un fichero de especificación con un contenido cualquiera e introducirlo en la descripción de un proyecto de Google Code (o donde se permita incluir Gadgets de Google).&lt;/p&gt;
&lt;p&gt;Un saludo!&lt;/p&gt;
&lt;p&gt;REF: &lt;a href="https://www.google.com/intl/es/apis/gadgets/gs.html"&gt;API de Google Gadgets&lt;/a&gt;&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/10312317181</link><guid>http://ldelgadoj.tumblr.com/post/10312317181</guid><pubDate>Sat, 17 Sep 2011 14:22:00 +0200</pubDate></item><item><title>Spameando a la SGAE que es gerundio</title><description>&lt;p&gt;Antes de nada, ¡¿por qué es obligatorio introducir las &amp;#8216;www&amp;#8217; para acceder a su web?!&amp;#8230; Como odio las páginas que me obligan a escribirlo y no basta solo con el dominio&amp;#8230;&lt;/p&gt;
&lt;p&gt;Bueno, si nos metemos en &lt;a href="http://www.sgae.es"&gt;la página de la SGAE&lt;/a&gt; (no se qué motivo podríamos tener, seguro que ninguno bueno) vemos que en la cabecera tenemos un enlace llamado &lt;strong&gt;SGAE Responde&lt;/strong&gt; que nos permite acceder a un &lt;a href="http://www.sgae.es/infoweb/"&gt;formulario de contacto&lt;/a&gt;. Ayer no funcionaba (¿lo habrían deshabilitado cuando detuvieron a Teddy?) pero hoy si.&lt;/p&gt;
&lt;p&gt;Si nos fijamos, podemos ver que utilizan el &lt;strong&gt;plugin CForms&lt;/strong&gt; para Wordpress con el captcha habilitado para evitar spameos indiscriminados (salvo que tengamos mucho tiempo libre :P). El captcha en sí es bastante complejo, pues permite variar fondos, la tipografía, el color, la inclinación, etc. Aun así, he descubierto que &lt;strong&gt;es bastante sencillo saltarselo&lt;/strong&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Bueno, antes de seguir simplemente decir lo de siempre&amp;#8230;&lt;strong&gt; ¡no confies en el usuario!, ¡la configuración del lado del servidor!, ¡valida todo lo que te llegue del cliente! &lt;/strong&gt;y un largo etcétera&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;¿Donde está el fallo? Bien, si nos fijamos, el captcha no nos lo da el propio formulario con un token para su verificación (y que no pudiese repetirse claro) sino que nos da la siguiente URL a la imagen del mismo:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="http://www.sgae.es/wp-content/plugins/cforms/cforms-captcha.php?ts=&amp;amp;c1=4&amp;amp;c2=5&amp;amp;ac=abcdefhijkmnrstuvwxyz23456789&amp;amp;i=i&amp;amp;w=115&amp;amp;h=33&amp;amp;c=FFBB00&amp;amp;l=DBDBDB&amp;amp;f=font4.ttf&amp;amp;a1=-15&amp;amp;a2=15&amp;amp;f1=17&amp;amp;f2=19&amp;amp;b=1.gif"&gt;http://www.sgae.es/wp-content/plugins/cforms/cforms-captcha.php?ts=&amp;amp;c1=4&amp;amp;c2=5&amp;amp;ac=abcdefhijkmnrstuvwxyz23456789&amp;amp;i=i&amp;amp;w=115&amp;amp;h=33&amp;amp;c=FFBB00&amp;amp;l=DBDBDB&amp;amp;f=font4.ttf&amp;amp;a1=-15&amp;amp;a2=15&amp;amp;f1=17&amp;amp;f2=19&amp;amp;b=1.gif&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Como podéis observar el captcha nos lo entrega &lt;u&gt;cforms-captcha.php&lt;/u&gt;&lt;strong&gt; cuya configuración se encuentra en la propia petición&lt;/strong&gt;. Es lógico pensar que al hacer una petición al captcha asocia el que te devuelve con tu sesión y al hacer submit al formulario hace la verificación. Por lo tanto, cambiemos la url del captcha por:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="http://www.sgae.es/wp-content/plugins/cforms/cforms-captcha.php?c1=1&amp;amp;c2=1&amp;amp;ac=0"&gt;http://www.sgae.es/wp-content/plugins/cforms/cforms-captcha.php?c1=1&amp;amp;c2=1&amp;amp;ac=0&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En este caso&lt;strong&gt; le estamos obligando&lt;/strong&gt; a cforms-captcha.php a que nos genere un captcha &lt;strong&gt;de un único valor&lt;/strong&gt; (parámetros c1 y c2) y que además éste &lt;strong&gt;solo tome el caracter 0 para su generación &lt;/strong&gt;(parámetro ac).&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;img src="http://img828.imageshack.us/img828/3741/tumblrvf.png" align="middle" height="70" width="300"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;Por lo tanto, para automatizar el envio de mensajes &amp;#8216;de consulta&amp;#8217; a la SGAE bastaría con hacer una petición al formulario, otra al captcha (con la misma cookie) y al enviar el formulario poner como valor del captcha &amp;#8216;0&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Ya para terminar, decir que el fallo es del plugin, no de la implementación de la SGAE del mismo, pero no deja de ser curioso. Utilizan la versión 11.7.1 del plugin (como podemos ver &lt;a href="http://www.sgae.es/wp-content/plugins/cforms/____HISTORY.txt"&gt;aquí&lt;/a&gt;) aunque &lt;a href="http://www.deliciousdays.com/cforms-plugin/"&gt;la última versión&lt;/a&gt; (la 11.9) parece también vulnerable (he mirado el código y acepta la configuración como parámetro).&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/7259035172</link><guid>http://ldelgadoj.tumblr.com/post/7259035172</guid><pubDate>Tue, 05 Jul 2011 11:28:02 +0200</pubDate></item><item><title>Curioso XSS en Peliculas(Series) Yonkis</title><description>&lt;p&gt;Hoy estaba descargandome un capítulo de Fringe cuando me he fijado en la url de la página &amp;#8220;puente&amp;#8221; de Peliculas/Series Yonkis cuando descargas desde Megaupload.&lt;/p&gt;
&lt;p&gt;La url del enlace tiene el siguiente formato:&lt;br/&gt;&lt;em&gt;&lt;a href="http://www.seriesyonkis.com/lista-series/descargar/n/0/?id=%C7%C7%B7%CD%B5%B2%A6%A8"&gt;http://www.seriesyonkis.com/lista-series/descargar/n/0/?id=%C7%C7%B7%CD%B5%B2%A6%A8&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si modificamos el parámetro &amp;#8216;id&amp;#8217; (p.e duplicando %A8) veremos que es algún tipo de codificación/XOR que transforma el contenido del parámetro al enlace de Megaupload.&lt;/p&gt;
&lt;p&gt;Buscando por internet no encontré qué codificación es (p.e una pareja sería %C7=9) y pudiendome la pereza programé un script que obtuviera todas las parejas. Una vez que tenía &lt;a href="http://img51.imageshack.us/img51/1658/pairs.png"&gt;todas las que me interesaban&lt;/a&gt; ya podía transformar una cadena cualquiera a esa &amp;#8220;codificación&amp;#8221;.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Un ejemplo sencillo sería:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#8216;&amp;gt;&amp;lt;script&amp;gt;alert(&amp;#8216;XSS!&amp;#8217;);&amp;lt;/script&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;%D9%C0%C2%8D%9D%8C%97%8E%8A%C0%9F%92%9B%8C%8A%D6%D9%A6%AD%AD%DF%D9%D7%C5%C2%D1%8D%9D%8C%97%8E%8A%C0&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Pero como se ejecutaba varias veces y quedaba un poco feo, lo modifiqué quedando &lt;a href="http://goo.gl/GDMah"&gt;este&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://img21.imageshack.us/img21/1166/xsst.png"&gt;&lt;img src="http://media.tumblr.com/tumblr_ln3oy8Ljeb1qf5isy.png"/&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/6728607506</link><guid>http://ldelgadoj.tumblr.com/post/6728607506</guid><pubDate>Mon, 20 Jun 2011 20:13:00 +0200</pubDate></item><item><title>WIFI Auditor 0.4 - ¡Compatible con XP!</title><description>&lt;p&gt;Ya está publicada la versión &lt;strong&gt;0.4&lt;/strong&gt; de WIFI Auditor, cuya principal novedad es que &lt;strong&gt;añade soporte para Windows XP SP2/3&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En un primer momento no había pensado en hacer la aplicación compatibilidad con Windows XP pues, al no estar soportada la interacción con las redes inalámbricas a través de netsh, se hacía bastante más compleja su implementación (hay que trabajar con la API nativa de Windows y con NDIS).&lt;/p&gt;
&lt;p&gt;Además, en esta versión se han arreglado algunos problemas que había con la conexión automática para redes JAZZTEL_XXXX en Windows Vista/7, la validación de redes vulnerables en MacOS y la detección de redes con nombres ocultos (además de algunos cambios estéticos).&lt;/p&gt;
&lt;p&gt;He aprovechado para reestructurar el código para que sea más sencillo añadir soporte a nuevas redes que vayan apareciendo. Ahora la validación de la red y la obtención de la contraseña es independiente del resto de la aplicación.&lt;/p&gt;
&lt;p&gt;Podéis descargaros la nueva versión desde:&lt;br/&gt;&lt;a href="http://www.ldelgado.es/?wifiauditor"&gt;&lt;a href="http://www.ldelgado.es/?wifiauditor"&gt;http://www.ldelgado.es/?wifiauditor&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;Entrando más en detalle con respecto a la compatibilidad con Windows XP, darle las gracias a &lt;a href="http://www.linkedin.com/profile/view?id=111726383"&gt;Carlos Navarro&lt;/a&gt; que ha sido la persona que se ha encargado de reescribir practicamente todo el código de &amp;#8216;xpmanager&amp;#8217; y la fusión con NDIS.&lt;/p&gt;
&lt;p&gt;Basicamente, en Windows XP es necesario interactuar con la &lt;a href="http://msdn.microsoft.com/en-us/library/ms706556%28v=vs.85%29.aspx"&gt;API nativa&lt;/a&gt; para poder obtener los datos de las redes disponibles, crear un perfil de una de ellas y realizar la conexión. En un primer momento intenté que lo realizará directamente WIFI Auditor a través de &lt;a href="http://www.google.es/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBwQFjAA&amp;amp;url=https%3A%2F%2Fjna.dev.java.net%2F&amp;amp;rct=j&amp;amp;q=jna%20java&amp;amp;ei=Xo_6TdDmA4iyhAfe0dCdAw&amp;amp;usg=AFQjCNH--RTu6kmd0gTxHTfE1PSF20B6oQ&amp;amp;cad=rja"&gt;JNA&lt;/a&gt; pero daba numerosos problemas por lo que era más sencillo utilizar una aplicación externa desarrollada en C (para el que había mucha documentación). Nos basamos en la aplicación &lt;a href="http://wifiapisample.codeplex.com/"&gt;wifi_testing.c de Roberto Agostino&lt;/a&gt; pero finalmente Carlos tuvo que reescribirla casi por completo. El principal problema que nos encontramos fue que la API no nos daba el BSSID del punto de acceso (la función WlanGetNetworkBssList no está implementada en XP), por lo que no podíamos generar la clave. &lt;a href="http://msdn.microsoft.com/en-us/library/ms706593%28v=vs.85%29.aspx"&gt;WZC&lt;/a&gt; solo permitía obtener el BSSID de la red a la que estaba conectado el dispositivo por lo que tampoco nos era útil y finalmente encontramos la solución, utilizar &lt;a href="http://msdn.microsoft.com/en-us/library/ms834435.aspx"&gt;NDIS&lt;/a&gt;. Uniendo la API y NDIS es posible obtener en XP los datos necesarios para que WIFI Auditor pudiera funcionar :).&lt;/p&gt;
&lt;p&gt;Bueno, hasta aquí todo.&lt;br/&gt;Supongo que no habrá versiones nuevas hasta que no se liberen nuevas redes con el algoritmo para calcular su contraseña por defecto.&lt;/p&gt;
&lt;p&gt;Un saludo!&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/6615847394</link><guid>http://ldelgadoj.tumblr.com/post/6615847394</guid><pubDate>Fri, 17 Jun 2011 09:59:00 +0200</pubDate></item><item><title>Comentario sobre Dropbox y la autenticación por host_id</title><description>&lt;p&gt;Para poner en antecedentes decir que el sistema de autenticación que  utiliza Dropbox sólo se basa en un identificador llamado host_id, que es un string alfanumerico de 32 caracteres que se almacena en texto plano en un fichero sqlite en la ruta %appdata%/Dropbox/config.db&lt;/p&gt;
&lt;p&gt;Últimamente cada vez que leo un artículo/post sobre el tema, veo el siguiente comentario (que creo que es el mismo argumento que expuso Dropbox en su comunicado) &amp;#8220;No es tan grave, si tienen acceso al host_id están teniendo acceso a toda la carpeta y su contenido&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Creo que es un error utilizar ese argumento pues puedes tener casos como el que el acceso al ordenador sea durante un tiempo muy limitado (innecesario para poder copiar el contenido de la carpeta de Dropbox si ésta tiene un tamaño considerable), que no esté completamente sincronizado y un largo etcétera.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;El peligro de que la autenticación solo tenga en cuenta el host_id es que el atacante puede monitorizar esa cuenta de cara al futuro, comprometiendo todo lo que se sincronice con esa cuenta (por supuesto, hasta que la victima revoque el acceso a ese host). Éste es el verdadero peligro, pues el acceso no se limita a un momento concreto, sino que permite al atacante acceder cuando quiera. Además, como ya se ha dicho, el host_id no queda invalidado con un cambio de contraseña, asi que no sería nada extraño que la víctima nunca se llegase a dar cuenta que su cuenta ha sido comprometida).&lt;/p&gt;
&lt;p&gt;Además, una pequeña reflexión sería ¿la seguridad de mis datos sólo está garantizada por un string a.n de 32 carácteres?. Como se ha podido comprobar, el parámetro email no afecta, por lo que si encontramos un host_id válido (quitando la inviabilidad del ataque, pensemos en un random que nos dé un valor válido) estamos accediendo a los archivos sincronizados de una cuenta sin más.&lt;/p&gt;
&lt;p&gt;Por lo tanto, simplemente quiero dejar clara mi preocupación ante este incidente que Dropbox ha manejado como problema menor cuando en realidad, bajo mi punto de vista, es bastante crítico (independientemente de que haya que tener acceso a la máquina, puedes robar el host_id mediante un usb o cualquier otro método).&lt;/p&gt;
&lt;p&gt;Ya para terminar, dejo un video que he grabado del proceso. Lo he hecho a mano leyendo del fichero config.db para que se viera la estructura del mismo. Decir que cualquiera puede hacer un script que automatize el ataque o utilizar aplicaciones como &lt;a href="http://dl.dropbox.com/u/341940/dbClone.rar"&gt;Dropbox-Cloner&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=SsXV1OXW3fo"&gt;&lt;a href="http://www.youtube.com/watch?v=SsXV1OXW3fo"&gt;http://www.youtube.com/watch?v=SsXV1OXW3fo&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Un saludo!&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/5581224743</link><guid>http://ldelgadoj.tumblr.com/post/5581224743</guid><pubDate>Tue, 17 May 2011 20:34:00 +0200</pubDate></item><item><title>¿Tanto cuesta configurar bien las cookies?</title><description>&lt;p&gt;Enlazando con el artículo &lt;a href="http://www.securitybydefault.com/2011/04/cookies-si-pero-credenciales-mejor.html"&gt;Cookies si pero credenciales mejor&lt;/a&gt; que se publicó la semana pasada en &lt;a href="http://www.securitybydefault.com"&gt;Security by Default&lt;/a&gt; sobre el autocompletado de formularios de autenticación por parte de los navegadores y su explotación a través de un XSS, ahora le toca el turno a la &lt;strong&gt;configuración de las cookies&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Como comentaba en el artículo, si se identifican los credenciales por host en vez de por página o servicio una vulnerabilidad en cualquier servicio de ese host/dominio afecta, además, a &lt;strong&gt;todos los demás&lt;/strong&gt;. Relacionando éste caso con las cookies podemos observar que si no se configura adecuadamente a qué path del dominio corresponden (lo que identificaría, p.e, al servicio al que pertenece la cookie) éstas serán enviadas en todas las peticiones dentro de ese mismo dominio y por tanto con &lt;strong&gt;un XSS en cualquiera de los servicios se podrán obtener las cookies de todos ellos.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El ejemplo de explotación es el mismo que en caso de los formularios:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="http://pagina.es/correo/login.php"&gt;http://pagina.es/correo/login.php&lt;/a&gt; | cookie: mail=XXX&lt;/em&gt;&lt;br/&gt;&lt;em&gt; &lt;a href="http://pagina.es/intranet/access.php"&gt;http://pagina.es/intranet/access.php&lt;/a&gt; | cookie: intranet=XXX&lt;/em&gt;&lt;br/&gt;&lt;em&gt; &lt;a href="http://pagina.es/index.php"&gt;http://pagina.es/index.php&lt;/a&gt; | cookie: sid=XXX&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En el caso de que index.php fuera vulnerable a un XSS a través de él se obtendrían las cookies de los tres servicios y por tanto se comprometerían las sesiones que estuvieran activas en ellos.&lt;/p&gt;
&lt;p&gt;¡¿Es tan complicado configurar bien las cookies?!&lt;/p&gt;
&lt;p&gt;Normalmente cuando nos autenticamos en un servicio vemos que en el encabezado de la respuesta del servidor tenemos:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Set-Cookie: sid=SessionID; expires=DATE; path=/; domain=DOMAIN&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si en lugar de dejar el parámetro path por defecto lo configurasemos correctamente (en el ejemplo tomaría los valores &lt;strong&gt;correo&lt;/strong&gt;, &lt;strong&gt;intranet&lt;/strong&gt; y &lt;strong&gt;/&lt;/strong&gt; respectivamente) nos evitaríamos el problema.&lt;/p&gt;
&lt;p&gt;Un caso real:&lt;/p&gt;
&lt;p&gt;Como caso real podemos tomar el de la Universidad Politécnica de Madrid que bajo el mismo dominio &lt;a href="http://www.upm.es"&gt;www.upm.es&lt;/a&gt; aloja distintos servicios como el &lt;a href="https://www.upm.es/politecnica_virtual"&gt;campus virtual&lt;/a&gt;, el &lt;a href="https://www.upm.es/webmail_alumnos/"&gt;webmail&lt;/a&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Como se puede observar en la imagen a continuación, si abrimos ambos servicios y ejecutamos un simple &lt;strong&gt;alert(document.cookie) &lt;/strong&gt;en el del campus virtual obtenemos las cookies de este servicio (en verde) y las del webmail (en rojo).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.tumblr.com/tumblr_ljll5sht9p1qf5isy.png"&gt;&lt;img src="http://media.tumblr.com/tumblr_ljll5sht9p1qf5isy.png" align="middle" height="192" width="325"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si en el caso de los formularios de autenticación la única opción que tienen los administradores es añadir un autocomplete=off como parámetro al form (es un problema de los navegadores y la gestión que hacen de los credenciales), en este caso, y con una solución tan simple, debería hacerse desde el primer momento (independientemente de que tengamos solo un servicio; si está en un path distinto a / claro)&lt;/p&gt;
&lt;p&gt;Ya para terminar aprovecho para añadir lo que comentó ayer Alejandro Ramos en el post &lt;a href="http://www.securitybydefault.com/2011/04/mitos-de-https-y-la-navegacion-segura.html"&gt;Mitos de HTTPS y la navegación segura&lt;/a&gt; (en SbD); es importante establecer el parámetro &lt;strong&gt;secure &lt;/strong&gt;para evitar que las cookies de sesión de una conexión SSL se envien utilizando otros canales.&lt;/p&gt;
&lt;p&gt;Un saludo!&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/4773146565</link><guid>http://ldelgadoj.tumblr.com/post/4773146565</guid><pubDate>Wed, 20 Apr 2011 12:18:29 +0200</pubDate></item><item><title>Cracking Minecraft for fun &amp; profit!</title><description>&lt;p&gt;Últimamente se ha puesto de moda en mi universidad el juego Minecraft por lo que se me ocurrió investigar cómo podríamos jugar en modo multiplayer sin ser usuario premium.&lt;/p&gt;
&lt;p&gt;¿Qué es &lt;a href="http://www.minecraft.net/"&gt;Minecraft&lt;/a&gt;?&lt;br/&gt;Según la Wikipedia, Minecraft es un videojuego detipo  &amp;#8220;sandbox&amp;#8221; en el cual los jugadores pueden realizar construcciones en un  mundo 3D compuesto de cubos, al estilo retro. Os recomiendo que os  leáis &lt;a href="http://juegos.microsiervos.com/misc/minecraft.html"&gt;el post de microsiervos&lt;/a&gt; sobre el juego.&lt;br/&gt;&lt;br/&gt;¡Comencemos!&lt;br/&gt;&lt;br/&gt;Minecraft permite &lt;strong&gt;registrarse gratuitamente&lt;/strong&gt; en su página y jugar al juego en modo single player. En el caso de que  queramos jugar en modo multiplayer (instalando la aplicación servidor  que se puede descargar desde esa misma página) tendremos que  convertirnos en &lt;strong&gt;usuario premium&lt;/strong&gt;, es decir, &lt;strong&gt;pagar 15 euros&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;Para  poder saltarnos las restricciones tendremos que modificar la aplicación  o la comunicación de ésta con los servidores de Minecraft. Voy a  explicar la segunda opción porque me parece más útil, cómoda y limpia. Aun así, al  final del artículo comentaré la manipulación de la aplicación.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;Lo primero que tenemos que hacer es descargarnos el &lt;a href="http://www.minecraft.net/download.jsp"&gt;launcher&lt;/a&gt; desde la página de Minecraft.&lt;br/&gt;Una vez descargado, nos intentamos autenticar con nuestro usuario free y veremos que nos da el error &lt;strong&gt;User not premium&lt;/strong&gt; y no nos permite ni siquiera jugar en modo single player. Esto es un  comportamiento extraño de esta versión del launcher puesto que en la  anterior te permitía acceder aunque luego tuvieras bloqueada la opción  de multiplayer.&lt;br/&gt;&lt;br/&gt;Para saltarnos este pequeño &amp;#8220;bug&amp;#8221; simplemente  tenemos que descargarnos en la carpeta de minecraft (por ejemplo, en  Windows es APPDATA&amp;#46;minecraft) los archivos &lt;a href="http://s3.amazonaws.com/MinecraftDownload/jinput.jar"&gt;jinput.jar&lt;/a&gt;, &lt;a href="http://s3.amazonaws.com/MinecraftDownload/lwjgl.jar"&gt;lwjgl.jar&lt;/a&gt;, &lt;a href="http://s3.amazonaws.com/MinecraftDownload/lwjgl_util.jar"&gt;lwjgl_util.jar&lt;/a&gt;, &lt;a href="http://s3.amazonaws.com/MinecraftDownload/minecraft.jar"&gt;minecraft.jar&lt;/a&gt; y &lt;a href="http://s3.amazonaws.com/MinecraftDownload/windows_natives.jar.lzma"&gt;windows_natives.jar.lzma&lt;/a&gt; (cambiando windows por linux, etc) y &lt;strong&gt;guardarlos en una carpeta llamada bin&lt;/strong&gt;.  Con respecto al archivo windows_natives.jar.lzma, tenéis que  descomprimirlo para que os aparezca windows_natives.jar. Lo descomprimis  y copiáis los archivos a la carpeta &lt;strong&gt;natives dentro de bin&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;De  esta forma, ya nos dejará acceder al single player. Intuyo que el  problema está en que lanza el updater después del login y,  en este caso  al no ser premium, muestra el error sin llegar a descargar  los  archivos.&lt;br/&gt;&lt;br/&gt;Una vez que nos encontramos en la pantalla principal  del Minecraft, si intentamos acceder a la opción multijugador, al  conectar con el servidor nos muestra el error User not premium.&lt;br/&gt;&lt;br/&gt;Si monitorizamos la petición que hace el juego, podemos ver que es la siguiente:&lt;br/&gt;&lt;em&gt;&lt;a href="http://www.minecraft.net/game/joinserver.jsp?user=USER&amp;amp;sessionId=SID&amp;amp;serverId=SRVID"&gt;http://www.minecraft.net/game/joinserver.jsp?user=USER&amp;amp;sessionId=SID&amp;amp;serverId=SRVID&lt;/a&gt;&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;La respuesta del servidor es &lt;strong&gt;User not premium&lt;/strong&gt; si el usuario es free u &lt;strong&gt;OK&lt;/strong&gt; si el usuario es premium. Por lo tanto, &lt;strong&gt;es trivial saltarse esta restricción modificando la respuesta del servidor&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;Una  opción puede ser instalarse un servidor en local y modificar el archivo  hosts para que la resolución del dominio &lt;a href="http://www.minecraft.net"&gt;www.minecraft.net&lt;/a&gt; tenga como  IP 127.0.0.1. Posteriormente, bastaría con emular la estructura de  directorios y archivos en nuestro servidor, creando una carpeta &lt;strong&gt;game &lt;/strong&gt;que contuviera el archivo &lt;strong&gt;joinserver.jsp&lt;/strong&gt;.  Como solo nos interesa que devuelva OK sea la petición que sea, bastará  con que contenga esa string y nada más (la extension JSP del archivo no  implica que se comporte como tal).&lt;br/&gt;&lt;br/&gt;Como nuestra intención es  conectarnos a un servidor remoto para jugar en modo &amp;#8216;multiplayer&amp;#8217;, yo  instalaría el servidor ahí en vez de en local y tendría todo más  centralizado.&lt;br/&gt;&lt;br/&gt;Una vez que nos hemos saltado esta restricción, vemos que seguimos sin conectarnos pues nos aparece el error &lt;strong&gt;Failed to verify username!&lt;/strong&gt;.  Este error nos lo devuelve el servidor al que intentamos conectar  porque no ha podido verificar que nuestro usuario tenga permiso para  jugar en modo multiplayer (esto es porque nos hemos saltado la otra  validación en los servidores de Minecraft).&lt;br/&gt;&lt;br/&gt;Monitorizamos la comunicación del servidor con los servidores del Minecraft obteniendo la siguiente petición:&lt;br/&gt;&lt;em&gt;&lt;a href="http://www.minecraft.net/game/checkserver.jsp?user=USER&amp;amp;serverId=SRVID"&gt;http://www.minecraft.net/game/checkserver.jsp?user=USER&amp;amp;serverId=SRVID&lt;/a&gt;&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;Los servidores de Minecraft darán tres respuestas, siendo éstas &lt;strong&gt;NO&lt;/strong&gt;, &lt;strong&gt;NOT YET&lt;/strong&gt; y &lt;strong&gt;YES&lt;/strong&gt;.  Por lo tanto, como en el caso anterior, bastará con modificar el hosts  y  &lt;strong&gt;crear el archivo checkserver.jsp con el contenido YES&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;Una  vez realizadas estas dos acciones (modificar el archivo hosts y crear un  servidor que emule el de Minecraft) podremos jugar al Minecraft en modo  multiplayer sin ser usuario premium.&lt;br/&gt;&lt;br/&gt;Si os habéis fijado en las  peticiones y las modificaciones que hemos hecho, os habréis dado cuenta  de que, si consiguieramos hacernos pasar como otro usuario en la  autenticación del Launcher, podríamos jugar como éste sin problemas  (puesto que no se volvería a validar).&lt;br/&gt;&lt;br/&gt;Si tenemos el launcher antiguo, bastaría con añadir a nuestro servidor local el archivo &lt;strong&gt;getversion.jsp que devolviese 1:2:USER:3&lt;/strong&gt; y estaríamos autenticados como ese usuario USER. En el caso del nuevo  launcher, como la petición se hace por SSL, solo podemos saltarnos la  validación si disponemos de un &lt;strong&gt;certificado válido&lt;/strong&gt;,  si es autofirmado la aplicación no podrá conectarse. En el caso de que  lo tengamos, bastará con crear en la raiz un archivo index.php que  devuelva lo anteriormente dicho.Sin embargo, modificando el launcher quedaríamos autenticados sin problemas.&lt;br/&gt;&lt;br/&gt;Como he dicho al principio del  artículo, podríamos habernos saltado las validaciones modificando la  aplicación (cliente y servidor) pero me parece más comodo emular las  respuestas de los servidores de Minecraft puesto que no interfiere con  las actualizaciones del mismo (salvo que cambien el sistema de validación, claro).&lt;br/&gt;&lt;br/&gt;A continuación os muestro los datos a modificar de cada una de las aplicaciones:&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Launcher:&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://2.bp.blogspot.com/-HR7tDMVpL5Q/TW6ozv2XPQI/AAAAAAAAAAs/1MstObRdzJw/s1600/mc_launcher.png"&gt;&lt;img src="http://2.bp.blogspot.com/-HR7tDMVpL5Q/TW6ozv2XPQI/AAAAAAAAAAs/1MstObRdzJw/s400/mc_launcher.png" id="BLOGGER_PHOTO_ID_5579582595329899778" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Minecraft&lt;/strong&gt; (APPDATA&amp;#46;minecraft\bin\minecraft.jar):&lt;br/&gt;&lt;br/&gt;&lt;a href="http://3.bp.blogspot.com/-Se8j-MaXVOs/TW6o8AxiSSI/AAAAAAAAAA0/CD3DhSLbbs8/s1600/mc_minecraft.png"&gt;&lt;img src="http://3.bp.blogspot.com/-Se8j-MaXVOs/TW6o8AxiSSI/AAAAAAAAAA0/CD3DhSLbbs8/s400/mc_minecraft.png" id="BLOGGER_PHOTO_ID_5579582737312008482" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Server:&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://1.bp.blogspot.com/-mKcxB2CEbkk/TW6pBQVrs2I/AAAAAAAAAA8/c1BkzKzBmRg/s1600/mc_server.png"&gt;&lt;img src="http://1.bp.blogspot.com/-mKcxB2CEbkk/TW6pBQVrs2I/AAAAAAAAAA8/c1BkzKzBmRg/s400/mc_server.png" id="BLOGGER_PHOTO_ID_5579582827389498210" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;Como  podéis ver, las clases del cliente y el servidor están ofuscadas. En  nuestro caso como solo queremos hacer ese cambio no es problema, pero se  puede utilizar &lt;a href="http://mcp.ocean-labs.de/index.php/MCP_Releases"&gt;MCP&lt;/a&gt; que nos simplifica todo el proceso.&lt;/p&gt;

&lt;p&gt;¡Esto es todo! Ya para terminar&amp;#8230;&lt;/p&gt;
&lt;p&gt;Como ultimamente me ha dado por hacer videos demostrativos, &lt;a href="http://www.youtube.com/watch?v=9sZrdQcRknc"&gt;aquí&lt;/a&gt; tenéis una demo de lo explicado en el artículo.&lt;/p&gt;
&lt;p&gt;Simplemente  decir que, aunque sea extremadamente sencillo jugar al Minecraft sin  ser un usuario premium, si de verdad os gusta el juego&amp;#8230; ¡comprarlo! (que seguro que con las horas que le vais a echar lo amortizaréis rápido :D)&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/4362322496</link><guid>http://ldelgadoj.tumblr.com/post/4362322496</guid><pubDate>Tue, 05 Apr 2011 11:31:00 +0200</pubDate></item><item><title>Nueva versión de WIFI Auditor!</title><description>&lt;p&gt;Ya está disponible la versión 0.3 de &lt;a href="http://www.ldelgado.es/?wifiauditor"&gt;WIFI Auditor&lt;/a&gt; cuya principal novedad es que añade soporte a MacOS (10.5 y superiores) y a Linux.&lt;/p&gt;
&lt;p&gt;En esta nueva versión se ha reescrito/reestructurado todo el código, destacando lo fácil que es ahora hacerla compatible con cualquier sistema operativo, siempre y cuando éste permita interactuar con las redes inalámbricas mediante la consola.&lt;/p&gt;
&lt;p&gt;A parte de algunos cambios estéticos, ahora al inciar la aplicación comprueba si tiene internet y, en caso de que lo haya, si existe una nueva versión disponible.&lt;/p&gt;
&lt;p&gt;En el caso de que tu S.O no sea compatible (por ejemplo, Windows XP), la aplicación te permite calcular la clave a través del ESSID/BSSID (como cualquier otro script).&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;br/&gt;El funcionamiento es el siguiente:&lt;/p&gt;
&lt;p&gt;Windows Vista/7: obtiene las redes y se conecta a la vulnerable a través del comando netsh (creando un perfil de nombre &amp;#8216;WIFI Auditor&amp;#8217;).&lt;/p&gt;
&lt;p&gt;MacOS 10.5+: obtiene las redes disponibles a través del comando airport y se conecta con networksetup&lt;/p&gt;
&lt;p&gt;Linux: obtiene el adaptador inalámbrico a través del comando ifconfig, las redes a través de iwlist y posteriormente se conecta con wpa_supplicant (se para el proceso network-manager, por lo que el icono nos mostrará desconectados aunque tengamos conexión, basta con hacer un ping o navegar para comprobar si la red tenía la contraseña por defecto o no).&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;¡Y hasta aquí todo!&lt;/p&gt;
&lt;p&gt;Cualquier comentario/problema/sugerencia podéis comentarlo en &lt;a href="http://www.securitybydefault.com/2011/02/wifi-auditor-mostrando-la-inseguridad.html"&gt;el post de Security by Default&lt;/a&gt; o a través del email &lt;span class="gwt-InlineLabel"&gt;wifiauditor@ldelgado.es&lt;/span&gt;&lt;span class="gwt-InlineLabel"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Un saludo!&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/3307144548</link><guid>http://ldelgadoj.tumblr.com/post/3307144548</guid><pubDate>Tue, 15 Feb 2011 10:30:00 +0100</pubDate></item><item><title>Accediendo a los contenidos premium de Ramoncín y compañía</title><description>&lt;p&gt;En este artículo voy a hablar de un BSQLi que tenía &lt;a href="http://www.dropcards.com/home/"&gt;Dropcards&lt;/a&gt; en su servicio de descarga de contenidos premium.  Éste servicio es utilizado por muchos artístas para permitir la  descarga de la versión digital utilizando el código que se encuentra en  el interior del disco.&lt;br/&gt;&lt;br/&gt;Con respecto al BSQLi, el usuario utilizado era DBA por lo que podíamos obtener el control total del servidor. Aunque no nos encontrabamos ante un Microsoft SQL Server, aprovecho para enlazaros &lt;a href="http://www.pentester.es/2010/12/sql-injection-hasta-la-cocina-ms-sql.html"&gt;este artículo&lt;/a&gt; muy interesante, escrito por &lt;a href="https://twitter.com/JoseSelvi"&gt;Jose Selvi&lt;/a&gt; en &lt;a href="http://www.pentester.es/"&gt;Pentester&lt;/a&gt;. En él se explica como hacernos con un Meterpreter ejecutándose en la máquina con los privilegios del usuario &amp;#8216;Servicio de red&amp;#8217;.&lt;br/&gt;&lt;br/&gt;Quiero  destacar la rápida actuación de Dropcards para solucionar la  vulnerabilidad, pues a las pocas horas de haberlo reportado me  respondieron comunicándome que ya estaba parcheado.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lgfgovyAPo1qf5isy.png" align="middle" height="112" width="372"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;¡Comencemos!&lt;br/&gt;&lt;br/&gt;Todo empezó en la página de &lt;a href="http://www.ramoncin.net/"&gt;Ramoncín&lt;/a&gt; (evitaré comentar los motivos por los que visitaba su web).&lt;br/&gt;&lt;br/&gt;Si nos fijamos, podemos ver que tiene un apartado llamado Canjear código  que nos permite descargar la versión digital del vinilo que tiene a la  venta. Lo primero que hice fue observar qué petición hacía para  comprobar si era válido o no el pin del código. La petición es la  siguiente:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.dropcards.com/download/widget/xml.php"&gt;http://www.dropcards.com/download/widget/xml.php&lt;/a&gt;&lt;br/&gt;artist=ARTIST&amp;amp;pin=PIN&lt;br/&gt;&lt;br/&gt;Si comprobamos si alguno de los parámetros es vulnerable, veremos que artist lo es, por lo que, utilizando &lt;a href="http://sqlmap.sourceforge.net/"&gt;sqlmap&lt;/a&gt; (simplemente para automatizar la tarea), podríamos haber obtenido PINs  válidos y haber descargado los temas de cualquier artista que utilice el  servicio, haber accedido a datos de carácter personal, etc.&lt;br/&gt;&lt;br/&gt;Una  vez que comprobé que era vulnerable a un ataque de BSQLi, lo único que  hice fue ver cuantas bases de datos había en el servidor (encontrándome  con que la cifra era bastante considerable) y si el usuario era DBA.  Para comprobar si el usuario es DBA:&lt;br/&gt;&lt;br/&gt;sqlmap.exe &amp;#8212;url “http://www.dropcards.com/download/widget/xml.php?artist=6109” &amp;#8212;is-dba&lt;br/&gt;[Info] The back-end DBMS is MySQL&lt;br/&gt;Web server operation system: Linux Red Hat&lt;br/&gt;Current user is DBA: ‘True’&lt;br/&gt;&lt;br/&gt;Por lo tanto, al ser el usuario DBA podemos ejecutar comandos, obtener una shell remota, etc.&lt;br/&gt;&lt;br/&gt;Ya para terminar, un par de curiosidades.&lt;br/&gt;&lt;br/&gt;Si  realizamos la petición sin enviar el parámetro PIN veremos que nos  responde con un error pero desconocido (no es ni “bad pin” ni “bad  artist”). Si lo realizamos desde el widget (basta con poner como PIN  &amp;amp;) veremos que nos da acceso al siguiente paso. Aunque seguiremos  sin poder descargar el archivo (pues no conocemos el PIN), descubrimos  que nos pide que les enviemos nuestro email y que aceptemos las  condiciones de uso. La petición que realiza dicha acción es la  siguiente:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.dropcards.com/download/widget/email.php"&gt;http://www.dropcards.com/download/widget/email.php&lt;/a&gt;&lt;br/&gt;pin=PIN&amp;amp;email=EMAIL&lt;br/&gt;&lt;br/&gt;Por  lo tanto, en el caso de que el parámetro PIN sea vulnerable (y  conozcamos uno válido, que tampoco es muy complicado) se podría volver a obtener acceso al servidor a través de ésta petición y no la otra.&lt;br/&gt;&lt;br/&gt;Y por último, simplemente decir que tenían activado el  linsting por similitud (feature MultiViews  de Apache), y por lo tanto podemos obtener mucha información gracias a  él. Una petición curiosa era:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://dropcards.com/x"&gt;http://dropcards.com/x&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;(&amp;#8230;)&lt;br/&gt;lrwxrwxrwx 1 root root 59 Jan 19&amp;#160;00:21 -&amp;gt; /var/www/vhosts/dropcards.com/../artists/4096&lt;br/&gt;lrwxrwxrwx 1 root root 59 Jan 19&amp;#160;00:21 -&amp;gt; /var/www/vhosts/dropcards.com/../artists/3218&lt;br/&gt;(&amp;#8230;)&lt;br/&gt;&lt;br/&gt;Con  esta petición podemos obtener códigos válidos de artistas (en el caso  de que no tuvieramos uno, no como en nuestro caso que teníamos el 6109  correspondiente a Ramoncín), ver cual es el directorio que tendremos que  decirle al sqlmap para intentar obtener una shell remota, etc.&lt;br/&gt;&lt;br/&gt;He  de reconocer que me sorprendió que el usuario fuera DBA, pues si un  BSQLi ya es un tema muy delicado, si además le sumas un usuario con  todos los privilegios, la situación es crítica.&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/3230889308</link><guid>http://ldelgadoj.tumblr.com/post/3230889308</guid><pubDate>Fri, 11 Feb 2011 08:31:00 +0100</pubDate></item><item><title>El XSS de la Academia de Cine</title><description>&lt;p&gt;¿Quién me iba a decir a mí que el XSS de la Academia de Cine iba a hacer que me echara unas risas todo el día?&lt;/p&gt;
&lt;p&gt;Leyendo los tweets relacionados con el XSS y la supuesta enajenación temporal de Alex de la Iglesia, me he encontrado situaciones un tanto curiosas. Las he ido reuniendo y, además, he escogido a dos personas que son claros ganadores por la que han montado alrededor de la &amp;#8220;nota de prensa&amp;#8221;.&lt;/p&gt;
&lt;p&gt;A las 18.30 la página de la Academia ha quedado inaccesible por tareas de mantenimiento. Actualmente se puede comprobar que el XSS ya no funciona, pero sigue pudiendose inyectar código (p.e &lt;em&gt;&amp;#8220;&amp;lt;&amp;gt;onload&amp;lt;&amp;gt;=alert(document.cookie);&amp;gt;&lt;/em&gt;), sería jugar con ello.&lt;/p&gt;
&lt;p&gt;Antes de empezar, decir que el XSS era el siguiente (funcionaba en Chrome, Safari y Firefox sin NoScript): &lt;a href="http://bit.ly/gL1lcG"&gt;&lt;a href="http://bit.ly/gL1lcG"&gt;http://bit.ly/gL1lcG&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;a title="Imagen XSS" target="_blank" href="http://img200.imageshack.us/img200/4668/xssacademia.png"&gt;&lt;img src="http://img200.imageshack.us/img200/4668/xssacademia.png" height="105" width="343"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Los primeros tweets son los que lo identifican con XSS:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@adelgado: &lt;/strong&gt;La web de la Academia de cine tiene un agujero de seguridad mediante inyecciones XSS  ¿XSS qué? &lt;a href="http://j.mp/igS8Jt"&gt;http://j.mp/igS8Jt&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;@Belategui&lt;/em&gt;:&lt;/strong&gt; &lt;em&gt;Me temo que la web de la Academia de Cine ha sido saboteada. Está muy bien hecho. &lt;a href="http://bit.ly/gLxmdT"&gt;http://bit.ly/gLxmdT&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@frandieguez:&lt;/strong&gt; Ataque XSS na web da Academia de Cine de Espanha. Incríbel o sentido do humor do juaker @alexdelaiglesia &lt;a href="http://twitpic.com/3u7rdu"&gt;http://twitpic.com/3u7rdu&lt;/a&gt;&lt;br/&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@earcos:&lt;/strong&gt; La web de la Academia de Cine tiene un hueco de seguridad XSS. Puedes escribir tu propia noticia &lt;a href="http://bit.ly/foxThC"&gt;http://bit.ly/foxThC&lt;/a&gt; /vía @secbydefault&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br/&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ahora pasamos a los tweets curiosos relacionados con el supuesto &amp;#8220;hackeo&amp;#8221;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@PalomaLLaneza:&lt;/strong&gt; Han hackeado la web :(..? RT @secbydefault Nota de prensa de la  academia donde llaman enajenado a @alexdelaiglesia &lt;a href="http://bit.ly/gL1lcG"&gt;http://bit.ly/gL1lcG&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@AzulCorrosivo:&lt;/strong&gt; Posible ciberataque acaba con la web de la Academia de Cine. La que se está liando.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@carlosaganzo:&lt;/strong&gt; Me dice @bookworm1979 que la web de la Academia del Cine no funciona. La habrán hackeado o simplemente no funciona desde UK? &lt;/em&gt;(¿se salva?)&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Y por último, algunos de los tweets de las personas que creen que es real (XDD):&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@rober_tr: &lt;/strong&gt;Adoro el cine y twitter, no apoyo la #leysinde y estoy orgullosamente enajenado como @AlexdelaIglesia #todosconalexdelaiglesia&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@rafamerino:&lt;/strong&gt; En la nota de prensa de la Academia de cine pone &amp;#8220;Descargar&amp;#8221;. Además de impresentables, cínicos&amp;#8230; #todosconalex #leysinde #sindeDimision&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;@rodrigompaz:&lt;/strong&gt; La Academia de Cine vs Su Propio Presidente &lt;a href="http://bit.ly/hBCZIh"&gt;http://bit.ly/hBCZIh&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;@hilarioabadjr:&lt;/strong&gt; Vaya tela con la notita de prensa que ha puesto la Academia de Cine&amp;#8230; &lt;a href="http://ccl.cl/b7k2"&gt;http://ccl.cl/b7k2&lt;/a&gt;&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@dbssdb:&lt;/strong&gt; Vergonzoso&amp;#8230; RT @hilarioabadjr: Vaya tela con la notita de prensa que ha puesto la Academia de Cine&amp;#8230; &lt;a href="http://ccl.cl/b7k2"&gt;http://ccl.cl/b7k2&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Y ahora viene el premio a los más genios! &lt;strong&gt;@mfmaissa&lt;/strong&gt; y &lt;strong&gt;@PMonteagudo&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@mfmaissa:&lt;/strong&gt;Enajenación, así describían a Alex de la Iglesia_ A las 18:30 la Academia del Cine colgó una nota de prensa (cont) &lt;a href="http://tl.gd/8etqpt"&gt;http://tl.gd/8etqpt&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@mfmaissa:&lt;/strong&gt; La &amp;#8220;enajenación&amp;#8221; de la Academia de Cine &lt;a href="http://m.menea.me/orvb"&gt;http://m.menea.me/orvb&lt;/a&gt; (@meneame_net) #redesociales #Internet #Alexdelaiglesia&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@PMonteagudo:&lt;/strong&gt; Así está la página de la Academia de Cine desde las 18:30 (aproximadamnt.) &lt;a href="http://twitpic.com/3u8cnp"&gt;http://twitpic.com/3u8cnp&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@mfmaissa:&lt;/strong&gt; La &amp;#8220;enajenación&amp;#8221; de la Academia de Cine &lt;a href="http://m.menea.me/orvb"&gt;http://m.menea.me/orvb&lt;/a&gt; (@meneame_net) #redesociales #Internet #Alexdelaiglesia&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;@PMonteagudo:&lt;/strong&gt; @mfmaissa #Alexdelaiglesia ENCONTRADO: &lt;a href="http://xssacad.x10.mx/"&gt;http://xssacad.x10.mx/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br/&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;¿Algún medio se ha hecho eco del XSS? Pues si en el caso del XSS de la RAE y la definición de &amp;#8220;ley sinde&amp;#8221; fue &lt;a href="http://www.lavozdegalicia.es/sociedad/2011/01/06/0003_8948796.htm"&gt;la voz de galicia&lt;/a&gt; con la &amp;#8220;nota de prensa&amp;#8221; le toca al &lt;a href="http://www.diariodesevilla.es/article/cine/891329/iciar/bollain/la/iglesia/ha/abierto/una/crisis/innecesaria/y/muy/danina.html"&gt;diario de sevilla&lt;/a&gt;&amp;#8230; ¡increíble!&lt;/p&gt;
&lt;p&gt;Por lo tanto, de momento la cuenta es 2 a 1:&lt;br/&gt;RAE y Warner Music a favor de la Ley Sinde&lt;br/&gt;Academia de Cine en contra&lt;/p&gt;
&lt;p&gt;Saludos!&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/2983901010</link><guid>http://ldelgadoj.tumblr.com/post/2983901010</guid><pubDate>Sat, 29 Jan 2011 01:37:00 +0100</pubDate></item><item><title>Estrenando Tumblr!</title><description>&lt;p&gt;Buenas!&lt;/p&gt;
&lt;p&gt;Llevo un tiempo buscando algún sitio donde postear curiosidades varias y lo que se me vaya pasando por la cabeza, y creo que por fin he encontrado el sitio!.&lt;/p&gt;
&lt;p&gt;Voy a estrenar el Tumblr contando una curiosidad de Tuenti que podemos utilizar junto con los artículos que publiqué en &lt;a target="_blank" href="http://www.securitybydefault.com"&gt;Security by Default&lt;/a&gt; (&lt;a target="_blank" href="http://www.securitybydefault.com/2010/10/tuenti-y-las-redes-locales-inseguras-12.html"&gt;este&lt;/a&gt; y &lt;a target="_blank" href="http://www.securitybydefault.com/2010/11/tuenti-y-las-redes-locales-inseguras-22.html"&gt;este&lt;/a&gt;), para monitorizar la cuenta de un usuario de forma bastante transparente (recomendado solo para bromas a los amigos!).&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Como sabemos, Tuenti tiene un servicio movil llamado TuentiSMS que nos permite recibir alertas, cambiar el estado, etc. Aprovechándonos del escenario de los artículos y que TuentiSMS no pide la contraseña para activar el servicio, nada nos impide dar de alta nuestro movil. De esta forma, podemos tener controlada la cuenta de esa persona. Además, cuando se activa no muestra ningún tipo de notificación al usuario, por lo que puede pasar totalmente desapercibido (siempre y cuando la persona no lo usase, pues se daría cuenta de que ya no recibe las alertas&lt;span&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La petición que habría que realizar es:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="http://wwwb21.tuenti.com/?m=Settings&amp;amp;func=process_sms"&gt;http://wwwb21.tuenti.com/?m=Settings&amp;amp;func=process_sms&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;csfr=CSRF&amp;amp;phone_number[]=PHONE&amp;amp;phone_number_id[]=34PHONE&amp;amp;phone_number_prefix[]=34&amp;amp;carrier=4&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;¿Podemos ir un paso mas allá? En principio, se me ocurre que podríamos utilizar el SMSSpoofing para dar de alta un número cualquiera (o el de la propia victima si  no lo tiene activado y por tanto desactivando las alertas para que no le llegue ninguna) y simplemente usarlo para cambiar el estado, etc. No lo he podido comprobar porque el servicio que utilizo de web sms me rechaza el 22010/1, pero podría ser factible.&lt;/p&gt;
&lt;p&gt;Con respecto al SMSSpoofing, os dejo con el video de la ponencia de Julian Vilas en la NoConName: &lt;a target="_blank" href="http://goo.gl/EmmDw"&gt;&lt;a href="http://goo.gl/EmmDw"&gt;http://goo.gl/EmmDw&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La mejor solución que veo aquí es que se pida la contraseña para poder activar el servicio y además, no estaría mal que se notificara al usuario sobre su activación (bajo el avatar, como cualquier otra).&lt;/p&gt;
&lt;p&gt;Un saludo!&lt;/p&gt;</description><link>http://ldelgadoj.tumblr.com/post/2685807860</link><guid>http://ldelgadoj.tumblr.com/post/2685807860</guid><pubDate>Mon, 10 Jan 2011 18:48:00 +0100</pubDate><category>tuenti</category><category>mitm</category><category>smsspoofing</category></item></channel></rss>
