Met een filter omzeiling en wat hexadecimaal, gehackte Credit Card nummers zijn nog steeds, nog steeds Google-able
Een woord over Credit Card Hacking
Als je me kent, of mijn vorige post hebt gelezen, weet je dat ik voor een zeer interessant bedrijf heb gewerkt voordat ik bij Toptal kwam. Bij dit bedrijf, verwerkte onze betalingsprovider transacties in de buurt van $500k per dag. Een deel van mijn taak was om onze provider PCI-DSS compliant te maken – dat wil zeggen, compliant met de Payment Card Industry – Data Security Standard.
Het is veilig om te zeggen dat dit geen baan was voor de zwakkeren van hart. Op dit punt, ben ik vrij intiem met Credit Cards (CCs), Credit Card hacking en webbeveiliging in het algemeen. Tenslotte was het onze taak om de gegevens van onze gebruikers te beschermen, om te voorkomen dat ze gehackt, gestolen of misbruikt zouden worden.
Je kunt je mijn verbazing voorstellen toen ik Bennett Haselton’s artikel uit 2007 op Slashdot zag: Why Are CC Numbers Still So Easy to Find? In het kort, Haselton was in staat om Credit Card nummers te vinden via Google, eerst door te zoeken naar de eerste acht cijfers van een kaart in “nnnn nnnn” formaat, en later met behulp van een aantal geavanceerde query’s gebouwd op nummer reeksen. Zo kon hij bijvoorbeeld “40600000000000..40609999999999” gebruiken om alle 16-cijferige Primary Account Numbers (PAN’s) van CHASE te vinden (waarvan de kaarten allemaal met 4060 beginnen). Tussen haakjes: hier is een volledige lijst van Issuer ID nummers.
Toen dacht ik er niet veel van, omdat Google onmiddellijk het type query’s begon te filteren dat Bennett gebruikte. Als je zo’n zoekopdracht gaf, verscheen er een pagina met de tekst “U bent een slecht mens”.
Zo’n zes maanden geleden, toen ik met een oude vriend herinneringen ophaalde, kwam deze creditcardnummerhack weer in me op. Kort daarna ontdekte ik iets alarmerends. Niet verschrikkelijk alarmerend, maar zeker alarmerend, dus ik bracht Google op de hoogte, en wachtte af. Na een maand zonder antwoord, bracht ik hen opnieuw op de hoogte, zonder resultaat.
Met een kleine aanpassing aan Haselton’s oude truc, was ik in staat om Credit Card nummers, sofi-nummers, en alle andere gevoelige informatie van belang te Googlen.
Bennett
Gisteren brachten een aantal vrienden van mij (buhera.blog.hu en _2501) een meer recente Slashdot post onder mijn aandacht: Credit Card Numbers Still Google-able.
De auteur van het artikel, wederom Bennett Haselton, die het oorspronkelijke artikel al in 2007 schreef, beweert dat creditcardnummers nog steeds kunnen worden gegoogled. U kunt de nummerreeks query hack niet gebruiken, maar het kan nog steeds worden gedaan. In plaats van eenvoudige ranges te gebruiken, moet je specifieke opmaak toepassen op je query. Zoiets als: “1234 5678” (let op de spatie in het midden). Er komen veel treffers op deze zoekopdracht, maar er zijn er maar weinig die echt interessant zijn. Onder de deelnemers zijn telefoonnummers, postcodes, en dergelijke. Niet echt alarmerend. Maar hier komt de draai van de credit card hack.
De Methodologie
Ik was benieuwd of het nog steeds mogelijk was om credit card nummers online te krijgen zoals we dat in 2007 konden. Zoals elke goede ingenieur, benader ik de dingen meestal met een goed doordacht en intelligent plan dat perfect moet worden uitgevoerd met de grootste precisie. Als je die methode al eens hebt uitgeprobeerd, weet je misschien dat het heel hard kan mislukken – in welk geval je zorgvuldige planning en inspanning voor niets zijn geweest.
In de IT hebben we de neiging om te veel te ver-intellectualiseren, zelfs als dat niet echt gerechtvaardigd is. Ik heb mijn vrienden en collega’s toepassingen zien kraken met schijnbaar willekeurige input. Hun succesratio was verbluffend en de moeite die ze erin staken was bijna nul. Toen leerde ik dat om een deur te openen, je soms gewoon moet kloppen.
De Credit Card Hack
De vorige paragraaf was een slim vermomde poging om me minder een idioot te laten lijken als ik pronk met mijn “elite hacking skills”. Oeps.
Eerst heb ik verschillende range-query gebaseerde benaderingen geprobeerd. Daarna heb ik gekeken naar geavanceerde query’s en zo’n beetje alles wat je in een uurtje of zo zou kunnen bedenken. Geen van hen leverde significante resultaten op.
En toen kreeg ik een gek idee.
Wat als er een mismatch was tussen de filtering engine en de eigenlijke back-end? Wat als het bericht dat ik van Google kreeg (“Je bent een slecht mens”) niet van de back-end zelf kwam, maar van een speciale filterengine die Google had geïmplementeerd om zoekopdrachten zoals die van mij te censureren?
Het zou vanuit architecturaal oogpunt heel logisch zijn. En zulke bugs komen vrij vaak voor. We zien ze voortdurend in ITSEC, vooral in IDS/IPS-oplossingen, maar ook in gewone software. Er is een filterprocedure die gegevens verwerkt en ze alleen aan het back-end geeft als het denkt dat de gegevens acceptabel/niet-malicious zijn. Het back-end en de filterserver ontleden de invoer echter bijna nooit op precies dezelfde manier. Zo kan een schijnbaar geldige invoer door het filter gaan en een ravage aanrichten in het back-end, waarbij het filter effectief wordt omzeild.
Je kunt dit soort gedrag meestal uitlokken door je invoer in verschillende coderingen aan te leveren. Bijvoorbeeld: in plaats van decimale getallen (0-9) te gebruiken, kun je ze ook omzetten in hexadecimaal, octaal of binair? Wel, raad eens…
Zoek hiernaar en Google zal je vertellen dat je een slecht mens bent: “4060000000000000..4060999999999999”
Zoek hiernaar en Google zal je graag van dienst zijn: “0xe6c8c69c9c000..0xe6d753e6ecfff”.
Het enige wat je hoeft te doen is credit card nummers omzetten van decimaal naar hexadecimaal. Dat is alles.
De resultaten zijn…
- Humonieuze CSV bestanden vol met potentieel gevoelige informatie.
- Foutieve e-commerce logbestanden.
- Sensitieve informatie gedeeld op hackersites (en zelfs Facebook).
Het is echt eng spul.
Ik weet dat deze bug niet zal inspireren tot enig veiligheidsonderzoek, maar daar heb je het. Google maakte deze fout en schreef me niet eens terug. Nou ja, het gebeurt. Ik benijd de beveiligingsmensen bij de grote G niet, dat wel. Ze moeten een hoop dingen hebben om op te letten. Ik post hier over deze creditcard hack omdat:
- Het relatief weinig impact heeft.
- Iedereen die geïnteresseerd en gemotiveerd is, zal dit nu wel doorhebben.
- Om Haselton te citeren, als de grote spelers geen verantwoordelijkheid nemen en niet handelen op deze exploits, dan “het juiste ding om te doen is om een licht te schijnen op het probleem en erop aan te dringen dat ze het zo snel mogelijk repareren”.
Deze truc kan worden gebruikt om te zoeken naar telefoonnummers, SSN’s, TFN’s, en nog veel meer. En, zoals Bennett schreef, deze nummers zijn veel veel moeilijker te veranderen dan uw Credit Card, waarvoor u gewoon uw bank kunt bellen en de kaart kunt annuleren.
Sample Queries
WAARSCHUWING: Google NIET uw eigen credit card nummer in zijn geheel!
Zoek naar een CC PAN beginnend met 4060:4060000000000000..40609999999999 ? 0xe6c8c69c9c000..0xe6d753e6ecfff
Enige Hongaarse telefoonnummers van de provider ‘Telenor’? Geen probleem:362000000..36209999999 ? 0x86db02a00..0x86e48c07f
Kijk naar SSN’s. Gelukkig leveren deze niet veel bruikbare resultaten op:100000000..999999999 ? 0x5f5e100..0x3b9ac9ff
Er zijn er nog veel, veel meer.
Als je iets heel alarmerends vindt, of als je nieuwsgierig bent naar het hacken van creditcards, laat het dan achter in de reacties of neem contact met me op per e-mail of op Twitter via @synsecblog. De politie bellen is meestal zinloos in deze gevallen, maar het is misschien het proberen waard. De betreffende handelaar of de kaartprovider is er meestal meer op gebrand om de kwestie aan te pakken.
Where to Go From Here
Wel, Google moet dit natuurlijk oplossen, mogelijk met de hulp van de grote spelers zoals Visa en Mastercard. In feite, Haselton geeft een aantal interessante suggesties in de twee artikelen hierboven gelinkt.
Wat je moet doen, echter (en waarom ik deze post heb geschreven), is het woord verspreiden. Creditcardfraude is een grote industrie, en eenvoudige bewustwording kan u behoeden voor het worden van een slachtoffer. Verder, als u een e-commerce site hebt of enige credit card verwerking doet, zorg er dan voor dat u veilig bent. PCI-DSS is een goede richtlijn, maar is verre van perfect. Bovendien is het altijd een goed idee om uw site te googelen met de geavanceerde query “site:mysite.com”, op zoek naar gevoelige nummers. De kans is klein dat je iets vindt, maar als dat zo is, moet je er onmiddellijk iets mee doen.
Ook een vriendelijk advies: Je moet nooit je credit card gegevens aan iemand geven. Mijn advies zou zijn om waar mogelijk PayPal of een soortgelijke dienst te gebruiken. U kunt deze links bekijken voor meer informatie:
- Visa’s credit card veiligheidstips
- Citi’s credit card veiligheidstips
En een paar algemene tips: download geen dingen waar je niet om hebt gevraagd, open geen spam e-mails, en onthoud dat je bank nooit om je wachtwoord zal vragen.
Tussen haakjes: Als je denkt dat er niemand dom genoeg is om in deze creditcard hacking technieken te trappen of zijn creditcard gegevens op het internet weg te geven, kijk dan eens op @NeedADebitCard.
Blijf veilig mensen!