Malware Removal Information

Ga naar de inhoud

Hoofdmenu

Zeroaccess

Infecties

ZeroAccess aka Max++, Siresef.

Doel: Spam versturen, aangepaste zoekresultaten tonen, downloaden andere malware bestanden.

Infecteren gebeurt door middel van Exploit packs of door social engineering (illegale software, cracks, keygens,...)


Verwijderen:
Afhankelijk van de variant die actief is op de computer kan je of TDSSKiller gebruiken of ComboFix om deze infectie te verwijderen.


Historiek:

De eerste varianten werden gedetecteerd in 2009.
Deze varianten maakten in de systeemmap fake junctions aan, die linkten naar de nep rootkitdriver.
De code van de rootkit werd opgeslagen in 2 alternate data streams (ads): win32k.sys:1 en win32k.sys:2.
Zodra securitysoftware ging scannen naar ads of ging scannen in systeemmappen, schakelde ZeroAccess de securitysoftware uit.


Ook werd een 'aas-process' gestart. Dit process wordt gemonitoord door de rootkit.
Gaat securitysoftware dit proces trachten te openen dan wordt het programma aangevallen door de rootkit. De Access Control List van het bestand dat het aas-process tracht te openen wordt gewijzigd en de applicatie wordt afgesloten. Het bestand kan niet langer uitgevoerd worden.
Om het opnieuw te kunnen uitvoeren moet de ACL aangepast worden.
Dit is een goede indicator dat ZeroAccess actief is op de computer. Een hele goede indicator zelfs, zo goed dat bij latere varianten deze zelfverdedigingsmethode achterwege werd gelaten door de ontwikkelaars van de rootkit.



De infectie wijzigde en gaat technieken gebruiken die sterk doen denken aan de technieken gebruikt door TDL3. Toch is de ZeroAccess infectie minder geavanceerd, minder krachtig en makkelijker te detecteren dan TDL3.
ZeroAccess gaat een willekeurige driver uit de map systemroot infecteren.
Deze driver wordt via een ingewikkeld proces gekozen.
De rootkit berekent een specifieke waarde en die wordt gebruikt als controle voor de grootte van rootkit kernel driver.
De file die gekozen wordt om te infecteren moet groter zijn dan de rootkit kernel driver.
Daarna wordt geanalyseerd welke drivers (bestanden) in aanmerking komen en hier wordt rekening gehouden met verschillende aspecten. (grootte, extensie sys, geen boot-level driver, PE-export table is 0.)
Uit deze potentiële kandidaten wordt dan via een ander proces een driver gekozen.
De rootkit maakt een nieuwe sectie aan <naam_geïnfecteerde_driver> en hierin wordt een backup geplaatst van de driver die gaat overschreven worden met de kwaadaardige code.
Er wordt ook een nieuwe service aangemaakt: HKLM<naam_geïnfecteerde_driver>. De imagepathvalue (het pad naar het uitvoerbaar bestand) krijgt als waarde "" .
"" is geen pad naar een uitvoerbaar bestand, en securitysoftware gaat niet verder zoeken naar een bestand.
De rootkitdropper plaatst echter voor "" een symbolische link naar de echte file.

Bij de eerste herstart na het infecteren, wordt de eerder aangemaakte service HKLM<naam_geïnfecteerde_driver> weer verwijderd.
Systeem bestandsbeveiliging / System File Checker (SFC) wordt tijdelijk uitgeschakeld om de uitgekozen driver te overschrijven met de kwaadaardige code. Eénmaal dit gebeurd is wordt systeem bestandsbeveiliging weer hervat.
De infectie controleert ook of het besturingssysteem een 32-bit of een 64-bit systeem is. 64-bit besturingssystemen worden door deze variant niet geïnfecteerd.
Ook gebeurt een controle op aanwezigheid van de infectie. Het systeem een 2de keer infecteren wordt niet toegestaan.

De driver wordt overschreven met kwaadaardige code.
Een backup van de orignele code / file wordt bewaard.
Eenmaal de driver geladen, wordt een disk device object opgezet. De naam van dit device wordt via een complex proces gegenereerd. Dit device is toegankelijk in user mode en dient als toegang naar een nieuw verborgen geëncrypteerd volume.
Dit volume wordt geplaatst in het bestand systemroot_naam>, waarbij willekeurige_naam gelijk is aan de naam van het device.
Eénmaal de driver geladen kan dit volume geformatteerd worden als een NTFS bestandssysteem zodat de de bestanden en de data die bij de rootkit horen er opgeslagen kunnen worden. Deze bestanden zijn niet toegankelijk voor het besturingssysteem.
Aangezien het volume geëncrypteerd is, is de lees- en schrijfroutine van de rootkit in staat om on the fly de data te coderen en te decoderen.
De gebruikte encryptie is RC4.

Bij het opstarten zoekt de rootkit naar het pad van de geïnfecteerde driver en bepaalt de hash-waarde van de driver. Deze hash-waarde wordt door de rootkit gebruikt om te controleren of een programma toegang vraagt tot de geïnfecteerde driver.
De geïnfecteerde driver wordt nu in het geheugen geladen.
Via de eigen code gaat de rootkit zijn eigen driver object opzetten om zich te verbergen en om alle verzendingsgegevens om te leiden via een rootkit routine.
Om het eigen driver object te verbergen gaat de rootkit een copy maken van het originele driver object van disk.sys waarbij enkel de verzendingsgegevens verschillen.
Wordt info opgevraagd over de geïnfecteerde driver, dan gaat de rootkit een kopie tonen van de oriniginele niet geïnfecteerde driver.

De rootkit gaat nu de disk input / output  onderscheppen door het kapen van de DR0 device van disk.sys.
Input / output request worden behandeld door de disk.sys maar worden door de rootkit onderschept voor ze effectief doorgegeven worden. Indien nodig worden ze door de rootkit gefilterd en omgeleid.
Wanneer geconstateerd wordt dat de aanvragen worden gegenereerd naar het eerder aangemaakte device, zal de rootkit de eigen routine oproepen, die waar de verzendingsgegevens verschillen van deze van de originele disk.sys.
Wanneer in de IRP request een FileObject structure is opgegeven, gaat de rootkit de hashwaarde bepalen van het daar opgegeven bestand.
Komt deze hashwaarde overeen met hashwaarde van de geïnfecteerde driver die bepaald werd door de rootkit bij het opstarten, dan wordt IRP request omgeleid, gefaked via de niet geïnfecteerde driver.

Wanneer ZeroAccess actief is maakt de computer deel uit van het ZeroAccess botnet en wordt gecommuniceerd via servers. Dit gebeurt op een niveau dat niet gecontroleerd wordt door securitysoftware.
Nieuwe (malware) bestanden kunnen in het geëncrypteerd volume opgeslagen worden, waar ze onzichtbaar zijn voor securitysoftware.
De bestanden zijn in de vorm van kernel-mode drivers, omdat ze door de rootkitdriver geladen kunnen worden rechtstreeks uit de kernel.


Maar de infectie bijft wijzigen.
Ook 64-bits systemen moeten er aan geloven en kunnen geïnfecteerd worden. Dit kan via dezelfde installer als welke gebruikt wordt voor 32-bit besturingssystemen.
De dropper / installer controleert eerst wat het besturingssysteem is van de gastheer, 32 of 64-bit.
Daarna tracht het zich zelf SE_DEBUG_PRIVILEGE te geven en gaat het verder met de installatie.
Meestal faalt het hierin, omdat deze handeling uitgevoerd werd als een normale gebruiker zonder administrator rechten.
ZeroAccess gaat dan proberen om de nodige rechten te krijgen op een andere manier. Dit kan door gebruik te maken van een legitiem programma dat vraagt om te updaten. Tijdens de installatie van dit programma profiteert ZeroAccess van de rechten die het programma krijgt, en doet ook zijn ding.
Daarna gaat de infectie de volgende services uitschakelen:

  • BFE (Base FilteringEngine Service)

  • iphlpsvc (IP Helper service)

  • mpssvc (Windows firewall service)

  • WinDefend (Windows Defender service)

  • wscsvc (Windows Security Center Service)

  • WinHttpAutoProxySvc (Proxy Auto Discovery Service)


De installatie op een 32-bit systeem verloopt anders dan op een 64-bit systeem.
Op een 32-bit besturingssysteem wordt kernel-mode rootkit geïnstalleerd. Een willekeurige driver wordt geïnfecteerd. De bestanden die bij deze infectie horen worden nu echter opgeslagen in een map in de windowsdirectory: bv c:$ (de laatste 5 cijfers zijn computergebonden)
Deze map doet denken aan een map die aangemaakt wordt bij een windows update installatie.
De bestanden worden geëncrypteerd opgeslagen in deze map door gebruik te maken van een aangepaste versie van RC4.
De toegang tot de map wordt geblokkeerd door een symbolisch link te maken naar %systemroot%en de ACL (Access Control List) op die map wordt ook gewijzigd zodat het doel van de link niet kan geopend worden.
Een device wordt aangemaakt om toegang te krijgen tot de map en bestanden te coderen en decoderen, en de DR0 device van disk.sys wordt gekaapt.
Procedure zoals hoger beschreven.

De installatie op een 64-bit besturingssysteem is anders.
Geen kernel-mode hier, alles gebeurt in user-mode memory.
Op de nodige rechten te verkrijgen wordt dezelfde techniek gebruikt als bij een 32-bit besturingsssyteem.
Ook wordt een bestanden gedropt in de Appdata map van de ingelogde gebruiker en dit bestand wordt geladen na een reboot omwille van een registeraanpassing:

[HKEY_CURRENT_USERNT]

"shell"= "<volledig_pad_gedropte_file>"
Om de bestanden te beschermen wordt gebruik gemaakt van de Global Assembly Cache (GAC). Deze toont welke .net assemblages op de computer gebruikt worden en die staan in de map %windir%
Wanneer genavigeerd wordt naar deze map via de windows verkenner, wordt de Assembly Cache Viewer gestart, zodat je kan zien welke assemblages geïnstalleerd zijn. Deze toont geen bestanden.
ZeroAccess maakt een submap aan in de map %windir%en stockeert daar de bestanden die bij de infectie horen.


De infectie blijft wijzigen en kernel mode toestanden worden achterwege gelaten.
Alles gebeurt voortaan in user mode memory.
De makers van de malware hebben nieuwe technieken gevonden om code te injecteren in legitieme windowsprocessen.
Een dll file wordt geladen in services.exe en explorer.exe en alle functionaliteit wordt uitgevoerd binnen die processen.
Eerdere versies overschreven de code van een driver om een reboot te overleven. Deze variant doet dit niet meer en gebruikt een andere techniek die zowel op 32-bit als op 64-bit besturingssytemen van windows kan gebruikt worden.
Op de computer worden 2 bestanden gedropt die de infectie na een reboot kunnen activeren.

  • %WINDOWS%{GUID}\n

  • %profile%settingsdata{GUID}\n

Deze bestanden worden geladen via het register door het kapen / hijacken van een bestaand COM object.
%WINDOWS%{GUID}\
n wordt geladen door het kapen van een COM object dat geassocieerd is met WMI.
[HKEY_CLASSES_ROOT{F3130CDB-AA52-4C3A-AB32-85FFC23AF9C1}\InprocServer32]en die verwijst naar %SystemRoot%dll op windows 7 en naar shdocvm.dll op Windows XP.
Het com object aangemaakt door ZeroAccess is een user object (HKCU) en dit wordt geladen voor het legale com object onder HKCR.
Het echte voordeel van deze methode is dat het werkt onder zowel 32-bits als 64-bits versies van Windows.
De RC4 encryptie moet bij deze versie plaats maken voor DWORD-XOR met een steeds wijzigende, aangepaste sleutel.

Terug naar de inhoud | Terug naar het hoofdmenu