Hoe kan het nou eigenlijk dat hackers binnenkomen? Het is een vraag die veel bedrijven zich stellen, zeker na een beveiligingsincident. In het vorige artikel over Threat Hunting met Wazuh heb ik je laten zien hoe je met behulp van deze krachtige tool een netwerk kunt monitoren en mogelijke dreigingen kunt identificeren. In dit vervolgartikel duiken we dieper in de wereld van cyberaanvallen. Aan de hand van een specifiek incident dat ik ben tegengekomen in Wazuh, zal ik je laten zien hoe hackers binnenkomen, wat ze proberen te doen, en hoe je kunt achterhalen wie de betrokken actoren zijn. We gaan ook in op de kwetsbare software die ze exploiteren en hoe de exploit precies werkt.
Threat Hunting met Wazuh II
De Anatomie van een Cyberaanval
Theoretische Achtergrond
Om te begrijpen hoe hackers binnenkomen, is het belangrijk om eerst te begrijpen wat een kwetsbaarheid is. Een kwetsbaarheid is in essentie een zwakke plek in software of een systeem die door een kwaadwillende actor kan worden misbruikt om ongeautoriseerde toegang te verkrijgen of schade aan te richten. Deze actoren, ofwel hackers, zoeken constant naar deze zwakke plekken om in te breken, gegevens te stelen, of systemen over te nemen.
Als dit nog een beetje vaag klinkt, wees gerust. Ik ga je aan de hand van een concreet voorbeeld laten zien hoe dit er in de praktijk uitziet, zodat je een beter beeld krijgt van hoe een aanval in de echte wereld werkt.
Wazuh Alert
Tijdens een routinecheck in Wazuh ontving ik een alert dat me direct op scherp zette. Het betrof een mogelijke inbraakpoging vanuit een IP-adres dat door Wazuh werd gelokaliseerd in de Verenigde Staten.
Het specifieke alert wees op een poging tot een "path traversal"-aanval, een techniek waarbij een hacker probeert toegang te krijgen tot bestanden en directories die zich buiten de rootdirectory van de webapplicatie bevinden. Dit is een serieuze dreiging, vooral omdat een succesvolle path traversal-aanval kan leiden tot Remote Code Execution (RCE), waarbij de aanvaller code kan uitvoeren op de server met alle gevolgen van dien.
Response
De eerste stap na het detecteren van de dreiging was het identificeren van de actor. Wie was deze aanvaller? Door gebruik te maken van de populaire tool WhatIsMyIP kon ik vaststellen dat dit een bekende proxyserver in Duitsland was. Proxyservers worden vaak gebruikt om het echte IP te verbergen. Toch heeft Wazuh, met behulp van GeoLite kunnen identificeren dat de originele aanval uit de Verenigde Staten afkomstig was.
Maar wat probeerde deze actor precies te doen? Zoals eerder vermeld, probeerde de aanvaller misbruik te maken van een path traversal-kwetsbaarheid. Het uiteindelijke doel was echter om deze kwetsbaarheid te escaleren naar een volledige Remote Code Execution (RCE). Dit zou de aanvaller volledige controle over de server kunnen geven, een nachtmerrie voor elke systeembeheerder.
Kwetsbare Software
De aanval richtte zich specifiek op een kwetsbaarheid in ThinkPHP, een populair PHP-framework dat wordt gebruikt in China. Zoals bij elke software, komen er af en toe kwetsbaarheden aan het licht die een groot risico kunnen vormen als ze niet tijdig worden gepatcht.
In dit geval ging het om een combinatie van een path traversal-kwetsbaarheid en een RCE-mogelijkheid in bepaalde versies van ThinkPHP. Deze kwetsbaarheid wordt geactiveerd wanneer de meertalige functionaliteit van ThinkPHP is ingeschakeld, wat hackers de mogelijkheid geeft om via manipulatie van taalparameters een path traversal-aanval uit te voeren en uiteindelijk code op de server uit te voeren.
Exploitatie
Nu we weten welke software kwetsbaar is, kunnen we ons richten op hoe een hacker deze zwakke plek kan misbruiken. De exploit in kwestie, zoals gedocumenteerd op GitHub, maakt gebruik van een specifieke configuratie van ThinkPHP waarin de meertalige functionaliteit is ingeschakeld. De aanvaller kan via een speciaal geconstrueerd verzoek een willekeurig bestand op de server lezen of zelfs nieuwe bestanden schrijven door gebruik te maken van het pearcmd
-commando, dat standaard aanwezig is in de Docker-omgeving waarin de kwetsbare ThinkPHP-versies draaien.
Een typisch aanvalsscenario ziet er als volgt uit: de aanvaller stuurt een verzoek naar de server met een gemanipuleerde lang
-parameter die ervoor zorgt dat de server een specifiek PHP-script uitvoert dat door de aanvaller is geüpload. Dit script kan vervolgens worden gebruikt om verdere kwaadaardige acties uit te voeren, zoals het stelen van gegevens of het opzetten van een backdoor voor toekomstige toegang.
Deze exploit is al 2 jaar oud, maar toch zijn (waarschijnlijk) Amerikaanse hackers op jacht naar kwetsbare ThinkPHP versies. Het benadrukt ook hoe belangrijk het is om kwetsbaarheden in software snel te patchen en om je infrastructuur regelmatig te controleren op mogelijke zwakke plekken.
Conclusie
Wazuh genereerde een alert op basis van een request die een potentiële cyberaanval bevatte. Na verdere inspectie bleek de request vanaf een Duitse proxyserver te komen. Toch kon Wazuh, met behulp van GeoLite, achterhalen dat de originele request afkomstig was uit de Verenigde Staten. Als ik een kwetsbare versie van ThinkPHP had gedraaid, zou deze nu gecompromitteerd zijn met malware. Dit komt doordat de kwetsbaarheid in de software zou leiden tot remote code execution, zoals gedemonstreerd in het voorbeeld. Ook al is de vulnerability al 2 jaar geleden ontdekt, er zullen gerust nog talloze kwetsbare ThinkPHP instanties aan het internet verbonden zijn. Dit voorbeeld demonstreert wederom waarom het zo belangrijk is om software up-to-date te houden.
Wil je zelf Wazuh uitproberen of een gratis consult aanvragen? Neem dan contact met ons op via de website.
Member discussion: