-->

Explícame cómo se hackea el WiFi

Sí, el término habitual es hackear WiFi, a pesar de que la palabra hacker esté siendo tan denostada. En este artículo, voy a intentar explicar qué hace una de las herramientas más típicas para nuestro propósito. Este software se llama AirCrack, y es un programa desarrollado por el especialista de seguridad, Christoph Devine.

Si probáis a poner en YouTube el término de búsqueda "hackear WiFi" os van a aparecer miles de vídeos de demostración donde se ve paso a paso cómo se utiliza AirCrack, y sobre todo en Linux. En este artículo yo voy a limitarme a explicar qué ocurre con el protocolo WEP, y antes de continuar, recuerdo que el hackear una red WiFi sin consentimiento de su propietario está tipificado como delito.

WEP (Wired Equivalent Privacy) fue el primer protocolo de encriptación introducido en el primer estándar IEEE 802.11 allá por 1999, y no fue creado por expertos en seguridad o criptografía. Su cifrado funciona de la siguiente manera (extraído de aquí):


Y el paquete que se emite es este:


donde cada celda corresponde a los siguientes puntos:

  • Cabecera 802.11: contendrá información relativa al tipo de paquete, las direcciones MAC del emisor y receptor del mensaje y determinada información de sincronismo.
  • Vector de inicialización (IV): es la clave dinámica generada por el emisor y utilizada para concatenar con la clave estática dando origen a la semilla RC4. Como se puede observar esta secuencia de bits crítica para preservar correctamente la privacidad de los datos viaja por la red sin ningún tipo de cifrado.
  • Datos encriptados: el mensaje que se desea transmitir de manera segura desde un nodo emisor a un nodo receptor.
  • CRC encriptado: código de redundancia cíclica correspondiente al mensaje que se va a transmitir.
  • CRC del paquete: código de redundancia cíclica correspondiente al paquete completo. El CRC, dicho de manera simple, es el checksum para comprobar la integridad del mensaje. Este sistema era muy bueno para detectar ruido en transmisión de señales, pero deja un poco que desear en su nueva misión de cifrado, y mejores alternativas son MD5 o SHA-1

Han aparecido numerosas variantes para atacar el cifrado WEP, pero la original y más extendida es la basada en el RC4. El RC4 es un sistema de cifrado creado en 1987. Fue tratado como alto secreto, hasta que un anónimo coló en una lista de correo en 1994 cómo funcionaba, y ya en 1995 publicaron la primera vulnerabilidad.

Si miramos el cuadro de cifrado WEP, el RC4 crea una cadena de 64 bits, 40 de las cuales corresponden a la clave estática, y 24 al vector de inicialización (IV). Esta clave estática es la contraseña que anhelan los que intentan hackear la red WiFi en cuestión. Sin embargo, tal y como se ve en el cuadro, el IV es transmitido sin cifrado en el paquete final, y este es el pilar sobre el que se fundamenta el ataque. La razón es que el atacante puede capturar estos paquetes sin ningún problema. 3 bytes corresponden al IV y el resto es mensaje cifrado.

El vector IV al ser de 24 bits solo puede estar formado mediante 16 millones de combinaciones posibles, y el objetivo que persigue es cifrar con claves diferentes para así intentar impedir que un atacante pueda recopilar tráfico suficiente para poder deducir la contraseña. Sin embargo, el WEP no especifica cómo varía el vector de inicialización, quedando en manos de los fabricantes la decisión sobre este aspecto.

La consecuencia de esto es que buena parte de las implementaciones optan por una solución sencilla: cada vez que arranca la tarjeta de red, se fija el IV a 0 y se incrementa en 1 para cada trama. Y esto ocasiona que las primeras combinaciones de IVs y clave secreta se repitan muy frecuentemente. Más aún si tenemos en cuenta que cada estación utiliza la misma clave secreta, por lo que las tramas con igual clave se multiplican en el medio (fuente).

Al ser el número de combinaciones posibles tan reducido, incluso en el mejor de los casos, incluso eligiendo un vector al azar hay un 50% de posibilades que el IV se repita con menos de 5000 paquetes (la paradoja del cumpleaños). Y aquí está el meollo del asunto, ya que probablemente lo que ocurra es que usemos el mismo vector de inicialización para cifrar el mismo mensaje. Esto es lo inaceptable (y eso que Microsoft lo volvió a usar en 2005 con el Word).

Por si fuera poca la vulnerabilidad de que el IV sea cíclico, el RC4 tampoco se queda corto. En su implementación en el cifrado WEP, se ha visto que el RC4 genera claves más débiles que otras. "Claves débiles" significa que la correlación entre el input y el output del cifrado tienen más correlación y parecido de lo conveniente. Por lo tanto, es sencillo capturar unos 9000 paquetes, quedarnos con aquellos que sugieran una "clave débil" y probar con unas pocas contraseñas.

Los ataques WEP tuvieron una mejoría muy sustancial cuando se descubrió cómo el atacante podía inyectar paquetes nuevos en el sistema: con este sistema, la fuente se veía obligada a generar paquetes más rápidamente, ya que los paquetes falsos eran aceptados sin ningún problema.

El primer ataque basado en reventar WEP basado en la debilidad RC4 es de 2001, y se denomina FMS en honor a sus autores Scott Fluhrer, Itsik Mantin y Adi Shamir. Sin embargo, rara vez se usa el ataque exactamente en la forma que lo describieron ellos.

Desde entonces, han aparecido muchas variantes (como el KoreK, el PTW, y algunos con nombres tan atractivos como café latte) y herramientas como el Aircrack implementan estas vulnerabilidades fácilmente. Las variantes de ataques pueden ser distintas metodologías de descubrir la clave estática con el menor número de paquetes a partir de la debilidad IV y RC4 descrita aquí. No es baladí la matemática que emplean para el común de los mortales, sino que usan muchas funciones lógicas y matemáticas propias de criptografía. Pero es capaz de implementarse en un software sin mucho esfuerzo y lo único que se precisa para atacar es una red que genere bastante tráfico y estar bastante cerca del punto de acceso a atacar.

Lo explicado en este artículo está lleno de simplificaciones, y dejo al lector multitud de textos sobre el tema para profundizar. El cifrado WEP tiene más vulnerabilidades que las que aquí he descrito (aquí aparecen explicadas de manera sencilla las principales), y definitivamente se ha relegado a un cifrado de uso doméstico y muerto para los que nos tomamos la seguridad en serio.







Encrypt Your Wireless Traffic to Avoid Getting Hacked
- Understanding WEP weaknesses
- Distintos ataques WEP
- What's wrong with WEP
- What's the deal with RC4?
- Artículo que describe matemática el ataque FMS, KoreK y PTW
- Cracking WiFi WEP with aircrack-ng
- Interpretación de qué hace un software línea a línea
- Seguridad WiFi (historia y descripción de problemas, en ESP)
- Explicación de debilidades WEP desde el punto de vista de criptografía
- Cómo no funciona el WEP


Si los Formula1 fueran robots

El lector habitual del blog sabrá de mi afición a la Formula1, cuya edición número 66 ha comenzado hoy en Australia. El post de hoy viene a colación de tal acontecimiento, y ahí va la pregunta:

¿Qué criterio emplean los pilotos de F1 para trazar las curvas? ¿Van por el trazado más corto para recorrer una vuelta completa? ¿O circulan por el trazado que les permite ir siempre a la máxima velocidad posible? 

Si vemos las siguientes imágenes, parece que el trazado a) es mejor que el b), ya que realiza giros con más sentido común y sin cambios bruscos de trayectoria. Sin embargo, puede que no sea la mejor solución.




Como datos de partida, diremos que todos los equipos tienen el mismo criterio y que este es aplicable no sólo a la máxima competición del motor, sino a cualquier otra modalidad que consista en vueltas periódicas al mismo dibujo. Y la respuesta es única.

En la disciplina ingenieril de teoría de control, la respuesta a la pregunta la da el principio del Mínimo de Pontryagrin, que busca los parámetros de control óptimos en cada instante para que el tiempo de una acción sea mínimo. Y esa es la respuesta a la pregunta: los F1 recorren el trazado que les permite dar la vuelta en menos tiempo

No deseo entrar en los detalles de programación de este control en programas de simulación. El problema de que sistemas dinámicos vayan de un estado A a otro B ha sido estudiado con profundidad a lo largo de los últimos años, pero ahora está un poco más de moda por el boom de coches autónomos. Apostaría en que Audi, para realizar el récord de circuito que consiguió hace unos meses, empleó el principio de Pontryagrin, entre otras herramientas. El coche estaba programado para dar la vuelta perfecta y llevaba las instrucciones grabadas: donde un ser humano no tiene la precisión suficiente para ir siempre al máximo del rendimiento de la máquina, una máquina no tiene problema.

Solucionar este problema del Principio del Mínimo de Pontryagrin no es baladí, y todo parte de un modelo matemático que reproduzca de manera fiable el comportamiento de un coche. Pero después, el control no se reduce a dar la orden "siempre gas a fondo" y listo. No. 

Hay que ir con gas a fondo siempre que se pueda, pero hay restricciones físicas inviolables en el caso que estemos hablando de vehículos que realizan maniobras extremas. Hay que programar la función de control del coche para las siguientes condiciones:

- si nuestro coche tiene que durar X vueltas, no podemos ir al máximo en todas las vueltas, sino al máximo para llegar casi casi sin gasolina a la meta al final.

- no podemos ir tan rápido que el coche en curva tenga peligro de volcar por exceso de aceleración lateral.

- un correcto trazado en curva se basa en un punto de frenado tardío, una buena tracción y una entrada bien dirigida en curva. Todo eso no se reduce a "gas a fondo".

y un sinfín más de condiciones, como cuidado de neumáticos, aprovechamiento de la aerodinámica, etc. Todo esto lo estoy asumiendo para un coche que circula en solitario por un circuito. Incluir otros competidores en la pista complicaría mil veces el problema.

La aplicación de este principio está verde, pero se plantea como opción de control para vehículos híbridos de calle y hace tiempo que ya existen patentes que se basan en este principio (esta de 2005). En robótica experimental, ya es una realidad.

A quién le guste salsear, puede obtener información de teoría de control sobre cómo se resolvía este problema anterioridad en las curvas de Dubins, o las de Reeds y Sheep.





Fuente

La pregunta Naukas 2015

En la plataforma de divulgación Naukas se están publicando a lo largo de este mes las respuestas a la una pregunta que nos han planteado a todos los autores que estamos ahí metidos. Ninguno sabemos lo que responden los demás hasta que no se publica. Se trata de una iniciativa que Naukas comenzó el año pasado en honor a The Verge. Probablemente, mejor que yo lo expliquen ellos mismos aquí:



Este año la pregunta era: 

¿Qué avance o descubrimiento de la ciencia moderna ha hecho progresar más a la Humanidad?

Entendemos como ciencia moderna desde Copérnico hasta nuestros días.




No consigo decidirme por qué invento ha sido más determinante. Me vienen a la cabeza el avión, la máquina de vapor, los rayos X o la tecnología espacial.

Sin embargo, sí que creo que hay un factor común a la hora de dar pasos grandes en la ciencia. No solo en la ciencia moderna, sino desde tiempos de nuestros más antiguos antepasados: en la mayoría de los grandes avances, la actitud humana que más ha permitido desarrollar importantes tecnologías ha sido el ser conscientes que tenían algo peligroso en sus manos, y aún así, seguir profundizando en su estudio.

¿Acaso creemos que el dominio del fuego en la Antigüedad ocurrió sin más contratiempos? ¿No es el fuego una de los fenómenos más peligrosos y a la vez más valiosos, de los primeros hombres? ¿No prohíben ahora las madres a sus hijos pequeños que no jueguen con fuego? ¿No es esta actitud una de las características fundamentales que distingue a seres humanos y animales?

Algunos de los inventos que costó miles de vidas incorporarlas de manera segura a nuestro día a día han sido el avión, la máquina de vapor, los rayos X o la tecnología espacial.

De cara al futuro, será imprescindible hacer frente a retos que nos pueden parecer igual de arriesgados. Hoy en día hay detractores de la inteligencia artificial, los alimentos transgénicos, la investigación de células madre, mecánica cuántica, viajes espaciales más largos, etc. Estos detractores critican o la inutilidad de inversión de recursos de estas disciplinas o la peligrosidad de su desarrollo para la sociedad.

Quizás dentro de algunos siglos estemos hablando de los nuevos medios de transporte, terapias genéticas, curas médicas o incluso formas de vida diferentes a la nuestra como consecuencia de haber afrontado hoy los peligros y obstáculos que presentan las ciencias y oportunidades de mi penúltimo párrafo.

Asedio con matemáticas: fundíbulo

¿Qué es un fundíbulo, trabuquete o lanzapiedras medieval? Esto:



A cualquiera que haya pasado un rato, o muchas horas, con juegos del estilo Age of Empires, Empire Earth o similares, seguro que le es familiar. Esta arma de asedio lanza proyectiles con la siguiente secuencia (fuente): 
El fundíbulo parece que es originario de China y se introdujo en Europa en el siglo XIII. Se trata de un arma de asedio pesada que lanza proyectiles como piedras contra una fortaleza desde una gran distancia.

Si consideramos el proyectil como una única partícula sólida, podríamos calcular varios movimientos de esta máquina con ecuaciones físicas elementales. Una de ellas dice cuál es el máximo alcance de una partícula lanzada con un cierto ángulo y una velocidad inicial:

donde R es el alcance, v es la velocidad inicial, g es la gravedad y alfa representa el ángulo en el momento en el que la piedra se separa del arma. Por lo tanto, el valor máximo de R se obtiene cuando alfa es 45º. Es decir, algo así (fuente):




Lo más curioso de la fórmula precedente es ver que el lanzamiento no depende de la longitud de los brazos del fundíbulo, al contrario de lo que pueden pensar alumnos de universidades en los que se suele reproducir este experimento.

Aunque los técnicos medievales no lo superan, estaban empleando un péndulo doble para el asedio, algo que ahora es muy típico en robótica para hablar de equilibrio de un sistema y su control. De hecho, cosas de estas son claves en el funcionamiento del famoso Segway.

El caso es que muchos futbolistas y golfistas emplean un doble péndulo para dar sus mejores golpes, tal y como lo demuestra artículos como este o este otro. De hecho, el segundo paper recoge un experimento en el que se modela la pierna de un futbolista como un doble péndulo. De la cadera hasta la rodilla va un péndulo, y de la rodilla al tobillo otro. Cada uno de las articulaciones corporales tiene su propio sistema de referencia. Sin embargo, se demuestra que para que el tobillo alcance la velocidad máxima es conveniente que la rodilla gire todo lo que pueda, ya que se suman velocidades. Lo mismo ocurre en el golf.


Cualquiera va a ser capaz de hacer un estropicio informático

Este artículo es una pequeña reflexión personal sobre el rumbo que percibo que está tomando la seguridad informática. El título elegido para las siguientes líneas puede parecer que la inseguridad informática sólo afecta a las empresas, servidores, webs, a los gobiernos... y no es verdad. Los usuarios corrientes, si no tomamos precauciones mínimas en el uso de nuestros móviles, aplicaciones instaladas, conexiones de Internet, etc., somos uno de los blancos más fáciles para que nos puedan hacer un roto.

Hacker hace ya tiempo que se corrompió como término y es una palabra denostada. Nada más lejos de la realidad, ya que en su origen la palabra hacker respondía a una sed de conocimiento y de dominio de una disciplina, una tecnología o un concepto, para poder mejorarlo.

Hace 20 años, para los amantes de la seguridad informática cada avance o logro obtenido en una incursión en un sistema era todo una hazaña. Internet no estaba tan extendido, y no había casi por ningún sitio manuales. Sí que había un fuerte sentimiento colectivo y muchos de los éxitos cosechados se conseguían gracias a la pertenencia a una comunidad. Sin embargo, hoy en día hay miles de herramientas software destinadas a rastrear redes, realizas tests de pentesting, búsqueda de vulnerabilidades, y también hay millones de vídeos y manuales que explican cómo usarlos. El uso de esas herramientas, en mi modesta opinión, no requiere de unos grandes conocimientos informáticos. Sí que se necesita un dominio de la técnica para crear la herramienta, depurarla, mejorarla, etc. El hacker de verdad es quien la desarrolla, no quién la usa. Es como los magos: un mago de verdad es el que tiene la creatividad y capacidad para inventarse nuevos trucos que miles de aficionados a la magia imiten o estudien.

Hoy en día ya hay herramientas de software para que aficionadillos sin mucha idea intenten hacer un ataque DoS, o distribuciones enteras que recopilan miles de herramientas de seguridad (Kali Linux es la estrella). Pero desde hace un tiempo, cada vez están apareciendo más sistemas de botón gordo. Es decir, cada vez los sistemas requieren de menos conocimientos por parte de los atacantes, y su modo de uso se está simplificando para que con mínimos conocimientos se infrinjan varias vulnerabilidades importantes.

Algunos de estos aparatos son: hardware keylogger, Pinneaple Mark, aparatos para jugar con redes wireless, RTL-SDR para sniffar comunicaciones de radio, etc. Estos aparatos se pueden adquirir a un precio al alcance de cualquiera, y pueden afectarnos sin darnos cuenta (que es el objetivo ideal de cualquier ataque).

Como consecuencia, cada vez se hace más necesario una concienciación de seguridad digital y seguir unos simples pasos, sin entrar en la paranoia. Por ejemplo, cosas tan simples como elegir contraseñas robustas, doble autenticación de login, desconectar el acceso Bluetooth, WiFi o cualqueir otro cuando no se esté usando, eliminar de la caché las redes que no usas, leer y ser crítico con los permisos que pide una aplicación de móvil al ser instalada, tener el ordenador y el móvil lo más actualizado posible, contar con un antivirus, no pinchar en cualquier hipervinculo sin estar seguros, etc.

Son medidas muy simples que nos pueden ahorrar más de un susto. El empleo de máquinas o herramientas sencillas sin entender qué hacen ni cómo funcionan se denominan script-kiddies, y no tienen buena fama entre los aficionados a la seguridad. Siempre han existido este tipo de recursos muy usables, y es ahora cuando se están masificando y están al alcance de cualquiera.

Existen varias iniciativas que intentan explicar a los usuarios los peligros de la Red, como X1RedMasSegura o Hácker Épico. No hace falta estudiarse grandes tomos para protegerse mínimamente, es como cerrar la puerta de casa con llave.

Pero lo que tengo claro, es que ahora un buen roto en tu vida digital te lo puede hacer alguien con mala idea, y no con muchos conocimientos.


Euler tiene la culpa de que no te pases el vídeojuego

Para los que no lo conozcan, Doom Quake es un vídeojuego de hace ya unos cuantos años de disparos en primera persona. Para quien no tenga ni idea de lo que digo, el jugador sólo veía en la pantalla de su ordenador una mano sujetando un arma, y el escenario del juego se movía desde un punto de vista en primera persona.

Este vídeojuego tenia un motor de simulación de la física de juego llamado Id Tech, del cual hubo varias ediciones. Este motor lo llevaron otros juegos, como el Quake o Wolfenstein, Pero resulta curioso un fallo que tenía el Doom Quake1:

Una de las cosas básicas que hay que simular en todo juego donde hay que correr, saltar, matar criaturas, etc... es la gravedad del mundo (ya sea Tierra u otra). ¿Cómo programarías la gravedad en un vídeojuego? La gravedad es un valor concreto de aceleración, y constante. Por lo tanto, ¿cómo calcularíais la posición en cada instante a partir de la aceleración instantánea?

Quizás se os ocurra esto:



Fijémonos en la velocidad: La velocidad en un instante es igual a la velocidad en el instante anterior + la gravedad* un intervalo de tiempo. Este intervalo ha de ser pequeño, de décimas o centésimas de segundo

A esto se le llama integración numérica de Euler. Sirve para pasar de la aceleración del juego a la posición. Si graficamos la posición según la fórmula de arriba, tendremos:


Lo cual es totalmente incorrecto. La gráfica ideal que buscamos es la siguiente. 



De hecho, si el intervalo de tiempo (dt) es muy grande en la fórmula incorrecta, o las imágenes por segundo que es capaz de procesar el ordenador son bajas, nos encontraremos con que el protagonista de Doom no salta lo mismo. ¡Lo cual hacía que en algunos ordenadores se pudiera pasar el juego y en otros no!


Cuanto más grande es el dt, más corto o bajo era el salto. Este despropósito se puede corregir de una manera sencilla:



Y así, el área integrada es la siguiente. Este área es exactamente igual que la que hay dos más arriba (con lo cual, es la gráfica correcta). Debajo de la línea están encerradas las mismas áreas.



La integración de Euler es la manera más simple de pasar de integrar numéricamente. Se sigue usando mucho, pero no sirve para todos los procesos. De hecho, una de las expresiones más usadas al respecto es only idiots use Euler integration (fuente).

A la hora de implementar un algoritmo de integración en un videojuego o una simulación física, hay que tener en cuenta estas características (fuente):

- Precisión
- Conservación de la energía
- Estabilidad

Euler tiene un grave problema de precisión y tampoco conserva la energía. No lo hace tampoco una alternativa muy usada, el algoritmo de Runge-Kutta4. Sí que lo hacen el método de Verlet, Newmark y Gauss-Runge-Kutta implícito. Estos métodos que conservan la energía se denominan symplectic (en inglés).

De hecho, ahora mismo la mayoría de videojuegos y simuladores pueden usar un motor como Physx, cuyos algoritmos conservan la energía (fuente). 

Echemos un vistazo a qué hacen RK4 y qué hace Verlet.

El primero tiene fama de ser un algoritmo difícil de implementar (sobre todo en según qué industria y con qué objetivo):


La ecuación principal de Runge-Kutta es y(n+1) = y(n) + un incremento formado por k1, k2, k3, k4, cuyas fórmulas están descritas abajo. Estos coeficientes son el resultado de la función que estamos analizando para distintos valores de t, y.  

¿Y qué hay de Verlet? Estrictamente, no vamos a ver la integración de Verlet, sino la integración de velocidad de este matemático (fuente).


Y este algoritmo no depende de los fraps per second, tal y como demuestran aquí, comparando Euler vs Verlet.

¿No os parecen todos los métodos muy parecidos? Pues así es. Euler y Verlet forman parte de una familia de métodos llamados Runge Kutta (concretamente, son RK1 y RK2). 

No dejéis de ver los enlaces que cito abajo, y esta presentación donde se comparan gravedad, fricción y resistencia aerodinámica de una manera muy gráfica según distintos métodos.




Fuente: 
http://www.niksula.hut.fi/~hkankaan/Homepages/gravity.html
http://gafferongames.com/game-physics/integration-basics/
https://www.reddit.com/r/programming/comments/15f4qc/on_using_rk4_over_euler_to_integrate_for_physics/
http://www.adrianboeing.com/pal/papers/p281-boeing.pdf
http://codeflow.org/entries/2010/aug/28/integration-by-example-euler-vs-verlet-vs-runge-kutta/
https://news.ycombinator.com/item?id=4934855
http://www.niksula.hut.fi/~hkankaan/Homepages/gravity.html
http://www.richardlord.net/presentations/physics-for-flash-games
http://lolengine.net/blog/2011/12/14/understanding-motion-in-games

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Web Hosting