Aanpak van Rootkits

Rootkits zijn programma´s om andere programma´s te verbergen op een computer. Zo kan een hacker een rootkit gebruiken om andere programma´s (bijvoorbeeld password sniffers) te verbergen.
Een rootkit is een bijzonder vervelend fenomeen in computerland. Er bestaan geen tooltjes om snel en gemakkelijk een rootkit te detecteren, laat staan te verwijderen.
Voor het verwijderen van een rootkit is specialistische kennis nodig. Ik ben zojuist begonnen met het ontdekken van het fenomeen rootkit en heb de eerste stappen gezet/getest met anti-rootkit tools.


Er bestaan diverse tools om je te helpen met het vinden van rootkits, maar het blijft vrij specialistisch werk. Je moet weten wat je doet, voor je het weet zit je met een systeem dat niet meer wil opstarten en dat is best vervelend met een productiesysteem.

Zoals gezegd bestaan er een aantal tools om rootkits te vinden, zoals:
• Process Explorer
• Debugging tools for Windows
• System Virginity Verifier
• GMER
• IceSword


Process Explorer
Je kunt taskmanager gebruiken voor het vinden van ongewenste programma´s, maar de mogelijkheden zijn erg beperkt. Process Explorer is een ´uitgebreide´ taskmanager en geeft veel meer mogelijkheden. Enkele aandachtspunten bij het gebruik van Proces Explorer zijn:
Let op processen met een ´Packed´ image (standaard hebben deze processen een paarse kleur in process explorer). Deze processen verdienen extra aandacht.
Het is handig om de kolommen van Process Explorer aan te passen zodat je ook de omschrijving (Description) en de bedrijfsnaam (Company name) van de ontwikkelaar kunt zien, veel malware schrijvers nemen niet de moeite om dit in te vullen. Erg handig is ook om het pad van het programma te laten zien. Kies er ook voor om de kolom ´Verified Signer´aan te zetten. (View - Select Columns). procesxp


Een andere mogelijke aanduiding van Malware is dat het programma (vaak) niet digitaal ondertekent is. Het is raadzaam om onder ´Options´ het onderdeel ´Verify Image Signatures´ aan te zetten. Process Explorer zal proberen de digitale ondertekeningen te verifieren. Een malware schrijver kan wel de naam ´Microsoft´ in ´Company Name´ zetten, maar kan het programma niet digitaal ondertekenen. Let wel op dat niet alle ´echte´ Microsoft programma´s digitaal ondertekent zijn!
Kijk naar de eigenschappen van een verdacht proces (door er rechts op te klikken), het tabblad ´Strings´ is interessant. Bij een packed image is van belang dat je kiest voor de Strings in Memory(radiobutton onderaan). In het onderdeel Strings kun je bijvoorbeeld zoeken naar ´afwijkende´ websites/URL´s, of commentaar van de programmeur (programmeurs van malware willen wel eens rare teksten in hun programma stoppen).
Het is handig om de ´Difference Highlight Duration´ in Options aan te passen naar 9 seconden, zo kun je goed zien welke processen nieuw zijn en welke processen afgesloten worden.
Veel spyware maakt gebruik van het ´Buddy system´. Vaak bestaat spyware niet uit één proces, maar meerdere processen, die elkaar in de gaten houden. Als er één proces gestopt wordt (door bijv. Kill) dan zorgt zijn ´Buddy´ er voor dat dit proces weer gestart wordt.
Probeer dus de samenwerkende processen te vinden, kies er voor een proces in ´Suspend´ staat te brengen i.p.v. Kill (zie vorig punt). Als je alle verdachte processen hebt (in Suspend status), dan kun je er voor kiezen om ze te Killen. Als ze allemaal weer opstarten, dan heb je één van de processen gemist.
Als je dit hebt gedaan, dan ben je er nog niet, je bent overigens wel ver, het meest lastige heb je gehad. Je zult de malware ook nog moeten verwijderen, tot nu toe heb je het alleen gestopt. De gevonden programma´s zullen van schijf af moeten. En je zult er voor moeten zorgen dat ze niet meer automatisch gestart kunnen worden. Hiervoor zou je MSCONFIG kunnen gebruiken, maar ook die is erg beperkt. Kies liever voor Autoruns.


GMER
GMER is een redelijk intuitieve tool om rootkits te lijf te gaan. Ik heb dit programma nu één keer gebruikt in een ´echte´ situatie en het werkte redelijk voor de hand liggend. Het is overigens wel raadzaam om het programma te hernoemen voordat je het opstart (sommige rootkits schijnen GMER te herkennen als het gestart wordt). Na het opstarten zal GMER al een kleine scan uitvoeren, als het programma hiermee klaar is kun je op de knop SCAN drukken. De hele PC wordt dan gecontroleerd. Als de scan klaar is, dan zal GMER waarschuwen als het verdachte programma´s heeft gevonden, deze worden in de interface rood weergegeven. Door rechts te klikken op het verdachte item kun je wat acties uitvoeren. In eerste instantie is het handig om het proces te stoppen/uit te schakelen (voordat je het verwijderd). Na een reboot kun je alsnog besluiten het item te verwijderen.

Aanpak verwijdering rootkit (met GMER)gmer
Bij een relatie stonden veel meldingen in de Windows Event Log met Event ID 4226. Op zich is dit niet ongebruikelijk, komt wel vaker voor. Echter toen ik met ´netstat -no´ keek welke poorten er open stonden, was het heel veel verkeer met poort 25, deze PC werd dus gebruikt om te spammen! In eerste instantie heb ik de (hardware) firewall aangepast zodat deze geen poort 25 verkeer meer doorliet vanaf dit station.
Hierna ben ik gaan kijken welk proces verantwoordelijk was voor dit verkeer (met proces explorer). Het was het SVCHOST proces, zonder onderliggende processen. Hier was dus geen ordinair virus actief, maar het lijkt eerder een proces wat verborgen was met een rootkit.
TCPVIEW liet hetzelfde zien als netstat -no, veel verbindingen met poort 25, maar ook twee openstaande http verbindingen van het system process met een tweetal websites!!! Dit is niet gebruikelijk. Eén van de sites was vianetwrk.org.
Allereerst heb ik de PC gescand met de Norman Malware Cleaner, deze vond enkele trojans, maar verder niets. Hierna heb ik GMER gestart. Na het scannen met GMER kwamen er een drietal processen naar boven waarover GMER een melding gaf. Deze processen heb ik gestopt en vervolgens met TCPVIEW gekeken of de poorten nog openstonden. De openstaande poorten waren weg. Vervolgens heb ik de processen gedisabled en de PC opnieuw gestart. Gelukkig kwam deze weer op. Vervolgens heb ik de processen verwijderd m.b.v. GMER. De PC nogmaals gescand met Stinger en weer met de Norman Malware Cleaner, er werd niets meer gevonden. Voor de zekerheid heb ik de PC ook nog gecontroleerd met System Virginity Verifier, deze gaf code 1 (green), alles OK.

Debugging tools for Windows
De set Debugging tools for Windows is te downloaden bij Microsoft, het programma wordt ook wel gebruikt om bijvoorbeeld de oorzaak van blauwe schermen te achterhalen. De 32-bit variant kun je hier halen (er komen met regelmaat nieuwe versies uit). Na de installatie van het programma moet je eerst het 'Symbol Path' opgeven. Je kunt met de hand symbol bestanden downloaden, maar het is handiger om een verwijzing in het symbol path op te geven. Na het opstarten van WinDbg, kies je voor File, gevolgd door 'Symbol File Path' en hier vul het het volgende in:

SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols

Als je wilt onderzoeken of de kernel die in het geheugen geladen is aangepast, kies je voor 'File' gevolgd door 'Kernel Debug' en kies voor het tabblad 'Local'.

Op de commandoregel type je: !chkimg -d nt

Met dit commando kun je zien of de kernel in het geheugen gepatcht is, wel opletten, niet alle patches op de kernel in het geheugen zijn meteen slecht, je moet hierbij echt wel weten wat je doet. Een voorbeeld van een legitieme kernelpatch is UPHCLEAN van Microsoft.

Je kunt eventueel ook de process in het geheugen vergelijken met de processen die taskmanger of process explorer laat zien, afwijkingen hierbij zijn zeker de moeite waard om te onderzoeken. (in feite is dit hetgeen wat verschillende anti-rootkit programma's ook doen).
Om de lopende processen te laten zien type je: !process 0 0

Het is overigens ook mogelijk om de kernel in het geheugen te verversen met de kernel die op disk staat. Een verse kernel wil zeggen een kernel die niet gepatcht is, eventuele rootkits (die dus verborgen zijn) worden hierna meteen weer zichtbaar.

Het commando om de kernel in het geheugen te overschrijven met de kernel van schijf is: !chkimg -f nt

 

LET WEL OP: Als je een rootkit hebt gevonden dan moet je in ieder geval nog zien te vinden wat de rootkit verborgen gehouden had. Vaak is één of twee virusscanners uitvoeren voldoende, maar het is echt belangrijk dat je deze stap niet vergeet!