| Website hacking |
|
Auteur: E. Westhovens
In 2006 had ik enkele websites draaien onder PHP 4 met daarop Joomla. Joomla is een gratis te gebruiken CMS website, met ontzettend veel add-on functionaliteit waarmee je bijna alles kunt doen wat je wilt. Tot mijn verbazing werd ik regelmatig geconfronteerd met het feit dat er 1 of andere boodschap op de website stond dat mijn site gehackt was door een radicale groepering. Om er achter te komen hoe dit kon en wie dit deed ben ik gestart met het plaatsen van additionele code op de site waarmee ik gegevens kon achterhalen die vervolgens achtergelaten werden als een tekst bericht in een beveiligde map op de site. In de code stond een verwijzing naar een directory die beschermd werd met een .HTacces bestand. De code maakte een log file aan met daarin de volgende gegevens:
Met behulp van het IP-adres en het verschil in de twee opgeslagen tijden kon ik de locatie van de bezoeker snel achterhalen en met de waarde eerstbezochte pagina kon ik achterhalen wanneer de site gehackt werd. Zodra de eerstbezochte pagina vervangen werd van index.php naar index.html wist ik dat de site er niet meer was. Echter zag ik in de diverse logs van de websites dat de index.php niet veranderde van index.php naar index.html, maar dat deze werd vervangen van index.php naar een andere pagina. De daarop volgende pagina was dan inderdaad index.html. Door het achterhalen van de locatie van de ‘hacker’ kwam ik er achter dat deze zich in Nederland bevond. Door een lookup te doen op het IP adres kon ik vervolgens achterhalen welke internet provider hier achter zat. Ik had nu dus een locatie en een IP-adres. De verandering op de website voorafgaand aan het daadwerkelijk omzetten van de index werd vooraf gegaan aan een MySQL injection script. Iets waar Joomla wel gevoelig voor is. Graag wou ik erachter komen hoe deze SQL injection mogelijk was, omdat je daar een wachtwoord voor nodig hebt. Het wachtwoord maakt gebruik van MD5 technologie, waardoor wachtwoorden veranderen in een ‘onleesbaar’ 32 karakters tellende HASH. De volgende stap was dus mijn websites beschermen, maar ook om de aanvaller te laten weten dat ik hem door had. Daar moest ik dus even goed over nadenken. Toen kwam ik op het volgende idee. Ik maakte een duplicaat van de website en gaf het IP-adres wat ik in de diverse logs had gevonden op in het .HTacces bestand. Door daar dan met behulp van een PHP script een reroutering plaats te laten vinden werd de ‘hacker’ iedere keer dat hij op mijn websites iets probeerde doorgeleid naar een kopie van de website met daarachter een andere database en kon ik veilig extra code meesturen. Die extra code creëerde een cookie op de pc van de aanvaller wat ik vervolgens op al mijn sites kon uitlezen. De aanvaller liet vervolgens een behoorlijke berg gegevens achter en aan de hand daarvan kon ik achter heel veel informatie komen. Uiteindelijk bleek het om een 16-jarige scholier te gaan die onder de zogenaamde groep Scriptkiddies valt. Scriptkiddies zijn meestal jongeren die op internet speuren naar scriptjes waarmee ze behoorlijk wat narigheid uithalen. Maar hoe is dit nu mogelijk en wat kun je eraan doen? Het wordt mogelijk gemaakt door het feit dat het wachtwoord, weliswaar als ‘Hash’ code, gewoon op de pagina’s staat. Door vervolgens op de website “view source” te klikken in het internet Explorer wordt de “HASH” code zichtbaar en deze kan op diverse websites getest worden met behulp van de zogenaamde Rainbow techniek. De Rainbow techniek gaat uit van een database van meer dan 50.000.000 bekende woorden, een zogenaamde Dictionary, en de dus bekende 50.000.000 HASH codes. Deze database groeit dagelijks. De resterende informatie zoals hostname van de server, meestal localhost en de databasenaam staan gewoon in de code, en is dus als platte tekst leesbaar. Met behulp van de hostname, databasenaam en het gedecrypte wachtwoord kun je willekeurige SQL injections doen en kun je dus een eigen admin account aanmaken met bijhorend wachtwoord. Vervolgens log je in op de site, als administrator en kun je doen en laten wat je wilt. Je kunt hier op diverse manieren wat aan doen en de door mij gebruikte methode is nu dat ik een dubbele check uitvoer. Alle wachtwoorden worden met MD5 technologie omgezet in een HASH, en deze HASH word vervolgens met een dubbelcheck procedure nogmaals omgezet in een HASH. Deze tweede HASH staat in mijn PHP code en is dus niet bekend in de zogenaamde Dictionary. Het kost wat tijd om dit in te bouwen, maar het levert wel een sterke beveiliging op en sindsdien is geen enkele van mijn websites meer gehackt. De hacker zelf aanpakken kan niet op basis van oog om oog, tand om tand, en aangifte doen heeft in de meeste gevallen ook geen zin. Simpelweg omdat de wet er niet duidelijk in is en de politie niet weet wat ze met de aangifte moeten doen. Meer dan een jaar na dit gebeuren vond ik een artikel op een nieuwssite waarin bekend gemaakt werd dat je HASH code kunt googlen. Met vermelding van een website: http://utilitymill.com/utility/Goog_Your_Hash. Bij deze site geef je een eigen website wachtwoord op. (Let op de disclaimer onder aan de pagina) Druk op de knop GO, en je searchstring word gegenereerd. Kopieer de searchstring naar je browser en je ziet meteen of je wachtwoord bekend is. Password en wachtwoord leveren veel hits op en je merkt dan ook meteen op dat heel veel websites als admin-wachtwoord één van deze twee gebruiken. Ik voorspel dat we de komende tijd veel sites tegen gaan komen met de boodschap: Gehackt. |


