Eerste hulp bij hacken: hoe neem je iemands account over zonder zijn wachtwoord te stelen?
We denken dat we met een goed wachtwoord veilig zijn op internet, maar veel hackers weten dat te omzeilen. In voorlopig de laatste aflevering van deze hackserie leg ik uit hoe hackers je online accounts kunnen overnemen.
Ons hackclubje kreeg laatst een leuk verzoek van een eigenaar van een website: of we de veiligheid van zijn site wilden testen. Ik kan niet zeggen welke site, want wat we aantroffen was niet best. En voor zover ik kan zien, zijn nog niet alle problemen opgelost.
Op de site moet je een account aanmaken om gebruik te kunnen maken van een dienst. Enkele honderden mensen hebben dat al gedaan en deelden hun gevoelige gegevens, waaronder hun wachtwoord.
Een van de eerste dingen die we deden, was zelf maar eens een account aanmaken. En toen zagen we meteen een gapend gat in de beveiliging. Bij het inloggen op de site zagen we een unieke code in de URL staan, iets in de trant van:
‘lekkesite.nl/accounts?user=000000000023BE’
Blijkbaar hadden wij een gebruikersnummer toegewezen gekregen, namelijk 23BE (met flink wat ambitieuze nullen ervoor).
Zou er dan ook een gebruiker zijn die nummer 23BD heeft gekregen. Of 22BE? Dat is simpel te testen: gewoon de bovenstaande URL aanpassen, dus:
‘lekkesite.nl/accounts?user=000000000023BD’
En ja hoor, we zaten zonder een wachtwoord te gebruiken in andermans account.
Na een paar minuten proberen vonden we ook het account van de websitebeheerder. Toen konden we met een paar simpele stappen de hele database van gebruikers downloaden. Daarin stonden namen, e-mailadressen en onversleutelde wachtwoorden. Omdat de meeste mensen een beperkt aantal wachtwoorden gebruiken, hadden we met deze informatie nog veel meer accounts van de gebruikers kunnen overnemen. Bijvoorbeeld van Facebook, LinkedIn, Gmail, Hotmail en Twitter.
Hoe kaap je een account?
Deze vorm van hacken, waarbij je iemands account kaapt door andere informatie te stelen dan wachtwoorden, komt erg veel voor. In de invloedrijke top tien van OWASP, een lijst met meest voorkomende hacks in webapplicaties, staat hij op nummer twee (net onder SQL-injection).
Rob van Barneveld, onze striptekenaar, legt uit welk onderliggend probleem in onze internettechnologie deze vorm van hacken zo makkelijk maakt.
Maar wat kun je hiertegen doen?
We hebben een aantal adviezen gegeven aan de beheerder van de door ons geteste website. Het lange advies luidde: zorg er in ieder geval voor dat...
- ... de user id’s niet voorspelbaar zijn. Als ze willekeurig zijn, bijvoorbeeld ‘1oQXcc5BEA7d370RUtNi9EKe9o’, zijn ze niet te raden.
- ... er gecontroleerd wordt of een sessie daadwerkelijk door de gemachtigde gebruiker wordt gevoerd. Het kan niet zo zijn dat ik als ingelogde gebruiker zomaar in iemand anders’ account kan komen.
Het korte advies was: haal de site offline en begin opnieuw.
Als gebruiker is het een stuk lastiger om je hiertegen te wapenen, want het is toch vooral een probleem van de website-eigenaar. Toch kan ik een paar praktische tips geven:
- Als je in het websiteadres (de URL) al zo’n heel voorspelbare user id ziet, ga dan niet verder. Mail de beheerder.
- Gebruik een goede browser, zoals Chrome. Die kijkt zelf naar mogelijke kwetsbaarheden en waarschuwt je als die er eentje vindt.
- Surf als je op een openbaar netwerk zit op met een VPN, een Virtual Private Network. Dat voorkomt dat anderen je netwerkverkeer en dus je cookies en andere privacygevoelige informatie kunnen zien.
Met dank aan Frank de Korte voor zijn presentatie van Cross Site Scripting.
Dit was de laatste aflevering van de serie over hacken. De belangrijkste vormen heb ik behandeld. Er is nog veel meer te leren en te ontdekken, maar ik merk dat de onderwerpen nu wel erg ingewikkeld worden en dat ze moeilijk uit te leggen zijn. Mijn dank gaat uit naar de cursisten die iedere donderdagavond op de redactie kwamen hacken, de sprekers die daarbij geduldig uitleg gaven en de meelezers achter de schermen die alle artikelen voor- en achteraf van nuttig commentaar voorzagen.