Tuesday, January 26, 2016

Käyttäjän tunnistaminen Mobiilimaksun avulla


Olen käsitellyt aiemmissa kirjoituksissani mobiilimaksamista (Mobiilimaksua) kolme kertaa. Vasta tänä syksynä Mobiilimaksu-nimellä lanseerattiin ip-pohjainen mobiilimaksamistoiminto ja sen käytöstä sekä toimintatavasta alettiin tiedottaa kuluttajia.

Jo yli vuosi sitten eräs suomalainen palveluntarjoaja väärinkäytti Mobiilimaksua. Koska lähes kukaan ei tiennyt Mobiilimaksun olemassaolosta ja toimintaperiaatteesta, pysyi toiminta hyvin näkymättömissä. Uskaltaisin väittää, että monelle ensikosketus ip-pohjaiseen mobiilimaksamiseen oli juurikin julkaisemani kirjoitus “Helvet** palvelutekstiviestit”, jossa käytiin teknisesti läpi Mobiilimaksun väärinkäyttöä.

Operaattorit saivat lisää lokaa syliinsä tänä syksynä, kun Mobiilimaksun lanseeraus oli aivan ovella. Jälleen kerran epärehelliset toimijat hyödynsivät Mobiilimaksua ja kansalaisilla oli laskuilla ylimääräisiä veloituksia.

Edellä mainittujen kirjoituksien välisenä ajanjaksona tutkin myös mahdollisuutta käyttäjän liittymänumeron (puhelinnumeron) luvattomaan keräämiseen Mobiilimaksua hyväksikäyttäen. Lopputulemana keräys onnistui, mutta vain Flash-ohjelmistoa käyttävistä selaimista.

Tässä kirjoituksessa tarkastellaan, kuinka liittymänumeron keruu onnistuu ilman Flash-tukea. Kirjoitus oli alunperin tarkoitus tehdä teknisemmäksi, mutta luovuin tässä vaiheessa ajatuksesta jakaa kaikkea tuota tietoa lähinnä väärinkäytön välttämiseksi.

On ollut nähtävissä, että operaattorit käyttävät kahta erilaista tekniikkaa liittymänumeron toimituksessa palveluntarjoajalle. Sonera tekee toimituksen täysin näkymättömästi. DNA:n ja Elisan osalta Mobiilimaksun käyttö on havaittavissa liikennöinnistä, kun kyseessä on palveluntarjoajalle tarjottava palvelu. Omissa palveluissaan DNA:n ja Elisan on havaittu tekevän liittymänumeron toimitusta Soneran tapaan.

Soneralla on määriteltynä heidän järjestelmään web-sivustot, joille liittymänumero tulee lähettää. Jos tekisin sopimuksen Soneran kanssa, voisin pyytää heiltä lisäystä vaikkapa kuvitellun kotisivuni DNS-nimeen (www.mobiilimak.su). Tällöin kotisivullani vierailevien Soneran mobiiliasiakkaiden liittymänumerot lähetettäisiin aina kohti kotisivuani ja pystyisin kerätä liittymänumerot talteen.

DNA ja Elisa eivät lähetä liittymänumeroita suoraan palveluntarjoajan web-sivustoja kohti, vaan liittymänumerot kiertävät erillisten maksuyhdyskäytävien kautta. Maksuyhdyskäytävät vaikuttavat pysyvän samoina, joten ne on helppo tunnistaa. Kuvassa  1 on esitettynä eroavaisuudet operaattorien kesken.


Kuva 1. Eroavaisuudet operaattoreilla.

























Mobiilimaksamisen pystyy estämään normaaleilla SMS-palveluestoilla. On kuitenkin syytä huomioida, että minkään operaattorieston ei ole havaittu estävän liittymänumeron lähettämistä. Liittymänumero lähetetään operaattorin toimesta aina, kun kohdesivusto on Mobiilimaksun piirissä, vaikka estot olisi päällä. Halusit siis tai et, liittymänumerosi siirtyy tietämättäsi palveluntarjoajan palvelimelle.

Suureksi ongelmaksi kuitenkin muodostuu se, että kuka tahansa pystyy keräämään liittymänumeroita ilman minkäänlaisia palveluntarjoajan ja operaattorin sopimuksia.

Liittymänumeron keräys ilman operaattorisopimusta vaatii Mobiilimaksua hyödyntävän palveluntarjoajan web-sivuston hyväksikäyttöä. Web-sivuston on tulostettava käyttäjän liittymänumero näkyviin. Lisäksi web-sivustolta on löydyttävä haavoittuvuus, jolla voidaan ohittaa “Same Origin Policy” (SOP). SOP estää käytännössä sen, että sivusto X ei pysty pyytämään käyttäjän selainta hakemasta sivuston Y sisältöä itselleen.

Kun edellä mainitut ehdot täyttyvät, luodaan web-sivusto, jolle kohdekäyttäjä on tarkoitus saada vierailemaan. Web-sivustolle lisätään näkymätön iframe-kehys, joka lataa palveluntarjoajan XSS-haavoittuvuuden sisältävän web-sivuston. Javascript-koodi (XSS) tekee HTTP-pyynnön liittymänumeron sisältävälle sivustolle ja palauttaa vastauksen muuttujaan. Muuttujan sisältö (liittymänumero) lähetetään hyökkääjään määrittelemälle palvelimelle. Kuvassa 2 esitelty toimintaperiaate.

Kuva 2. Liittymänumeron välitys hyökkääjälle.














Yksityisyyden kannalta ip-osoite tarjoaa siinä mielessä hyvän suojan, että sen omistajan voi selvittää vain oikeuden päätöksellä operaattorilta. Liittymänumero on lähes aina henkilökohtainen ja sen omistaja on helposti selvitettävissä. Sen lisäksi, että Mobiilimaksu tuo kätevän maksamisen kaikille, “auttaa” se merkittävästi web-sivustolla vierailevan henkilön tunnistamisessa.

Elisan ja DNA:n liittymillä liittymänumeron lähetys on mahdollista ehkäistä estämällä liikenne heidän maksuyhdyskäytäviänsä kohti. Täyttä suojaa tämä ei takaa, koska myös operaattorien omista palveluista, jolloin liikenne ei kierrä maksuyhdyskäytävien kautta, voi löytyä haavoittuvuuksia, jotka mahdollistavat liittymänumeron keruun.

Estämällä selaimesta javascript-koodin ajon, voidaan suojautua hyökkäykseltä. Käyttömukavuuden kannalta tämä ei ole suositeltavin vaihtoehto.

Soneran osalta ainoa keino estää liittymänumeron lähetys, on käyttää VPN-yhteyttä. Tällöin Sonera ei pysty lisäämään liittymänumeroa HTTP-pakettiin. Myöskään Elisa ja DNA eivät saa VPN-yhteyttä käytettäessä ohjauspyyntöä palveluntarjoajan web-sivustolta liittymänumeron lähettämiseksi.

Riippumatta mitä operaattoria käytät, suosittelen VPN-yhteyden käyttöä myös älypuhelimessasi, jotta liittymänumeroasi ei tungeta tietämättäsi web-sivustoille, joilla vierailet tai varsinkaan hyökkääjän haltuun.

Seuraavassa Mobiilimaksu-aiheisessa kirjoituksessa katsotaan, kuinka eräs palveluntarjoaja mahdollisti palveluiden tilaamisen kaverin matkapuhelinlaskulle.