Med en Filter Bypass og nogle Hexadecimal, Hacked Credit Card Numbers Are Still, Still Google-able

Et ord om Credit Card Hacking

Hvis du kender mig, eller har læst min tidligere indlæg, du ved, at jeg arbejdede for en meget interessant virksomhed, før jeg sluttede sig til Toptal. I denne virksomhed behandlede vores betalingsudbyder transaktioner i omegnen af 500k dollars om dagen. En del af mit job bestod i at gøre vores udbyder PCI-DSS-kompatibel – dvs. i overensstemmelse med Payment Card Industry – Data Security Standard.

Det er sikkert at sige, at dette ikke var et job for sarte sjæle. På dette tidspunkt er jeg ret fortrolig med kreditkort (CC’er), kreditkorthacking og websikkerhed i almindelighed. Vores job var trods alt at beskytte vores brugeres data, at forhindre, at de blev hacket, stjålet eller misbrugt.

Du kan forestille dig min overraskelse, da jeg så Bennett Haseltons artikel fra 2007 på Slashdot: Why Are CC Numbers Still So Easy to Find?. Kort fortalt var Haselton i stand til at finde kreditkortnumre via Google, først ved at søge efter kortets første otte cifre i “nnnn nnnn nnnn”-format og senere ved hjælp af nogle avancerede forespørgsler bygget på nummerserier. Han kunne f.eks. bruge “40600000000000000000..406099999999999999999999” til at finde alle de 16-cifrede primære kontonumre (PAN’er) fra CHASE (hvis kort alle begynder med 4060). I øvrigt: Her er en komplet liste over Issuer ID-numre.

På det tidspunkt tænkte jeg ikke så meget over det, da Google straks begyndte at filtrere de typer forespørgsler, som Bennett brugte. Når man forsøgte at google et sådant interval, viste Google en side, hvor der stod noget i retning af “Du er et dårligt menneske”.

For omkring seks måneder siden, da jeg mindedes en gammel ven, kom dette kreditkortnummerhack igen op i tankerne. Kort tid efter opdagede jeg noget alarmerende. Ikke forfærdeligt alarmerende, men bestemt alarmerende – så jeg underrettede Google og ventede. Efter en måned uden svar underrettede jeg dem igen uden resultat.

Med en lille ændring af Haseltons gamle trick var jeg i stand til at google kreditkortnumre, personnumre og andre følsomme oplysninger af interesse.

Så jeg underrettede Google og ventede. Efter en måned uden svar underrettede jeg dem igen uden resultat. Med en lille ændring af Haseltons gamle trick kunne jeg google kreditkortnumre, socialsikringsnumre og alle andre følsomme oplysninger.

Bennett

I går gjorde nogle af mine venner (buhera.blog.hu og _2501) mig opmærksom på et nyere Slashdot-indlæg: Credit Card Numbers Still Google-able.

Artiklens forfatter, igen Bennett Haselton, som skrev den oprindelige artikel tilbage i 2007, hævder, at kreditkortnumre stadig kan googles. Du kan ikke bruge nummerområde forespørgselshacket, men det kan stadig lade sig gøre. I stedet for at bruge simple intervaller skal du anvende specifik formatering til din forespørgsel. Noget i stil med: “1234 5678” (bemærk mellemrummet i midten). Der kommer mange hits frem på denne forespørgsel, men meget få af dem er af reel interesse. Blandt konkurrenterne er telefonnumre, postnumre og lignende. Ikke ekstremt alarmerende. Men her kommer så den der med kreditkorthacket twist.

Metoden

Jeg var nysgerrig efter at vide, om det stadig var muligt at få fat i kreditkortnumre online på samme måde som i 2007. Som enhver god ingeniør nærmer jeg mig normalt tingene ved hjælp af en korrekt konstrueret og intelligent plan, der skal udføres perfekt og med den største præcision. Hvis du har prøvet den metode, ved du måske, at den kan fejle rigtig hårdt – og i så fald går din omhyggelige planlægning og indsats til spilde.

I IT har vi en tendens til at overintellektualisere, selv når det ikke ligefrem er berettiget. Jeg har set mine venner og kolleger ødelægge programmer fuldstændigt ved hjælp af tilsyneladende tilfældige input. Deres succesrate var fantastisk, og den indsats, de lagde i det, var tæt på nul. Det var der, jeg lærte, at for at åbne en dør, skal man nogle gange bare banke på.

The Credit Card Hack

Det foregående afsnit var et snedigt forklædt forsøg på at få mig til at fremstå som mindre idiot, når jeg viser mine “elite-hackerfærdigheder” frem. Ups.

Først prøvede jeg flere range-query-baserede tilgange. Derefter kiggede jeg på avancerede forespørgsler og stort set alt, hvad du kan finde på i løbet af en time eller deromkring. Ingen af dem gav nævneværdige resultater.

Og så fik jeg en skør idé.

Hvad nu hvis der var et mismatch mellem filtreringsmotoren og den faktiske back-end? Hvad nu hvis den besked, jeg fik fra Google (“Du er et dårligt menneske”), ikke kom fra selve backenden, men i stedet fra en bestemt filtermotor, som Google havde implementeret for at censurere forespørgsler som min?

Det ville give meget god mening ud fra et arkitektonisk perspektiv. Og fejl som den slags er ret almindelige – vi ser dem i ITSEC hele tiden, især i IDS/IPS-løsninger, men også i almindelig software. Der er en filtreringsprocedure, der behandler data og kun giver dem til backend’en, hvis den mener, at dataene er acceptable/ikke skadelige. Men backend og filtreringsserveren analyserer næsten aldrig input på nøjagtig samme måde. Således kan et tilsyneladende gyldigt input gå gennem filteret og skabe ravage i backend’en, idet det effektivt omgår filteret.

Du kan normalt udløse denne type adfærd ved at give dit input i forskellige kodninger. For eksempel: I stedet for at bruge decimaltal (0-9), hvad med at konvertere dem til hexadecimaltal eller oktal eller binærtal? Nå, men gæt engang…

Søg efter dette, og Google vil fortælle dig, at du er et dårligt menneske: “40600000000000000000..406099999999999999999999”

Søg efter dette, og Google vil være glad for at hjælpe dig: “0xe6c8c69c9c000..0xe6d753e6ecfff”.

Det eneste, du skal gøre, er at konvertere kreditkortnumre fra decimaltal til hexadecimaltal. Det er det.

Resultaterne omfatter…

  • Humorøse CSV-filer fyldt med potentielt følsomme oplysninger.

  • Fejlige e-handelslogfiler.

  • Følsomme oplysninger, der deles på hackersider (og endda Facebook).

Det er virkelig skræmmende.

Jeg ved godt, at denne fejl ikke vil inspirere til nogen sikkerhedsforskning, men sådan er det. Google lavede denne boo-boo og undlod endda at skrive tilbage til mig. Nå, det sker. Jeg misunder dog ikke sikkerhedsfolkene hos det store G. De må have en masse ting at holde øje med. Jeg skriver om dette kreditkortnummerhack her, fordi:

  1. Det har relativt få konsekvenser.
  2. Alle interesserede og motiverede personer vil have regnet det ud nu.
  3. For at citere Haselton, hvis de store spillere ikke tager ansvar og handler på disse exploits, så er “det rigtige at gøre at kaste lys på problemet og insistere på, at de retter det så hurtigt som muligt”.

Dette trick kan bruges til at slå telefonnumre, SSN’er, TFN’er og meget mere op. Og som Bennett skrev, er disse numre meget meget sværere at ændre end dit kreditkort, som du blot kan ringe til din bank og annullere kortet.

Sample Queries

VARNTIGHED: Google IKKE dit eget kreditkortnummer i sin helhed!

Søg efter ethvert CC PAN, der starter med 4060:40600000000000000000..406099999999999999999999 ? 0xe6c8c8c69c9c000..0xe6d753e6ecfff

Nogle ungarske telefonnumre fra udbyderen ‘Telenor’? Intet problem:36200000000..3620999999999 ? 0x86db02a00..0x86e48c07f

Søg efter SSN’er. Heldigvis giver disse ikke mange meningsfulde resultater:100000000..9999999999999 ? 0x5f5e100..0x3b9ac9ff

Der er mange, mange flere.

Hvis du finder noget meget alarmerende, eller hvis du er nysgerrig om hacking af kreditkort, så læg det venligst i kommentarerne eller kontakt mig via e-mail på eller på Twitter på @synsecblog. Det er normalt nyttesløst at ringe til politiet i disse tilfælde, men det kan være et forsøg værd. Den givne forhandler eller kortudbyderen er normalt mere opsat på at løse problemet.

Hvor skal vi gå hen herfra

Jamen, Google skal naturligvis løse dette, muligvis med hjælp fra de store spillere som Visa og Mastercard. Haselton kommer faktisk med en række interessante forslag i de to artikler, der er linket til ovenfor.

Det, du skal gøre, er imidlertid (og derfor har jeg skrevet dette indlæg), at sprede budskabet. Kreditkortsvindel er en stor industri, og simpel bevidsthed kan spare dig for at blive offer. Endvidere, hvis du har et e-handelswebsted eller håndterer nogen form for kreditkortbehandling, skal du sørge for, at du er sikker. PCI-DSS er en god retningslinje, men den er langt fra perfekt. Desuden er det altid en god idé at google dit websted med den avancerede forespørgsel “site:mysite.com” og kigge efter følsomme numre. Der er en meget, meget lille chance for, at du finder noget – men hvis du gør det, skal du handle på det med det samme.

Også et lille venligt råd: Du bør aldrig udlevere dine kreditkortoplysninger til nogen. Mit råd ville være at bruge PayPal eller en lignende tjeneste, når det er muligt. Du kan tjekke disse links for yderligere oplysninger:

  • Visa’s sikkerhedstips om kreditkort
  • Citi’s sikkerhedstips om kreditkort

Og et par generelle råd: download ikke ting, du ikke har bedt om, åbn ikke spam-mails, og husk, at din bank aldrig vil bede dig om din adgangskode.

I øvrigt: Hvis du tror, at der ikke er nogen, der er dumme nok til at falde for disse teknikker til hacking af kreditkort eller give deres kreditkortoplysninger væk på internettet, så tag et kig på @NeedADebitCard.

Stay safe people!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.