miércoles, 25 de agosto de 2010

Vulnerabilidad routers telefónica

Antes de empezar, quiero decir que el siguiente artículo lo escribo a modo de divulgación, para advertir a todos aquellos usuarios que tengan routers proporcionados por telefónica. Todas las pruebas que he hecho han sido sobre mi propio router y routers cuyos dueños me han aurotizado a testear. Sólo pretendo demostrar la posibilidad de romper la clave de acceso para que los usuarios puedan prevenirlo, no quiero promover el acceso a redes ajenas lo cual es ilegal y cuya práctica no apoyo.


Detección del problema

El otro día estaba anotando la contraseña para acceder vía wifi a mi router proporcionado por telefónica. Todas las redes de telefónica se pueden detectar porque todas se llaman WLAN_XX siendo XX dos dígitos hexadecimales. Junto al router está anotada la dirección MAC del mismo. Me di cuenta de que ambas secuencias tienen mucho en común, os copio ambas para que lo veáis:

Dirección MAC: 00:01:c8:ec:34:f2
Clave del router: Z0001c8ef52204

Si quitamos la Z (con esto volveremos luego) del principio y comparamos el principio de ambas cadenas, podemos ver la similitud:

MAC: 0001c8ec34f2
Clave: 0001c8ef5204

Pero todavía hay más, el nombre de la red es WLAN_04. Curioso, ¿verdad? los dos dígitos que muestra el nombre de la red son misteriosamente los dos últimos dígitos de la clave:

Clave: 0001c8ef5204

Dado que la dirección MAC de un router se puede saber sin estar conectado a la red (por ejemplo, con Wireshark se pueden ver las MACs de los routers que están emitiendo).

Así pues, sin haber interaccionado con una red, podemos sacar 36 de los 48 bits que son su clave. Esto nos deja sin saber 12 bits, con lo cual, las posibles claves restantes son 2¹², es decir 4096, lo que desde el punto de vista de computación resulta risible. (En realidad la clave es ASCII por lo que serían más posibilidades, pero como sólo usa carateres ASCII que son dígitos hexadecimales podemos reducir mucho el número de posibilidades. Además, estos dígitos hexadecimales siempre van escritos en mayúsculas aunque en los ejemplos los ponga en minúsculas).


Poniéndonos en marcha

Con un script super simple podemos generar todas estas claves, a continuación os pongo un programita que he hecho en python, volcando su salida sobre un fichero podemos tener todas las posibles claves ahí guardadas.

(Véase el código bien tabulado, sobre todo en python)

import string

digitos_hexa = ['0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F']


for d1 in digitos_hexa:
for d2 in digitos_hexa:
for d3 in digitos_hexa:
print 'Z0001C8E' + d1 + d2 + d3 + '04'


Ejecutando este programa de la forma: python programa.py > diccionario ya tenemos las claves guardadas
.

Con esto, se podría hacer algún programita simple que intentara validar la clave, en un tiempo relativamente corto podríamos acceder (incluso no sería algo descarado ir probando a mano, en unos días podría dar resultado), pero como informáticos siempre intentamos buscar la solución óptima.

Los routers de imagenio por defecto usan encriptación WEP. Esta encriptación tiene sus vulnerabilidades (en las que no voy a entrar). Hace tiempo yo mismo probé a romper alguna clave pero el tiempo de cálculo es relativamente elevado (puede que hagan falta unas horas). Sin embargo, teniendo ya parte de la clave, esta tarea se puede hacer mucho más ligera.

Para poder romper la encriptación WEP, es bastante útil tener paquetes de datos generados en la red (los cuales, evidentemente, veremos encriptados). Con estos paquetes encriptados es más fácil sacar la clave. Podríamos capturar (de nuevo) paquetes con Wireshark pero hay herramientas que nos facilitan más el trabajo.

Para nuestros propósitos (nunca malignos, todo sea dicho) usaremos airmon, airodump y aircrack (herramientas fácilmente instalables. Además, todo lo que intenté hace años de romper WEP con las herramientas existentes encontes daba problemas con tarjetas Intel, en este caso, teniendo tarjeta intel, no he tenido ningún problema).

Lo primero es ejecutar:

sudo airmon-ng start wlan0

Esto crea una especie de interfaz de red virtual llamado mon0, que es sobre el que escucharemos.

Para ver un poco lo que pasa por el vecindario, ejecutaremos

sudo airodump-ng mon0

Esto nos mostrará un listado de MACs (que son los routers) y el tráfico que generan. Para poder romper la clave necesitaremos que haya tráfico de datos, cuando veáis que la columna #Data empieza a crecer es el momento de ponerse manos a la obra.
Para capturar el tráfico asociado a una MAC, basta con ejecutar:

sudo airodump-ng --bssid
00:01:c8:ec:34:f2 -w captura mon0

Poniendo como segundo argumento la MAC del router. Esto nos dará una pantalla parecida a la que daba el comando anterior solo que irá guardando el tráfico. Cuando veamos que los paquetes de datos son unos cuantos (a mí con 300 me ha valido de sobra) paramos el programa.

El programa habrá generado varios ficheros pero el que nos interesa es el que se llama captura-01.cap (o 0i si habéis ejecutado el programa varias veces, siendo i el número de ejecución)

Ya tenemos todo lo que necesitamos, ahora sólo queda ir probando las claves sobre el tráfico capturado hasta que demos con la correcta. Para ello utilizaremos el siguiente comando:

aircrack-ng -w diccionario captura-01.cap

Y ¡voilá! En mi caso ha tardado menos de un segundo en dar con la clave. Ya disponemos de acceso a la red.

Volviendo al tema de la letra inicial, en este caso hemos usado la Z, pero he leído que eso depende del modelo del router (en mi caso Zyxel). He leído que las posibles letras con los routers de telefónica son Z, X y C. Así que si falla la Z probad a generar el diccionario con alguna de las otras dos letras. Estas letras siempre van escritas en mayúsculas.

Hemos probado como romper la clave de este tipo de router en cuestión de minutos.


Recomendaciones para evitar el acceso ilegítimo a nuestra red

A continuación algunos consejos deducidos de esta vulnerabilidad para todos aquellos que tengan un router proporcionado por telefónica para no tener problemas:

  • Cambiar el nombre de la red: el hecho de que sepan que estamos usando un router de telefónica ya puede dar pistas, aunque siempre se puede saber el nombre del router, es algo que recomiendo (quitando por supuesto los dos últimos dígitos hexadecimales).
  • Cambiar la contraseña: para no complicarnos, si cambianos la contraseña entera mejor que mejor, además al ser ASCII no hace falta que pongamos todo dígitos hexadecimales.
  • Usar WPA o WPA2. Aunque tengamos en cuenta las consideraciones anteriores, WEP sigue siendo vulnerable (aunque lo harán menos vulnerable). Es mejor migrar la seguridad de la red a WPA o WPA2 que nos garantizarán mayor seguridad que WEP.

sábado, 8 de mayo de 2010

¡Feliz tercer aniversario!

Qué rápido pasa el tiempo, hace unos días (exactamente el 4 de mayo) El Arbolito Verde cumplió 3 años, la de cosas que han pasado desde entonces y la de cosas que están por pasar.

No puedo entretenerme más que mañana tengo examen de sueco.

¡Un saludo a todo el mundo y felicidades!

lunes, 3 de mayo de 2010

Una de matemáticas

Hoy os planteo un problema al que le he estado dando vueltas estos días, creo que es más sencillo de lo que parece pero debo andar un poco oxidado con la geometría. He llegado a una solución pero creo que lo he hecho más difícil de lo que en realidad es. Os planteo el problema a ver qué soluciones proponéis:

El problema trata de dividir una circunferencia de radio r y centrada en c en n partes iguales, para ello se propone hallar los puntos de la propia circunferencia que conforman esta división.
Por ejemplo, si queremos dividir una circunferencia centrada en el origen con radio 1 en dos partes iguales, una posible solución sería los puntos (0,1) y (0,-1).

Dado que hay infinitas soluciones, la solución deberá darse en función de un primer punto prefijado p0 proporcionando una expresión recurrente para hallar p(i) en función de p(i-1) para cualquier n.

Problema: proporcionar f tal que p(i) = f(p(i-1))
Datos: c, r, p0, n

jueves, 15 de abril de 2010

La importancia de la privacidad en Facebook

La mayoría de la gente no se da cuenta de la importancia que tiene la privacidad en lugares como Facebook. En general la gente que tiene poca idea de informática o que no ve el peligro potencial de estas redes ni se molesta en dedicar 10 minutos a configurar algo tan esencial.
Puesto a ver cuanta información podía sacar de una persona aleatoria, he buscado en el buscador de personas a alguien llamado John y he elegido el primero que he visto que tenía algo de información pública. A continuación resumo un poco lo que he podido averiguar de dicha persona en unos 5 minutos (nota: toda la información la presento desde un punto de vista anónimo, es decir, que daré información genérica de lo que he averiguado y no datos concretos para no violar la privacidad de dicha persona).

John vive en Estados Unidos, en un pueblecito cuyo nombre sé. Vive en una granja la cual deduzco que es de su familia, además en trabajos pone una granja por tanto sé el nombre de la granja de su familia. Entre sus aficiones destaca cazar, pescar (de lo cual deduzco que es alguien de costumbres tradicionales) y jugar al golf, además de que parece que siempre que tiene tiempo se junta con sus amigos para jugar al poker, al cual es bastante aficionado.
Tiene una novia, de la cual sé su nombre, y puedo ver si perfil y conseguir más información de ella como el nombre de sus hermanos, así que puedo saber incluso información de los cuñados de John.
Tengo acceso a bastantes fotos tanto suyas como de su novia.
Tiene más de 1000 amigos de lo cual puedo deducir que conoce a mucha gente, probablemente sea una persona sociable, aunque probablemente con la mayoría no habrá hablado más de una vez, el hecho de que tenerlos en facebook puede decirme que es una persona que sale y se le da bien conocer gente. Se podría intuir quienes son los más cercanos viendo con quién interactúa más en el muro y averiguar información sobre ellos.
Se queja mucho de los exámenes de biología en su muro, debe ser porque se le da mal.
Se ha unido grupos de videojuegos de guerra así como grupos en los que apoya a los militares de Estados Unidos, podría deducir que es una persona tradicional y que se siente patriótica con su país.
Además, juega al rugby en lo que debe ser su instituto, tiene varias fotos jugando. Esto junto con lo de los más de 1000 amigos parece indicar que es una persona popular en su instituto, el típico jugador de rugby popular. Además pone el nombre de su instituto.
Se queja varias veces en el muro de algún tipo de dolencia/infección que le afecta y le molesta bastante.
Accede a Facebook varias ocasiones desde un Blackberry


Fijáos en la cantidad de información que he sacado en 5 minutos. Si hubiera investigado más a fondo y hubiera googleado su nombre y nombres de sus amigos/familiares/novia podría haber sacado un perfil muy completo de esta persona, lo cual no me gustaría nada que fuera posible hacer conmigo. Gente un poco ignorante puede ser un objetivo fácil de timos gracias a toda esta información.
El único consuelo es que en general no creo que haya alguien anónimo que se interese por y busque toda esta información.

sábado, 20 de febrero de 2010

Lista Spotify colaborativa

Sé que bastantes de los que leéis este blog usáis Spotify. Se me ha ocurrido la idea de que entre todos (tanto como si eres escritor o lector) podríamos hacer una lista colaborativa para añadir canciones que nos gusten, puede ser algo bastante práctico. Ya me he permitido la libertad de crear una así que animáos a añadir vuestras canciones (con un poco de criterio, yo sé que hay canciones que me gustan a mí que a vosotros no os gustarán y por tanto no las añadiré, pero en general canciones así chulas creo que tenemos un gusto común).

Pues eso, espero ver que la lista de vaya modificando eh.

Un abrazo!

PD: si vemos que gente totalmente ajena empieza a "spamear" la lista creamos una sin publicarla en el blog y ya está

lunes, 15 de febrero de 2010

Indignado

Me he cogido una asignatura virtual de libre elección que se llama "redes de telecomunicación por fibra óptica" (no me llaméis traidor, que es la menos aburrida que había jeje, que paso de cogerme "tendencias en el pop espanhol"). Total que nada, me estaba leyendo la ficha de la asignatura y ojo a lo que encuentro en la parte de prerrequisitos:

Para matricularse es obligatorio estar cursando el primer o segundo ciclo de alguna titulación técnica (Ingenierías o Informática).

Es verdad, ahora que lo recuerdo lo nuestro es un cursillo de CCC no te jode!


Editado:

He escrito en el foro de la asignatura, donde nos presentamos los alumnos lo siguiente:

"Hola!! me llamo xxxxx y estudio Ingeniería Informática en Zaragoza! un placer conoceros a todos!!

Por cierto, un comentario, que leyendo la ficha leo "Para matricularse es obligatorio estar cursando el primer o segundo ciclo de alguna titulación técnica (Ingenierías o Informática)" simplemente añadir que la Informática, según tengo entendido, también es una ingeniería.

Un abrazo!"





Ya os diré si me responden jeje

jueves, 28 de enero de 2010

PS3 hackeada

Por fin llegó el día. La PS3 ha sido hackeada. Un hacker a desarrollado un exploit que consigue dar acceso libre a memoria. Esto ha salido hace 2 días y todavía no permite cargar copias de juegos, pero parece ser la clave para conseguirlo pronto.
Aquí podéis descargar el código en C (son poco más de 500 líneas) aunque es un poco arduo de entender. Véanse líneas como:


va |= ((raff_ptr/8)^((g1>>12) & 0x1FFF)) << (((g1>>2)&1)?24:12);

for(j=0;j<0x40;j++) {
if((SLB[j*2]>>27)&1) {
if((SLB[(j*2)+1]>>12) == (g1>>12)) {
va = SLB[j*2]&0xFFFFFFFFF0000000;
}
}
}


Aunque al fin y al cabo son operaciones lógicas, tampoco es nada del otro mundo.
Pues eso, ahí lo tenéis. Cuando vuelva a España igual cacharreo un poco con esto a ver qué sale jeje.
Por cierto, cito una frase que pone el desarrollador en el blog, que me ha llamado la atención:

"I have a life to get back to and can't keep working on this all day and night"

Que a veces uno se piensa que puede hacerse hacker de la noche a la mañana jeje.