Duqu is een kwaadaardige matryoshka

Introductie

Op 1 september 2011 werd vanuit Hongarije een bestand met de naam ~DN1.tmp naar de VirusTotal-website gestuurd. Op dat moment werd het bestand door slechts twee antivirusprogramma's als schadelijk gedetecteerd: BitDefender en AVIRA. Dit is hoe het verhaal van Duqu begon. Vooruitkijkend moet gezegd worden dat de Duqu-malwarefamilie naar de naam van dit bestand is vernoemd. Dit bestand is echter een volledig onafhankelijke spywaremodule met keylogger-functies, waarschijnlijk geïnstalleerd met behulp van een kwaadaardige downloader-dropper, en kan alleen worden beschouwd als een “payload” die door de Duqu-malware wordt geladen tijdens zijn werking, en niet als een component ( module) van Duqu. Een van de Duqu-componenten werd pas op 9 september naar de dienst Virustotal gestuurd. Het onderscheidende kenmerk is een driver die digitaal is ondertekend door C-Media. Sommige experts begonnen onmiddellijk analogieën te trekken met een ander beroemd voorbeeld van malware: Stuxnet, dat ook ondertekende stuurprogramma's gebruikte. Het totale aantal met Duqu geïnfecteerde computers dat door verschillende antivirusbedrijven over de hele wereld is gedetecteerd, loopt in de tientallen. Veel bedrijven beweren dat Iran opnieuw het belangrijkste doelwit is, maar afgaande op de geografische spreiding van de besmettingen is dat niet met zekerheid te zeggen.
Duqu is een kwaadaardige matryoshka
In dit geval moet u vol vertrouwen alleen over een ander bedrijf spreken met een nieuwbakken woord APT (geavanceerde aanhoudende dreiging).

Systeemimplementatieprocedure

Een onderzoek uitgevoerd door specialisten van de Hongaarse organisatie CrySyS (Hongaars Laboratorium voor Cryptografie en Systeembeveiliging aan de Universiteit voor Technologie en Economie van Boedapest) leidde tot de ontdekking van het installatieprogramma (dropper) waarmee het systeem werd geïnfecteerd. Het was een Microsoft Word-bestand met een exploit voor de kwetsbaarheid van het stuurprogramma win32k.sys (MS11-087, beschreven door Microsoft op 13 november 2011), dat verantwoordelijk is voor het weergavemechanisme voor TTF-lettertypen. De shellcode van de exploit maakt gebruik van een lettertype met de naam 'Dexter Regular', ingebed in het document, waarbij Showtime Inc. wordt vermeld als de maker van het lettertype. Zoals je kunt zien, zijn de makers van Duqu geen onbekenden met gevoel voor humor: Dexter is een seriemoordenaar, de held van de gelijknamige televisieserie, geproduceerd door Showtime. Dexter doodt alleen (indien mogelijk) criminelen, dat wil zeggen, hij overtreedt de wet in naam van de legaliteit. Waarschijnlijk zijn de Duqu-ontwikkelaars op deze manier ironisch dat ze zich bezighouden met illegale activiteiten voor goede doeleinden. Het versturen van e-mails gebeurde doelbewust. De zending maakte hoogstwaarschijnlijk gebruik van gecompromitteerde (gehackte) computers als tussenpersoon om het traceren te bemoeilijken.
Het Word-document bevatte dus de volgende onderdelen:

  • tekstinhoud;
  • ingebouwd lettertype;
  • shellcode exploiteren;
  • bestuurder;
  • installatieprogramma (DLL-bibliotheek).

Indien succesvol, voerde de exploit-shellcode de volgende bewerkingen uit (in kernelmodus):

  • er werd gecontroleerd op herinfectie; hiervoor werd de aanwezigheid van de sleutel 'CF4D' gecontroleerd in het register op het adres 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1'; als dit correct was, voltooide de shellcode zijn uitvoering;
  • twee bestanden zijn gedecodeerd: het stuurprogramma (sys) en het installatieprogramma (dll);
  • het stuurprogramma werd in het services.exe-proces geïnjecteerd en het installatieprogramma gestart;
  • Ten slotte wist de shellcode zichzelf met nullen in het geheugen.

Vanwege het feit dat win32k.sys wordt uitgevoerd onder de bevoorrechte gebruiker 'System', hebben de Duqu-ontwikkelaars op elegante wijze het probleem opgelost van zowel ongeautoriseerd starten als escalatie van rechten (draaien onder een gebruikersaccount met beperkte rechten).
Nadat het installatieprogramma de controle had ontvangen, decodeerde het drie blokken met gegevens die zich in het geheugen bevonden, met daarin:

  • ondertekend stuurprogramma (sys);
  • hoofdmodule (dll);
  • configuratiegegevens van het installatieprogramma (pnf).

Er is een datumbereik opgegeven in de configuratiegegevens van het installatieprogramma (in de vorm van twee tijdstempels: begin en einde). Het installatieprogramma controleerde of de huidige datum erin was opgenomen en zo niet, dan voltooide het de uitvoering ervan. Ook in de configuratiegegevens van het installatieprogramma stonden de namen waaronder de driver en de hoofdmodule waren opgeslagen. In dit geval werd de hoofdmodule in gecodeerde vorm op schijf opgeslagen.

Duqu is een kwaadaardige matryoshka

Om Duqu automatisch te starten, werd een service gemaakt met behulp van een stuurprogrammabestand dat de hoofdmodule direct decodeerde met behulp van sleutels die in het register waren opgeslagen. De hoofdmodule bevat een eigen configuratiedatablok. Bij de eerste lancering werd het gedecodeerd, de installatiedatum werd erin ingevoerd, waarna het opnieuw werd gecodeerd en opgeslagen door de hoofdmodule. Zo werden in het getroffen systeem na een succesvolle installatie drie bestanden opgeslagen: het stuurprogramma, de hoofdmodule en het configuratiegegevensbestand, terwijl de laatste twee bestanden in gecodeerde vorm op schijf werden opgeslagen. Alle decoderingsprocedures werden alleen in het geheugen uitgevoerd. Deze complexe installatieprocedure werd gebruikt om de mogelijkheid van detectie door antivirussoftware te minimaliseren.

De hoofdmodule

Hoofdmodule (bron 302), volgens informatie bedrijf Kaspersky Lab, geschreven met MSVC 2008 in pure C, maar met een objectgeoriënteerde aanpak. Deze aanpak is ongebruikelijk bij het ontwikkelen van kwaadaardige code. In de regel wordt dergelijke code in C geschreven om de omvang te verkleinen en de impliciete aanroepen die inherent zijn aan C++ te elimineren. Er is hier sprake van een zekere symbiose. Bovendien werd er gebruik gemaakt van een gebeurtenisgestuurde architectuur. Medewerkers van Kaspersky Lab neigen naar de theorie dat de hoofdmodule is geschreven met behulp van een pre-processor add-on waarmee je C-code in objectstijl kunt schrijven.
De hoofdmodule is verantwoordelijk voor de procedure voor het ontvangen van opdrachten van operators. Duqu biedt verschillende interactiemethoden: het gebruik van de HTTP- en HTTPS-protocollen, maar ook het gebruik van Named Pipes. Voor HTTP(S) werden domeinnamen van commandocentra gespecificeerd en werd de mogelijkheid geboden om via een proxyserver te werken - er werden een gebruikersnaam en wachtwoord voor opgegeven. Het IP-adres en de naam ervan zijn opgegeven voor het kanaal. De opgegeven gegevens worden opgeslagen in het gegevensblok van de hoofdmoduleconfiguratie (in gecodeerde vorm).
Om Named Pipes te gebruiken, hebben we onze eigen RPC-serverimplementatie gelanceerd. Het ondersteunde de volgende zeven functies:

  • retourneer de geïnstalleerde versie;
  • injecteer een dll in het opgegeven proces en roep de opgegeven functie aan;
  • dll laden;
  • start een proces door CreateProcess() aan te roepen;
  • lees de inhoud van een bepaald bestand;
  • gegevens naar het opgegeven bestand schrijven;
  • verwijder het opgegeven bestand.

Namedpipes kunnen binnen een lokaal netwerk worden gebruikt om bijgewerkte modules en configuratiegegevens te verspreiden tussen met Duqu geïnfecteerde computers. Bovendien zou Duqu kunnen fungeren als proxyserver voor andere geïnfecteerde computers (die vanwege de firewallinstellingen op de gateway geen toegang tot internet hadden). Sommige versies van Duqu beschikten niet over RPC-functionaliteit.

Bekende "payloads"

Symantec ontdekte ten minste vier soorten payloads die onder commando van het Duqu-controlecentrum waren gedownload.
Bovendien was er slechts één aanwezig en gecompileerd als een uitvoerbaar bestand (exe), dat op schijf werd opgeslagen. De overige drie zijn geïmplementeerd als dll-bibliotheken. Ze werden dynamisch geladen en in het geheugen uitgevoerd zonder op schijf te worden opgeslagen.

De residente "payload" was een spionagemodule (infosteler) met keylogger-functies. Door het naar VirusTotal te sturen, begon het werk aan het Duqu-onderzoek. De belangrijkste spionagefunctionaliteit zat in de bron, waarvan de eerste 8 kilobytes een deel van een foto van het sterrenstelsel NGC 6745 bevatten (ter camouflage). Er zij aan herinnerd dat in april 2012 sommige media informatie publiceerden (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506) dat Iran was blootgesteld aan kwaadaardige software “Stars”, terwijl details van het incident werd niet bekendgemaakt. Misschien was het precies zo'n voorbeeld van de Duqu-"lading" die toen in Iran werd ontdekt, vandaar de naam "Stars".
De spionagemodule verzamelde de volgende informatie:

  • lijst met actieve processen, informatie over de huidige gebruiker en domein;
  • lijst met logische schijven, inclusief netwerkschijven;
  • schermafbeeldingen;
  • netwerkinterfaceadressen, routeringstabellen;
  • logbestand van toetsenbordaanslagen;
  • namen van geopende applicatievensters;
  • lijst met beschikbare netwerkbronnen (bronnen delen);
  • een volledige lijst met bestanden op alle schijven, inclusief verwijderbare;
  • een lijst met computers in de “netwerkomgeving”.

Nog een spionagemodule (infosteler) was een variatie op wat al beschreven was, maar gecompileerd als een dll-bibliotheek; de functies van een keylogger, het samenstellen van een lijst met bestanden en het weergeven van computers die deel uitmaken van het domein, werden eruit verwijderd.
Volgende module (verkenning) verzamelde systeeminformatie:

  • of de computer deel uitmaakt van een domein;
  • paden naar Windows-systeemmappen;
  • versie van het besturingssysteem;
  • huidige gebruikersnaam;
  • lijst met netwerkadapters;
  • systeem- en lokale tijd, evenals de tijdzone.

Laatste module (levensduur verlenger) heeft een functie geïmplementeerd om de waarde (opgeslagen in het configuratiegegevensbestand van de hoofdmodule) te verhogen van het aantal resterende dagen totdat de taak is voltooid. Standaard werd deze waarde ingesteld op 30 of 36 dagen, afhankelijk van de Duqu-wijziging, en werd deze waarde elke dag met één verlaagd.

Commandocentra

Op 20 oktober 2011 (drie dagen nadat informatie over de ontdekking was verspreid) voerden Duqu-operators een procedure uit om sporen van het functioneren van de commandocentra te vernietigen. Commandocentra bevonden zich op gehackte servers over de hele wereld: in Vietnam, India, Duitsland, Singapore, Zwitserland, Groot-Brittannië, Nederland en Zuid-Korea. Interessant genoeg draaiden alle geïdentificeerde servers CentOS-versies 5.2, 5.4 of 5.5. De besturingssystemen waren zowel 32-bit als 64-bit. Ondanks het feit dat alle bestanden met betrekking tot de werking van commandocentra waren verwijderd, konden de specialisten van Kaspersky Lab een deel van de informatie uit LOG-bestanden uit vrije ruimte herstellen. Het meest interessante feit is dat aanvallers op servers altijd het standaard OpenSSH 4.3-pakket vervangen door versie 5.8. Dit kan erop wijzen dat een onbekende kwetsbaarheid in OpenSSH 4.3 werd gebruikt om servers te hacken. Niet alle systemen werden gebruikt als commandocentra. Sommige werden, te oordelen naar de fouten in de sshd-logboeken bij het omleiden van verkeer naar de poorten 80 en 443, gebruikt als proxyserver om verbinding te maken met de eindcommandocentra.

Data en modules

Een Word-document dat in april 2011 werd verspreid en dat door Kaspersky Lab werd onderzocht, bevatte een downloadstuurprogramma voor het installatieprogramma met als compilatiedatum 31 augustus 2007. Een soortgelijk stuurprogramma (grootte - 20608 bytes, MD5 - EEDCA45BD613E0D9A9E5C69122007F17) in een document gevonden in CrySys-laboratoria had een compilatiedatum van 21 februari 2008. Bovendien vonden deskundigen van Kaspersky Lab het autorun-stuurprogramma rndismpc.sys (grootte - 19968 bytes, MD5 - 9AEC6E10C5EE9C05BED93221544C783E) met de datum 20 januari 2008. Er zijn geen onderdelen gevonden met de markering 2009. Op basis van de tijdstempels van de compilatie van afzonderlijke delen van Duqu zou de ontwikkeling ervan terug kunnen gaan tot begin 2007. De vroegste manifestatie ervan houdt verband met de detectie van tijdelijke bestanden van het type ~DO (waarschijnlijk gemaakt door een van de spywaremodules), waarvan de aanmaakdatum 28 november 2008 is (artikel "Duqu & Stuxnet: een tijdlijn van interessante gebeurtenissen"). De meest recente datum geassocieerd met Duqu was 23 februari 2012, vervat in een downloadstuurprogramma voor het installatieprogramma dat in maart 2012 door Symantec werd ontdekt.

Gebruikte informatiebronnen:

serie artikelen over Duqu van Kaspersky Lab;
Analytisch rapport van Symantec "W32.Duqu De voorloper van het volgende Stuxnet", versie 1.4, november 2011 (pdf).

Bron: www.habr.com

Voeg een reactie