ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep

In dit bericht vertellen we je hoe de cybergroep OceanLotus (APT32 en APT-C-00) onlangs een van de openbaar beschikbare exploits gebruikte voor CVE-2017-11882, kwetsbaarheden voor geheugenbeschadiging in Microsoft Office, en hoe de malware van de groep persistentie op gecompromitteerde systemen bereikt zonder een spoor achter te laten. Vervolgens zullen we beschrijven hoe de groep sinds begin 2019 zelfuitpakkende archieven gebruikt om code uit te voeren.

OceanLotus is gespecialiseerd in cyberspionage, met als prioriteit landen in Zuidoost-Azië. Aanvallers vervalsen documenten die de aandacht van potentiële slachtoffers trekken om hen ervan te overtuigen de achterdeur te gebruiken, en werken ook aan de ontwikkeling van tools. De methoden die worden gebruikt om honeypots te maken variëren per aanval, van bestanden met “dubbele extensie”, zelfuitpakkende archieven, documenten met macro’s tot bekende exploits.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep

Een exploit gebruiken in Microsoft Equation Editor

Medio 2018 voerde OceanLotus een campagne uit waarbij misbruik werd gemaakt van de CVE-2017-11882-kwetsbaarheid. Eén 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. Onderstaand bericht bevat een overzicht van zo’n kwaadaardig document.

De eerste fase

document FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) is vergelijkbaar met die vermeld in het bovenstaande onderzoek. Het is interessant omdat het gericht is op gebruikers die geïnteresseerd zijn in de Cambodjaanse politiek (CNRP - Cambodja National Rescue Party, eind 2017 opgeheven). Ondanks de .doc-extensie is het document in RTF-formaat (zie onderstaande afbeelding), bevat het afvalcode en is het ook vervormd.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 1. "Garbage" in RTF

Hoewel er verminkte elementen zijn, opent Word dit RTF-bestand met succes. Zoals u in Figuur 2 kunt zien, is er een EQNOLEFILEHDR-structuur op offset 0xC00, gevolgd door een MTEF-header en vervolgens een MTEF-invoer (Figuur 3) voor het lettertype.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 2. FONT-invoerwaarden

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 3. FONT-opnameformaat

Mogelijke overstroming in het veld naam, omdat de grootte ervan niet wordt gecontroleerd vóór het kopiëren. Een te lange naam veroorzaakt een kwetsbaarheid. Zoals je kunt zien aan de inhoud van het RTF-bestand (offset 0xC26 in figuur 2), is de buffer gevuld met shellcode gevolgd door een dummy-commando (0x90) en retouradres 0x402114. Het adres is een dialoogelement in EQNEDT32.exe, met vermelding van instructies RET. Hierdoor wijst EIP naar het begin van het veld naamdie de shellcode bevat.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 4. Begin van de exploit-shellcode

adres 0x45BD3C slaat een variabele op waarvan de verwijzing wordt verwijderd totdat deze een verwijzing naar de momenteel geladen structuur bereikt MTEFData. De rest van de shellcode is hier.

Het doel van de shellcode is om het tweede stuk shellcode uit te voeren dat in het geopende document is ingebed. De originele shellcode probeert eerst de bestandsdescriptor van het geopende document te vinden door alle systeemdescriptors te doorlopen (NtQuerySystemInformation met een argument SystemExtendedHandleInformation) en controleer of ze overeenkomen PID beschrijving en PID werkwijze WinWord en of het document is geopend met een toegangsmasker - 0x12019F.

Om te bevestigen dat de juiste handle is gevonden (en niet de handle naar een ander geopend document), wordt de inhoud van het bestand weergegeven met behulp van de functie CreateFileMapping, en de shellcode controleert of de laatste vier bytes van het document overeenkomen "yyyy"(Eierjachtmethode). Zodra er een overeenkomst is gevonden, wordt het document gekopieerd naar een tijdelijke map (GetTempPath) Hoe ole.dll. Vervolgens worden de laatste 12 bytes van het document gelezen.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 5. Einde van documentmarkeringen

32-bits waarde tussen markeringen AABBCCDD и yyyy is de offset van de volgende shellcode. Het wordt aangeroepen met behulp van de functie CreateThread. Dezelfde shellcode geëxtraheerd die eerder door de OceanLotus-groep werd gebruikt. Python-emulatiescript, dat we in maart 2018 hebben uitgebracht, werkt nog steeds voor de tweede fasedump.

De tweede fase

Componenten verwijderen

Bestands- en mapnamen worden dynamisch gekozen. De code selecteert willekeurig de naam van het uitvoerbare bestand of het DLL-bestand in C:Windowssystem32. Vervolgens doet het een verzoek aan zijn bronnen en haalt het veld op FileDescription te gebruiken als mapnaam. Als dit niet werkt, selecteert de code willekeurig een mapnaam uit de mappen %ProgramFiles% of C:Windows (van GetWindowsDirectoryW). Het vermijdt het gebruik van een naam die conflicteert met bestaande bestanden en zorgt ervoor dat deze niet de volgende woorden bevat: windows, Microsoft, desktop, system, system32 of syswow64. Als de map al bestaat, wordt 'NLS_{6 tekens}' aan de naam toegevoegd.

hulpbron 0x102 wordt geanalyseerd en bestanden worden erin gedumpt %ProgramFiles% of %AppData%, naar een willekeurig geselecteerde map. Aanmaaktijd gewijzigd om dezelfde waarden te hebben als kernel32.dll.

Hier vindt u bijvoorbeeld de map en de lijst met bestanden die zijn gemaakt door het uitvoerbare bestand te selecteren C:Windowssystem32TCPSVCS.exe als gegevensbron.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 6. Verschillende componenten extraheren

Structuur van de hulpbronnen 0x102 in een druppelaar is behoorlijk complex. In een notendop bevat het:
— Bestandsnamen
— Bestandsgrootte en inhoud
— Compressieformaat (COMPRESSION_FORMAT_LZNT1, gebruikt door de functie RtlDecompressBuffer)

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

Het is je misschien opgevallen dat sommige DLL-bestanden groter zijn dan 11 MB. Dit komt omdat er een grote aaneengesloten buffer met willekeurige gegevens in het uitvoerbare bestand wordt geplaatst. Het is mogelijk dat dit een manier is om detectie door sommige beveiligingsproducten te voorkomen.

Zorgen voor doorzettingsvermogen

hulpbron 0x101 in de dropper bevat twee 32-bits gehele getallen die specificeren hoe persistentie moet worden geboden. De waarde van de eerste geeft aan hoe de malware zal blijven bestaan ​​zonder beheerdersrechten.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Tabel 1. Persistentiemechanisme zonder beheerdersrechten

De waarde van het tweede gehele getal geeft aan hoe de malware persistentie moet bereiken wanneer deze met beheerdersrechten wordt uitgevoerd.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Tabel 2. Persistentiemechanisme met beheerdersrechten

De servicenaam is de bestandsnaam zonder extensie; de weergavenaam is de naam van de map, maar als deze al bestaat, wordt de tekenreeks “ eraan toegevoegdRevision 1” (het aantal loopt op totdat een ongebruikte naam wordt gevonden). De operators zorgden ervoor dat de persistentie via de service robuust was: in geval van een storing moet de service na 1 seconde opnieuw worden gestart. Dan de waarde WOW64 De registersleutel van de nieuwe service is ingesteld op 4, wat aangeeft dat het een 32-bits service is.

Een geplande taak wordt aangemaakt via verschillende COM-interfaces: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. In wezen creëert de malware een verborgen taak, stelt de accountgegevens samen met de huidige gebruikers- of beheerdersgegevens in en stelt vervolgens de trigger in.

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

Kwaadaardig stukje

In ons voorbeeld het uitvoerbare bestand TCPSVCS.exe (AcroTranscoder.exe) is legitieme software die DLL's laadt die tegelijkertijd worden gereset. In dit geval is het interessant Flash Video Extension.dll.

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

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 7. Vage predikaten

Na deze misleidende controles krijgt de code een sectie .text het dossier TCPSVCS.exe, verandert zijn verdediging in PAGE_EXECUTE_READWRITE en herschrijft het door dummy-instructies toe te voegen:

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

Aan het einde van het functieadres FLVCore::Uninitialize(void), geëxporteerd Flash Video Extension.dll, instructie is toegevoegd CALL. Dit betekent dat nadat de kwaadaardige DLL is geladen, de runtime aanroept WinMain в TCPSVCS.exe, zal de instructiewijzer naar NOP wijzen, waardoor FLVCore::Uninitialize(void), volgende fase.

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

De inhoud van het *.db3-bestand is de shellcode die de OceanLotus-groep doorgaans gebruikt. We hebben de lading opnieuw met succes uitgepakt met behulp van het emulatorscript dat we hebben gepubliceerd op GitHub.

Het script haalt de laatste fase eruit. Dit onderdeel is een achterdeur, waarin we al hebben geanalyseerd eerdere OceanLotus-studie. Dit kan worden bepaald door de GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binair bestand. De malwareconfiguratie is nog steeds gecodeerd in de PE-bron. Het heeft ongeveer dezelfde configuratie, maar de C&C-servers zijn anders dan de vorige:

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

Het OceanLotus-team demonstreert opnieuw een combinatie van verschillende technieken om detectie te voorkomen. Ze kwamen terug met een ‘verfijnd’ diagram van het infectieproces. Door willekeurige namen te kiezen en uitvoerbare bestanden te vullen met willekeurige gegevens, verminderen ze het aantal betrouwbare IoC's (op basis van hashes en bestandsnamen). Bovendien hoeven aanvallers, dankzij het gebruik van DLL-laden van derden, alleen het legitieme binaire bestand te verwijderen AcroTranscoder.

Zelfuitpakkende archieven

Na RTF-bestanden stapte de groep over op zelfuitpakkende (SFX) archieven met gemeenschappelijke documentpictogrammen om de gebruiker verder te verwarren. Threatbook schreef hierover (link in het Chinees). Bij het opstarten worden zelfuitpakkende RAR-bestanden verwijderd en worden DLL's met de extensie .ocx uitgevoerd, waarvan de uiteindelijke payload eerder is gedocumenteerd {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Sinds half januari 2019 hergebruikt OceanLotus deze techniek, maar verandert in de loop van de tijd enkele configuraties. In deze sectie zullen we het hebben over de techniek en veranderingen.

Een lokmiddel creëren

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

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 9. SFX-opdrachten

De malware wordt opnieuw ingesteld {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), en een foto 2018 thich thong lac.jpg.

Het lokvogelbeeld ziet er als volgt uit:

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 10. Afbeelding van de lokvogel

Het is je misschien 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 besturingsstroom van een OCX-bestand lijkt sterk op die van andere OceanLotus-componenten: veel opdrachtreeksen JZ/JNZ и PUSH/RET, afgewisseld met afvalcode.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 11. Verduisterde code

Nadat u ongewenste code heeft uitgefilterd, exporteert u DllRegisterServer, genaamd regsvr32.exe, als volgt:

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 12. Basisinstallatiecode

Kortom, bij het eerste gesprek DllRegisterServer export stelt registerwaarde in HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model voor gecodeerde offset in DLL (0x10001DE0).

Wanneer de functie een tweede keer wordt aangeroepen, leest deze dezelfde waarde en wordt deze op dat adres uitgevoerd. Vanaf hier worden de bron en veel acties in RAM gelezen en uitgevoerd.

De shellcode is dezelfde PE-lader die in eerdere OceanLotus-campagnes werd gebruikt. Het kan worden geëmuleerd met behulp van ons schrift. Uiteindelijk reset hij db293b825dcc419ba7dc2c49fa2757ee.dll, laadt het in het geheugen en wordt uitgevoerd DllEntry.

De DLL extraheert de inhoud van zijn bron, decodeert (AES-256-CBC) en decomprimeert deze (LZMA). De bron heeft een specifiek formaat dat gemakkelijk te decompileren is.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 13. Configuratiestructuur van het installatieprogramma (KaitaiStruct Visualizer)

De configuratie wordt expliciet gespecificeerd - afhankelijk van het privilegeniveau worden er binaire gegevens naar geschreven %appdata%IntellogsBackgroundUploadTask.cpl of %windir%System32BackgroundUploadTask.cpl (Of SysWOW64 voor 64-bits systemen).

Verdere persistentie wordt verzekerd door een taak met de naam te maken BackgroundUploadTask[junk].jobWaar [junk] vertegenwoordigt een reeks bytes 0x9D и 0xA0.

Naam van taaktoepassing %windir%System32control.exeen de parameterwaarde is het pad naar het gedownloade binaire bestand. De verborgen taak wordt elke dag uitgevoerd.

Structureel gezien is een CPL-bestand een DLL met een interne naam ac8e06de0a6c4483af9837d96504127e.dll, waarmee een functie wordt geëxporteerd CPlApplet. Dit bestand decodeert de enige bron {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, laadt vervolgens deze DLL en roept de enige export aan DllEntry.

Backdoor-configuratiebestand

De achterdeurconfiguratie is gecodeerd en ingebed in de bronnen. De structuur van het configuratiebestand lijkt sterk op het vorige.

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 14. Backdoor-configuratiestructuur (KaitaiStruct Visualizer)

Hoewel de structuur vergelijkbaar is, zijn veel van de veldwaarden bijgewerkt ten opzichte van de waarden die worden weergegeven in ons oude rapport.

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

Aanvullend onderzoek

Tijdens het verzamelen van monsters vielen ons enkele kenmerken op. Het zojuist beschreven exemplaar verscheen rond juli 2018, en soortgelijke exemplaren verschenen pas van half januari tot begin februari 2019. Het SFX-archief werd gebruikt als infectievector, waarbij een legitiem lokdocument en een kwaadaardig OSX-bestand werden achtergelaten.

Hoewel OceanLotus valse tijdstempels gebruikt, hebben we gemerkt dat de tijdstempels van SFX- en OCX-bestanden altijd hetzelfde zijn (0x57B0C36A (08-14-2016 om 7:15 UTC) en 0x498BE80F (02/06/2009 @ 7:34 uur UTC)). Dit geeft waarschijnlijk aan dat de auteurs een soort ‘ontwerper’ hebben die dezelfde sjablonen gebruikt en eenvoudigweg enkele kenmerken verandert.

Onder de documenten die we sinds begin 2018 hebben bestudeerd, bevinden zich verschillende namen die de landen aangeven die van belang zijn voor de aanvallers:

- De nieuwe contactgegevens van Cambodja Media (nieuw).xls.exe
— 李建香 (个人简历).exe (nep pdf-document van een CV)
- feedback, Rally in de VS van 28-29 juli 2018.exe

Sinds de achterdeur werd ontdekt {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll en de publicatie van de analyse ervan door verschillende onderzoekers hebben we enkele veranderingen in de malwareconfiguratiegegevens waargenomen.

Eerst begonnen de auteurs namen te verwijderen uit helper-DLL's (DNSprov.dll en twee versies HttpProv.dll). De operators stopten vervolgens met het verpakken van de derde DLL (de tweede versie HttpProv.dll), waarbij u ervoor kiest om er slechts één in te sluiten.

Ten tweede zijn veel backdoor-configuratievelden gewijzigd, waardoor detectie waarschijnlijk werd omzeild omdat er veel IoC's beschikbaar kwamen. Belangrijke velden die door de auteurs zijn gewijzigd, zijn onder meer:

  • AppX-registersleutel gewijzigd (zie IoC's)
  • mutex-coderingsreeks ("def", "abc", "ghi")
  • poortnummer

Ten slotte hebben alle geanalyseerde nieuwe versies nieuwe C&C's vermeld in de IoC's-sectie.

Bevindingen

OceanLotus blijft zich ontwikkelen. De cybergroep richt zich op het verfijnen en uitbreiden van de tools en lokmiddelen. Auteurs verhullen kwaadaardige ladingen met behulp van opvallende documenten waarvan het onderwerp relevant is voor de beoogde slachtoffers. Ze ontwikkelen nieuwe schema's en gebruiken ook openbaar beschikbare tools, zoals de Equation Editor-exploit. Bovendien verbeteren ze tools om het aantal artefacten dat achterblijft op de machines van slachtoffers te verminderen, waardoor de kans op detectie door antivirussoftware wordt verkleind.

Indicatoren van compromis

Indicatoren voor compromissen en MITRE ATT&CK-attributen zijn beschikbaar over Welzijnsveiligheid и op GitHub.

Bron: www.habr.com

Voeg een reactie