Hacking "La Fonera"

Il movimento FON promuove il wifi libero in tutto il mondo e lo fa distribuendo un router WI-FI da loro battezzato La Fonera, ad un prezzo che può variare da zero a 29 euro compresa la spedizione, a seconda delle promozioni in corso.
Questo router ha lo scopo di condividere parte della propria banda internet col resto degli utenti Fon.

Il router viene fornito chiuso, proprio come quelli di molti altri produttori ed in teoria si può usare solamente per le finalità autorizzate da FON.

Tuttavia….

Attivare l'accesso SSH

… ci sono pur sempre gli errori di programmazione: qualcuno ha scoperto come eseguire un programma sul router sfruttando un bug nell'interfaccia web di configurazione. Ad esempio si può eseguire il demone SSH, normalmente disabilitato, ed iptables per aprire la porta 22.

Firmware nuovi

Un nuovo hack che funziona anche coi firmware FON più nuovi sfrutta il fatto che la configurazione del demone per l'hotspot ChiliSpot viene scaricata in chiaro e senza alcun controllo dal server RADIUS di FON. E' dunque possibile ”mettersi in mezzo” ed inviare al router una configurazione particolare, che al riavvio esegua il demone SSH.
Per farlo è semplicissimo, basta impostare come DNS questo indirizzo: 88.198.165.155 (corrispondente all'host kolofonium.datenbruch.de )

Per i dettagli leggete qui:
http://stefans.datenbruch.de/lafonera/#kolofonium

NOTA: questo sistema funzionerà fino a quando i server kolofonium saranno disponibili. Siccome non è un sistema semplice, non possiamo metterlo su noi.

Downgrade

Per i firmware fino alla 0.7.2-r2 (da verificare con firmware più recenti) è possibile tentare un downgrade al firmware 0.7.1-r1.
La procedura è molto semplice:

  • scaricate questo firmware: fonera_0.7.1.1.zip
  • andate nella pagina di upgrade del firmware della fonera e tentate di installare il firmware appena scaricato.

La fonera si lamenterà che il firmware non era buono e che non è stato possibile effettuare il flashing… ed invece lo ha fatto!
A riavvio infatti nella pagina principale verrà visualizzato versione 0.7.1-r1 ;-)

A questo punto non resta che aprire la connessione SSH.

Firmware 0.7.1 r1 e r2

NOTA: questo hack funziona fino alla versione 0.7.1 r1 del firmware, che è quella attualmente contenuta (20/02/2007) nei router distribuiti da FON. La release successiva già non va bene, ma si può effettuare un downgrade da r2 a r1, come descritto sul wiki di Ninux.org.

Per fare questo è necessario inviare dei comandi in POST all'interfaccia di amministrazione, cosa che si può facilmente fare tramite il proprio browser ed una pagina HTML apposita.

Per accedere all'interfaccia di amministrazione web è necessario:
collegarsi via wifi alla rete privata della Fonera: l'ip della Fonera sarà 192.168.10.1, configurate la scheda WIFI con il DHCP
- oppure -
collegarsi via cavo ethernet: l'ip della Fonera sarà 169.254.255.1, configurate la scheda ethernet con IP 169.254.255.2 e netmask 255.255.255.0

Create il file onestep.html e copiateci dentro il codice che segue:

<html><head></head><body>
<center>
<form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT && /etc/init.d/dropbear)" size="68" >
<input type="submit" name="submit" value="Submit" onClick="{this.form.wifimode.value='";' + this.form.wifimode.value +';"'}" />
</form></body></html>

Caricate nel browser il file onestep.html e cliccate su Submit. Il router impiegherà diversi secondi a rispondere, perché probabilmente il demone SSH sta generando la sua chiave privata.

ATTENZIONE: se state usando la connessione via wifi sostituite nel codice HTML l'indirizzo 169.254.255.1 con 192.168.10.1.

Se non dovesse andare bene usate il metodo a due step; create due file (step1.html e step2.html) e copiateci il codice HTML seguente.
Passo 1, abilitare la porta SSH (file step1.html):

<html><head></head><body>
<center>
<form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT)" size="68" >
<input type="submit" name="submit" value="Submit" onClick="{this.form.wifimode.value='";' + this.form.wifimode.value +';"'}" />
</form></body></html>

Passo 2, eseguire il demone SSH (file step2.html):

<html><head></head><body>
<center>
<form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/etc/init.d/dropbear)" size="68" >
<input type="submit" name="submit" value="Submit" onClick="{this.form.wifimode.value='";' + this.form.wifimode.value +';"'}" />
</form></body></html>

Caricate nel browser il file step1.html e cliccate su Submit. Dopo pochi secondi dovrebbe apparire la pagina di configurazione della rete: lasciatela perdere e caricate il file step2.html e cliccate su Submit. Questa volta il router impiegherà diversi secondi a rispondere, perché probabilmente il demone SSH sta generando la sua chiave privata.

A questo punto collegatevi al router col vostro client SSH preferito (io uso Putty), all'indirizzo che avete usato per l'interfaccia web. Username e Password di default sono root/admin.

Infine configuriamo il router in modo che lanci il servizio SSH automaticamente. Da shell SSH scrivete:

ln -s /etc/init.d/dropbear /etc/init.d/S50dropbear

Abilitiamo dunque l'accesso alla porta 22. Con l'editor vi1) modificate il file /etc/firewall.user ed eliminate il commento2) alle righe:

# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
# iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT

Che diventano dunque:

iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT

Resta il problema che questo bug non è ancora risolto, quindi chiunque abbia accesso alla WLAN privata può far eseguire un comando al router ; vi conviene quindi per lo meno cambiare la password di default se temete un'eventualità del genere. Si suppone inoltre che il bug non sarà più sfruttabile nei prossimi firmware…

Togliere il "controllo" a FON

Nel firmware di FON c'è una cosa un po' antipatica: ogni ora viene lanciato un task3) che scarica qualcosa dal sito di FON e la esegue.

Per evitare che questo avvenga è sufficiente editare il file /bin/thinclient e commentare l'ultima riga:

#. /tmp/.thinclient.sh

se poi siete curiosi di vedere cosa voleva eseguire FON sul vostro router aggiungere alla fine del file:

cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')

In questo modo vi ritroverete il file con tanto di data ed ora di download.

Installare un firmware alternativo

Per il momento sulla fonera girano dd-wrt e OpenWrt come firmware alternativi (lo stesso fimrware FON è basato su OpenWrt).
dd-wrt viene aggiornato quasi quotidianamente e la versione attuale sembra funzionare abbastanza bene; OpenWrt Kamikaze è ancora incompleto, in effetti l'interfaccia web basata su x-wrt.org nei nostri test non ha funzionato quasi per niente: quindi a meno che non conosciate Linux e la configurazione del wifi da shell per il momento è sicuramente da scartare.
Infine si sconsiglia al momento di installare firmware alternativi se non si dispone di un adattatore per la seriale, col quale è possibile facilmente ripristinare una Fonera che non parte più.

Installazione di un firmware alternativo sulla Fonera

Hack con la seriale

Avete una versione del firmware successiva alla 0.7.1 r1? Ad esempio mi dicono che già sono in distribuzione Fonera con firmware 0.7.1 r2 sui quali non funziona questo hack…

Ci sono diverse soluzioni, a seconda dei casi: se la Fonera si è aggiornata automaticamente via internet si può fare un reset che la riporterà alla versione originale. Se invece la Fonera vi è giunta direttamente con versione 0.7.1 r2 potete effettuare un downgrade a 0.7.1 r1 e poi usare l'hack di cui sopra.

C'è infine una soluzione radicale, ma non è a buon mercato come le altre: rispetto al costo a cui si può avere la Fonera (da zero a 29 euro) questa soluzione può costare molto cara, a meno che non si conosce un minimo di elettronica e allora ve la cavate con 5 euro.

Per i dettagli vedere Collegare la seriale alla Fonera

Resettare la Fonera

Questa operazione elimina completamente la parte scrivibile del firmware, dove viene memorizzata la configurazione ed anche eventuali patch minimali scaricate in automatico dal firmware stesso dai server di FON.

Ci permettiamo di copiare questo post perché si sa, i forum vanno e vengono e i link ad essi non hanno lunga durata:

Per tutti coloro che avessero azzardato qualche configurazione ardita ecco come si resetta la fonera.
Testato già più volte sulla mia Fonera mi riporta alla versione 0.7.0 r2.

  1. Lasciate la Fonera accesa un bel po'.
  2. Premete costantemente con una penna dentro al forellino di reset posto sotto l'apparecchio per circa un minuto fino allo spegnimento dei led internet e wlan ( ci vuole un bel po').
  3. Non appena comincia a riaccendere il led centrale date una seconda pressione del tasto di reset per circa 10 secondi (per sicurezza).
  4. Staccate il cavo di rete.
  5. Togliete la corrente.
  6. Riaccendetela ma senza il cavo di rete.

Appena le darete il tempo di tornare on-line rivedrete nuovamente la rete MyPlace (come quando era nuova ) e andando nella schermata del router vedrete che la versione del firmware e tornata alla 0.7.0 r2 e che la rete pubblica e tornata ad essere FON_AP.

Fate i vostri ritocchi di configurazione se necessario ( vi ricordo che i parametri tornano tutti a default ossia user admin e password admin) e staccate la corrente alla Fonera. Rimettete il cavo di rete e reinserite la corrente. La Fonera si riaccenderà starà su qualche secondo poi si rispegnerà nuovamente (rifà in pratica l'aggiornamento del firmware) infatti alla sua seconda riaccensione il firmware passa alla revisione r4 quella attuale. Allego l'immagine della Fonera dopo il reset.
Buoni reset a tutti!
Max (maska)

OpenWRT

Sulla Fonera è possibile installare OpenWRT-Kamikaze, tuttavia lo sconsigliamo perché per il momento pare non abbia neppure l'interfaccia web e si deve configurare tutto tramite SSH. Una guida su come farlo è qui:
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=9011

Mentre la pagina ufficiale della Fonera su OpenWRT è qui:
http://wiki.openwrt.org/OpenWrtDocs/Hardware/Fon/Fonera

Riconoscimenti

Il primo hack della fonera dovrebbe essere stato scoperto da Stefans Datenbruch:
Stefans Datenbruch: hacking the la Fonera

La prima revisione, ad opera del forum di dd-wrt:
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=5083&postdays=0&postorder=asc&start=0

La seconda revisione:
Hacking la Fonera ... part III

L'articolo originale che abbiamo letto per modificare la nostra Fonera è:
http://blog.blase16.de/index.php?url=2006/11/28/Hacking-Fonera
Da cui come vedete ci siamo arrubati anche il codice HTML.

References

Discussione/Commenti

1) l'unico presente in qualsiasi UNIX
2) il carattere #
3) tramite cron
 
hack/fonera.txt · Ultima modifica: 2009/07/04 12:52 (modifica esterna)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki