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

Agrupar el control de varios WordPress bajo un solo Latch

$
0
0
Si estás leyendo esto seguro que ya conoces el servicio Latch, ya tienes instalada la aplicación en tu móvil, has estado latcheando en Nevele Bank (tu fake bank y cada día el de más gente) probando el servicio, jugueteando con la granularidad de las operaciones e incluso lo has implantado en los sitios y servicios que administras, y por lo tanto ya conoces la interface de configuración de la web de Latch. En este artículo vamos a profundizar un poquito más en las Operaciones Latch y el jugo que podemos sacarles. Para ello vamos a utilizar el plugin de Latch para WordPress y su correspondiente SDK en PHP, aunque puedes aplicar esto en cualquier implementación. Además, ya tenemos algo de información de qué es lo que hace el plugin de Latch para WordPress documentado.

Las Operaciones Latch están pensadas para granular un servicio en "subtareas" que pueden ser validadas mediante Latch, restringiendo así el acceso a parte de las funcionalidades de un servicio. La respuesta que obtenemos a una petición de estado de una Operación sigue la misma estructura en JSON que una petición de estado para una Aplicación. Como esa estructura es común independientemente del "tipo" de consulta que le hagamos a Latch (estado de una aplicación o estado de una operación), la interpretación que hagamos de esa respuesta depende de nosotros... Veámoslo con un ejemplo:

Entorno de Partida:

En una ONG en la que colaboro desde hace poquito, tienen una página web (www.ejemplo.es) en WordPress con su propia base de datos. Al mismo tiempo existen tres subdominios (sub1.ejemplo.es, sub2.ejemplo.es y sub3.ejemplo.es) que tienen cada uno su propia instalación de WordPress y su propia Base de datos. Al ser todos independientes, necesito dar de alta una Aplicación distinta en el servicio Latch para gestionar el acceso a cada una. Esto producirá un Latch distinto para cada dominio en la pantalla principal de la aplicación Latch del móvil del usuario, junto con el resto de Latches de los distintos sitios dónde se haya dado de alta (Movistar, Tuenti, Shodan, etc... o tu propio Windows o Linux)

¿Y cómo puedo hacer que en la pantalla principal del móvil del usuario se muestre un solo Latch para mi dominio principal y que los subdominios funciones como Operaciones?

Fácil... Dándole otro significado a lo que es una Operación en Latch: En lugar de usarla para validar una funcionalidad, la vamos a usar para validar el acceso principal a la aplicación... o lo que es lo mismo, le vamos a dar el mismo valor que a una Aplicación.

De cara al usuario queremos cambiar cómo le aparecen los Latches de:

Figura 1: Ejemplo de varios WordPress aislados

A algo del estilo:

Figura 2: Ejemplo de agrupación en suboperaciones

El plugin de WordPress seguirá el mismo procesamiento para todo (parear usuario, desparear usuario, OTP, etc) excepto cuando de una tarea de autenticación se trate. En este caso haremos que WordPress consulte el estado de una Operación Latch en lugar de consultar el de una Aplicación. Al seguir utilizando el "Application ID" para el resto de tareas, podremos seguir utilizando el resto de funcionalidades del plugin con normalidad. Si configuramos el "Operation ID" en el campo reservado al "Application ID" nos fallará porque estaremos haciendo una consulta de tipo Aplicación con un ID que no es válido para ello.

¿Y qué necesito para hacer esto?

También es fácil.. Necesitaremos un poquito (sólo un poquito...) de RTFM de:
¡¡¡Al turrón!!!
Definimos un nuevo campo para el "Operation ID"

Lo primero es poner un campo en el formulario de la configuración general de Latch en WordPress para que almacene en la base de datos el ID de Operación que obtendremos de la web de Latch. Para ello modificaremos el fichero latch.php del plugin de WordPress incluyendo las siguientes líneas a la función action_admin_init():

function action_admin_init() {

add_settings_section('latch_settings', 'Global settings', array('latch', 'latch_settings_content'), 'latch_settings');
add_settings_field('latch_appId', 'Application ID', array('latch', 'latch_settings_appId'), 'latch_settings', 'latch_settings');
add_settings_field('latch_appSecret', 'Secret key', array('latch', 'latch_settings_appSecret'), 'latch_settings', 'latch_settings');
add_settings_field('latch_host', 'API URL', array('latch', 'latch_settings_host'), 'latch_settings', 'latch_settings');
/* OTt: Add a new record to store the Operation ID (if needed) */
add_settings_field('latch_opId', 'Operation ID', array('latch', 'latch_settings_opId'), 'latch_settings', 'latch_settings'); register_setting('latch_settings', 'latch_appId', array('latch', 'latch_validate_appId')); register_setting('latch_settings', 'latch_appSecret', array('latch', 'latch_validate_appSecret')); register_setting('latch_settings', 'latch_host', array('latch', 'latch_validate_host'));
/* OPT: Register the record to be printed in the configuration page of Latch */
register_setting('latch_settings', 'latch_opId', array('latch', 'latch_validate_opId'));
}

Definimos una nueva función para que se imprima el nuevo campo

Esta función es asociada al nuevo campo "Operation ID" en el paso anterior (en la llamada a add_settings_field()). Cuando WordPress tenga que imprimir la página de configuración general de Latch, llamará a todas las funciones asociadas a cada campo de la configuración para que se impriman dentro de un formulario. Esta nueva función es un clon de la función latch_settings_appSecret(), cambiando los nombres de los campos del formulario. La incluiremos en el mismo fichero que antes (latch.php) y por seguir un orden, podéis hacerlo debajo de la función latch_settings_appSecret():

  /* OPT Bloq: Function to print the new Operation ID field in the configuration form */
function latch_settings_opId() { $opId = esc_attr(get_option('latch_opId')); echo '<input id="latch_opId" maxlength="20" name="latch_opId" size="45" type="text" value="' . $opId . '" /&gt';
} /* END OPT Bloq */

Definimos una función para la validación del valor del nuevo campo

Cuando se realice un submit del formulario de la configuración general de Latch, se utilizará una función para la validación de cada campo del mismo. Esta función también se ha definido en el primer paso, y la función que hemos copiado es latch_validate_appId():

/* OPT Bloq: Function to validate the new Operation ID field */
function latch_validate_opId($opId){ if (!empty($opId) && strlen($opId) != 20) { add_settings_error('latch_invalid_opId', 'latch_invalid_opId', __('Invalid operation ID')); return ''; } else { return $opId; } 
} /* END OPT Bloq */

En este punto ya hemos conseguido que se guarde nuestro nuevo campo "Operation ID" en la base de datos de WordPress. ¿Hasta aquí bien? ¿Alguna pregunta? ¿Bien?... OK, seguimos:

Utilizar el "Operation ID" para consultar el estado cuando haya que autenticarse

La función encargada de la autenticación también se encuentra en el fichero latch.php y se llama filter_authenticate(). Es la encargada de comprobar el estado del latch para el "Application ID" que se haya configurado. Nosotros la vamos a modificar para que, en caso de que haya definido un "Operation ID" utilice este en lugar del de la Aplicación. Lo primero es definir una nueva variable ($opId) dentro de esta función para almacenar nuestro "Operation ID" desde la Base de datos. Lo hacemos incluyendo la siguiente línea al comienzo de la función:

 function filter_authenticate($user, $username = '', $password = '') {
if (!is_a($user, 'WP_User'))
{
return $user;
}

else
{
$appId = get_option('latch_appId');
/* OPT: Get The new Operation ID field from the database */

$opId = get_option('latch_opId');$appSecret = get_option('latch_appSecret');$host = get_option('latch_host'); ... 
El plugin instancia un objeto de la clase LatchSDK() y llama al método status()para obtener el estado del Latch del usuario en cuestión. Si buscamos las siguientes líneas podemos verlo más claramente:
$api = new LatchSDK($appId, $appSecret);
$statusResponse = $api->status($latch_accountId);
La clase LatchSDK() dispone de otro método llamado operationStatus() para la comprobación del estado de una Operación. Vamos a modificar las líneas anteriores para discriminar en función de nuestra configuración (de si hemos configurado un "Operation ID"):
 $api = new LatchSDK($appId, $appSecret);
/* OPT Bloq: IF $opId is NOT empty, I will use the operationStatus() method from SDK (instead status() method) and I asign the $opId value to $appId to reuse the subsequent code */ //
$statusResponse = $api->status($latch_accountId);
if (empty($opId))
{ $statusResponse = $api->status($latch_accountId); }
else
{
$appId = $opId;$statusResponse = $api->operationStatus($latch_accountId, $appId);  }
/* END OPT Bloq */
/* END OPT Bloq */
Podemos observar que además de cambiar el método utilizado para solicitar el estado al servicio Latch, machacamos la variable correspondiente al "Application ID" ($appId) con el valor de nuestro nuevo campo "Operation ID" ($opId). Como ya hemos comentado antes, la estructura de datos en JSON con la que nos responde Latch es la misma independientemente de que se lo pidamos para un "Application ID" o para un "Operation ID", por lo que machacando el ID de Aplicación con el ID de Operación, el resto del código nos servirá para consultar el valor de la Operación ;)

Limpiando

Al horno a 220 grados 20 minutos, sazonar al gusto y listo!!. Ahora sólo falta pasar la escoba para quitar los restos... Editamos el fichero unnistall.php para incluir el nuevo campo que hemos creado en la Base de Datos para que en caso de que se desinstale el plugin, también se borre dicho registro. El código de este fichero quedaría de la siguiente manera:

 if (defined('WP_UNINSTALL_PLUGIN'))
{
delete_option('latch_appId');delete_option('latch_appSecret');delete_option('latch_host');
/* OPT: Delete the new latch_opId field */ 
delete_option('latch_opId');$all_user_ids = get_users('fields=ID');  foreach ($all_user_ids as $user_id){
delete_user_meta($user_id, 'latch_id');delete_user_meta($user_id, 'latch_two_factor');
}
}

Conclusiones

Latch moOola... tenemos un montón de posibilidades. Con esto conseguimos agrupar aplicaciones independientes dentro de un "Latch Raíz" utilizando sus Operaciones como referencia para el login sin necesidad de copiar registros de una base de datos a otra, ya que el proceso de pareado seguirá utilizando el "Application ID" en lugar del "Operation ID". Si queremos utilizar el "Latch Raíz" para el login, podemos hacerlo dejando vacío el nuevo campo para la Operación.

Esto mismo podemos utilizarlo en distintas situaciones:

- Telefónica puede implementar un Latch para movistar.es, otro para telefónica.es y otro para terra.es, haciendo que el usuario tenga tres "Latches Raíz" en la página principal de la aplicación de su móvil, o puede, con lo que hemos explicado aquí, tener un único "Latch Raíz" llamado Telefónica, y como operaciones de este el acceso a terra.es, a movistar.es y a telefónica.es, "enguarrando" menos la página principal de la APP del usuario y sobre todo permitiendo que el usuario cierre el acceso a TODAS esas webs desde el "Latch Raíz".

- Si gestionamos el acceso a nuestra Intranet mediante Latch, podemos agrupar las distintas aplicaciones dentro de una única Aplicación Latch. Cada vez que cerremos ese latch, estaremos cerrando el acceso a TODAS las aplicaciones

- Como la granularidad de las Operaciones es ilimitada, podemos tener un Latch general para nuestra infraestructura empresarial y como operaciones las subredes que lo componen. Como operaciones de cada subred podemos tener los equipos de dicha red, y dentro de cada equipo gestionar el acceso por SSH, HTTP, etc... O si lo preferimos lo podemos agrupar por tipos de accesos... Up to you!!

Alejandro Gascón León
Analista de Sistemas y Seguridad en BT España

No te preocupes por los 5 Millones de cuentas de Gmail, preocúpate por TODAS tus identidades digitales

$
0
0
Otra vez otra noticia vuelve a alertar a todo el mundo con respecto al robo de identidad. En este caso el incidente ha sido la filtración de un foro ruso de Seguridad en BitCoins de un fichero con un volcado de casi 5 millones de direcciones de correo electrónico de Gmail, algunas sueltas de Yahoo! y unas 123.000 de Yandex.ru que están en un fichero de texto.

El fichero está al alcance de cualquiera en un comprimido sin malware que puedes descargar y analizar para saber si está tu clave o la de algún contacto o familiar. En él solo aparece la dirección de correo electrónico aunque en el foro también circuló la base de datos completa con las claves que más tarde fue eliminado por el administrador, así que se han filtrado las identidades completas.

Figura 1: Post con la filtración del fichero de cuentas de Gmail

Es una pena que salga en un foro de Seguridad en BitCoins, pues une en los titulares la moneda virtual con el mundo de los ciber-criminales en Internet, algo que debido al impacto que está teniendo la noticia y la malinterpretación continua de los hechos llevará a la gente de pie a asociar "BitCoin" con algo que usa la gente mala. Ya hemos visto en el paso también asociado esto en las noticias con las bitCoin Wallets maliciosas que se pusieron tan de moda.

Cómo las han recolectado no ha sido publicado, pero debido a que algunas cuentas parece que tienen más de 4 años, hace pensar en un trabajo de recolección de años usando botnets o malware al uso, como los que utilizan los ladrones de identidad en Internet que usan los que se dedican al fraude online.

¿Te debes preocupar por esta filtración o por tu identidad digital?

Como recomendación de urgencia lo que debes hacer es descargarte el fichero y buscar a ver si estás ahí o no, y ya que te pones si está algún amigo, conocido o contacto para avisarle. Si eres administrador de una organización donde se usa Gmail como correo electrónico deberías comprobar todas. 

El resto de las medidas las tienes que hacer tanto si estás como si no estás, ya que no hay garantía de que no estés en otra base de datos que no se ha publicado. Diariamente se producen filtraciones de cuentas robadas en muchos foros o sitios para hacer pastes y puedes estar en cualquiera de ellos si no has tenido cuidado - o a veces incluso teniéndolo si aparece un 0day donde menos lo esperas - así que no debes preocuparte por estos 5 Millones de identidades sino por todas las que se filtran constantemente.

Hace no demasiado hablábamos del 1.200.000 identidades que habían sido descubiertas en una megabase de datos de especialistas en fraude online o en Have I been Pwned ya hay recolectadas más 160 Millones de identidades que han acabado en Internet. Solo como ejemplo, hace una hora según escribo este post se habían filtrado 100 identidades en Gmail con su usuario y contraseña.

Figura 2: Cuentas filtradas en Pastebin hace 1 hora

Si he conseguido que pienses que esto es importante, entonces como primer paso establécete una cita periódica en tu calendario para cambiar todas las contraseñas, no solo de Gmail sino de todas tus cuentas digitales que comience hoy mismo.

En segundo lugar activa un segundo factor en tus cuentas ya mismo con Google Authenticator en tu cuenta Google para nadie pueda acceder a tu identidad sin que tú le apruebes el acceso con el código, con Verificación en 2 Pasos en tu cuenta de Apple ID y con Latch en todos los sitios en los que puedas. Aquí tienes un artículo en profundidad sobre cómo proteger identidades digitales con Latch.


Figura 3: Vídeo conceptual de Latch

No puedes confiar en las medidas de protección contra el acceso no autorizado de cuentas filtradas que pone Google, porque aunque sí que es verdad que hacen una detección automática para evitar que los que no sean los dueños legítimos accedan a ellas, estas medidas no son siempre efectivas, tal y como se cuenta en "Saltar el bloqueo de cuentas Google es un juego de niños".

En las apps de tu sistema móvil que te pidan la contraseña de correo electrónico, no utilices tu contraseña de Google, sino una contraseña de aplicación que te hayas sacado tras haber activado Google Authenticator, para evitar que software malicioso de tu terminal te robe tu identidad o una app haciendo uso del trabajo de "Peeking into your app without actually seen it"  que permite robar información de las apps filtrando el interfaz de usuario.


Figura 4: Robando datos de app accediendo al interfaz de la app en la memoria


Si has hecho todos estos cambios, lo siguiente que te voy a recomendar es que tengas cuidado con dónde publicas tu dirección de correo electrónico, que ya sabes que las arañas de los spammers funcionan de maravilla. También, evita usar sitios que comprueban si tu dirección está o no filtrada que puedan estar haciendo una base de datos con las direcciones de correo electrónico que se prueban... a ver si no estás y vas a acabar en otra por curioso. 

Como añadido extra, ten cuidado con las opciones de previsualación en los terminales móviles, ya que los códigos de recuperación de contraseñas se pueden ver y podrían robarte la identidad "con un sencillo truco de bar", tal y como explico en este vídeo.


Figura 5: Robar cuentas de Gmail o Hotmail en iPhone con Siri

Los que estén en este fichero filtrado van a pasar, directamente, a formar parte de todas las base de datos de spam del mundo, así que les van a brear con los mejores correos electrónicos de venta de todo y los mejores enlaces para la instalación de los mejores malware, así que lo siento si estás ahí ya. 

Saludos Malignos!

Generación Teletexto

$
0
0
Hoy en día es común que en casa tengas un disco multimedia con streaming con un interfaz de gestión que te permite poner apps, acceder a Internet o mil y una cosa más. Tu consola, ya sea XBOX o PlayStation trae tu menú para navegar por la red, apps para acceder a mil cosas y no sé qué otras filigranas. Si eres de los que tiene un Apple TV con Jailbreak o un XBOX Media Center habrás tuneado tus paneles de gestión con aplicaciones, conexiones a la red, streaming de películas y demás opciones y si ya tienes una SmartTV cuentas con innumerables opciones que te permiten sacar el máximo de Internet.

Figura 1: Portada del Teletexto de TVE, Edición 9.575

Tienes todos los diarios allí, todas las webs que te permiten acceder a toda la información que necesites sobre programación en las cadenas de televisión, noticias, resultados deportivos o números que han salido en los sorteos de lotería. Pero... confiesa, tú eres uno de esos que aún sigues usando el Teletexto. Vale, puede que no seas un power-user del Teletexto. Lo más seguro es que solo uses el que conoces de una cadena de televisión, y de él, solo algunas páginas, pero estoy seguro de que tienes alguno memorizado. Yo también lo hago. Y si te pierdes.... al 100 para volver a portada y listo.

No es un vicio constante, pero si perdura a lo largo del tiempo. Un día estoy viendo por casualidad la tele, salen los anuncios y en lugar de buscar el SmartPhone o la computadora, o abrir el navegador de Internet en la SmartTV, le doy al 1 - sólo me conozco las páginas del Teletexto de TVE - y tras pulsar el botón de las rayas del mando de la tele, rápidamente hago un recorrido por la 101, la 135 y si tengo curiosidad por cómo va la clasificación de La Liga repaso del 201 al 204 en un rápido movimiento.

Figura 2: Página 135 del Teletexto de TVE dedicado a los titulares de noticias deportivas

Esto no solo me pasa a mí, ya que en muchas ocasiones visitando a alguien en su casa, sale la conversación de "¿Cómo habrá quedado tal partido?" o "¿Qué número ha salido en la lotería?" o "¿Se sabe algo de...?" y en lugar de ir a las SmartThings, el dueño de la tele cambia de canal con un rápido movimiento de dedo, entra en su Teletexto, el que él conoce, y teclea con rapidez un número de página para llegar a la información. .

Los más jóvenes tal vez no saben ni qué es eso. No hay imágenes - bueno, sí, en ASCII y a dos colores - pero los que ya han nacido sin tener que pasar por el monocromo, las tarjetas Hércules, la CGA, la EGA y compañía, no tienen desarrollada tanta la imaginación para ver un coche de Formula 1 detrás de una mancha de cuadros rojos y azules. Yo veo a Fernando Alonso con los reflejos de las luces en su casco y la bandera de España cortando el viento. 

Figura 3: Yo veo la Honda de Dani Pedrosa y el Ferrari de Fernando Alonso

Por supuesto tampoco hay vídeos o mapas interactivos de muchas opciones. Solo números y cuatro botones de colores que te llevan - a dispares velocidades - a sitios con información. Y por eso me gusta y lo sigo usando. Porque no hay ads, no hay cookies, no hay espacio para rollos. ¿Twitter y sus 140 caracteres? Los titulares y las noticias del Teletexto ya inventaron eso antes. Nada de poesía de gratis y arte en ellas. Al grano, el redactor solo puede escribir unos escuetos párrafos y ya tiene que haberte dado toda la información que necesitas.

Figura 4: Texto que cabe en una página del Teletexto - por mucho 1080 p y Full HD que sea tu SmartTV -

Cuando comenzó el Teletexto, recuerdo que se hablaba de que que "en el futuro", todos nos suscribiríamos a unas páginas o secciones (por ejemplo de las 135 a la 155 y de la 101 a la 133) y podrías planificar la impresión de las mismas en una impresora conectada a la televisión, para que la gente se llevara un periódico a la carta cada mañana para leer camino del trabajo. El futuro... dibujado con pantallas que me recordaban a los juegos de mi Amstrad CPC 6128. ¿Cómo no iba a gustarme?

La cosa no llegó a mucho más, pero ahí sigue, con una generación de gente enganchada a unos números de página que aún usamos. Es retro, pero ahora que están de moda los hipsters, merecía un artículo con cariño. ¡Gracias mantenedores del Teletexto! Si algún día queréis que alguien mantenga una página del Teletexto con Noticiasde Seguridad Informática, yo me presto voluntario.

¿Y tú eres de la Generación Teletexto? ¿Cuál es tu Teletexto? ¿Qué números de página te sabes?

Saludos Malignos!

XSSPOSED: El archivo de los bugs XSS en Internet

$
0
0
Al igual que Archive.org guarda las copias de todas las webs que puede de Internet, y que Zone-h tiene el archivo de los Defacements que se han hecho a las páginas web, XSSPOSED es una web que archiva y premia a los cazadores de bugs XSS (y Open Redirects) en Internet. En él se pueden acceder a los bugs que han sido encontrados y reportados en la web organizados por importancia de la web o por fecha de reporte, además de permitir ver quiénes son los mejores cazadores de XSS en Internet.

Figura 1: Web de XSSPOSED con Top Alexa Rank Websites con bugs y Latest Submissions 

Por cada bug que se ha reportado se puede ver una pequeña historia de él, con información relativa a la fecha, y el investigador que lo reportó, que se lleva una imagen de caza con su nombre por haber reportado esa "presa" al archivo de bugs de Internet.

Figura 2: Descripción del bug, del reporte e imagen con la presa

En la segunda parte del expediente queda la información relativa al bug, con la URL que tienen la vulnerabilidad y los parámetros POST que hay que configurar para poder probar el ataque.

Figura 3: Descripción detallada de la explotación del ataque

Además, se puede lanzar el ataque desde el propio expediente para comprobar si está aún activo, se puede pedir que se chequee otra vez para cambiar su estado de activo a parcheado y en todo momento se puede acceder a una copia que se hace en el sitio.

Figura 4: Mirror XSS del bug reportado

El número de ellos que aún siguen activos es alto y todos los días aparecen nuevos bugs de XSS en un montón de sitios, incluidos sitios de renombre como periódicos, sitios con ranks Alexa y Page Rank altos o muy populares, como este en la web de la MTV.

Figura 5: Bug de XSS en MTV reportado a XSSPOSED

Si tienes curiosidad por estas técnicas este es tu sitio, pero si eres administrador de la seguridad de sitios web en Internet deberías tener un ojo puesto en esta web por si hay algún bug que te afecte reportado. Esta es una más de las fuentes de información que revisamos en los servicios de Vigilancia Digital y en nuestro servicio Faast de Pentesting Continuo, ya que un bug de XSS activo en una web (o un Open Redirect) puede ser especialmente peligroso en determinadas circunstancias.

Saludos Malignos!

WPHardening: Automatizar la Fortificación de WordPress

$
0
0
La seguridad en WordPress es un tema más que importante hoy en día. Constantemente vemos bugs en plugins como el RFU de MailPoet o el 0day de TimThumb que ponen en riesgo las instalaciones de estos frameworks. Pero no solo eso, hay ataques de fuerza bruta contra WordPress, ataques de elevación de privilegios en WordPress, fallos de privacidad con la indexación de borradores, configuraciones inseguras que permiten el registro de usuarios, configuraciones inseguras que permiten listar los plugins instalados y un montón más de exploits conocidos para atacarlos.

Figura 1: WP Hardening ayuda a mejorar la seguridad de tu WordPess

Cada instancia de WordPress, una vez implantada, puede ser fortificada - igual que se fortifica el servidor Linux donde se esté ejecutando - cambiando permisos, borrando archivos de instalación, cambiando configuraciones o instalando plugins de seguridad.

WPHardening es una herramienta creada en Python, bajo licencia libre GNU/GPLv3, con la idea de no ser un plugin como tal de este framework, de esos que estamos acostumbrados a instalar y que en muchos casos extienden su funcionalidad. Es una herramienta de auditoria diseñada con la idea concreta de poder automatizar la eliminación de archivos innecesarios, dar recomendaciones de plugins de seguridad, aportar un asistente para la creación del archivo de configuración y algunas cosas más que paso a contaros.

¿Que se puede hacer con WPHardening?

Está diseñada como una herramienta de consola, con el objetivo de ser versátil y que pueda ser utilizada con diferentes argumentos de invocación - con los que se podrán realizar diferentes acciones - y desde diferentes scripts automatizados en procesos completos de cumplimientos de seguridad.

Figura 2: WPhardening en su GitHub

Para comenzar a utilizar esta herramienta, lo primero que vamos a hacer es descargar WPHardening desde su repositorio en GitHub de la siguiente manera:

$ git clone https://github.com/elcodigok/wphardening
Cloning into 'wphardening'...
remote: Counting objects: 534, done.
remote: Total 534 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (534/534), 121.84 KiB | 93 KiB/s, done.
Resolving deltas: 100% (370/370), done.


$ cd wphardening/

Ahora vamos a necesitar tener descargado y descomprimido en algún directorio de nuestro equipo una versión de WordPress, hasta la fecha de hoy se recomienda la última versión estable 4.0 llamada “Benny”  y que fue liberada hace unos días. En estos ejemplos, la copia de WordPress 4.0 que hemos descargado está en el siguiente PATH:

/home/cspammers/wordpress

Con estos dos componente ya podemos utilizar WPHardening y automatizar su fortificación sin necesidad que el framework de WordPress se encuentre instalado o esté en ejecución dentro del servidor.

Para obtener ayuda sobre la herramienta y cuáles los parámetros que podemos utilizar hay que ejecutar:

$ ./wphardening.py -h

El único flag obligatorio es ( -d ) donde se indica el PATH en el que se encuentra la instancia de WordPress previamente descargado. Haciendo uso de este único argumento podemos validar que realmente sea un proyecto de WordPress. Se hace de la siguiente manera:

$ ./wphardening.py -d /home/cspammers/wordpress -v

Si no se especifica ningún archivo de Log para guardar los resultados salida con la opción ( -o ), todos los cambios van a ir almacenándose en el archivo wphardening.log de esa forma vamos a poder seguir todo lo que se fue ejecutando.

Para evitar el síndrome 777 en donde el usuario regala permisos a los archivos y directorios, wphardening tiene la posibilidad de hacer un control de permisos de seguridad adecuado utilizando la opción -có --chmod. Este sería un ejemplo de uso para mejorar los permisos de los archivos de WordPress:

$ ./wphardening.py -d /home/cspammers/wordpress --chmod

En cada proyecto que utilizamos de WordPress podemos encontrar archivos de documentación o presentación como son los ficheros de readme.html o de licencias que son muy utilizados en fases de fingerprinting para detectar la versión exacta de nuestra instalación, rutas dentro del servidor y hasta posibles configuraciones inseguras. Para evitar tener que ir eliminando manualmente todos estos archivos dentro de un proceso de fortificación, podemos utilizar la opción -r o --remove con WPhardening:

$ ./wphardening.py -d /home/cspammers/wordpress --remove

Figura 3: Ejemplo de borrado de archivos de licencia e información en WordPress

Para dificultar aún más los procesos de fingerprinting se puede eliminar la versión de WordPress de todos los lugares en los que se encuentra y con ( -f ) las marcas buscadas por las herramientas populares de scanning de WordPress, para ello se puede utilizar las opción de ( -v es el modo verbose ):

$ ./wphardening.py -d /home/cspammers/wordpress --delete-version -f -v

También es posible crear y personalizar el archivo robots.txt en donde le indicamos a las arañas de los motores de búsqueda cuáles los límites y permisos que vamos a asignar usando la opción -b o --robots:

$ ./ wphardening.py -d /home/cspammers/wordpress --robots

En este último tiempo la libreria TimThumb, una de las más usadas para manipular imágenes en PHP fue vulnerada en varias oportunidades. El problema radica en que los usuarios no acostumbran a actualizarla cuando esta incluida en su tema del sitio, por lo que wphardening cuenta con un diccionario de búsqueda para alertar al usuario sobre la existencia del mismo:

$ ./wphardening.py -d /home/cspammers/wordpress --timthumb -v

Una herramienta que se incorporó en estas últimas versiones es la posibilidad de contar con un asistente para la creación del archivo de configuraciones wp-config.php, que va a generar un archivo llamado wp-configu-wphardening.php para que sea renombrado en la instalación. Esto se puede activar de la siguiente manera:

$ ./wphardening.py -d /home/cspammers/wordpress --wp-config

La popularidad de WordPress llegó por la gran facilidad que tiene para extender sus funcionalidades y crear los plugins. Es por ello que desde WPHardening recomendamos varios plugins específicamente de seguridad, tales como: AntiVirus, Bad Behavior, Block Bad Queries, Exploit Scanner, Latch, Limit Login Attempts, One-Time Password, UPDATE NOTIFICATIONS, User Locker, WordPress File Monitor Plus, WP Login Security 2, WP Security Scan y WP-DBManager.


Figura 4: Vídeo Tutorial de integración de Latch para WordPress.
También puede ser usado para gestionar muchos WordPress con un solo Latch.

Para comprobar si puedes mejorar la seguridad de tu WordPress con alguno de ellos puedes usar la siguiente opción:

$ ./wphardening.py -d /home/cspammers/wordpress --plugins

Finalmente, en caso que nuestro servidor acepte la navegación entre sus directorios, podemos crear - con un solo comando - todos sus archivos index.php y una directiva en el archivo .htaccess para evitar que alguien liste el contenido de alguno de nuestros directorios:

$ ./wphardening.py -d /home/cspammers/wordpress --indexes

Dijimos al principio, que WPHardening es una herramienta muy versátil que nos va a permitir ejecutar la cantidad de opciones previas a una instalación o actualización, por lo cual podríamos llegar a combinar todos sus argumentos de la siguiente manera:

$ ./wphardening.py -d /home/cspammers/wordpress -c -r -b -f -t --wp-config --delete-version --plugins --indexes -o wordpress4.log -v

Conclusiones

WPHardening es un proyecto muy joven, en una fase muy temprana, pero que está siendo cuidado con mucho cariño e ilusión, por lo que aceptamos cualquier sugerencia o idea de mejora. Están todos invitados a colaborar y probar WPHardening, reportar fallos o cambios desde el repositorio en GitHub, para que puedan seguir creciendo con mejoras y nuevas funcionalidades. Ya estamos comenzando a ver que es lo nuevo para su version 1.4 así que cualquier idea será bienvenida.

Saludos!

Autor: Daniel Maldonado (@elcodigok)
http://caceriadespammers.com.ar

Fugas de información por sincronización de DreamWeaver

$
0
0
Lo bueno de trabajar con gente más lista que tú es que siempre aprendes cosas nuevas, incluso cuando menos te lo esperas. Ayer por la tarde en Eleven Paths tuvimos una reunión de seguimiento de Faast, nuestro sistema de Pentesting Persistente, y entre el repaso de las cosas nuevas salió un pequeño detalle de un fichero que se había incluido entre muchos otros entre los que producen fugas de información y que yo no conocía. Su nombre era: dwsync.xml

Tras la reunión me picó la curiosidad y quise saber más sobre él para entender por qué representaba una fuga de información. Tras leer un poco en Internet, resultó que es un archivo en formato XML que se usa para controlar la sincronización de archivos entre el cliente de Adobe DreamWeaver y  el servidor web en el que se guarda la lista de ficheros que se han subido al servidor y cuándo fue la última vez que se hizo.

Figura 2: Ejemplo de un fichero dwsync.xml

Este fichero no debería estar nunca en el servidor web, pero sin embargo, como sucede con otros archivos en ejemplos similares de fuga de información, como el caso de Fantastico, los famosos archivos .listing - y su aparición en las webs - o los muy comunes ficheros .DS_Store y Thumbs.db, algunos administradores y/o desarrolladores de sitios web acaban subiéndolos por error o desconocimiento, lo que produce por tanto fugas de información que afectan a la totalidad de ficheros subidos como a rutas locales del cliente no deseadas.

Adobe tiene un artículo en la knowledge base sobre su funcionamiento y los riesgos de seguridad asociados, ya que buscando en Internet es posible acceder a muchos de ellos subidos en repositorios de código como como GitHub, carpetas _notes del cliente de DreamWeaver que acaban completas en los servidores web o sitios insospechados. En el siguiente ejemplo, un fichero dwsync.xml cacheado en Google tras ser buscado y abierto por una WebShell.

Figura 3: fichero dwsync.xml cacheado en Google al ser abierto por una WebShell

Jugando con ellos anoche, estuve mirando si era muy costoso encontrar ficheros "ocultos" en un servidor web a partir de estos ficheros dwsync.xml, con el objeto de añadir este archivo a mi lista de técnicas para listar los ficheros de un servidor web, y la verdad es que es bastante sencillo.
Figura 4: Ficheros dwsync.xml indexados en Google

En este ejemplo se puede ver cómo se ha subido un fichero dwsync.xml al servidor web y cómo en él hay una lista de ficheros .mno - archivos de información que también se crean con DreamWeaver -. Es decir un fichero llamado archivo.aaa.mno guarda información relativa al fichero archivo.aaa.

Figura 5: Fichero dwsync.xml con información de sincronización de archivos .mno

En este caso, es posible localizar el archivo de información y ver datos como la dirección de correo electrónico del usuario que creo dicho fichero usando DreamWeaver.

Figura 6: Archivo .mno subido al servidor web

Al final este fichero dwsync.xml es un punto más de fuga de información dentro de un servidor web y es normal que el equipo de Faast lo hubiera metido en la lista de ficheros con fugas de información a revisar en un proceso de Pentesting Persistente. Ten cuidado si usas DreamWeaver en tu organización para que no te afecte una fuga de información tan sencilla como esta.

Saludos Malignos!

Cómo crear mensajes falsos de WhatsApp en un iPhone

$
0
0
Si tienes pareado un equipo con un iPhone, ese equipo tiene acceso a todo (o casi todo) lo que haya en ese terminal. Se puede acceder a los datos de Facebook y sacar la sesión para acceder a la cuenta, se puede extraer la base de datos de WhatsApp para buscar los mensajes borrados, se puede por supuesto espiar el WhatsApp silenciosamente, se puede acceder a las fotos en un proceso de juice jacking, se puede hacer jailbreak y meter un troyano al iPhone de forma automática, se puede manipular WhatsApp, Telegram o Twitter para que no se borren nunca los mensajes o se pueden manipular las bases de datos para crear mensajes falsos.

Esto es algo que se conoce desde hace tiempo y se cuenta en detalle en el libro de Hacking iPhone, aunque aún hay gente que no ha entendido esto. Para demostrar lo sencillo que es de hacer creamos una pequeña herramienta que se llama WhatsApp Injector - que no hemos publicado -, y que permite crear conversaciones falsas a la carta usando un equipo pareado para generar falsos rumores, motivar animadversión hacia personas o conseguir engañar a un periodista con un falso mensaje - por poner un ejemplo -.  Aquí tenéis una rápida demostración que hice ayer en el programa de radio de La Mañana con Javi Nieves.


Figura 1: Vídeo de la demostración de cómo crear mensajes falsos en WhatsApp para iPhone

Hacer este proceso es sencillo si el equipo está pareado con el terminal, es decir, si se ha seleccionado en las nuevas versiones de iOS 7.X la opción de "confiar en este equipo". Si ha sido así, desde el equipo se puede acceder a la base de datos de WhatsApp y escribir los registros que se desee.

Para la prueba de concepto, la herramienta WhatsApp Message Injector que ha programado nuestro compañero Ioseba Palop funciona como un servicio de Windows. Se queda residente en el equipo esperando a que se conecte un iPhone para escribir en su base de datos de WhatsApp la conversación seleccionada. Para ello, el escenario de ataque es el siguiente:

Paso 1: Creación de la conversación de WhatsApp en el equipo pareado

Este ataque podría estar pensado en entornos de pareja donde ambos tienen pareado el terminal iPhone en el mismo equipo, o en entornos de trabajo donde los trabajadores conectan el iPhone al equipo de la empresa. 

Si haces esto, es decir, si pareas tu terminal iPhone con el equipo del trabajo le estas dando acceso a tu Facebook, WhatsApp, Gmail, Fotografías, vídeos, etcétera al equipo IT de la empresa. ¡Piensa en ello!

Figura 2: Creación de conversación falsa en WhatsApp Message Injector

En ese equipo se abre la herramienta WhatsApp Message Injector y se crea la conversación que se quiere meter en la base de datos de WhatsApp. La herramienta permite seleccionar la fecha exacta y el estado que se quiere para el mensaje, es decir, podemos elegir si aparecerá como enviado, enviado y recibido, no enviado, recibido, además de la hora exacta y el remitente o destinatario del mensaje.

Paso 2: Dejar la trampa preparada

Una vez creada la conversación se cierra la herramienta. El resto será esperar a que se conecte el dispositivo iPhone de la víctima para que el servicio de Windows inyecte la conversación. Esta conversación se colocará correctamente, enlazándose en el hilo completo de la conversación, es decir, si la fecha está entre dos mensajes, entonces quedará correctamente colocado. El resto es esperar.

Cuando se conecte, como la base de datos de WhatsApp en iPhone no está cifrada, bastará con hacer las consultas SQL adecuadas a la base de datos SQLite de WhatsApp. Esto ya se vio en el artículo que explicaba cómo se hacía un D.O.S. a WhatsApp.

Paso 3: Se conecta el equipo y se inyecta la conversación

Nada más enchufarse el terminal iPhone al equipo con WhatsApp Message Inyector, el servicio escribirá en la base de datos de WhastApp todo el mensaje, haciendo creer a la víctima que ha recibido esos mensajes. Como broma pesada puede estar bien, pero ojo con esto que te puede hacer un lío gordo.

Figura 3: Conversación de WhatsApp que se ha creado en la base de datos.

En este caso se puede ver cómo el cuarto mensaje se creo con un time-stamp anterior al mensaje de "Voy!" y WhatsApp Message Injector lo puso en su lugar correspondiente. Si el número de teléfono estuviera en los Contactos, entonces aparecería su foto y su nombre. Si hubiera una conversación previa auténtica, los mensajes se intercalan en al ubicación correspondiente.

Al final, los mensajes de WhatsApp, de Telegram, de Skype, de Twitter, etcétera, se guardan en bases de datos locales, y si tienes acceso al dispositivo es trivial manipularlos con herramientas como estas o manualmente con un editor de bases de datos, así que ojo con tragarte cualquier cosa de estas. Y por supuesto, el - o los - equipo/s que tengas pareado/s con tu terminal iPhone o iPad puede/n robarte todos los datos. Ojo con ello.

Saludos Malignos!

Unos consejos para ti que empiezas en la Universidad

$
0
0
En estos días se nota el revuelo en la vida universitaria. Jóvenes y - no tanto - que esperan las últimas notas de la última convocatoria del curso, las confirmaciones de si hay o no hay plazas, de si se abre o no se abre una clase o un curso y de qué máster de postgrado realizar.

Hay muchas ilusiones y ganas renovadas siempre con el nuevo curso y viendo este ajetreo recuerdo con envidia esos momentos cuando yo estaba empezando los años en la EUI-UPM - ahora se puede visitar en 360º -, repasando una a una las asignaturas y esperando aprender un montón de cosas nuevas. Adoraba la informática y quería saber más. Me imaginaba diseñando el juego de instrucciones de una CPU y creándola desde cero, o descubriendo cómo programar concurrentemente para hacer juegos o saber cómo se construía un lenguaje desde la concepción del autómata.

Figura 1: Auditorio de la Escuela Técnica Superior de Ingeniería de Sistemas Informáticos de la Universidad Politécnica de Madrid

En las carreras universitarias de informática se aprenden muchos conceptos fundamentales que te enseñan a entender cómo funcionan las cosas. Herramientas que te permitirán construir desde cero tu carrera profesional, que te ayudarán a que puedas transformar el mundo si lo quieres hacer o modelar sistemas informáticos completos pensados por ti.

Por supuesto, la informática es infinita, y yo creo que llevo toda mi vida estudiando y trabajando en esto para poder afirmar con rotundidad que no tengo ni idea prácticamente de nada en este mundo de la informática. Sí, algo he podido aprender en estos años, pero la inmensidad de conocimiento que hay alrededor de esta ciencia es tal, que para casi cualquier ser humano es inabarcable. Tú tampoco vas a poder aprender todo en la universidad.

No obstante, cuando estés en la universidad, aprovecha todo tu tiempo al máximo, no solo para estudiar todas las asignaturas, sino para estudiar por tu cuenta todo lo que puedas. Completa tus conocimientos con auto-aprendizaje de lenguajes actuales que te permitan hacer tus propios proyectos. Mantente al día de lo que pasa en el mundo leyendo muchos blogs para que sepas cuáles son las tendencias en el mundo de la tecnología. Lee libros en los minutos que puedas para profundizar en nuevos temas. Ve a conferencias y conoce a más gente como tú.

Tres consejos

Además de todo eso, voy a darte tres consejos - por darte algunos - por si te sirven de mi experiencia personal. Tres consejos que puedes ignorar totalmente si quieres, pero que yo libremente te dejo por si te pueden ayudar:
1.- Tu tiempo es valioso: Si vas a estudiar una carrera, seguro que no tienes mucho dinero en el bolsillo, pero tienes algo que vale tanto o más que los euros. Tiempo. Por desgracia, en esos años el tiempo tiende a parecer infinito, pero es una trampa y unos nueve meses más tarde ya estarás saliendo de ese curso, casi un año más viejo y con menos tiempo. Aprovecha tu día para aprender cosas, para disfrutar con la tecnología, para hacer proyectos. El equilibrio entre lo que tiene que ir destinado en ocio, responsabilidades y tecnología lo marcas tú.... por ahora. Así que hazlo con madurez.

2.- Hazlo: Busca gente como tú, que quiera hacer cosas, que tenga inquietudes, y haz proyectos. Pero hazlos. Hazte una app que transcriba una grabación de voz a twitts, o un software de OCR que te permita hacer una foto a un texto y convertirlo en un vídeo de Youtube con fotos que tengan que ver con las palabras reconocidas en el texto sacadas de Google Images mientras que suena de fondo el texto leído por Loquendo. Lo que sea que te guste a ti y a tus compañeros. Pero hazlo. No te frenes por las cosas que no sabes, aprende a superarlas, que para eso están estos proyectos. Que cuando acabe tu curso tengas una lista de cosas que has hecho. Hazlo.

3.- Mantén la ilusión: El mayor problema que suele tener la gente cuando entra a la universidad es una mala gestión de las expectativas. No conocer bien qué es lo que se va a encontrar en la carrera y esperar que con ir ya vas a salir convertido en una estrella de la informática. Un Chuck Norris del Computing. No es así. Vas a aprender cosas preciosas como la marcha de Jarvis, el algoritmo de Melkman o estadística. Vas a entender la diferencia entre programar y ser un arquitecto de software que supera las limitaciones construyendo tecnología, vas a poder entender que hacer las cosas bien permite que un sistema funcione a largo plazo, etcétera. Si te desanimas porque no sabes SAP cuando sales de la Universidad, entonces la única culpa es que no has gestionado bien tus expectativas. Mantén la ilusión con la informática, aprende todo lo que puedas en las clases, y recuerda que tu vida universitaria y aprendizaje solo depende una parte pequeña de las clases. La mayor parte depende de lo que hagas durante estos años de Lunes a Domingo las 24 horas de tu día.
Ahora está en tu mano lo que quieres ser en el futuro, pero en el futuro no estará en tu mano decidirlo tan fácilmente. Ve a la universidad, suspende como ingeniero, estudia, disfruta, practica, cambia el mundo, cambia las reglas del juego, pero sé activo con tu futuro. No pienses que ir a la universidad es una garantía de que vas a saber mucho y vas a salir después de X años siendo un fiera. No. Eres tú el que tienes que aprender durante ese periodo, así que aprovéchalo.

Saludos Malignos!

¿Está tu empresa preparada para un ataque de Phishing?

$
0
0
Tras ver el hackeo en el caso de Ebay, se preguntaba en el artículo si habíamos probado la resistencia de nuestra empresa contra ataques de phishing que buscaran robar las credenciales de los usuarios internos. Este es un caso de ataque típico desde hace muchos años que se puede usar en ejemplos de robo de fotos de famosas o que lo pueden usara los Syrian Electronic Army para hackear a la RSA Conference.

Figura 1: El viejo y el mar. Viejas técnicas de pesca, mismos resultados.

Así que, aceptando el reto propuesto, y con el objetivo de medir y analizar el grado de conocimiento y conciencia sobre la seguridad de la información en la empresa, se realizó una simulación de ataque de phishing a los trabajadores de la empresa. Estos son los resultados obtenidos, que nos han hecho preocuparnos.

El escenario de auditoría

El ataque que se planteo fue muy sencillo, y consistió en hacer llegar a los usuarios un correo que llegaba supuestamente desde el banco que utiliza la empresa para pagar los sueldos, ofreciendo una promoción atractiva e indicando que era necesario suscribirse siguiendo un hipervínculo.

Para hacerlo más creíble, se registró un nombre de dominio relacionado con el nombre del banco, pero que evidentemente no era el del banco. Se gestionó para que todo fuera mucho más aparente, además, un certificado SSL Clase 1 firmado por una autoridad certificante confiable por cualquier navegador, por lo que se eligió StartCom.

Cuando el usuario seguía el enlace, era dirigido a un sitio idéntico al de la Banca Personal del banco que fue copiado con httrack, pero que esta vez estaba controlado por el área de Seguridad de la Información de la empresa. Cada enlace enviado contenía un código único que hacía posible trazar la actividad individual de cada usuario dentro del sitio, para facilitar el análisis posterior y para que fuera más efectivo el APT y no fuera detectado por ningún bot o afectara a otros usuarios, el firewall del servidor solo aceptaba peticiones desde la dirección IP pública de la empresa.

Por supuesto, el sitio de phishing solicita las credenciales, las almacena localmente y redirige a una página de error del sitio real del banco. Por tratarse de información sensible, sólo se almacenó una fracción de las credenciales, con el objetivo de poder verificar si se trata de credenciales que posiblemente eran reales o si eran valores aleatorios.

El análisis de los resultados

Para que sea fácil entender lo que sucedió, clasificamos los usuarios en tres tipos. Los que calificaríamos como alertados y precavidos que no hicieron nada, los curiosos que siguieron el hiper-enlace asumiendo riesgos pero sin introducir las credenciales y las víctimas, que ingresaron los datos. La siguiente tabla detalla el comportamiento de los usuarios luego de recibir el correo:
- Sin Acción: El usuario no siguió el link enviado en el correo.
- Visita: El usuario siguió el link, pero no ingresó sus credenciales.
- Autenticación: El usuario siguió el link e ingresó sus credenciales.
Sorprendentemente, en algunos casos los usuarios visitaron el sitio y/o ingresaron sus credenciales más de una vez. Sólo se consideraron las visitas únicas en cada caso.

Figura 2: Números de cada tipo de acción

Además, cabe destacar la velocidad y efectividad del ataque, ya que una gran parte de los intentos de autenticación, el 72% de ellos, sucedieron dentro de las primeras 4 primeras horas de vida del ataque desde que fueron enviados los correos, lo que hace dudar mucho de la efectividad de los servicios de bloqueos de hoy en día.

Figura 3: Un 20 % de los usuarios tuvieron comportamiento inseguro

En nuestro caso, hay que felicitar al administrador de red de la empresa que recibió el correo y al verificar que se trataba de un sitio sospechoso, bloqueó el acceso al sitio para toda la empresa a los 86 minutos de ser enviados los correos. Luego, a pedido del Área de Seguridad, lo volvió a habilitar. En el caso de haber sido una situación real, el bloqueo hubiera evitado el 63% de los intentos de autenticación por una buena acción del servicio de seguridad de red.

Algunos empleados, más alertados de este tipo de ataques, tomó una actitud activa demostrando que estaban concienciados con la seguridad y el área de Recursos Humanos envió una consulta a la sucursal local del banco, bajo la sospecha de que se trataba de un caso de phishing. Luego de recibir la confirmación por parte del banco, dio aviso al Área de Sistemas para que tomara acción al respecto.

Por último y para dar por cerrado el experimento, desde Sistemas se envió una circular, indicando que se trataba de un correo de phishing y que era conveniente no seguir los enlaces ni enviar las credenciales y luego, se eliminó del servidor toda la información relacionada con el proyecto y se redirigió el dominio a otro servidor.

Conclusiones

Después de esta prueba, me cruce con uno de los usuarios en el cajero automático (ATM) de la empresa, hablando por el teléfono móvil. Estaba furioso porque no podia cambiar su clave de banca personal. Creo que ese usuario aprendió que no debe ingresar credenciales en sitios raros. Este usuario era uno de los que había ingresado 9 veces sus credenciales en el sitio de phishing

El proyecto no sólo sirvió para medir y analizar el estado de seguridad de los usuarios, sino también para concientizarlos de cómo se hacen estos ataques y los riesgos que hay, además de detectar actitudes que ayudan a reducir el riesgo, como la acción activa de verificación por parte del area de RRHH y el Área de Seguridad de Red. Tal vez, un proceso interno más ágil en el que los usuarios puedan pedir a seguridad de red que verifique si un correo es phishing hubiera podido reducir los tiempos.

Los usuarios que ingresaron sus credenciales y luego recibieron información de que se trataba de phishing, posiblemente hayan tomado conciencia sobre el riesgo de seguir enlaces de correos no esperados o ingresar credenciales en sitios no verificados correctamente. Los usuarios que no ingresaron sus credenciales, posiblemente hayan reforzado el estado de conciencia que demostraron al no hacerlo en primera instancia.

Por supuesto, internamente se planifica a futuro, realizar un proyecto similar, con el fin de realizar un análisis comparativo y tomar algunas conclusiones. En un caso de un APT, el atacante solo necesitaría una credencial, y viendo el número de ellas y la velocidad que con que se consiguen, hace pensar que la protección de todas las identidades que se usan en una empresa por solo usuarios y contraseñas no es nunca una buena idea, y que implantar el uso de segundos factores de autenticación es cada vez más necesario.

Autor: V.L.
PD:Nosotros ya lo hemos probado, ahora te toca probarlo en tu empresa.

Comprobar el certificado digital SSH por canal paralelo

$
0
0
Durante este mes se ha publicado en la lista de Bugtraq una pequeña herramienta vía web que realiza una comprobación paralela a la firma del certificado que se sirve por SSH. Esto es útil cuando hablamos de una primera conexión, en la que el certificado aún no está guardado y pineado en la base de datos local del cliente y, por tanto, no puede garantizarse que sea el servidor correcto. Un atacante podría hacer un man in the middle y entregar otro certificado digital.

Figura 1: Error de reconocimiento de clave en conexión SSH

Lo que propone la herramienta es tener en un servidor web una segunda verificación, que por medio de una comprobación por medio de otro canal se compruebe el certificado. Si el fingerprinting de los certificados no es el mismo, se estaría ante un ataque de man in the middle y habría que evitar realizar esa conexión. Esa disponible es CheckSSH.com y lo único que hay que hacer es enviarle la dirección IP o el nombre de dominio del servidor que se quiere comprobar, y la herramienta devuelve el fingreprinting que ella ve.

Figura 2: Servicio Check SSH

En el debate se planteaban muchas cosas, como por ejemplo que el atacante tuviera un man in the middle en el canal de conexión a la web, además de en el canal de la conexión al servidor SSH, que hubiera un bug en el servidor web donde se aloja este código de comprobación o simplemente que los que gestionan este servicio sean los que están haciendo el man in the middle. En cualquier caso de estos, la víctima tendría una falsa sensación de seguridad que ayudaría al éxito del ataque.

Figura 3: Código fuente del servicio CheckSSH para que lo pongas en tu servidor

Con el objeto de disipar las dudas, el servicio lleva HTTPs con un certificado de validación extendida y podrías hacer un Certifiacte Pinning con él. Pero el 100% de certeza, tal y como se plantea el mundo hoy en día es casi imposible. No obstante, han publicado el código fuente del servicio que corre en la web, así que puedes montártelo en tu propio servidor y diseñarte el esquema de seguridad que más se adapte a tus requerimientos gestionándolo tú mismo.

Saludos Malignos!

Cómo te espía tu centro comercial por WiFi y BlueTooth

$
0
0
Desde hace años, las técnicas de Business Intelligence, Data Mining y el algo más reciente concepto de Big Data buscan la forma de ganar dinero con toda la información que sea posible atesorar. Los centros comerciales, lugar donde trabajan grandes vendedores, saben que la información es dinero, y por eso se estudian las ofertas, los packs, la colocación de los productos, el diseño de los paneles, etcétera, basándose en todos los datos que están a su alcance y que son capaces de obtener en sus instalaciones.

Figura 1: Personas, smartphones, redes WiFi y conexiones BT en un Centro Comercial

Desde la cuánto, cómo y a qué horas se llenan las plazas de aparcamiento o qué modelos de coches y con cuanta antigüedad pasan por la barrera del parking. Cuánto tarda una persona en comprar desde que aparca y se va, las cantidades que compra, con qué medio de pago lo hace, qué banco es el que utiliza, qué tipo de cantidades se hace en efectivo, los productos, la relación que hay entre esos productos y el tipo de vehículo y día del mes, etcétera. Toda esa información es útil para generar el mejor catálogo de productos, y poner el descuento en el sitio adecuado, a la hora adecuada, el día adecuado y conseguir maximizar la ganancia.

En algunos sitios - yo esto lo he visto en el Leroy Merlin - te hacen además encuestas, e incluso hay algunos que te piden el código postal para saber desde qué ubicación vienes. Son datos que si el cliente se los da libremente y ellos pueden asociarlos a la compra podrán utilizar para mejorar su sistema.

Por supuesto, entre los tipos de datos que son de interés se encuentra también la información relativa a cómo se mueven los clientes dentro del centro comercial, para ver si hay zonas calientes, zonas con poco tráfico o mal señalizadas, y cómo influye la colocación de la mercancía en la venta en función de los tiempos y distancias que es capaz de recorrer un cliente dentro del espacio de la tienda. ¡Qué se lo digan a IKEA!

Nomofobia: Tú vas donde va tu smartphone

Para hacer seguimiento del movimiento de los clientes se pueden utilizar las populares cámaras de seguridad usando sistemas de reconocimiento de personas automático para poder alimentar esa base de datos o técnicas más modernas y sencillas de implementar, como seguir la ubicación de los dispositivos smartphone y la información que generan sus conexiones a redes WiFi o BlueTooth. La mayoría de los compradores llevan su teléfono consigo, si no no estaríamos hablando del síndrome de abstinencia de la falta del móvil: Nomofobia.

Figura 2: Los compradores llevan su smartphone siempre encima

Utilizar un dispositivo smartphone para seguir a un usuario dentro de una tienda tiene las ventajas de que no solo puedes seguir por dónde se mueve un determinado cliente, sino además tendrías la información de qué dispositivo tiene para tener un perfil más completo de ese cliente, del que podrías tener la marca de su coche, su modelo, su tipo de dispositivo móvil, lo que ha comprado, cuánto se ha gastado y cómo suele comprar. Todo con el objeto de maximizar su satisfacción con la tienda y hacer las ofertas más a medida para maximizar el rédito económico a largo plazo.

Seguir a un dispositivo smartphone es tan sencillo como poner puntos de acceso WiFi que vayan reconociendo las direcciones MAC de las peticiones de búsqueda de redes WiFi, pero también vale con sniffers que escuchen el tráfico de red para ver dónde están siendo emitidos los paquetes. Es decir, no solo con los mensajes de Probe Request para buscar redes inalámbricas se puede hacer esto, sino que si el cliente está conectado a una red ya, se podría analizar desde qué puntos se están emitiendo los paquetes.

Mensajes WiFi Probe Request

El capturar el tráfico de los paquetes Probe Request es especialmente significativo, ya que un terminal emite esos paquetes en busca de las redes que conoce, adjuntando en cada uno de los paquetes el SSID - nombre de la red - WiFi que busca. Así, si una persona tiene metido en el historial de su iPhone o su Android una lista de cinco redes WiFi (la del trabajo, la de casa, la de la cafetería de al lado de trabajo o la del dentista), estará enviando en esos mensajes de Probe Request todos esos datos, permitiendo que el centro comercial los pueda asociar a su dirección de MAC, su tipo de dispositivo móvil, junto con la marca y año de fabricación del coche, su compra, etcétera.

Figura 3: Mensajes Probe Request generados por un iPhone buscando redes WiFi

La gracia de tener los SSID, es que además se podrá saber, utilizando las bases de datos de WarDriving, la ubicación GPS de cada una de esas redes inalámbricas, lo que ayudará a saber dónde vive, dónde trabaja o dónde va al dentista. Y si además sus redes inalámbricas tienen sus nombres por defecto, se podría saber qué operador de comunicaciones es el que tiene contratado en su casa.

La WiFi gratis

Como ya he dicho, no solo se puede hacer con los mensajes de Probe Request de un dispositivo cuando va buscando redes WiFi a las que conectarse. Si se conecta a una de nuestras redes, se podrá acceder a mucha más información de la navegación de ese cliente, pero también al envío de búsquedas DNS, Bonjour (MDNS) o al reporte de las redes WiFi a Apple o Google, tal y como hacen iOS y Android.

Figura 4: iSniff GPS pinta en el mapa la ubicación de los SSID de un iOS capturados por la WiFi

Esto está documentado y estudiadísimo, y existe una herramienta llamada iSniff GPS que saca los mapas de conexión de un cliente con iPhone para saber dónde se conecta a redes WiFi. Pero no solo eso, como ya se vio con WhatsApp Discover, podrían saber hasta tu número de teléfono.

Las conexiones BlueTooth

Además de WiFi, los dispositivos móviles también utilizan BlueTooth para conectarse al sistema de manos libres del coche o al altavoz del cuarto de baño, pulsómetro o lo que sea. El tener activado el descubrimiento de dispositivos en un smartphone hace que se estén enviando señales para conectarse que pueden ser monitorizadas para generar también datos de seguimiento y movimiento.

Figura 5: Direcciones WiFi y BlueTooth en iOS. En muchos casos consecutivas.

En el caso de iOS es aún más curioso, ya que las direcciones MAC de la red WiFi y la dirección MAC de BlueTooth son generadas de forma consecutiva en muchos de los casos, lo que permite que, conociendo una, puedas predecir con un alto grado de probabilidad la otra.

Conclusiones

Es decir, que ya no sería necesario preguntarte en qué código postal vives, ya que con un análisis de tus conexiones WiFi y BlueTooth un centro comercial, una empresa o cualquier curioso podría añadir a su colección de datos mucha más información tuya. Yo por eso, tengo la manía de apagar todas las conexiones inalámbricas cada vez que salgo de casa, y el BlueTooth en cuando me bajo del coche, y solo las activo por necesidad puntual, pero no las llevo encendidas nunca.

Ahora Apple, conocido todo el revuelo que se formó con la publicación de iSniff-GPS y pensando en que se quieren meter en el negocio de los pagos con Apple Pay (de hecho creo que ya están dentro) quieren limpiar cualquier resquicio de dudas de que ellos quieren tus datos. "Nosotros vendemos grandes productos, no tus datos", ha dicho Tim Cook. Le ha faltado decir que los venden muy caros, pero lo cierto es que los venden sí o sí.

Figura 6: Anuncio de Apple del uso de MAC spoofeadas en mensajes Probe Request

Coincidiendo con esto, en la última presentación de iOS 8, Apple anunció un detalle que a mí se me pasó por alto, y que mi compañero Juan Luís en Eleven Paths me apuntó. Esta nueva característica es la de hacer que los mensajes Probe Request de redes WiFi se harán con direcciones MAC spoofeadas, para evitar el seguimiento de direcciones MAC y redes WiFi pero también para ocultar el fabricante del dispositivo, y hacer que los usuarios de iPhone no vayan descubriendo esa información alegremente.

Ahora acaba de sacar iOS 8, y nuestra misión será ver cómo se ha implementado esta característica, para ver si es útil, privada y segura, pero lo que si ha quedado claro y constatado es que la propia Apple confirma que estas técnicas de vigilancia se están haciendo masivamente, por lo que yo sigo apagando mi WiFi, mi BlueTooth y cualquier otra comunicación en caso de dudas.

Saludos Malignos!

Python para Pentesters & Metasploit 3ª Edición en 0xWord

$
0
0
Esta semana ya están disponibles dos nuevos lanzamientos dentro de nuestra editorial de libros de seguridad informática y hacking 0xWord. En primer lugar tenemos un nuevo título que viene a ocupar el puesto número 32 del Catálogo de 0xWord llamado Python para Pentesters y que ha sido escrito por Daniel Echeverri Montoya, a.k.a. "Adastra" o @jdaanial en Twitter.

Figura 1: Libro número 32 de 0xWord - Python para Pentesters

El libro consta de más de 300 páginas y hará las delicias de los que quieran aprender Python para poder hacer pentesting con un lenguaje de programación que les permita automatizar sus tareas. Está lleno de ejemplos y prácticas que permiten probar paso a paso todo lo que se trata. Puedes ver el índice del libro en 0xWord: Python para Pentesters

El siguiente anuncio es una nueva edición, en este caso la tercera, del libro de Metasploit para Pentesters de nuestro compañero en Eleven Paths, Pablo González (@pablogonzalezpe). En esta edición ha revisado el texto y extendido el libro con un nuevo capítulo para los que quieran aprender los principios de la programación de módulos para Metasploit en Ruby.

Figura 2: Metasploit para pentesters 3º Edición. Revisada y ampliada.

La colección completa pasa a estar formada por 32 títulos, de los que por desgracia hay dos títulos agotados, como son el Una al día y el de Hacking con Buscadores. El resto de los libros están todos disponibles por ahora. La lista es la siguiente.

No sabemos si de aquí a fin de año habrá más libros, pero intentaremos que lo que pueda salir antes de navidades esté a tiempo. Mientras tanto, recordad que hay unos packs temáticos que agrupan libros por grupos de contenidos:
- Pack Colección [29 libros]: Todos los libros disponibles
- Pack Security Lover: Si te gusta la lectura y la seguridad informática
- Pack Pentester: Solo para amantes del hacking ético
- Pack Pentester Sistemas: Solo para amantes del hacking ético
- Pack BYOD: Hacking y Seguridad dispositivos móviles
- Pack SysAdmin: Para administradores de seguridad & sistemas
- Pack CSO: Para CSOs/CISOs/CIOs/CEOs
Y que actualmente hay distribuidores en México, Colombia, Argentina/Uruguay, Ecuador, Perú, Bolivia y Chile, todos ellos anunciados en la web de 0xWord.

Saludos Malignos!

Innovation Meets Security: ¡Reserva hoy tu plaza hoy!

$
0
0
En el evento del año pasado, desde Eleven Paths y Telefónica presentamos la oferta de nuevos productos y servicios de seguridad, donde desvelamos por primera vez Latch en Diciembre de 2013. Ahora, el próximo 16 de Octubre de 2014 es es el día que hemos elegido para el evento global de Innovación y Seguridad que organizamos este años desde Eleven Paths en conjunción con Telefónica.

Figura 1: 16 de Octubre - Madrid: Innovation Meets Security

Este evento es muy especial para nosotros, ya que dentro del ADN de Eleven Paths está la innovación constante, así que para este día os contaremos en qué hemos estado trabajando para mejorar todos nuestros productos y servicios, además de contaros cómo vemos las amenazas y la seguridad en el futuro.

Como os podéis imaginar, para este día hemos guardado muchas sorpresas, y os contaremos en un evento de tarde todas ellas - o al menos todas las que ya os podamos contar -. A día de hoy no os puedo avanzar demasiado ya que queremos que sea allí el día del evento cuando se cuenten, pero sí que os confirmo que habrá un proyecto completamente nuevo en el que hemos estado trabajando a lo largo del último año, llamado Path 5, y que lo hemos guardado como colofón del evento. Hemos hecho una agenda, lo suficientemente genérica para que sepas más o menos de que vamos a hablar, pero no hemos querido desvelar aún los detalles.

Figura 2: Agenda descriptiva del evento Innovation Meets Security

El evento está dirigido a responsables de seguridad,  profesionales de seguridad de la información, CISOs, CSOs y Administradores de IT. Hemos reservado el Auditorio principal de Telefónica en el Edificio Central del Distrito C de Las Tablas, pero el año pasado tuvimos más peticiones de asistencia que plazas, así que si quieres venir Reserva ahora mismo tu plaza en la web del evento: Innovation Meets Security. Te confirmaremos lo antes posible para garantizar que no tienes problemas para asistir.

Saludos Malignos!

Crear una JavaScript Botnet con dispositivos Android

$
0
0
El día 1 de Septiembre se hizo noticia la vulnerabilidad publicada por el investigador Rafay Baloch detectada en dispositivos Android previos a la versión 4.4, que había sido identificada con el CVE-2014-6041. En ésta se reporta que el componente WebView de versiones anteriores al framework 4.4 permiten la evasión de su mecanismo de seguridad SOP (Same Origin Policy o Política del Mismo Origen), que es un control que deben implementar los clientes web para limitar que sólo ante determinadas circunstancias un documento web pueda cargar o modificar código en otro si estos están ubicados en orígenes diferentes.

Figura 1: Dispositivos Android vulnerables a bug del XSS Universal

El alcance de esta vulnerabilidad es notable ya que se estima que actualmente en torno al 75% de los dispositivos Android se encuentran en versiones anteriores a la 4.4, y en estos dispositivos suele estar instalado de serie el cliente Web Android Open Source Browser, el cual implementa este componente WebView vulnerable, y además el bug no se reduce únicamente a este componente, ya que como se ha hecho público en otros estudios realizados existen más clientes web vulnerables como Maxthon Browser o CM Browser.

Figura 2: Cuota de mercado de versiones de Android

En cuanto a la vulnerabilidad reportada, cabe destacar lo simple que es realizar una explotación como Prueba de Concepto ya que lo único que hace falta para evadir el SOP en este componente es incluir un byte nulo en un manejador con el código que queremos ejecutar en el contexto del origen de destino:

Figura 3: Inserción del null byte \u0000 para lograr el salto de SOP

Si accedemos a la página con el código anterior desde un navegador que contenga este componente vulnerable veremos cómo somos capaces de ejecutar el script insertado en el manejador onclick.

Figura 4: Código ejecutado saltándose la política SOP

Este método podría ser usado tanto para extraer información como el contenido HTML de una página web desde la sesión de un usuario, el envío de formularios sin el consentimiento del usuario, o  ataques de session hijacking, entre otros.

Figura 5: Explotación del bug desde Metasploit sobre una distribución Kali Linux

Sea como sea la historia de esta vulnerabilidad no acabó en su publicación y desde el día 7 de Septiembre disponemos de un módulo para Metasploit que en su configuración por defecto extraerá la cookie y el contenido HTML que el usuario ve al acceder a la página web.

Figura 6: Extracciíon de la cookie de sesión con el módulo de Metasploit

Es interesante destacar las opciones adicionales que incluye el módulo, ya que nos permitirán jugar con certificados, ejecutar nuestro propio código script si lo definimos en la opción del módulo CUSTOM_JS.Es en este punto donde los más juguetones están aprovechando para mediante una campaña, por ejemplo de spam enviado a usuarios de versiones Android vulnerables, cargar otros scripts tan interesantes como BeEF para hacerse una JavaScript Botnet de dispositivos Android, además de ofrecer otros mecanismos menos sutiles para hacer por ejemplo evasión de las cabeceras X-Frame-Options.

Figura 7: Inyección de scripts personalizados de control

Si a este grave fallo de seguridad le sumamos la fragmentación de la plataforma Android y el abandono por parte de proveedores de dispositivos y adaptaciones del sistema operativo, nos damos cuenta de que estamos ante una situación muy complicada ya que aunque se han publicado parches para corregir este fallo (aquí y aquí) un alto porcentaje de dispositivos no serán actualizados y mantendrán esta vulnerabilidad.

Autor: Miguel Ángel García(@nodoraiz)
Developer en Eleven Paths

Un fallo de CSRF en Twitter para robarte la cuenta

$
0
0
Los ataques de CSRF (Cross-Site Request Forgery) son conocidos hace bastante tiempo. La idea de ellos es bastante sencilla, y el objetivo es conseguir que una víctima, que tiene una sesión con su cuenta en un sitio web, haga acciones involuntarias en esa sesión al abrir un enlace o cargar un contenido externo.

Figura 1: Un bug de CSRF para robare la cuenta de Twitter

A día de hoy es una de las técnicas de hacking más utilizadas, y en el proyecto OWASP TOP TEN, que recoge los diez ataques más utilizadas en ataques a aplicaciones web y donde siguen reinando las técnicas de SQL Injection y el resto de inyecciones de código, ocupa el octavo lugar. 

Una explicación sencilla de CSRF

Para que sea fácil de entender en que consiste el ataque, vamos a suponer una aplicación web para controlar las nóminas de los empleados de una empresa. A esa aplicación web solo puede entrar el administrador y es tan absurdamente sencilla como que hay una lista con los nombres de los empleados junto con dos enlaces a su lado. Uno es un enlace que poner "Subir Sueldo" y otro es un enlace que pone "Bajar Sueldo". Esa aplicación web es tan absurdamente sencilla, que si miramos el código de los enlaces son algo como:
- http://www.server.test/subir_sueldo.php?trabajador=chema
- http://www.server.text/bajar_sueldo.php?trabajador=chema
Cuando se llaman a esos enlaces, lo que sucede es que automáticamente se incrementa o decrementa el sueldo de ese trabajador, en este caso chema, en la base de datos del sistema. Por supuesto, por protección, para que nadie pueda hacer uso de esos procedimientos de incremento y decremento, las aplicaciones subir_sueldo.php y bajar_sueldo.php comprueban que la persona que está enviando esa petición está autenticado como administrador, para lo que es necesario tener una sesión abierta.

El ataque CSRF se aprovecha de esa construcción insegura de enlaces dentro de la aplicación de administración. Es cierto que solo el administrador puede invocarlos, pero si el administrador tiene abierta esa aplicación en una pestaña de su navegador, y en otra tiene abierto  su correo electrónico, bastará con enviar un enlace a http://www.server.test/subir_sueldo.php?trabajador=chema para que haga clic en él para que se ejecute la acción. Si el administrador lo pulsa dentro del correo electrónico, entonces se ejecutará la orden de subir el sueldo a chema.

Esa es una forma muy "burda" de conseguir explotar el ataque, pero lo cierto es que si trasladamos esto a enlaces enviados por Twitter o Facebook o simples mensajes de correo electrónico escritos en HTML que cargan la imagen haciendo uso de img src="http://www.server.test/subir_sueldo.php?trabajador=chema". 

Figura 2: En el año 2007, el propio Gmail fue víctima de un ataque CSRF que generó un gusano

O mucho peor, imaginad que yo sé que tenéis abierto el Twitter en otra pestaña mientras veis este artículo de El lado del mal y cargo un fichero JavaScript malicioso que, usando vuestra sesión de Twitter, empieza a obligaros a publicar cosas, hacer seguimiento a personas o peor, os cambia la contraseña. Esto no podría ser. Sería un desastre.

Protecciones Anti CSRF

Para solucionar esto, se crean las protecciones Anti-CSRF, que consisten en un control del servidor a la hora de controlar desde donde viene hecho el clic. Es decir, en cada enlace que se muestra en una web, o en cada formulario que se carga en una página para que el usuario puede pulsar se genera un token, que se asocia a ese, y solo ese enlace, de tal manera que cuando el usuario hace clic en él debe ser enviado a al servidor junto con el enlace. 

Figura 3: Ejemplo de protección anti-CSRF propuesta en OWASP

En el ejemplo de subir el sueldo, se debería poner algo como http://www.server.test/subir_sueldo.php?trabajador=chema&csrfToken=14123423234234. Esto ayudaría a que si el atacante envía un enlace malicioso deba conocer cuál es el valor del token CSRF válido para la ejecución de la aplicación subir_sueldo.php. Si no lo averigua, el servidor no ejecutará el comando. Por supuesto, la recomendación es no usar esos tokens CSRF en peticiones GET, ya que los tokens quedarán en historiales de navegación, servidores Proxy, Firewalls, sistemas de registro de eventos, etcétera, por lo que lo mejor es hacerlo cambiando el enlace por un formulario.

El bug de Twitter

Esto es algo que hacen casi todos los sitios webs, y entre ellos se encuentra Twitter. Pero... nada de esto vale, si en el servidor no se valida correctamente el token CSRF. Si se envíe el token que se envíe da lo mismo, entonces volvemos a tener ese problema de que cualquiera pueda hacer lo que le de la gana con tu cuenta si la tienes abierta en otra pestaña.

Figura 4: Token Anti-CSRF en el formulario de añadir número de teléfono a cuenta de Twitter

Este es el caso del formulario que permite añadir un número de teléfono a tu cuenta de Twitter como protección, que tal y como podéis ver en el código fuente, cuenta con un token de protección anti-CSRF llamado authentiticity_token, pero... que se olvidó de validar.  Este bug fue descubierto por el investigador colombiano Juan David CastroDylan Irzi, y lo presentó en la pasada DragonJar Security Conference 2014, con una conferencia que puedes ver online sobre ataques CSRF en general. 


Figura 5: Conferencia de Juan David Castro sobre ataques CSRF

En el caso concreto del ataque de Twitter, para robar la cuenta, lo que hay que hacer es enviar un enlace a la víctima. Cuando ella lo abra, se ejecutará el envío del formulario para añadir un número de teléfono a la cuenta de la víctima, tal y como se puede ver en el exploit que publicó. En él, authenticity_token está a null, porque Twitter no lo estaba validando.

Figura 6: Exploit para añadir el número de teléfono sin token CSRF

A partir de ese momento, la cuenta de la víctima estará asociada al número de teléfono del atacante, que podrá robar vía formulario de recuperación de contraseña. Para ello, basta con que el atacante solicite que se le envíe un código de recuperación de cuenta por SMS al número que está asociado a la identidad - que acaba de poner con el exploit de CSRF -. El vídeo completo de la prueba de concepto de cómo se puede robar una cuenta de Twitter por medio de un bugCSRF está disponible en el siguiente vídeo.


Figura 7: Prueba de Concepto de cómo explotar CSRF en Twitter y robar la cuenta

Por supuesto, Juan David Castro lo reportó a Twitter, que lo solucionó y puso en el Hall of Fame por ayudar a que los usuarios no estuvieran expuestos con este bug que en malas manos podría haber hecho mucho daño. Un hacker que encuentra un bug y lo reporta para que los usuarios no estén expuestos sin esperar nada a cambio. Buen trabajo Juan David, tienes mis respetos.

Saludos Malignos!

Retromalware: Detecta y Controla NetBus con Metasploit

$
0
0
En el año 1998 el mundo de la informática conoció el troyano NetBus. Esta pequeña aplicación fue lanzada como una herramienta de administración remota de máquinas, aunque existían algunas versiones más oscuras que eran utilizadas por atacantes para troyanizar máquinas. Yo dediqué tiempo a jugar con NetBus cuando iba al instituto, allá por el año 2001, pero eso es otra historia. En verano me dio por trastear y sacar del baúl de los recuerdos a software que hoy en día tienen poca aplicación, ya que son desbordados por otras herramientas con mucho más poder, pero apareció de nuevo el NetBus.

Figura 1: NetBus 1.70

Decidí echarle un ojo, y ver cómo los creadores de malware de la época hacían para transmitir la información y las órdenes desde un cliente a un servidor. Hay que recordar que el malware de aquella época seguía una arquitectura cliente-servidor clásica. Cuando mandaban el fichero patch.exe (servidor de NetBus) a una víctima ésta disponía de una dirección IP, la cual era una dirección pública. Esto hacía que cualquier usuario pudiera tener conectividad directa con dicha máquina. Después aparecieron los routers y la idea tuvo que cambiarse y ser el “bicho.exe” el que haga la conexión reversa a la máquina del atacante.

Fase 1: Detectando un NetBus

Echando un ojo con un Wireshark a la interacción entre el cliente y servidor en una red me llamó la atención la facilidad con la que NetBus se identificaba.

Figura 2: Tráfico de conexión a un servidor NetBus

En la imagen se ve como el cliente, en este caso una versión 1.60, realiza la conexión con el servidor (three-way handshake) y el servidor “escupe” un segmento con datos. Parece que el servidor muestra el banner, como si de otro servicio normal se tratase. Con Wireshark podemos ver que nos dice la versión a la que nos hemos conectado.

Figura 3: Versión de NetBus en el paquete de datos de conexión

Al ver esto, y viendo que el verano por el norte no ha sido muy productivo a lo que horas de sol se refiere, me puse a trastear con Ruby. Muchos saben que desde el libro de Metasploit para pentesters un servidor anda con ganas de ir haciendo más y más cosas para el framework, aunque no todo lo que me gustaría debido al poco tiempo libre. Para pasar el rato decidí codificar un script en Ruby para, dándole una dirección IP, detectar un NetBus y su versión.

Figura 4: Código en Ruby para detectar versión de NetBus

En el código, muy sencillo, se puede ver como se abre un socket contra una DirecciónIP y un Puerto que, en la versión 1.60 de NetBus es el 6000, es por el que se gestiona. Tras abrir el socket esperamos a recibir un “\r” que es el delimitador que utiliza NetBus, algo que también se puede obtener del mensaje mostrado con Wireshark anteriormente. En él se puede ver que cada comando o información enviada acaba con un“\r”, en hexadecimal 0d.

Fase 2: Implementando el comando GetInfo de NetBus

Si lo que recibimos por el socket encaja con la expresión regular definida para localizar un banner de NetBus se imprime por pantalla la versión. Como se puede imaginar esto es algo bastante rápido de montar, y el sol seguía sin salir por el norte así que decidí ir un poco más allá.

El cliente de NetBus tiene diversos botones que permitían al atacante hacer maldades sobre sus víctimas. Pero, como ya hemos visto antes, la comunicación era trivial, el texto plano es la clave. Al probar el botón de Get Info, el cliente obtiene algo de información de la máquina remota, por ejemplo el Usuario con el que se está conectado en el sistema operativo, la ruta dónde se encuentra el patch.exe o el número de clientes conectados. Si observamos la trama en Wireshark veremos que el comando no puede ser más sencillo “Get Info”, escrito a través del socket, eso sí, que no se nos olvidé el 0d al final, o lo que es lo mismo “\r”.

Figura 5: Trama de red del comando "Get Info" en NetBus

Tras ver esto quise interactuar con el bicho a través del script, era como meterle mano al juguete que tenía de pequeño. El código al final era algo así:

Figura 6: Código para lanzar un Get Info desde Ruby

Es sencillo, si el socket está abierto se manda por él el texto GetInfo con el delimitador 0d al final y esperamos a que patch.exe nos proporcione la información. Una vez recibida, la damos un poco de format sustituyendo los ";" y "|" por saltos de línea y después se muestra.

Fase 3: Controlando NetBus con un módulo de Metasploit

Seguí investigando y jugando un poco con el troyano e implementé también la posibilidad de enviar texto a la víctima, recopilar información sobre el disco duro, por ejemplo listar todos los archivos y carpetas, y la posibilidad de ejecutar un message box en remoto, así que me cree un menú con las opciones de control del troyano que quería implementar y empecé con este proyecto personal de verano para crear un programa en Ruby para controlar NetBus que podéis descargar desde aquí, aunque como salió el sol por el norte y decidí que las vacaciones eran para coger algo de color y lo dejé para el siguiente día.

Figura 7: Panel de control para NetBus

¿Segundo día y también llueve? En efecto, llover y mucho llover por el norte en mis días por allí, por lo que decidí llevar mi pequeño script al mundo Metasploit. Mi idea era hacer un módulo auxiliary, mi prueba de concepto, más didáctico que efectivo en una auditoría, aunque módulos en Metasploit que detectan malware o que detectan paneles de gestión existen. Si visualizamos la ruta modules/auxiliary/scanner/misc podemos encontrar los módulos en Ruby que comentaba. Apoyándome en un módulo scanner el cual ya nos proporciona la posibilidad de escanear rangos de direcciones IP quise implementar la funcionalidad que tenía en mi script anterior.

Figura 8: Módulo NetBus Detector para Metasploit

Es importante observar los mixins que se incluyen con Tcp, scanner y report. Un mixin es una llamada a un método que es proporcionado por otra clase y que simplifica las tareas que realizamos. Por ejemplo, en el caso de Tcp se nos proporciona connect() y disconnect(). Con la primera se crea un socket contra el puerto y dirección IP que toque, recordemos que un módulo scanner coge rangos de direcciones IP y mediante un bucle se van recorriendo estas direcciones IP. El mixin disconnect() nos permite cerrar el socket. Más adelante en este artículo se muestra una zona de código dónde se pueden visualizar tanto el connect() como el disconnect(). La función initialize que todo módulo debe incluir permite inicializar el módulo cuando éste es cargado en el framework. Podemos ver que existen ciertos atributos que se configuran a modo informativo sobre el nombre del módulo, autor, tipo de licencia, etcétera. Esta información puede ser visualizada en msfconsole a través del comando info.

Figura 9: NetBus Detector cómo módulo MetasPloit

Por último, la función initialize tiene una llamada importante que es register_options. Con este método podemos incluir o sobreescribir nuevos atributos o parámetros del módulo. En este caso se indica que el parámetro RPORT por defecto tiene el valor 6000, que como hemos podido ver es un puerto en el que NetBus trabaja. Si decides implementar tus módulos utilizarás esta llamada en algún momento.

Al final la otra función que debe tener un módulo de Metasploit de tipo auxiliary es la de run_host. En esta función se le pasa el target_host, que simplemente será la dirección IP que toque ser escaneada. En otras palabras, como es un módulo auxiliary y de tipo scanner, de forma trasparente al programador el framework le proporciona un bucle que va ejecutando esta función, siendo en cada iteración un target_host distinto. También otra opción viable es la utilización de un número mayor de THREADS, ya que por defecto es 1. Esto también es trasparente al programador gracias al framework, por lo que podemos lanzar distintos hilos que el programador no tendrá que realizar la gestión ni de esto, ni de la llamada a run_host con distintos valores.

Figura 10: Código del módulo auxiliary de NetBus Detector

Como se puede ver en la definición de la función run_host se abre un socket a través del mixin connect. Una vez abierto el socket se espera que patch.exe, el bicho de NetBus nos envíe su versión. Tras esto se imprime la por pantalla que se ha encontrado en una dirección IP una versión de NetBus. En este punto se podría utilizar una expresión regular para asegurarnos que lo encontrado es lo que buscábamos. En el momento que se encuentra una dirección IP infectada se muestra un menú al usuario para que interactúe con él. A modo de prueba de concepto se han implementado algunas funcionalidades para manejar el troyano.

Figura 11: El panel de opciones de NetBus Detector para controlar NetBus desde Metasploit

A continuación podemos ver cómo se puede lanzar un message box sobre la máquina infectada. Realmente se ha implementado un mini cliente de NetBus en esta prueba de concepto. Posteriormente se muestra la captura dónde se recibe lo que ha pulsado el usuario víctima.

Figura 12: Un mensaje enviado con NetBus Detector desde Metasploit

Por último, quiero mostraros una función interesante como es el listado de ficheros que se encuentran en el disco de la víctima. Tras analizar con Wireshark cómo realiza esta operación paso a comentarla. El cliente legítimo manda un “GetFiles” a través del socket abierto en el puerto 6000, el servidor nos contesta con “DiskDone” y nos indica un tamaño en bytes de lo que ocupa toda la información (textual) que recibiremos. Después de esto, el cliente legítimo abre un segundo socket al puerto 12346 y es dónde tras abrir la conexión se recibe toda la información del disco duro.

Figura 13: Datos de DiskDone

Tenéis disponible el código en mi github NetBus Detector para poder trastear con ello un rato y poder evolucionarlo. Si quieres aprender más sobre Metasploit y un poco del desarrollo en el framework os invito a leer "mi libro" de Metasploit para pentesters.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor del libro "Metasploit para Pentesters"

ShellShock puede afectar a tu web, tu Linux, tu Mac OS X, tu router, tu punto de acceso WiFi o tu switch

$
0
0
A mediados de esta semana se ha hecho público un fallo de seguridad, al que se ha llamado ShellShock, en la popular interfaz de comandos Bash que afecta a todas las versiones lanzadas desde Bash 1.14.0 hasta Bash 4.3, o lo que es lo mismo, a todas las versiones desde el año 1994 hasta el reciente parche que se ha publicado dentro de las últimas 48 horas. El bug, que realmente son dos, tienen los CVE-2014-6271 y CVE-2014-7169 y afectan a sistemas UNIX, Linux y OS X que tienen instalada esta herramienta en sus plataformas.

Figura 1: ShellShock bug en Bash 1.14 hasta Bash 4.3

Comprobar la versión de tu sistema es fácil, solo necesitas usar el comando help y te dirá la versión de la bash que estás usando. En el caso de los usuarios OS X la versión que se distribuye con la última versión es la 3.5.2, así que todas las versiones de sistemas operativos de Mac OS X desde su concepción están afectados por ShellSock.

La forma de comprobar con una prueba real si tu sistema es vulnerable es bastante sencilla, solo debes irte a tu interfaz de comandos Bash y probar a declarar una función como una variable de entorno, pero añadiendo después de la definición un comando a ejecutar. En este ejemplo un comando para que muestre el mensaje de Owned. Luego se invoca bash para que cargue las variables de entorno y la ejecute el comando.

Figura 2: Test de ShellShock en Bash de OS X

Explotar este bug tiene muchas posibilidades, pero es especialmente peligroso en los servidores web que utilizando el motor CGI (Common Gateway Interface) se apoyan en el sistema operativo para dar sus servicios web. Es decir, a diferencia de las aplicaciones .NET, JSP o PHP que se basan en la interpretación por parte de un motor de scripting de las programas que forman la web, las aplicaciones CGI se tiran directamente con ejecuciones desde el sistema operativo, lo que permite interactuar con el interfaz de comandos, sea SH, KSH o Bash.

Recordaréis que hace unos años hubo un bug casi igual de serio con PHP corriendo en modo CGI, donde se podían inyectar comandos en la llamada de PHP, y eso podría permitir ejecutar una Shell en el sistema para controlar todo desde una WebShell. Esto mismo se puede hacer ahora, aprovechando la definición de variables que se haga en la aplicación CGI ya sea llegando a ella por cualquiera de los parámetros que se envíen por GET o por POST, o por cualquiera de los datos de entrada, como por ejemplo el USER-AGENT o las Cookies.

Figura 3: Test de variables de entorno en webs CGI

El valor de USER-AGENT es un campo de entrada que habitualmente se usa en las aplicaciones CGI para definir variables, tal y como te puedes encontrar en muchos test.cgi por Internet. Manipulando el valor del USER-AGENT es posible meter una webshell con el bug ShellSock, tal y como se ha publicado en el blog de Eleven Paths para explicar la peligrosidad del sitio.

Figura 4: Subida de una WebShell a un servidor web vulnerable a ShellShock

En nuestro sistema de pentesting persistenteFaast, metimos un plugin de detección de ShellShock - al igual que tiene el de PHP en modo CGI, HeartBleed y cientos más - a las horas de que se hiciera público el bug, para avisar a nuestros clientes que están siendo monitorizados de en qué servidores se encuentra. Tuvimos que afinar bastante para poder resolver el Error 500 del que tanto se habla por ahí, pero conseguimos un plugin de detección de lo más estable.

Figura 5: Plugin de ShellShock en Faast ejecutnado shell

a que este bug te lo puedes encontrar en el sitio menos inesperado de tu infraestructura, como por ejemplo el panel de administración de un router, un switch o un punto de acceso WiFi que, tan comúnmente, cuentan con este tipo de paneles de administración web.

Figura 6: Búsqueda de paneles web CGI en Shodan

En ellos, con el objeto de reducir al máximo el software a instalar, la mayoría de los paneles están corriendo en CGI. Basta con darse un paseo por Shodan y con las consultas adecuadas localizar paneles de administración web expuestos a Internet, corriendo con una Bash vulnerable que da soporte a webs funcionando en modo CGI suficientes como para que la NSA y su programa de hacking de routers, switches y electrónica de red se ponga las botas, pero que si no tienes cuidado puede poner en riesgo también tu red WiFi a visitantes no deseados. No te olvides de ellos.

Saludos Malignos!

Cinco charlas en cinco días en cinco sitios distintos

$
0
0
Esta semana que viene, al final, se me ha complicado un poco más de la cuenta, y terminaré haciendo un número de cosas superior a lo normal. No obstante, como siempre me dices "avísame cuando vengas", pues que no sea por eso.

Figura 1: Lista de actividades para esta semana que entra

[1] Barcelona: Clinic SEO

El lunes 29 de estaré en el Espai Jove La Fontanawww.lafontana.org, en la Gran de Gracia 190-192 08012, Barcelona, dando una charla sobre el mundo del Hacking y el SEO. Miguel Pascual dará una charla de Black SEO así que yo hablaré de algunas curiosidades y maldades sobre cómo funcionan los buscadores. Para ir al evento, puedes registrarte en la web del evento: Clinic SEO.

[2] Radio: La Mañana con Javi Nieves

Esto, como todos los martes, será en La Mañana con Javi Nieves, esta vez será el 30 de Septiembre entre las 10:00 y las 10:30. Ya sabes que son solo unos minutos, y que los podcasts luego los suben a la red. 

[3] Radio+Streaming Internet: Yu, No te pierdas nada

El martes por la tarde, también iré al programa de radio de Los 40 Principales de Dani Mateo y compañía, llamado Yu, no te pierdas nada.

Figura 2: Yu, no te pierdas nada en Los 40 Principales

Ese programa además, se puede seguir en directo por streaming de vídeo y con interacción en Twitter. Más información en su web: Yu, no te pierdas nada.

[4] Villaviciosa de Odón (Madrid): Máster Class en la UEM

El primer día de Octubre daré una Máster Class en la Universidad Europea de Madrid sobre riesgos de seguridad por atacantes internos, a la que está todo el mundo invitado. Será a última hora del día para que pueda venir la gente después del trabajo. Eso sí, creo que el aforo es limitado y no había mucho ya. Si quieres venir, tienes más información en la web: Máster Class: Seguridad Empresarial frente a insiders.

[5] Albacete: Navajas Negras

Terminaré la semana el viernes 3 de Octubre en Navajas Negras dando una charla por la tarde titulada "No me indexes que me cacheo" o "No me cachees que me indexo", que tanto monta, tanto, aunque veremos que no es tan así. No la he dado nunca, y ni tan siquiera me ha dado tiempo a terminar el artículo que iba a hacer de este tema para El lado del mal, pero espero que esta tarde me de tiempo a dejarlo todo listo para no desmerecer con tan buen ponente que hay ese día.

Figura 3: El viernes 2 de Octubre en Navajas Negras

Estarán por allí los libros de 0xWord, que podréis comprar en el congreso. Por último, aprovecho para pediros disculpas por anticipado a todos, pues después de mi charla seguramente deba regresar a Madrid, por lo que no tendré mucho tiempo para estar por allí con vosotros. 

Y eso es todo lo que tengo "público" para la semana que viene - además de los artículos que saldrán por El lado del mal -, así que si que si quieres apuntarte a algo, ya sabes dónde puedes localizarme.

Saludos Malignos!

Un misterio criptográfico en la Universidad

$
0
0
Siempre estamos expuestos a cantidades ingentes de información, la mayoría de las veces visual, y sobre todo escrita, aunque habitualmente paseamos por el mundo sin prestarle demasiada atención. Pero, si nos tomamos cuidado para intentar fijarnos en los detalles, a veces nos podemos llevar más de una sorpresa. La siguiente historia es un claro ejemplo de esto, ya que por prestar atención al entorno, acabé involucrado en un misterio de criptografía.

Figura 1: Un misterio criptográfico en la universidad 

Un encuentro fortuito en la Universidad

A principios de este año, caminando por los pasillos de una facultad de una universidad pública conocida tuve la “suerte” de encontrar esto tirado en el suelo, documento que me he tomado la libertad de borrar –de forma muy amateur – algunos segmentos de la hoja para no implicar a las personas de la lista.

A primera vista es una página que podría pasar desapercibida por ser una hoja con los resultados y calificaciones de algún trabajo o examen de la universidad, sobre todo por la estructura y más aún al encontrarse debajo de uno de los tablones que se usan a tal fin. La sorpresa viene cuando te paras a intentar leer detenidamente algo de lo que está escrito en ella, ya que aquello es totalmente ilegible a simple vista.

Figura 2: El extraño documento tirado en la Universidad

Cualquier otro en mi lugar hubiera dejado el papel donde estaba o, al recogerlo y verlo, lo habría tirado a la basura. Pero a mí me picó la curiosidad, así que me lo guardé para “analizarlo” más tarde en casa. El papel me recordó a los problemas y retos a los que jugaba con mi abuelo cuando era más pequeño. Al fin y al cabo, detrás del texto estaba la atracción inherente de todo reto.

Ya que había decidido que iba a jugar con esto, antes de abandonar el lugar de los hechos tuve la precaución de revisar sin éxito el suelo y otros tablones adyacentes para ver si encontraba más especímenes de este tipo, pero no hubo ninguna suerte. Este ejemplar era único en esa zona. Habría que intentar sacar todo lo necesario de allí.

Primeras impresiones sobre el misterio

Una vez en casa, confirmé mi idea de que se trataba de algún tipo de lista de clase: arriba podemos ver el encabezado con los datos de la asignatura y el curso en cuestión, así como el escudo de la Universidad (bueno, lo podríais ver si no lo hubiera eliminado de la imagen). Más abajo encontramos tres columnas, con lo que, a priori, parecen ser nombres y apellidos, DNIs y notas numéricas. El hecho de que el listado central estuviera ordenado alfabéticamente (aunque sin ningún sentido en castellano) reforzaba esta idea. Pero por qué estaba codificado era el misterio.

Como no era el primer documento cifrado con el que me topaba, decidí intentar descifrarlo. No estaba seguro de si un escáner OCR, incluso aplicado al documento original, funcionaría correctamente para pasar los caracteres al equipo y lanzarle baterías de análisis automático, así que primero decidí tratarlo analógicamente, al estilo de mi abuelo con sus acertijos.

Lo primero que se me ocurrió fue someterlo a un análisis de frecuencia para ver qué letras o grupo de letras tenían mayor número de apariciones, pero deseché la idea por dos motivos: primero, que eso solo me serviría con los caracteres alfabéticos, no tendría utilidad ni para números ni para el resto de caracteres como puntos o comas. Y segundo y más importante, me parecía un esfuerzo importante como para hacerlo a mano.

Así que le saqué una foto a la página y la compartí con un grupo de amigos a los que les gustan estas cosas y que a veces tienen muy buenas ideas. Introduje el tema preguntando de qué tenía pinta la hoja, y todos coincidieron en decir que se trataba de un listado de notas de la Universidad (les adelanté que no creía que se tratase de las notas de una asignatura de criptografía, aunque como idea no estaba mal). Algunos sugirieron la posibilidad de que estuviese escrito en otro idioma, aunque seguro que no era así, pues los caracteres pertenecen al alfabeto latino. Les pedí ayuda para resolver el primer reto: decodificar la hoja. Si lo conseguíamos estaríamos un paso más cerca de conocer el resto de detalles al respecto.

Figura 3: Ideas sobre la decodificación del listado

Tras un ratito de debate (en el que surgió la útil pero aburrida idea de usar Haskell para descifrarlo), llegamos a la conclusión de que estaba codificado usando una variación del clásico Cifrado César, en la que en lugar de desplazar cada carácter (ojo, no solo las letras) tres posiciones a la derecha el desplazamiento era de una sola posición. El hecho de que se mantuviese el orden alfabético era una pista importante para ello.

Figura 4: El debate en WhatsApp fue dando ideas

Una vez comprobado que se trataba de ese cifrado (traduciendo algunos segmentos y viendo que en efecto se corresponden con términos en castellano: González, Gómez… Y en efecto la cadena EOJ coincide con las siglas DNI) el siguiente paso era averiguar cómo y por qué. Es decir, la criminalística y la criminología del hecho.

Es un detalle curioso el hecho de que también tanto los números (como se puede comprobar en el encabezado de la hoja, donde se lee Dvstp!Bdbel n jdp!3124.25Curso académico 2013,14) como los signos de puntuación estuviesen desplazados sugiere que el cambio se ha hecho sobre una tabla de caracteres, bien en un driver o bien en una tipografía diseñada ad hoc.

Investigación de campo en la Universidad

Para ello el primer paso era analizar en profundidad el contenido de la lista. En efecto se trata de una lista de clase, con los alumnos matriculados en una determinada asignatura ordenados según sus apellidos alfabéticamente. En la primera columna aparecen los DNIs correspondientes, mientras que la última no refleja ni las calificaciones ni los nombres de los trabajos. En su lugar lo que aparece son los usuarios virtuales de cada alumno de la universidad.

Esta información, aunque es fácil de conseguir (pues el algoritmo que se usa para generarlos es unir las tres primeras letras del nombre y ambos apellidos; en caso de conflicto con otro usuario ya existente se añade un contador numérico al final al usuario virtual), se supone privada, de forma que solo tienen acceso a ella el propio usuario y los servicios informáticos y de administración de la universidad (según me contestaron cuando pregunté, hay veces en que ni siquiera los propios profesores tienen acceso a esa información). Por tanto y teóricamente no es algo accesible a todo el mundo (lo que supone, por tanto, una violación – aunque cifrada – de la intimidad de la gente, en especial que la persona responsable dejase el papel tirado en medio del pasillo).

Bien, dicho esto, ese hecho despertó mucho (más) mi curiosidad: si se trata de una información ya de por sí restringida o clasificada, ¿qué sentido tiene codificarla de nuevo? ¿Quién esconde una sala dentro de una base ya secreta? ¿Y a qué fin? Además, para más INRI, usando un cifrado técnicamente tan débil (visiblemente puede que asuste). Por más que buscaba, no le veía sentido.

Cabían dos opciones:
- Que fuese algo involuntario: que se hubiese producido un error en la impresión.
- Que fuese algo intencionado: bien como reto de alguien o para ocultar información.
Investigación de campo en Internet

Investigué por Internet acerca de fallos que ocasionasen el cambio de caracteres en la impresión, pero no encontré nada al respecto. Y la verdad es que me parecía algo bastante extraño como para que no hubiese bibliografía al respecto. También podía tratarse de un virus informático o que la universidad usase un sistema de cifrado digital que deja mucho que desear. En el segundo caso, había tres enigmas que resolver: quién, cómo y por qué.

Dado que, tras mi infructuosa búsqueda por la red, me pareció más probable (e interesante por supuesto) la segunda opción, decidí diseñar hipótesis para la misma.

En cuanto al quién, la cosa era bastante evidente: alguien con acceso a esa información (me parecía muy improbable que alguien hubiese diseñado un ataque dirigido para conseguir tal información, máxime teniendo en cuenta que las contraseña no aparecen – por suerte – en la página). Esto reduce bastante la lista a profesores y miembros de administración (suponiendo que ningún alumno haya hecho un listado de este tipo). Y hace aún más difíciles las respuestas al por qué. ¿Para qué iba a querer un miembro del personal de la universidad codificar una hoja así?

Con respecto al cómo, la opción de hacerlo manualmente siempre está ahí, pero la descarté la primera por tratarse de un trabajo de chinos, como se dice, y muy probablemente nadie se iba a tomar ese esfuerzo para nada. También existía la posibilidad de que alguien hubiese creado una fuente tipográfica con estas características, que se hubiese usado un script para cifrarlo, un programa de cifrado para dummies…

Sin embargo, era el por qué lo que más intrigado me tenía. Un amigo mío, que conoce de mi afición por la criptografía y los juegos de ingenio de este tipo, me sugirió que había encontrado a mi alma gemela en esa facultad: alguien a quien le gustaba resolver enigmas como a mí y que lo había colocado allí a ver si alguien era capaz de resolverlo (lo cual era una idea rebuscada pero que a mí me gustaba bastante). Ese mismo amigo me incitaba a que escribiese un mensaje usando el mismo cifrado diciendo que había resuelto el misterio y lo dejase colgado donde encontré el primero (lo cual era bastante difícil, pues no recordaba dónde había sido). Además, ¿qué mensaje secreto podía haber oculto en una lista de clase?

Una resolución fortuita del misterio

Mi teoría se estaba asemejando peligrosamente a los relatos de misterio de Poe. Incluso llegué a pensar que podía tratarse de algún apasionante reto del estilo del recientemente resueltoCicada 3301. Finalmente y por motivos de falta de tiempo, deseché esa última opción, aunque me hubiese gustado continuar mis pesquisas por ahí. Así que dejé apartado el asunto durante un tiempo. Hasta que unos meses más tarde, ordenando papeles, encontré con algo que me ayudó a esclarecer el asunto. Di con lo siguiente:

Figura 5: Mi piedra rosetta para este misterio 

En la comparación de ambas páginas se puede comprobar cómo el número de letras, las líneas y la estructura del documento coinciden tanto en la versión codificada como en la que está en cristiano. Este se trataba (el de la izquierda) de un documento que mi padre me imprimió hace unos años, pero que “por error” quedó impreso así, por lo que luego tuvo que hacer una copia nueva (a la derecha). Y mira por dónde, a este documento le sucedía exactamente lo mismo que a la página misteriosa.

Ya me había topado con eso antes, pero nunca le había prestado atención. Hasta ahora. Esta evidencia viene a confirmar la teoría de que se trata de un bug en algún driver de la impresora, ya que el suceso ocurrió en dos sistemas completamente distintos.

Tras reportar el fallo de seguridad al organismo correspondiente de la universidad (el sistema de gestión informática), sin obtener hasta el momento respuesta suya, contacté con Chema Alonso para contarle acerca del misterioso caso; le pareció interesante y me ofreció la oportunidad de publicarlo en un artículo en El lado del mal, por lo que le estoy muy agradecido. ¿Y vosotros habéis tenido alguna experiencia similar? ¿Se os han desordenado las letras al imprimir algún documento?

Un saludo,

Autor: Nacho

¿Se deben usar passwords complejas en la web?

$
0
0
Hace un tiempo escribí un artículo titulado "Hay que acabar con las passwords complejas en los servicios online" en el que venía a explicar por qué creo que el recomendar masivamente a los usuarios que pongan contraseñas complejas en cualquier página web que se registra no tiene sentido. 

Figura 1: Gestión de contraseñas complejas

En aquel artículo recogí mis pensamientos sobre tres ideas principales.
1) Las passwords complejas no defienden de la mayoría de los ataques.
2) El usuario no puede ser el responsable de toda la medida de seguridad/inseguridad. Es decir, no podemos dejar que el usuario sea el determinante de la seguridad como dije en "Mea Culpa, Penny".
3) La mayoría de las medidas de seguridad deben caer de manos del servidor.
En aquel momento no había leído aún algunos trabajos académicos, pero con el tiempo fui descubriendo que a esta conclusión que yo había llegado por mi propia experiencia, hace tiempo que había sido estudiada y documentada en varios artículos que hoy os paso a dejar por aquí.

[1] ¿Sirven para algo las passwords complejas en la web?

Este primer documento recoge la primera de las tres ideas que use como argumento. La mayoría de los ataques que se utilizan en el robo de identidad no se ven afectados para nada si la contraseña es o no compleja. Que sea una password compleja o que no lo sea da exactamente igual.

Figura 2: ¿Sirven para algo las passwords fuertes en la web?

[2] El esfuerzo finito en la gestión de contraseñas que se le puede pedir a un usuario

Este segundo trabajo está centrado en la premisa de que si la seguridad de tu sistema depende de que el usuario haya elegido passwords complejas ese es un escenario poco realista, ya que el esfuerzo de los usuarios es finito y hay, por tanto, que identificar qué grupos de cuentas son en las que se puede exigir una password compleja y en cuál hay que asumir que no. Interesante.

Figura 3: El esfuerzo finito de los usuarios en su seguridad

[3] Las medidas deseguridad del sitio para no hacer necesarias las passwords complejas

En el artículo que yo escribí, decía que debía ser el sitio web el que ofreciera suficientes medidas de seguridad para hacer que las passwords no tuvieran que ser complejas, ya que las identidades estarían protegidas. La lista de medidas que yo enumeré fueron:
a.- Usar un segundo factor de autenticación.
b.- Evitar ataques de fuerza bruta a la password
c.- Evitar ataques de fuerza bruta al usuario
d.- Almacenamiento robusto de contraseñas
e.- Cifrado robusto end-to-end
En el último trabajo de Microsoft que os cito, se vuelve a hablar del poco sentido que tienen las passwords complejas en la mayoría de los escenarios, y lo acaban resumiendo con este cuadro en el que en cada situación, al final, da igual que la password sea compleja o no.

Figura 4: ¿Dónde ayuda algo una password compleja?

Solo en el caso del Offline Guessing Attack cuando el fichero ha sido obtenido por el atacante y el administrador del sitio no lo ha detectado es cuando una contraseña compleja gana algo de tiempo, pero no mucho más.

Al final, si gestionas una larga base de datos de usuarios online, poner un segundo factor de autenticación y una contraseña - como Latch, Verificación en 2 Pasos vía SMS o Google Authenticator - sencilla ayudará al usuario a estar más seguro, a no olvidarse la contraseña y generar problemas de soporte, y beneficiará tanto a la usabilidad como al negocio en general.

Saludos Malignos!
Viewing all 4223 articles
Browse latest View live