| | | | Mottó: Mondd, jó barát, és lépj be! /J. R. R. Tolkien: A Gyűrűk Ura/ | 2011. március 1. | | | | A jelszó: "mellon", azaz "jó barát" | | | | | A felhasználói hitelesítésre több megoldás is létezik, de leggyakrabban a felhasználói név és jelszó párosítással találkozik a júzer, ami rendben is van olyan jellegű szolgáltatások esetén, ahol a védendő információ sem olyan nagy érték (pl. fórumoknál). Abban az esetben azonban, amikor a netbankhoz kell csatlakozni, már kell ezeken túlmenően egyszeri jelszó (ami SMS-ben érkezik vagy egy külön kütyü hozza létre), illetve esetleg chipkártyát kell használni. Ez mind azért kell, mert minden IT biztosági szakember megtanulta, hogy az a jó felhasználói hitelesítés, jogosultság-ellenőrzés, ahol a három faktor közül ("tudás", "birtok", "biometria") kettőt, egymástól függetlenül alkalmaznak. Jellemzően rossz alkalmazása a "tudás + birtok" kombinációnak pl. a mobiltelefonok feltöltőkártyája, ahol a "birtok" (megvásárolt kártya, amin a titkos adat van elrejtve) nélkül is lehet próbálkozni a hosszú kódok begépelésével, elküldésével. Ezekre a vaktában beírt kódokra a rendszer ad valamilyen választ, amiből ki lehet találni, hogy a megadott szám mennyire tér el egy valós, regisztrált adattól. A rossz alkalmazási módok listájára lassacskán felkerül az SMS-ben érkező egyszeri jelszó is (amit a legtöbb netbanki rendszer jelenleg használ), hiszen terjednek az okostelefonok...
Miért bajos az okostelefon? Ezeknél a készülékeknél egy környezetben lehet internetet használni, illetve az SMS-tárhelyet elérni, azaz nem "egymástól függetlenül" lehet kezelni a birtokot (mobiltelefon, illetve SIM kártya, amire érkezik SMS-ben az egyszeri jelszó) és a tudást (a belépési felhasználói jelszó). A kommunikációs csatorna, illetve a készülék (ahol használni kell a netbankot) is lehet ugyanaz, aminek a veszélyeit egy Proof-of-Concept (PoC) kódom is mutatja: az egyszerűség kedvéért az Android API-t használtam, de valószínűleg hasonló osztályok, függvények elérhetők iPhone esetében is.
A PoC kód egy ártalmatlannak tűnő, netbanki elérést megkönnyítő alkalmazás. A feladata, hogy meghívja a netbanki webes felületet (HTTP/HTTPS-kezelő osztály), a felhasználó megadja a felhasználói nevét és jelszavát és ezeket elküldje "submit" hatására (HTTP/HTTPS-kezelő osztály), majd a következő felületen várja az SMS-ben érkező egyszeri jelszót. A PoC kód közben el is menti egy állományba a felhasználó által megadott érzékeny adatokat (állománykezelő osztály). A PoC kód figyeli az SMS-tárhelyet (SMS-kezelő osztály), a beérkező SMS-ből kiemeli a lényeget, azaz az egyszeri jelszót, behelyettesíti a HTTP POST üzenetbe és elküldi a szerver felé (HTTP/HTTPS-kezelő osztály). A válaszban megkapott webes tartalom már az, amit a beléptetett, hitelesített felhasználó láthat. Banki átutalás tranzakció végrehajtásához a leírthoz hasonló a folyamatot kell végigvinni (az SMS-üzenetek, illetve a POST-olandó adatok mások lehetnek), de a lényeg az, hogy a PoC kód, akár egy háttérben működő trójaiként képes lehet a felhasználó tudta nélkül banki tranzakciókat végrehajtani!
A PoC kód futtatásához mindössze két jogosultság kell (INTERNET és RECEIVE_SMS):- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.RECEIVE_SMS" />
Az állomány (pl. felhasználói névvel és jelszóval) alapértelmezett mentési helye:- /data/data/<package name>/files/<filename.ext>
A HTTP üzenet küldéséhez a "httpclient.execute(httppost)", az SMS tartalmának kinyeréséhez az "smsmessage.getMessageBody()" a lényeges hívás. Az alábbi képeken a virtuális Android készüléken futó PoC kód, illetve a fejlesztőkörnyezet SMS-küldő teszteszköze látható.
Mi akkor a jó megoldás?- Megmaradhat az SMS-es egyszeri jelszó, de a mobiltelefonon, ahova az érkezik, ne legyen semmilyen aktív internet-kapcsolat, soha, azaz butatelefonok előnyben!
- Lehet használni akár chipkártyás, kriptográfia alapú challenge-response hitelesítést, ahol a chipkártyából nem nyerhető ki a bizalmas adat (titkos kulcs).
- Elterjedt megoldás az egyszeri jelszavas célhardverek alkalmazása is (internet-kapcsolat nélkül), amelyek közül a legismertebb az RSA SecurID, de alacsonyabb áron hozzá lehet jutni hasonló termékekhez (akár "counter"-en, akár "time"-on alapulnak) a Gemalto, illetve az Aladdin gyártóknál is.
UPDATE: A cikk megírása után jött a hír, hogy másoknak is hasonló dolgokon járt az eszük, mert napvilágot látott a ZeuS (vagy ZITMO, azaz "Zeus In The MObile") névre keresztelt trójai az okostelefonokra. Mit csinál? A lengyel ING Bank Slaski netbanki rendszerével kommunikálva szerez session-t (SMS-ben érkező jelszóval) és belépve a rendszerbe végrehajthat pénzügyi tranzakciókat a felhasználó tudta nélkül. A ZeuS csak Symbian környezetben és a Blackberry mobiltelefonokon tud futni, de az alapvető függvények bármely okostelefonos operációs rendszeren elérhetőek, ezért könnyen átírhatják azt Androidra vagy iPhone-ra.
| | vissza | | | | |
|