ESET: nieuwe leveringsschema's van de cybergroep OceanLotus

In deze post bespreken we hoe de cybergroep OceanLotus (APT32 en APT-C-00) recentelijk gebruikmaakte van een van de openbaar beschikbare exploits voor CVE-2017-11882, een kwetsbaarheid in geheugenbeschadiging in Microsoft Office, en hoe de malware van de groep persistentie in gecompromitteerde systemen waarborgt zonder sporen achter te laten. We beschrijven verder hoe de groep sinds begin 2019 zelfuitpakkende archieven heeft gebruikt om code uit te voeren.

OceanLotus is gespecialiseerd in cyberespionage, met prioritaire doelwitten in Zuidoost-Azië. De aanvallers vervalsen documenten die de aandacht van potentiële slachtoffers trekken om hen te overtuigen de backdoor uit te voeren, en werken ook aan de ontwikkeling van hun toolkit. De methoden die worden gebruikt om lokmiddelen te creëren variëren in verschillende aanvallen - van bestanden met ‘dubbele extensies’, zelfuitpakkende archieven, documenten met macro's tot bekende exploits.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus

Het gebruik van de exploit in Microsoft Equation Editor

In het midden van 2018 voerde OceanLotus een campagne uit met gebruik van de kwetsbaarheid CVE-2017-11882. Een van de kwaadaardige documenten van de cybergroep werd geanalyseerd door specialisten van het 360 Threat Intelligence Center (onderzoek in het Chinees), inclusief een gedetailleerde beschrijving van de exploit. In de onderstaande post vindt u een overzicht van zo'n kwaadaardig document.

Eerste fase

Document FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) is vergelijkbaar met het document dat hierboven is genoemd. Het is interessant omdat het gericht is op gebruikers die geïnteresseerd zijn in de Cambodjaanse politiek (CNRP – Cambodian National Rescue Party, ontbonden eind 2017). Ondanks de extensie .doc heeft het document een RTF-indeling (zie onderstaande afbeelding), bevat het rommelcode en is het vervormd.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 1. 'Rommel' in RTF

Ondanks de aanwezigheid van vervormde elementen opent Word dit RTF-bestand succesvol. Zoals te zien is in figuur 2, is hier de structuur EQNOLEFILEHDR met een offset van 0xC00, gevolgd door de titel MTEF en vervolgens de MTEF-opname (figuur 3) voor het lettertype.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 2. Waarden van de FONT-opname

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 3. Indeling van de FONT-opname

Mogelijk een bufferoverloop in het veld naam, omdat zijn grootte niet wordt gecontroleerd voordat deze wordt gekopieerd. Een te lange naam activeert de kwetsbaarheid. Zoals te zien is uit de inhoud van het RTF-bestand (offset 0xC26 in figuur 2), wordt de buffer gevuld met shellcode, gevolgd door een valse instructie (0x90) en een terugadres 0x402114. Het adres is een dialoogelement in EQNEDT32.exe, dat een instructie aangeeft RET. Dit leidt ertoe dat EIP wijst naar het begin van het veld naam, dat shellcode bevat.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 4. Begin van de shellcode exploit

Adres 0x45BD3C houdt een variabele die wordt afgedwongen totdat het een aanwijzer naar de huidige geladen structuur bereikt MTEFData. Hier bevindt zich de resterende shellcode.

Het doel van de shellcode is het uitvoeren van een tweede fragment shellcode, ingebed in het geopende document. Eerst probeert de originele shellcode een bestandsdescriptor van het geopende document te vinden door alle descriptors van het systeem door te lopen (NtQuerySystemInformation met het argument SystemExtendedHandleInformation) en controleert of de PID van de descriptor en PID het proces WinWord en of het document is geopend met de toegangsmaske - 0x12019F.

Om de juiste descriptor (en niet die van een ander open document) te bevestigen, wordt de inhoud van het bestand weergegeven met de functie CreateFileMapping, en de shellcode controleert of de laatste vier bytes van het document "yyyy" (Egg Hunting methode). Zodra er een overeenkomst is gevonden, wordt het document gekopieerd naar een tijdelijke map (GetTempPath) als ole.dll. Vervolgens worden de laatste 12 bytes van het document gelezen.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 5. Document einde markers

32-bits waarde tussen de markers AABBCCDD en yyyy is een offset naar de volgende shellcode. Deze wordt aangeroepen met de functie CreateThread. Dezelfde shellcode die eerder door de OceanLotus-groep werd gebruikt is ontsloten. Python emulatiescript, dat we in maart 2018 hebben vrijgegeven, werkt nog steeds voor het dumpen van de tweede fase.

Tweede fase

Componenten extraheren

Bestands- en mapnamen worden dynamisch geselecteerd. De code kiest willekeurig een naam voor het uitvoerbare of DLL-bestand in C:Windowssystem32. Vervolgens vraagt het naar zijn middelen en haalt het veld FileDescription om te gebruiken als de mapnaam. Als dat niet lukt, kiest de code willekeurig een mapnaam uit de mappen %ProgramFiles% of C:Windows (uit GetWindowsDirectoryW). Het vermijdt het gebruik van een naam die in conflict kan komen met bestaande bestanden en zorgt ervoor dat deze de volgende woorden niet bevat: windows, Microsoft, desktop, system, system32 of syswow64. Als de map al bestaat, wordt er «NLS_{6 symbolen}» aan de naam toegevoegd.

Hulpbron 0x102 wordt geanalyseerd en bestanden worden in %ProgramFiles% of %AppData% gedumpt., in een willekeurig gekozen map. De creatietijd is gewijzigd om dezelfde waarden te hebben als die van kernel32.dll.

Bijvoorbeeld, hier is de map en de lijst met bestanden die zijn gemaakt door het uitvoerbare bestand te selecteren C:Windowssystem32TCPSVCS.exe als gegevensbron.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 6. Extractie van verschillende componenten

Structuur van de bron 0x102 in de dropper is behoorlijk complex. In het kort, het bevat:
— Bestandsnamen
— Grootte en inhoud van bestanden
— Compresseringsformat (COMPRESSION_FORMAT_LZNT1, dat wordt gebruikt door de functie RtlDecompressBuffer)

Het eerste bestand wordt afgehandeld als TCPSVCS.exe, dat legitiem is AcroTranscoder.exe (volgens FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Misschien is het je opgevallen dat de grootte van sommige DLL-bestanden meer dan 11 MB bedraagt. Dit komt doordat er een grote aaneengeschakelde buffer met willekeurige gegevens binnen het uitvoerbare bestand is geplaatst. Dit kan een manier zijn om detectie door bepaalde beveiligingsproducten te omzeilen.

Zorgen voor persistentie

Hulpbron 0x101 in de dropper bevat twee 32-bits gehele getallen die bepalen hoe persistentie moet worden gegarandeerd. De waarde van het eerste getal geeft aan hoe de malware persistentie zal behouden zonder admin-rechten.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Tabel 1. Mechanisme voor persistentie zonder admin-rechten

De waarde van het tweede gehele getal geeft aan hoe de malware persistentie moet waarborgen wanneer dit met admin-rechten gebeurt.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Tabel 2. Mechanisme voor persistentie met admin-rechten

De servicenaam is de bestandsnaam zonder extensie; de weergegeven naam is de mapnaam, maar als deze al bestaat, wordt er een string “Revision 1” toegevoegd (het nummer wordt verhoogd totdat er een ongebruikt naam is gevonden). De operators hebben ervoor gezorgd dat de persistentie via de service duurzaam is – in het geval van een storing moet de service na 1 seconde opnieuw worden opgestart. Vervolgens krijgt de waarde van WOW64 de nieuwe serviceregistersleutel de waarde 4, wat aangeeft dat dit een 32-bits service is.

Een geplande taak wordt gemaakt via verschillende COM-interfaces: ITaskScheduler, ITask, ITaskTrigger, IPersistFile en ITaskScheduler. In wezen creëert de malware een verborgen taak, stelt informatie over het account in samen met informatie over de huidige gebruiker of administrator en stelt vervolgens een trigger in.

Dit is een dagelijkse taak met een duur van 24 uur en intervallen van 10 minuten tussen de twee uitvoeringen, wat betekent dat deze constant zal worden uitgevoerd.

Kwaadaardig bit

In ons voorbeeld is het uitvoerbare bestand TCPSVCS.exe (AcroTranscoder.exe) legitieme software die DLL's laadt die samen met hem worden gedumpt. In dit geval is de focus op Flash Video Extension.dll.

De functie DLLMain roept gewoon een andere functie aan. Er zijn enkele vage predikaten aanwezig:

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 7. Vage predikaten

Na deze misleidende controles ontvangt de code het segment .text bestand TCPSVCS.exe, wijzigt de bescherming naar PAGE_EXECUTE_READWRITE en herschrijft het door gefingeerde instructies toe te voegen:

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 8. Volgorde van instructies

Aan het einde wordt aan het adres van de functie FLVCore::Uninitialize(void), geëxporteerd Flash Video Extension.dll, een instructie toegevoegd CALL. Dit betekent dat na het laden van de kwaadaardige DLL, wanneer de runtime WinMain in TCPSVCS.exe, de instructiepointer zal wijzen op NOP, waardoor FLVCore::Uninitialize(void), de volgende fase wordt aangeroepen.

De functie creëert gewoon een mutex die begint met {181C8480-A975-411C-AB0A-630DB8B0A221}, gevolgd door de huidige gebruikersnaam. Vervolgens leest het de gedumpte file met de extensie *.db3, die positie-onafhankelijke code bevat, en gebruikt CreateThread om de inhoud uit te voeren.

De inhoud van het bestand *.db3 bestaat uit shellcode die doorgaans wordt gebruikt door de OceanLotus-groep. We hebben succesvol de payload uitgepakt met behulp van een emulator-script dat we hebben gepubliceerd op GitHub.

Het script haalt de laatste fase op. Deze component is een backdoor die we al hebben geanalyseerd in de vorige OceanLotus-studie. Dit kan worden vastgesteld aan de hand van de GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} van het uitvoerbare bestand. De configuratie van de malware is nog steeds versleuteld in de PE-resource. Het heeft ongeveer dezelfde configuratie, maar de C&C-servers zijn anders dan voorheen:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

De OceanLotus-groep toont weer een combinatie van verschillende technieken om detectie te vermijden. Ze komen terug met een "verbeterd" schema voor het infectieproces. Door willekeurige namen te kiezen en uitvoerbare bestanden met willekeurige gegevens in te vullen, verminderen ze het aantal betrouwbare IoC (op basis van hashes en bestandsnamen). Bovendien, door gebruik te maken van externe DLL-lading, hoeven de aanvallers alleen maar de legitieme binair te verwijderen AcroTranscoder.

Zelf-uitpakkende archieven

Na RTF-bestanden is de groep overgestapt op zelfuitpakkende (SFX) archieven met herkenbare documenticoontjes om de gebruiker nog meer te verwarren. Dit werd besproken door Threatbook (link in het Chinees). Na de lancering worden zelfuitpakkende RAR-bestanden gedropt en DLL's met de extensie .ocx uitgevoerd, waarvan de uiteindelijke payload eerder was gedocumenteerd {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Sinds medio januari 2019 hergebruikt OceanLotus deze techniek, maar na verloop van tijd veranderen ze enkele configuraties. In dit gedeelte bespreken we de techniek en de veranderingen.

Creatie van een lokaas

Document THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) voor het eerst gevonden in 2018. Dit SFX-bestand is slim gemaakt - in de beschrijving (Versie-informatie) staat dat het een JPEG-afbeelding is. Het SFX-script ziet er als volgt uit:

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Afbeelding 9. SFX-commando's

De malware dropt {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), evenals de afbeelding 2018 thich thong lac.jpg.

De lokaas-afbeelding ziet er als volgt uit:

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Afbeelding 10. Lokaas-afbeelding

Misschien is het je opgevallen dat de eerste twee regels in het SFX-script het OCX-bestand tweemaal aanroepen, maar dit is geen fout.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

De controle-flow van het OCX-bestand lijkt veel op andere componenten van OceanLotus - veel volgordes van commando's JZ/JNZ en PUSH/RET, afgewisseld met junkcode.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Afbeelding 11. Obfuscatiecode

Na filtering van de junkcode exporteert DllRegisterServer, aangeroepen door regsvr32.exe, ziet het er als volgt uit:

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Afbeelding 12. Hoofdcode van de installer

Eigenlijk stelt de eerste aanroep DllRegisterServer de export de registerwaarde in HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model voor de versleutelde offset in de DLL (0x10001DE0).

Wanneer de functie voor de tweede keer wordt aangeroepen, leest deze dezelfde waarde en voert deze uit op dit adres. Vanaf hier wordt de bron gelezen en uitgevoerd, en veel acties in het geheugen uitgevoerd.

Shellcode is dezelfde PE-loader die in eerdere OceanLotus-campagnes werd gebruikt. Het kan worden geëmuleerd met onze script. Uiteindelijk dropt hetdb293b825dcc419ba7dc2c49fa2757ee.dll , laadt het in het geheugen en voert het uitDllEntry DLL extraheert de inhoud van zijn bron, decodeert (AES-256-CBC) en pakt het uit (LZMA). De bron heeft een specifiek formaat dat gemakkelijk kan worden gedecompileerd..

Afbeelding 13. Structuur van de configuratie van de installer (KaitaiStruct Visualizer)

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 13. Structuur van de configuratie van de installer (KaitaiStruct Visualizer)

De configuratie is expliciet ingesteld - afhankelijk van het niveau van de bevoegdheden, worden de binaire gegevens geschreven naar %appdata%IntellogsBackgroundUploadTask.cpl of %windir%System32BackgroundUploadTask.cpl (of SysWOW64 voor 64-bits systemen).

Verder wordt persistentie verzekerd door het creëren van een taak met de naam BackgroundUploadTask[junk].job, waar [junk] een byte-array voorstelt 0x9D en 0xA0.

De naam van de taaktoepassing %windir%System32control.exe, en de waarde van de parameter is het pad naar het geëxporteerde binaire bestand. De verborgen taak wordt dagelijks uitgevoerd.

Constitutioneel gezien is het CPL-bestand een DLL met de interne naam ac8e06de0a6c4483af9837d96504127e.dll, die de functie exporteert CPlApplet. Dit bestand decodeert zijn enige bron {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, laadt vervolgens deze DLL en roept zijn enige export aan DLL extraheert de inhoud van zijn bron, decodeert (AES-256-CBC) en pakt het uit (LZMA). De bron heeft een specifiek formaat dat gemakkelijk kan worden gedecompileerd..

Het configuratiebestand van de backdoor

De configuratie van de backdoor is versleuteld en ingebed in zijn bronnen. De structuur van het configuratiebestand lijkt sterk op de vorige.

ESET: nieuwe leveringsschema's van de cybergroep OceanLotus
Figuur 14. Structuur van de configuratie van de backdoor (KaitaiStruct Visualizer)

Ondanks de vergelijkbare structuur zijn veel velden bijgewerkt in vergelijking met de gegevens die in ons oude rapport.

Het eerste element van de binaire array bevat de DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), geïdentificeerd als Tencent. Maar aangezien de naam van de export uit het binaire bestand is verwijderd, komen de hashes niet overeen.

Aanvullend onderzoek

Bij het verzamelen van monsters hebben we enkele kenmerken opgemerkt. Het zojuist beschreven monster verscheen ongeveer in juli 2018, terwijl andere soortgelijke monsters heel recent, in het midden van januari tot begin februari 2019, opdoken. Als infectie-vector werd een SFX-archief gebruikt, dat een legitiem afleidingsdocument en een kwaadaardig OCX-bestand aflevert.

Ondanks dat OceanLotus valse tijdstempels gebruikt, hebben we opgemerkt dat de tijdstempels van de SFX- en OCX-bestanden altijd gelijk zijn (0x57B0C36A (14/08/2016 om 19:15 UTC) en 0x498BE80F (06/02/2009 om 07:34 UTC) respectievelijk). Dit geeft waarschijnlijk aan dat de auteurs een soort 'bouwer' hebben, die dezelfde sjablonen gebruikt en gewoon enkele kenmerken wijzigt.

Onder de documenten die we sinds begin 2018 hebben bestudeerd, zijn verschillende titels te vinden die wijzen op de landen die de aanvallers interesseren:

— The New Contact Information Of Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (nep pdf-document van een CV)
— feedback, Rally in USA from July 28-29, 2018.exe

Sinds de ontdekking van de backdoor {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll Na de publicatie van zijn analyse door verschillende onderzoekers hebben we enkele wijzigingen in de configuratiegegevens van de malware waargenomen.

Ten eerste begonnen de auteurs namen uit de ondersteunende DLL-bestanden te verwijderen (DNSprov.dll en twee versies HttpProv.dll). Vervolgens stopten de operators met het inpakken van de derde DLL (tweede versie HttpProv.dll), waarbij ze ervoor kozen om alleen één DLL in te voegen.

Ten tweede zijn veel velden van de backdoor-configuratie gewijzigd, waarschijnlijk om detectie te voorkomen, aangezien veel IoCs beschikbaar zijn geworden. Onder de belangrijke velden die door de auteurs zijn gewijzigd, zijn de volgende:

  • gewijzigd registeronderdeel AppX (zie IoCs)
  • mutex codering string (‘def’, ‘abc’, ‘ghi’)
  • poortnummer

Tot slot zijn er in alle nieuwe geanalyseerde versies nieuwe C&C opgevoerd, zoals vermeld in de IoCs.

Conclusies

OceanLotus blijft zich ontwikkelen. De cybergroep richt zich op het verfijnen en uitbreiden van hun toolkit en baits. De auteurs verbergen kwaadaardige payloads met behulp van aantrekkelijke documenten die relevant zijn voor de vermeende slachtoffers. Ze ontwikkelen nieuwe schema's en gebruiken ook openbare tools, zoals de Equation Editor-exploit. Bovendien verbeteren ze de tools om het aantal artefacten dat op de machines van slachtoffers achterblijft te verminderen, wat de kans op detectie door antivirussoftware verlaagt.

Indicators of Compromise

Indicators of Compromise en MITRE ATT&CK-attributen zijn beschikbaar op Welivesecurity en op GitHub.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster