A Filter Bypass és néhány hexadecimális, Hacked Credit Card Numbers Are Still, Still Google-able
A Word on Credit Card Hacking
Ha ismer engem, vagy olvasta az előző bejegyzésemet, tudod, hogy egy nagyon érdekes cégnél dolgoztam, mielőtt csatlakoztam a Toptalhoz. Ennél a cégnél a fizetési szolgáltatónk napi 500 ezer dollár körüli tranzakciókat dolgozott fel. A munkám része volt, hogy a szolgáltatónkat PCI-DSS-kompatibilissé tegyük – vagyis a Payment Card Industry – Data Security Standard (Fizetési Kártya Ipar – Adatbiztonsági Szabvány) szabványnak megfelelővé.
Bizonyos, hogy ez nem a gyenge szívűeknek való munka volt. Ezen a ponton már elég jól ismerem a hitelkártyákat (CC-k), a hitelkártyák feltörését és általában a webes biztonságot. Végül is a mi feladatunk az volt, hogy megvédjük a felhasználóink adatait, megakadályozzuk, hogy azokat feltörjék, ellopják vagy visszaéljenek velük.
Elképzelheted, mennyire meglepődtem, amikor megláttam Bennett Haselton 2007-es cikkét a Slashdot-on: Why Are CC Numbers Still So Easy to Find?. Röviden: Haselton képes volt megtalálni a hitelkártyaszámokat a Google segítségével, először úgy, hogy a kártya első nyolc számjegyét kereste “nnnn nnnn” formátumban, később pedig a számtartományokra épülő fejlett lekérdezésekkel. Például a “40600000000000000000..40609999999999999999999999” segítségével meg tudta találni a CHASE összes 16 számjegyű elsődleges számlaszámát (PAN) (amelyek kártyái mind 4060-zal kezdődnek). Egyébként itt van a kibocsátói azonosítószámok teljes listája.
Akkor nem gondoltam sokat, mivel a Google azonnal elkezdte szűrni a Bennett által használt típusú lekérdezéseket. Amikor az ember megpróbált egy ilyen tartományt lekérdezni, a Google egy olyan oldalt mutatott, amely valami olyasmit mondott, hogy “Te egy rossz ember vagy.”
Kábé hat hónappal ezelőtt, miközben egy régi barátommal emlékeztem, ismét eszembe jutott ez a hitelkártyaszám-hack. Nem sokkal később valami riasztó dolgot fedeztem fel. Nem rettenetesen riasztó, de mindenképpen riasztó – ezért értesítettem a Google-t, és vártam. Miután egy hónapig nem kaptam választ, ismét értesítettem őket, de eredménytelenül.
A Haselton régi trükkjének egy apró módosításával képes voltam a Google hitelkártyaszámokat, társadalombiztosítási számokat és minden más érzékeny információt, ami érdekelhetett.
Bennett
Tegnap néhány barátom (buhera.blog.hu és _2501) felhívta a figyelmemet egy újabb Slashdot-bejegyzésre: Credit Card Numbers Still Google-able.
A cikk szerzője, ismét Bennett Haselton, aki az eredeti cikket még 2007-ben írta, azt állítja, hogy a hitelkártyaszámokat még mindig lehet guglizni. Nem lehet használni a számtartomány-lekérdezési hacket, de még mindig meg lehet csinálni. Az egyszerű tartományok használata helyett speciális formázást kell alkalmaznia a lekérdezéshez. Valami ilyesmi: “1234 5678” (vegye figyelembe a szóközt középen). Erre a lekérdezésre sok találat érkezik, de nagyon kevés az igazán érdekes. A versenyzők között vannak telefonszámok, irányítószámok és hasonlók. Nem rendkívül riasztó. De itt jön a hitelkártya-hack csavar.
A módszertan
Kíváncsi voltam, hogy lehetséges-e még mindig úgy megszerezni a hitelkártyaszámokat az interneten, mint 2007-ben. Mint minden jó mérnök, általában egy megfelelően konstruált és intelligens tervvel közelítem meg a dolgokat, amelyet tökéletesen és a legnagyobb pontossággal kell végrehajtani. Ha már kipróbálta ezt a módszert, akkor tudhatja, hogy nagyon nagyot tud bukni – ilyenkor a gondos tervezés és erőfeszítés kárba vész.
Az informatikában hajlamosak vagyunk a túlzott intellektualizálásra, még akkor is, ha ez nem igazán indokolt. Láttam, hogy barátaim és kollégáim teljesen tönkreteszik az alkalmazásokat látszólag véletlenszerű bemenetekkel. A sikerességi arányuk elképesztő volt, a ráfordított erőfeszítés pedig a nullához közelített. Ekkor tanultam meg, hogy egy ajtó kinyitásához néha csak kopogni kell.”
A hitelkártyahack
Az előző bekezdés egy ügyesen álcázott kísérlet volt arra, hogy kevésbé tűnjek idiótának, amikor az “elit hackerképességeimet” mutogatom. Hoppá.
Először is, többféle tartomány-lekérdezésen alapuló megközelítést próbáltam ki. Aztán megnéztem a fejlett lekérdezéseket és nagyjából bármit, amivel egy óra alatt ki lehet találni. Egyik sem hozott jelentős eredményt.
És ekkor támadt egy őrült ötletem.
Mi van, ha a szűrőmotor és a tényleges back-end között eltérés van? Mi van, ha a Google-tól kapott üzenet (“Rossz ember vagy”) nem magától a back-endtől származik, hanem egy kijelölt szűrőmotorból, amelyet a Google az enyémhez hasonló lekérdezések cenzúrázására implementált?
Ez építészeti szempontból nagyon is logikus lenne. És az ilyen hibák elég gyakoriak – az ITSEC-ben állandóan találkozunk velük, különösen az IDS/IPS megoldásokban, de az általános szoftverekben is. Van egy szűrési eljárás, amely feldolgozza az adatokat, és csak akkor adja át a backendnek, ha úgy gondolja, hogy az adatok elfogadhatóak/nem rosszindulatúak. A back-end és a szűrő szerver azonban szinte soha nem elemzi pontosan ugyanúgy a bemenetet. Így egy látszólag érvényes bemenet átmehet a szűrőn, és pusztítást végezhet a back-endben, gyakorlatilag megkerülve a szűrőt.
Az ilyen típusú viselkedést általában úgy lehet kiváltani, hogy a bemenetet különböző kódolásokban adjuk meg. Például: ahelyett, hogy decimális számokat (0-9) használnál, mi lenne, ha hexadecimálisra vagy oktálisra vagy binárisra konvertálnád őket? Nos, találd ki…
Keresd ki ezt, és a Google azt fogja mondani, hogy rossz ember vagy: “4060000000000000..406099999999999999999999”
Keress rá erre, és a Google örömmel teljesíti a kérést: “0xe6c8c69c9c000..0xe6d753e6ecfff”.
Az egyetlen dolog, amit tennie kell, hogy a hitelkártyaszámokat decimálisról hexadecimálisra konvertálja. Ennyi.
Az eredmények közé tartozik…
- Hatalmas CSV fájlok tele potenciálisan érzékeny információkkal.
- Hibás e-kereskedelmi naplófájlok.
- Hackeroldalakon (és még a Facebookon is) megosztott érzékeny információk.
Ez valóban ijesztő dolog.
Tudom, hogy ez a hiba nem fog inspirálni semmilyen biztonsági kutatást, de tessék. A Google elkövette ezt a bakit, és még visszaírni is elmulasztotta. Hát, megesik az ilyen. Bár nem irigylem a nagy G biztonsági embereit. Biztos sok mindenre kell odafigyelniük. Azért írok erről a hitelkártya szám feltörésről itt, mert:
- Viszonylag kis hatású.
- Aki érdeklődő és motivált, az már rájött erre.
- Haseltont idézve, ha a nagy játékosok nem vállalják a felelősséget és nem lépnek fel ezekkel az exploitokkal szemben, akkor “az a helyes, ha rávilágítunk a problémára, és ragaszkodunk ahhoz, hogy minél hamarabb kijavítsák”.
Ezzel a trükkel telefonszámokat, SSN-eket, TFN-eket és egyebeket lehet megnézni. És, ahogy Bennett írta, ezeket a számokat sokkal nehezebb megváltoztatni, mint a hitelkártyádat, amivel kapcsolatban egyszerűen felhívhatod a bankodat és lemondhatod a kártyát.
Mintakérdések
FIGYELEM: NEM szabad a saját hitelkártyaszámodat teljes egészében a Google-ban keresni!
Keresd meg a 4060:4060000000000000..4060999999999999999999 ? 0xe6c8c8c69c9c9c000..0xe6d753e6ecfff
Minden magyar telefonszámot a ‘Telenor’ szolgáltatótól? Nem probléma:36200000000..36209999999 ? 0x86db02a00..0x86e48c07f
Keresd az SSN-eket. Szerencsére ezek nem sok értelmes eredményt adnak:100000000..99999999999 ? 0x5f5e100..0x3b9ac9ff
Sok-sok van még.
Ha találsz valami nagyon aggasztóat, vagy ha kíváncsi vagy a hitelkártyák feltörésére, kérlek, hagyd meg a hozzászólásokban, vagy írj nekem e-mailben vagy Twitteren a @synsecblog címen. A rendőrség hívása ilyen esetekben általában hiábavaló, de egy próbát talán megér. Az adott kereskedő vagy a kártyaszolgáltató általában szívesebben foglalkozik a problémával.
Hogyan tovább
Nos, a Google-nek nyilvánvalóan orvosolnia kell a problémát, esetleg a nagy szereplők, például a Visa és a Mastercard segítségével. Valójában Haselton számos érdekes javaslatot tesz a fentebb linkelt két cikkben.
Amit azonban tennie kell (és amiért ezt a bejegyzést írtam), az a hír terjesztése. A hitelkártyacsalás nagy iparág, és az egyszerű tudatosság megmentheti Önt attól, hogy áldozattá váljon. Továbbá, ha van egy e-kereskedelmi webhelye, vagy bármilyen hitelkártya-feldolgozást kezel, kérjük, győződjön meg arról, hogy biztonságban van. A PCI-DSS jó iránymutatás, de messze nem tökéletes. Ráadásul mindig jó ötlet a “site:mysite.com” bővített lekérdezéssel megkeresni webhelyét a Google-ban, érzékeny számok után kutatva. Nagyon-nagyon kicsi az esélye, hogy talál valamit – de ha talál, azonnal cselekednie kell.
Még egy baráti tanács: Soha ne add ki a hitelkártyád adatait senkinek. Azt tanácsolnám, hogy amikor csak lehet, használd a PayPal-t vagy egy hasonló szolgáltatást. További információkért nézze meg ezeket a linkeket:
- Visa hitelkártya biztonsági tippjei
- Citi hitelkártya biztonsági tippjei
És néhány általános tipp: ne töltsön le olyan dolgokat, amiket nem kért, ne nyisson meg spam e-maileket, és ne feledje, hogy a bankja soha nem kéri a jelszavát.
Mellesleg:
Vigyázzatok magatokra emberek!
Ha azt hiszitek, hogy nincs olyan hülye, aki bedőlne ezeknek a hitelkártya feltörési technikáknak, vagy kiadná a hitelkártya adatait az interneten, nézzétek meg a @NeedADebitCard.
Vigyázzatok magatokra emberek!