Aanvallen, preventie en detectie van DLL-hijacking
DLL staat voor Dynamic Link Libraries en zijn externe onderdelen van toepassingen die op Windows of andere besturingssystemen worden uitgevoerd. De meeste applicaties zijn op zichzelf niet compleet en slaan code op in verschillende bestanden. Als de code nodig is, wordt het gerelateerde bestand in het geheugen geladen en gebruikt. Dit vermindert de bestandsgrootte van de toepassing en optimaliseert het gebruik van RAM. Dit artikel legt uit wat er is DLL-kaping en hoe het te detecteren en te voorkomen.
Wat zijn DLL-bestanden of Dynamic Link Libraries
DLL-bestanden zijn Dynamic Link Libraries en zijn, zoals duidelijk blijkt uit de naam, uitbreidingen van verschillende applicaties. Elke toepassing die we gebruiken, kan al dan niet bepaalde codes gebruiken. Dergelijke codes worden opgeslagen in verschillende bestanden en worden alleen aangeroepen of in het RAM geladen wanneer de gerelateerde code vereist is. Zo wordt een toepassingsbestand niet te groot en wordt voorkomen dat resources door de toepassing worden opgevuld.
Het pad voor DLL-bestanden wordt ingesteld door het Windows-besturingssysteem. Het pad wordt ingesteld met behulp van globale omgevingsvariabelen. Als een toepassing een DLL-bestand aanvraagt, kijkt het besturingssysteem standaard naar dezelfde map waarin de toepassing is opgeslagen. Als het daar niet wordt gevonden, gaat het naar andere mappen zoals ingesteld door de globale variabelen. Er zijn prioriteiten verbonden aan paden en het helpt Windows bij het bepalen welke mappen moeten zoeken naar de DLL's. Dit is waar de DLL-kaping binnenkomt.
Wat is DLL-kaping
Omdat DLL's extensies zijn en noodzakelijk zijn voor het gebruik van bijna alle toepassingen op uw machines, zijn ze op de computer aanwezig in verschillende mappen, zoals uitgelegd. Als het oorspronkelijke DLL-bestand wordt vervangen door een nep-DLL-bestand met schadelijke code, staat dit bekend als DLL-kaping.
Zoals eerder vermeld, zijn er prioriteiten waar het besturingssysteem zoekt naar DLL-bestanden. Ten eerste kijkt het naar dezelfde map als de applicatiemap en gaat vervolgens op zoek, op basis van de prioriteiten die zijn ingesteld door omgevingsvariabelen van het besturingssysteem. Dus als een good.dll bestand in SysWOW64 map en iemand plaatst een bad.dll in een map die een hogere prioriteit heeft in vergelijking met SysWOW64 map, zal het besturingssysteem van de bad.dll bestand te gebruiken, want het heeft dezelfde naam als de DLL gevraagd door de toepassing. Eenmaal in het RAM-geheugen kan het de kwaadaardige code uitvoeren die in het bestand is opgeslagen en kan dit uw computer of netwerken in gevaar brengen.
Hoe DLL-kaping te detecteren
De eenvoudigste methode om DLL-kaping te detecteren en te voorkomen, is om hulpprogramma's van derden te gebruiken. Er zijn enkele goede gratis tools beschikbaar op de markt die helpen bij het detecteren van een DLL-hackpoging en dit voorkomen.
Een dergelijk programma is DLL Hijack Auditor, maar het ondersteunt alleen 32-bits toepassingen. U kunt het op uw computer installeren en al uw Windows-toepassingen scannen om te zien welke toepassingen kwetsbaar zijn voor DLL-kaping. De interface is eenvoudig en spreekt voor zich. Het enige nadeel van deze toepassing is dat u geen 64-bit-toepassingen kunt scannen.
Een ander programma om DLL-kaping te detecteren, DLL_HIJACK_DETECT, is beschikbaar via GitHub. Dit programma controleert applicaties om te zien of een van hen kwetsbaar is voor DLL-kaping. Als dit het geval is, informeert het programma de gebruiker. De toepassing heeft twee versies - x86 en x64, zodat u ze kunt gebruiken om respectievelijk zowel 32-bits als 64-bits toepassingen te scannen.Opgemerkt moet worden dat de bovenstaande programma's alleen de toepassingen op Windows-platform voor kwetsbaarheden scannen en niet voorkomen dat het kapen van DLL-bestanden.
Hoe DLL-kaping te voorkomen
Het probleem zou in de eerste plaats door de programmeurs moeten worden aangepakt, want er is niet veel dat u kunt doen, behalve om uw beveiligingssystemen te verbeteren. Als programmeurs in plaats van een relatief pad het absolute pad beginnen te gebruiken, wordt het beveiligingslek minder. Het lezen van het absolute pad, zal de Windows of een ander besturingssysteem niet afhankelijk van systeemvariabelen pad en zal direct gaan voor de beoogde DLL, waardoor de kans op het laden van de zelfde naam DLL in een hogere prioriteit pad ontslaan. Deze methode ook, is niet fail-proof, want als het systeem in het gedrang komt, en de cybercriminelen weten het exacte pad van de DLL, zullen zij de oorspronkelijke DLL-bestand te vervangen door de nep-DLL. Dat zou het bestand overschrijven, zodat het originele DLL-bestand wordt veranderd in kwaadaardige code. Maar nogmaals, de cybercrimineel moet het exacte absolute pad weten dat in de toepassing wordt vermeld en dat de DLL vereist. Het proces is moeilijk voor cybercriminelen en daarom kan er op worden gerekend.
Keer terug naar wat u kunt doen, probeer uw beveiligingssystemen op te schalen om uw Windows-systeem beter te beveiligen. Gebruik een goede firewall. Gebruik indien mogelijk een hardwarefirewall of schakel de firewall van de router in. Gebruik goede inbraakdetectiesystemen zodat u weet of iemand met uw computer probeert te spelen.
Als u computers met probleemoplossing gebruikt, kunt u ook het volgende doen om uw beveiliging te verhogen:
- Schakel DLL-laden uit externe netwerkshares uit
- Schakel laden van DLL-bestanden uit WebDAV uit
- Schakel de WebClient-service volledig uit of stel deze in op handmatig
- Blokkeer de TCP-poorten 445 en 139 zoals ze het meest worden gebruikt voor compromitterende computers
- Installeer de nieuwste updates voor het besturingssysteem en beveiligingssoftware.
Microsoft heeft een tool vrijgegeven om DLL-aanvallen op ladingskapingen te blokkeren. Deze tool beperkt het risico van aanvallen van DLL-kapingen door te voorkomen dat applicaties onveilig code laden uit DLL-bestanden.
Als u iets aan het artikel wilt toevoegen, kunt u hieronder reageren.