Ads 468x60px

tiistai 29. heinäkuuta 2014

Instagram istunnon kaappaaminen on helppoa

Taas kerran turvattomien protokollien käyttö on noussut esiin, ja huomaamme kuinka vähän loppukäyttäjä voi luottaa tunnettujenkaan palveluiden tietoturvaan. Viime päivinä Internetissä on käyty vilkasta keskustelua Instagramin API-kutsujen tietoturvasta. Instagramin mobiilisovellus (Android ja iPhone) tekee API-kutsut käyttäen salaamatonta HTTP-protokollaa. Jos käyttäjä selaa Instagramia suojaamatonta/heikosti suojattua (WEP) langatonta verkkoa käyttäen, on istunnon kaappaaminen hyvinkin helppoa. Alla on esimerkki miten istunnon kaappaus toteutetaan, kun henkilö selaa Instagramia suojaamatonta langatonta verkkoa käyttäen.

Ensimmäiseksi asetetaan langaton verkkokortti monitoroivaan tilaan
iwconfig wlan0 mode monitor 

Tämän jälkeen kuunnellaan Instagramin API-kutsuja esimerkiksi tcpdumpilla ja tallennetaan dump tiedostoon (esimerkki komento tallentaa kaiken liikenteen, joka on kohdistettu HTTP porttiin 80)
tcpdump -i wlan0  -n -vv -w instagramdump.pcap dst port 80

Nyt voi tcpdumpin antaa kerätä liikennettä ja pysäyttää se, kun paketteja on kertätty tarpeeksi. Jo yksi HTTP kysely Instagramin API:in riittää paljastamaan käyttäjän istuntotunnisteen. Seuraavaksi kerättyä dataa voidaan analysoida Wiresharkilla. Avataan kerätty instagramdump.pcap Wiresharkilla ja filteröidään protokollaksi HTTP. Kaikissa kyselyissä jotka lähtevät Instagramin API:in välitetään sessionid-eväste. Kun hyökkääjän on onnistunut kaapata liikennettä, jossa on välitetty edellä mainittu istuntotunniste, voi hän käyttää kaappaamaansa tunnistetta esimerkiksi asentamalla Firefoxiin Firebug lisäosan sekä muuttamalla käyttäjän user agentin.

User agentin voi muuttaa Firefoxista esimerkiksi lisäosalla tai kirjoittamalla osoiteriville about:config ja luomalla uuden String asetuksen, jonka nimeksi tulee:

general.useragent.override

Ja arvoksi:

Instagram 6.0.5 (iPhone6,2; iPhone OS 7_1_1; en_GB; en-GB) AppleWebKit/420+

Firebugista asetetaan uusi eväste, jonka nimi on sessionid ja sen arvoksi kaapattu istuntotunniste. Tämän jälkeen voi hyökkääjä tehdä selaimelta Instagramin API-kutsuja kaapatun käyttäjän istunnolla. Näillä API-kutsuilla hyökkääjä voi käytännössä tunnistautua uhrina Instagramiin, ja näin hallita uhrin Instagram-tiliä.

No, mikä tässä sitten on niin ihmeellistä tai huolestuttavaa?  Yksinkertainen vastaus on salaamattoman HTTP-protokollan käyttö yhdessä maailman suosituimmista sosiaalisen median palveluista. Erityisen epämielyttävä tilanne on loppukäyttäjien kannalta, koska he eivät usein voi suoraan vaikuttaa mobiilisovellusten tietoturva-asetuksiin, tai todentaa helpolla millaisia tiedonsiirtoprotokollia käytetään.

Facebookille (omistaa Instagramin) on raportoitu aiheesta heinäkuun 24. päivä, mutta ainakin viimeisin Instagramin version niin iPhonelle kuin Androidille on edelleen haavoittuva tämänkaltaisia hyökkäyksiä vastaan. Siihen asti kunnes Instagram alkaa käyttää salattua yhteyttä API-kutsujen yhteydessä, on erittäin suositeltavaa välttää Instagramin mobiilisovelluksen käyttöä erityisesti salaamattomissa/heikosti salatuissa langattomissa verkoissa. Jos Instagramin mobiilisovellusta käyttää hyvin suojatuissa langattomissa tai 3G/4G verkoista ei näin yksinkertainen hyökkäys ole enää mahdollinen. Liikenne kuitenkin suuntautuu Internettiin, jossa käyttäjällä ei ole mitään hallintaa siitä miten hänen lähettämänsä paketit reitittyvät. Tästä syystä jossain muussa pisteessä sijaitseva hyökkääjä voi edelleen kaapata Instagram-käyttäjän istunnon.


Ei kommentteja:

Lähetä kommentti