Mostrando entradas con la etiqueta ISV Magazine. Mostrar todas las entradas
Mostrando entradas con la etiqueta ISV Magazine. Mostrar todas las entradas

miércoles, octubre 22, 2008

La Wifi de mi casa (o de mi hotel)
es particular

***************************************************************************************
Por Alejandro Martín y Chema Alonso
Publicado en ISV Magazine Septiembre 2008
***************************************************************************************
Mucho se ha hablado sobre la seguridad en redes Wireless, pero sin embargo, aunque parezca mentira, aun no ha sido suficiente para hacer entender al usuario menos técnico de los riesgos de una red Wireless insegura.

Supongamos que tenemos un flamante router de conexión a Internet Wifi en nuestra casa con un sistema WEP. En ese entorno, da exactamente igual que contraseña pongas, que sea compleja, sencilla, larga, corta o de colores. Esta contraseña es de una complejidad prácticamente nula para un atacante sacarla, con lo que el atacante podrá, a partir de ese momento por ejemplo: conectarse a tu red y colgar un emule (para que a él no le vaya lenta su conexión a Internet que tiene que trabajar) o hacer trastadas ilegales desde tu dirección IP y ya si eso, si pasa algo malo en el futuro, dios no lo quiera, ya contestas tú sobre las consecuencias o podrá por ejemplo, disfrutar del placer de la lectura de tus conversaciones de Messenger si no has utilizado un programa de cifrado para el mismo, o comparar si realmente puedes permitirte el BMW ese que tienes en la puerta mirando el extracto de tus cuentas bancarias.

Sí, es así de sencillo para un atacante si tienes una red con conexión WEP. Claro, la alternativa es utilizar WPA/WPA2. Ambas tecnologías son bastante similares en su funcionamiento, diferenciándose únicamente en los algoritmos de cifrado y de integridad utilizados. En estos entornos, en redes WPA/WPA2, hay dos formas de configurar nuestra red: El modo “empresarial” y el modo “personal”.

La primera, en modo empresarial, utiliza un servidor RADIUS para autenticar las conexiones, permitiendo que los usuarios o los ordenadores se autentiquen por contraseñas, certificados digitales, etc… Este sistema permite que cada cliente de la red wireless tenga una identificación distinta de sus compañeros de red…y esto es bueno para la seguridad. Sin embargo, esta infraestructura suele requerir más servidores de los que un usuario puede disponer en su casa.


Imagen: Configuración punto de acceso con WPA y servidor RADIUS

En la otra infraestructura, en la WPA/WPA2 personal, todos los usuarios utilizan una misma clave para autenticarse en la red… y esto es malo. Cuando un equipo se autentica en una red el conjunto de intercambio de mensajes es conocido y se realiza a partir de derivadas de la clave. Esto permite a un posible atacante qué, si captura los paquetes de autenticación, conocidos como “handshake” o saludo, pueda intentar saber cuál es la contraseña de la red. La idea es sencilla: El atacante sabe que los paquetes que ha capturado son derivados del nombre de la red y la clave de la red así que, como conoce todo (porque es público) menos la clave de la red, puede ir probando diferentes claves, aplicando el mismo algoritmo que se aplica en las redes WPA/WPA2 y si el resultado es igual a lo que se ha capturado entonces esa es la clave.


Imagen: Crackeo de clave WPA con AirCrack

Estos ataques, realizados por fuerza bruta o por diccionario, se han optimizado mediante el uso de tablas pre-calculadas, es decir, ya existen hasta 33 GB de datos ya calculados con valores de red disponibles en internet. Esto quiere decir que si el nombre de tu red y tu clave son sencillos o han sido ya pre-calculados, para un atacante va a ser tan sencillo como meter tu handshake y en un par de segundos conocer tu clave y a partir de ese momento…. : conectarse a tu red y colgar un emule … y todo lo demás.


Imagen: http://www.renderlab.net/projects/WPA-tables/

En el caso de las redes WPA/WPA2 personales, el uso de un SSID no trivial y de una clave lo suficientemente compleja, aprovechando al máximo los 64 bytes que permite el protocolo, permitirían disponer de cierta seguridad frente a atacantes externos y parece la única solución medio segura para redes particulares… sin embargo…. Sin embargo, tanto en redes WEP como en redes WPA/WPA2, la seguridad de la red queda anulada totalmente contra atacantes internos.

En el caso de WEP, cualquier usuario de la web que tenga la clave WEP puede ver todo el tráfico generado por todos los usuarios en claro, así que, si compartes la red con tu esposa, hermano, hermana, primo, cuñada o suegra, y la tienes en WEP, cualquiera de ellos va a poder ver el tráfico que generas.

En el caso de las redes WPA/WPA2, el cifrado de los datos se hace con claves distintas para cada usuario, es decir, cada uno de los clientes de la red utiliza un conjunto de claves de cifrado (4 para conexiones unicast y 2 para broadcast) que son personales y que además se cambian cada cierto tiempo.

No obstante, un atacante interno en una red WPA/WPA2 que capture el handsake va a poder conocer todas las claves que se han generado para este usuario en particular. La idea es sencilla, el cliente, utilizando la clave de la red WPA intercambia unos numeritos con el punto de acceso. Estos numeritos son utilizados para generar una clave de cifrado temporal que se usará para cifrar las claves que se van a crear para ese cliente y enviárselas. Si un atacante interno conoce la clave WPA/WPA2 va a poder descifrar y acceder a la clave de cifrado temporal y por tanto, a descifrar lo que con ella se cifre. En este caso, las claves de cifrado del usuario. Así, un atacante interno podrá: disfrutar del placer de la lectura de tus conversaciones de Messenger si no has utilizado un programa de cifrado para el mismo, o comparar si realmente puedes permitirte el BMW ese que tienes en la puerta mirando el extracto de tus cuentas bancarias, bla, bla, bla…


Imagen: Datos capturados enviados con WPA capturados y descifrados con ConmmView



Imagen: Página html descifrada a partir del tráfico WPA capturado y descifrado con CommView

Al final, cuando te conectas en un hotel con WEP o WPA/WPA2 personal o cuando le dices a tu primo que viene de visita: “La clave es 283449sufjlkas,.3we09” la seguridad de tu red, ya sea la que sea, se ha terminado así que, aquí tienes unas recomendaciones:

1) WEP es malo, no lo uses nunca. Si vas a un hotel y tiene WEP conéctate sólo a través de conexiones seguras que puedas comprobar mediante certificados digitales comprobables o usa una VPN (para viajar las VPN-SSL son muy cómodas y funcionales).

2) WPA/WPA2 con una contraseña débil es malo, y desde que ha aparecido NVidia Cuda aplicado al crackeo de WPA/WPA2-PSK reduciendo los tiempos un 10.000% las que no sean cambiadas cada poco tiempo también son débiles.

3) Si tienes WPA/WPA2 con un SSID fortificado y una contraseña fortificada de 64 caracteres con un montón de caracteres raros mezclados no le des la clave a nadie, pues todo aquel que tenga la clave podrá ver todos tus datos.

PD: Tal vez eso de montar la VPN sea una buena idea.. ¿no?

Saludos Malignos!

***************************************************************************************
Por Alejandro Martín y Chema Alonso
Publicado en ISV Magazine Septiembre 2008
***************************************************************************************

viernes, noviembre 16, 2007

He pensado que…

***************************************************************************************
Artículo publicado en ISV Magazine Noviembre de 2007: "He pensado qué..."
***************************************************************************************

He pensado que… ¡Vamos a meternos en el comercio Online!

Así; sonriente; con los dientes deslumbrando cual villano antes de recibir la paliza del héroe en la batalla final, se presenta el Jefe [de sonrisa] Profident una tarde, después de haberse tomado un orujito de hierbas y haber fardado con otro(s) jefe(s) sobre los servicios de la compañía, de lo bien que va la empresa y del excelso crecimiento en ventas que llevamos este año en el Q2, H1 o el parcial que toque del año fiscal.

Y cuando dice “Vamos”, realmente está diciendo “Tienes que” lo que significa: “Te toca pringar”. Esto no tendría que ser un gran problema, que para algo trabajamos en esta profesión, si se fueran a realizar las cosas bien, es decir, se inicia un proyecto, con una fase de toma de requisitos, otra de validación de los mismos, selección de recursos, formación, etc… Aquella asignatura de “ciencia ficción” que se llama Ingeniería del Software y que para colmo suele tener varias partes, como las trilogías de Star Wars (Ingeniería del Software I: Un nuevo amanecer con UML, Ingeniería del Software II: La rebelión Orientada a Objetos e Ingeniería del Software III: El retorno del componente y el código manejado) Vamos, lo que viene siendo el ser un Ingeniero, pero… no, no va a ser así.

Si tienes la suerte de los informáticos, la cosa empezará tal que con la elección de la tecnología a usar basada en la lectura de algún infame blog, de esos que iluminan nuestra dichosa Web 2.0, en la que un Técnicoless (dícese de todos aquellos que no han tirado una puñetera línea de código en su vida y se nombran referentes en Internet opinando a diestro y siniestro sobre las bondades o inconvenientes de determinadas tecnologías) le ha convencido de que Java, Mono, .NET o Perl es la panacea para todos los problemas.

“En dos semanas tiene que estar que con estas tecnologías ya ni tienes que programar”. Esa frase te dirá tu excelso Jefe Profident tomándose un café (a tu costa, por supuesto) en la máquina esa, que no solo crea úlcera de estómago, sino lo que es mucho peor, adicción. A eso tú piensas en contestar algo así como “pues te pones tú en la •$%%•$ de sito que me has puesto y ¡ale!, tirando líneas de código machote”, pero te callas; y te pones; y comienza el proyecto. Ya sabes cómo funciona la Ingeniería en este país: “Nunca hay tiempo de hacer las cosas bien… pero sí para hacerla dos veces”

Fase 1: Toma de requisitos

Esta fase se resume en un par de reuniones café en mano en dónde nuestro Jefe Profident disfruta haciendo La Carta de los Reyes Magos mientras que te cuenta lo bien que se lo ha pasado en el yate con unos amigos que conoció en su último viaje a Osaka (Canadá). Al mismo tiempo te pide cosas como: “Y quiero que el sistema automáticamente seleccione a los mejores clientes y mejores pagadores y busque cuales son los objetos que menos se van a vender y les haga una oferta que no puedan rechazar”. Ale, y ahora vas y lo cascas en .Net o JSP o lo que el Técnicoless le haya recomendado en su flamante Wordpress.

Fase 2: La formación

“¿Formación? ¿pa qué? ¡Si está todo en Internet! Mírame a mí, todo el día trabajando y aún me queda tiempo para ponerme al día a través de Intenet. Usa Google chaval”.

Éste es el momento que marca la diferencia entre un trabajador y alguien encerrado en la cárcel por “Jeficidio”. ¡Aguanta!

Fase 3: La cagada

Es normal; yendo el proyecto como va, lo primero que sucede es que se va al garete. Tu primer sistema de login tiene SQL Injection y se cuela hasta el Pato Lucas (el cual amablemente se registra y deja su mail patolucas@warnerbros.com). Lo arreglas (mirando en algún sitio de Internet como dijo nuestro ilustre Jefe Profident) pero te olvidas del parámetro del buscador con el que te tiran el servidor de base datos inyectándote un shutdown.

Cambias los privilegios de la cuenta, pero en el archivo de descarga del folleto informativo alguien te inyecta un cambio de directorios y te hace un cucharón para bajarte la sam o el /etc/passwd del sistema. Tras leer como funciona en profundidad el SQL Injection ya estás listo para que la web funcione. Sin embargo, todos los datos de tus usuarios aparecen publicados en un foro porque te los sacan con Blind SQL Injection (a pesar de que ya sabías SQL Injection).

Te lo planteas y quitas la base de datos para trabajar con documentos XML. Na, un poco de DOM, un poco de SAX y listo. Te cepillan la web con Xpath Injection. La integras con LDAP y alguien usa las consultas apropiadas para sacarte la estructura de tu árbol LDAP.

Cuando ya eres el rey de las inyecciones decides poner bonita la web: Te comes un Cross-Site Scripting Persistente y te mangan la cuenta tuya del sistema, la de tu correo del trabajo y la del mail para ligar. Te quedas sin el Messenger y tu mujer descubre a tus amiguitas.

Tiras de backup y lo arreglas, pero quitando el Hijacking que te habían metido para quitarte la cuenta. Recibes un mail con un link a tu Web y te vuelven a quitar la cuenta con un XSS No Persistente.

Acabas de arreglarlo tras recuperar otra copia de seguridad y perder una semana de curro porque el Sistema de Backup (que le recomendó un blogger a tu Jefe Profident basado en Pendrives USB no ha funcionado).

Llegas a la fase de alimentar la Web y te implantas un gestor de ficheros. Te comes otro Cucharón. Lo arreglas. Tu competencia tiene los precios que los ha sacado mediante una vulnerabilidad RFI (Remote File Inclusion) que les ha permitido meter una Shell. Recuperas del sistema de copias de seguridad (pendrive) otra vez tu web.

Cambias la arquitectura del sitio y realizas unas comprobaciones meticulosas. Tu Jefe Profident sube ficheros al servidor y resulta que tiene un Troyano Reverso adjuntado: alguien se dedica a tirar tu web cada tres minutos y te toma una foto con la Webcam (esa que tu Jefe Profident instaló en el servidor como Sistema de Seguridad del CPD – compuesto por un ordenata clónico con un monitor en blanco y negro “qué como nadie va a trabajar ahí da lo mismo”-) y aparece publicada en un foro con el siguiente mensaje “POWNED” junto con un tutorial de cómo usar el Posion Ivy.

Fase 4: El fin

Han pasado tres meses, no has conseguido sacar el proyecto adelante en tiempo pero al final rula, has sudado tinta china, has recibido mil palos y tu Jefe Profident saca conclusiones. “No has estado a la altura, pero claro, es normal, solo eres un desarrollador informático”. Decide que para el siguiente proyecto lo mejor es cambiar el lenguaje que no se te ha visto suelto.

Conclusiones

Es evidente que una buena herramienta con una buena tecnología ayuda a tener buenos desarrollos. Es fácil encontrar buenos ejemplos de desarrollos grandes con JSP o ASP.NET o con otra cantidad de lenguajes. Creo, encarecidamente que el verdadero problema de los proyectos está en quien los gestiona. Una buena gestión de un proyecto, incluso con recursos mediocres puede dar buenos resultados. Conoce y explota lo que tengas y apóyate en profesionales. Y por favor… ¡¡Huye de los Tecnicoless!!

Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares