La Foneran hakkerointi eli kuinka tukin takaoven

Fon.com:in myymissä WLAN-access pointeissa on takaovi joka mahdollistaa Fonille minkä tahansa koodin ajamisen etänä missä tahansa myymässään laitteessa.. Ongelma koskee vain Fon.com:in ohjelmistoa ajavia WLAN-access pointteja, mutta se esiintyy sekä nykyisessä "La Fonera"-mallissa että Fonin kautta aiemmin hankituissa Linksys-malleissa. Ohessa on selitetty hieman ongelman taustaa ja annetaan ohjeet tämän takaoven tukkimiseen.

Minkä?

"La Fonera" on Fon.com:in myymä WLAN-access point (AP). Laitteella on hintaa normaalisti noin 30¤, ollen yksi halvimmista tarjolla olevista AP:eista. Lisäksi Fonilla on kampanjaluontoisia tarjouksia, jolloin La Foneran on saanut esim. viidellä eurolla tai viime aikoina jopa ilmaiseksi.

La Foneraa myydään näin halvalla koska Fon.com:in ideana on rakentaa maailmanlaajuinen WLAN-verkosto tarjoamalla ihmiselle edullinen AP vastineeksi siitä että nämä sallivat muiden Foneroiden (Fon.com:in käyttäjien) pääsyn internettiin AP:nsa kautta. Oikeuden käyttää tämän verkoston AP:eja saa joko ilmaiseksi ylläpitämällä omaa AP:ia osana Fonin verkostoa tai maksamalla Fonille käyttömaksua (jolla kompensoidaan laitteiden edullista myyntihintaa).

Teknisesti La Fonera on pieni sulautettu Linux-pohjainen laite, joka kytkeytyy ethernet-liitännällä internettiin ja toimii WLAN:in suuntaan access pointtina. Kytkeytyessä WLAN:illa La Foneraan käyttäjän tulee ensin tunnistautua laitteelle www-selaimella käyttäen Fonin käyttäjätunnustaan. Vasta tämän jälkeen laite sallii käyttäjälle vapaan liikennöinnin internettiin.


Miksi?

La Foneran hallinta on toteutettu www-pohjaisesti. Perusasetuksiin (kuten laitteen oma IP-osoite internettiin päin) pääsee käsiksi ottamalla yhteyden suoraan laitteen omaan www-palvelimeen. Osa kehittyneempien toimintojen asetuksista kuitenkin säädetään käyttäen Fon.com:in palvelimella olevaa www-lomaketta, jonne tallennetut asetukset laite käy hakemassa kerran tunnissa (satunnaiseen aikaan kuormituksen tasaamiseksi). Samalla laite saattaa myös päivittää itsensä mikäli tarjolla on uusi ohjelmistoversio.

Hakiessaan uusia asetuksia laite ottaa yhteyden Fonin keskitettyyn asetuspalvelimeen, ilmoittaa laitetunnisteensa (MAC-osoite) ja pyytää tuoreimmat asetukset. Vastauksena laite saa palvelimelta uudet asetukset voimaan saattavat komennot sisältävän shell-scriptin. Mikäli saadussa scriptissä on komentoja laite suorittaa ne automaattisesti.

Laite ei millään tavalla varmenna saamiensa komentojen järkevyyttä, vaan suorittaa ne joka tapauksessa automaattisesti. Tämä tarjoaa Fon.com:in ylläpidolle takaoven jonka kautta on mahdollista suorittaa mitä tahansa komentoja missä tahansa La Fonerassa laitteen omistajan tietämättä.

Tälläisen takaoven sisältävän laitteen kytkeminen verkkoon on vähintäänkin arveluttavaa. Vaikka luottaisi ettei Fon käytä takaoveaan mihinkään ilkeyksiin jää jäljelle vielä riski laitteen rikkoutumisesta viallisen asetus- tai päivitysscriptin myötä.

Mitä?

Jotta La Foneran uskaltaa kytkeä verkkoonsa on siitä tukittava ulkopuolisten etäkäytön mahdollistava takaovi ennen käyttöönottoa. Koska Fon ei halua suosiolla päästää laitteiden omistajia hallinnoimaan niitä vapaasti, täytyy se tehdä "hakkeroitumalla" omaan laitteeseensa.

Samainen takaovi löytyy myös Fonin aiemmin myymistä Linksys WRT54G(L) malleistakin. Näissä ei kuitenkaan ole La Foneran tapaan yritetty estää laitteen omistajaa tukkimasta tätä tietoturvaongelmaa, joten hakkerointivaiheen voi jättää väliin ja siirtyä suoraan poistamaan takaoven.


Miten?

La Foneraan normaalisti pääse käsiksi kuin www-pohjaisen hallintakäyttöliittymän läpi. Laitteessa on kuitenkin valmiina odottamassa ssh-palvelin, mutta se ei ole oletuksena käynnissä.

Onneksi laitteissa toimitettaessa olevassa ohjelmistoversiossa on hallintakäyttöliittymässä pieni vika (jonka hyödyntäminen onnistuu vain mikäli tietää laitteen hallintasalasanan), jonka avulla ssh-palvelin saadaan käynnistettyä tilapäisesti.

Tämä ohjeistus toimii todistettavasti ainakin ohjelmistoversioilla 0.7.0r4 ja 0.7.1r1. Versiossa 0.7.1r2 tämän ohjeen hyödyntämä reikä on jo tukittu, mutta päivityksen toteutuksesta johtuen se voidaan ainakin useimmiten palauttaa takaisin 0.7.1r1:ksi palauttamalla laite oletusasetuksiin (reset-napilla, kts. alkuvalmistelut alempaa). Tuoreemmissa ohjelmistoversioissa tämän ohjeen hyödyntämä aukko on kuitenkin saatettu jo tukkia tehokkaammin, joten tämä kannattaa tehdä ennen laitteen kytkemistä internettiin ensimmäistä kertaa. Ohjelmistopäivitys jyrää tässä tehdyt muutokset, joten päivityksen jälkeen on laitteeseen aktivoitava ssh uudestaan.

Alkuvalmistelut

Alla olevat ohjeet olettavat että La Fonera on oletusasetuksissa. Mikäli olet muuttanut asetuksia, aloita joko palauttamalla laite oletusasetuksiinsa (pidä reset-nappia pohjassa pitkään, 20sek tai enemmän) tai sovella ohjeita omien asetustesi mukaisesti.

Kytke laitteeseen sähköt, mutta älä internet-yhteyttä. Laitteen käynnistymiseen menee jopa 2-3 minuuttia, joten odota rauhassa kunnes WLAN-valo (vasemmanpuoleisin led) ensin syttyy ja sen jälkeen alkaa vilkkua tasaiseen tahtiin.

SSH-palvelimen käynnistys

Tallenna ensin hack1.html koneellesi. Tämä sisältää tyhjältä vaikuttavan lomakkeen, jossa on hidden-kentässä ssh-palvelimen käynnistävä komento.

Kirjaudu laitteen tarjoamaan "MyPlace" WLAN-verkkoon (WPA-salasana on oletuksena laitteen pohjaan liimatusta tarrasta löytyvä sarjanumero). Varmista että pääset laitteen hallintasivuille osoitteessa http://192.168.10.1/. Käyttäjätunnus ja salasana ovat molemmat oletuksena "admin".

Varmistettuasi pääsyn hallintasivulle avaa tallentamasi hack1.html selaimeen ja paina avautuvalta sivulta lomakkeen submit-painiketta. Odota kunnes selain saa lomakkeen lähetettyä ja saa vastaukseksi sivun laitteelta. Tässä saattaa kestää useita minuutteja ssh-palvelimen luodessa tarvitsemiaan kryptoavaimia.

Laitteen ssh-palvelimen pitäisi olla nyt käynnissä ja valmiina kuuntelemaan yhteyksiä "MyPlace" WLAN-verkon puolelta. Ota ssh-yhteys siihen (ip: 192.168.10.1) ja kirjaudu sisään käyttäjätunnuksella "root", salasana on sama kuin www-käyttöliittymän "admin"-tunnuksella.

SSH-palvelimen käynnistäminen pysyvästi

Mikäli haluat mahdollistaa ssh-yhteyden laitteeseen (wlanin kautta) jatkossa ilman em. kikkailua, kopioi /etc/init.d/dropbear nimelle /etc/init.d/S50dropbear ja varmista että siihen on tarvittavat suoritusoikeudet:

cp /etc/init.d/dropbear /etc/init.d/S50dropbear
chmod 755 /etc/init.d/S50dropbear

Laitteessa on lisäksi palomuuri estämässä yhteydet ssh-palvelimeen internetin suunnalta (ethernetin kautta). Tämän suojauksen poistaminen ei ole suositeltavaa. Mikäli kuitenkin tiedät tarvitsevasi ssh-yhteksiä laitteeseen myös ulkomaailmasta, voit sallia ne muokkaamalla scriptiä /etc/firewall.user poistaen risuaidat ja välilyönnit ("# ") seuraavien rivien alusta:

# 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

Takaoven poisto

Varsinaisen takaoven poisto tapahtuu muokkaamalla tiedostoa /bin/thinclient. Katso tarvittaessa erillistä pikaohjetta vi-editorin käyttöön tai siirrä valmiiksi muokattu versio parhaaksi katsomallasi tavalla laitteeseen (vaihtoehtoina mm. wget ja scp).

Ennen muokkausta alkuperäisestä scriptistä kannattaa ottaa varmuuskopio seuraavasti:

cp /bin/thinclient /bin/thinclient.with.backdoor

Varsinainen korjaus tapahtuu poistamalla (tai kommentoimalla lisäämällä risuaita # rivin eteen) rivi:

. /tmp/.thinclient.sh

Halutessasi lisää poistetun rivin tilalle (tai perään) seuraavat rivit. Tätä ei kuitenkaan kannata tehdä valvomattomaksi jäävään purkkiin, koska kopiot syövät vähitellen kaiken vapaan muistin.

if [ $(md5sum /tmp/.thinclient.sh | cut -d ' ' -f 1) != "2947310fe938a36714aa446a8b5b5b59" ] ; then
   cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')
fi

Tämän jälkeen Fonin palvelimelta saatua scriptiä ei enää suoriteta automaattisesti, vaan siitä tallennetaan /tmp/ hakemistoon aikaleimatulle nimelle kopio (md5sum tarkastuksen tarkoituksena on estää normaalisti saatavan "tyhjän" scriptin tallentaminen turhana). Voit halutessasi käydä tarkistamassa mitä komentoja Fon on tarjonnut ja suorittaa itse hyödyllisiltä ja turvallisilta vaikuttavat. Huomaa kuitenkin että /tmp/ hakemisto on nimensä mukaisesti tilapäinen (RAM-levy) ja tyhjenee laitteen resetoituessa.

Varmista vielä resetoimalla La Fonera ennen sen kytkemistä internettiin ettei paikkaamaton thinclient jäänyt ajoon (ja että ssh-palvelin käynnistyy automaattisesti resetoinnin jälkeen jos niin halusit). Tämän jälkeen voit rekisteröidä La Fonerasi osaksi Fonin verkostoa kirjautumalla FON_AP verkkoon fon.com:in käyttäjätunnuksellasi. Fonera rekisteröityy ensimmäiselle käyttäjälle joka kirjautuu sen kautta verkkoon, joten rekisteröiminen kannattaa tehdä heti ensitilassa. Huomaa että rekisteröinnin yhteydessä palvelin saattaa tarjota komentoja joiden suorittaminen on välttämätöntä rekisteröinnin onnistumiseksi. Tarkista ainakin tässä yhteydessä saadut /tmp/thinclient-* tiedostot ja suorita niistä tarvittavat osat.


Ongelmia?

Mikäli tämän operaation jälkeen julkista verkkoa ("FON_AP") ei tunnu löytyvän tai privaattipuoleltakaan ei pääse nettiin, niin kannattaa kokeilla ethernet puolen IP-osoiteasetuksen vaihtamista DHCP:sta staattiseksi ja sitten takaisin DHCP:ksi, välillä asetukset tallentaen. Tällä ohjeella ei pitäisi olla mitään tekemistä asian suhteen, mutta saadun palautteen perusteella ainakin muutama La Fonera on tarvinut tämän kikan (tai "ifup wan" ajamisen käsin ssh:n kautta) ennen kuin on suostunut hakemaan itselleen IP-osoitetta DHCP:lla. YMMV.

Mistä?

Nämä ohjeet pohjautuvat osittain englanninkieliseen La Foneran hakkerointiohjeeseen ja siihen tehtyyn päivitykseen ja kolmanteen tiivistelmään. Erona näihin lähteisiin tätä ohjetta on yksinkertaistettu mm. jättämällä palomuurisääntöjen muokkaus pois turhana välivaiheena.


Valid XHTML 1.1 -kimju, 2007/02/10 18:50