ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep

In dit bericht bespreken we hoe de OceanLotus cybergroep (APT32 en APT-C-00) onlangs een van de publiekelijk beschikbare exploits heeft gebruikt om CVE-2017-11882, kwetsbaarheden in het geheugen van Microsoft Office, en hoe de malware van de groep persistent blijft op gecompromitteerde systemen zonder sporen achter te laten. Vervolgens beschrijven we hoe de groep sinds begin 2019 zelfuitpakkende archieven gebruikt om code uit te voeren.

OceanLotus is gespecialiseerd in cyberespionage en richt zich met name op landen in Zuidoost-Azië. De aanvallers vervalsen documenten die de aandacht trekken van potentiële slachtoffers om hen te overtuigen de backdoor uit te voeren, en werken daarnaast aan de ontwikkeling van hun tools. De methoden die worden gebruikt om lokmiddelen te creëren, variëren per aanval, van bestanden met "dubbele extensies", zelfuitpakkende archieven en 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 met behulp 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. Het onderstaande bericht geeft een overzicht van zo'n schadelijk document.

De eerste fase

document FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) is vergelijkbaar met die in de bovenstaande studie. Het is interessant omdat het zich richt op gebruikers die geïnteresseerd zijn in de Cambodjaanse politiek (CNRP – Cambodjaanse Nationale Reddingspartij, eind 2017 opgeheven). Ondanks de extensie .doc is het document in RTF-formaat (zie de afbeelding hieronder), bevat het ongewenste code en is het bovendien vervormd.

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

Ondanks de aanwezigheid van beschadigde elementen opent Word dit RTF-bestand succesvol. Zoals u in Figuur 2 kunt zien, is er een EQNOLEFILEHDR-structuur op offset 0xC00, gevolgd door een MTEF-header en vervolgens een MTEF-record (Figuur 3) voor het lettertype.

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

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

Er kan een overloop in het veld zijn naam, omdat de grootte ervan niet wordt gecontroleerd vóór het kopiëren. Een te lange naam activeert de kwetsbaarheid. Zoals te zien is in de inhoud van het RTF-bestand (offset 0xC26 in Afbeelding 2), wordt de buffer gevuld met shellcode gevolgd door een dummy-opdracht (0x90) en retouradres 0x402114Het adres is een dialoogelement in EQNEDT32.exe, wijzend naar de instructie RETHierdoor wijst EIP naar het begin van het veld. naam, die shellcode bevat.

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

adres 0x45BD3C slaat een variabele op die wordt gederefereerd totdat deze een aanwijzer naar de momenteel geladen structuur bereikt MTEFDataDe rest van de shellcode bevindt zich hier.

Het doel van de shellcode is om het tweede fragment van de shellcode uit te voeren dat in het geopende document is opgenomen. Eerst probeert de oorspronkelijke shellcode de bestandsdescriptor van het geopende document te vinden door alle systeemdescriptors te doorlopen (NtQuerySystemInformation met een argument SystemExtendedHandleInformation) en controleren of ze overeenkomen PID descriptor en PID werkwijze WinWord en of het document is geopend met een toegangsmasker – 0x12019F.

Om te bevestigen dat de juiste handgreep is gevonden (en niet de handgreep van 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 met "yyyy» (Eierenjachtmethode). Zodra een match 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. Eindmarkeringen van het document

32-bits waarde tussen markeringen AABBCCDD и yyyy – dit is de offset van de volgende shellcode. Deze wordt aangeroepen met de functie CreateThreadDezelfde shellcode die eerder door de OceanLotus-groep werd gebruikt, werd geëxtraheerd. Python-emulatiescript, die we in maart 2018 hebben uitgebracht, werkt nog steeds voor de tweede fase dump.

De tweede fase

Componenten extraheren

Bestands- en directorynamen worden dynamisch gekozen. De code selecteert willekeurig de naam van het uitvoerbare bestand of DLL-bestand in C:Windowssystem32Vervolgens doet het een verzoek aan zijn bronnen en haalt het veld op FileDescription om te gebruiken als mapnaam. Als dat niet werkt, kiest de code willekeurig een mapnaam uit de mappen %ProgramFiles% of C:Windows (из GetWindowsDirectoryW). Он избегает использования имени, которое может конфликтовать с существующими файлами, и следит за тем, чтобы оно не содержало следующие слова: windows, Microsoft, desktop, system, system32 of syswow64Als de directory al bestaat, wordt "NLS_{6 tekens}" aan de naam toegevoegd.

hulpbron 0x102 geanalyseerd en bestanden worden gedumpt in %ProgramFiles% of %AppData%, naar een willekeurig geselecteerde map. De aanmaaktijd is gewijzigd en heeft nu dezelfde waarden als kernel32.dll.

Hier is bijvoorbeeld een map en een 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. Extractie van verschillende componenten

Bronstructuur 0x102 in de druppelaar is behoorlijk complex. Kort samengevat bevat het:
— Bestandsnamen
— Grootte en inhoud van bestanden
— Compressieformaat (COMPRESSION_FORMAT_LZNT1, gebruikt door de functie RtlDecompressBuffer)

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

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

Zorgen voor volharding

hulpbron 0x101 De dropper bevat twee 32-bits gehele getallen die bepalen hoe persistentie moet worden gegarandeerd. De waarde van de eerste geeft aan hoe de malware persistentie zal handhaven 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 garanderen wanneer deze wordt uitgevoerd met beheerdersrechten.

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

De servicenaam is de bestandsnaam zonder de extensie; de ​​weergavenaam is de mapnaam, maar als deze al bestaat, de tekenreeks "Revision 1"(het nummer wordt verhoogd totdat er een ongebruikte naam wordt gevonden). De operators hebben ervoor gezorgd dat de persistentie via de service robuust is – als de service uitvalt, moet deze na 1 seconde opnieuw worden gestart. Vervolgens wordt de waarde WOW64 De nieuwe serviceregistersleutel is ingesteld op 4, wat aangeeft dat het een 32-bits service is.

Een geplande taak wordt via verschillende COM-interfaces gemaakt: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskSchedulerIn principe 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, met tussenpozen van 10 minuten tussen twee uitvoeringen. Dit betekent dat de taak doorlopend wordt uitgevoerd.

Kwaadaardig stukje

In ons voorbeeld is het uitvoerbare bestand TCPSVCS.exe (AcroTranscoder.exe) is legitieme software die DLL's laadt die er ook mee worden verwijderd. In dit geval is de interesse Flash Video Extension.dll.

Zijn functie DLLMain roept simpelweg een andere functie aan. Er zijn enkele fuzzy predicaten:

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 7. Fuzzy-predicaten

Na deze misleidende controles krijgt de code een sectie .text het dossier TCPSVCS.exe, verandert zijn verdediging in PAGE_EXECUTE_READWRITE en overschrijft deze 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, instructies zijn toegevoegd CALLDit betekent dat na het laden van een kwaadaardige DLL, wanneer de runtime-aanroep WinMain в TCPSVCS.exe, de instructiewijzer zal naar een NOP wijzen, wat resulteert in een FLVCore::Uninitialize(void), volgende fase.

De functie maakt simpelweg een mutex aan die begint met {181C8480-A975-411C-AB0A-630DB8B0A221}, gevolgd door de huidige gebruikersnaam. Vervolgens wordt het gedumpte *.db3-bestand gelezen, dat positie-onafhankelijke code bevat, en gebruikt CreateThread om de inhoud uit te voeren.

De inhoud van het *.db3-bestand is shellcode, die veel wordt gebruikt door de OceanLotus-groep. We hebben de payload opnieuw succesvol uitgepakt met behulp van het emulatorscript dat we hebben gepubliceerd. op GitHub.

Het script extraheert de laatste fase. Dit onderdeel is een backdoor die we al eerder hebben geanalyseerd. vorige OceanLotus-studieDit kan worden bepaald via de GUID. {A96B020F-0000-466F-A96D-A91BBF8EAC96} binair bestand. De malwareconfiguratie is nog steeds gecodeerd in de PE-bron. De configuratie is ongeveer hetzelfde, maar de C&C-servers zijn anders dan voorheen:

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

De OceanLotus-groep demonstreert opnieuw een combinatie van technieken om detectie te voorkomen. Ze zijn terug met een "verfijnd" infectieproces. Door willekeurige namen te kiezen en uitvoerbare bestanden te vullen met willekeurige data, verminderen ze het aantal vertrouwde IoC's (gebaseerd op hashes en bestandsnamen). Bovendien hoeven aanvallers, door gebruik te maken van DLL-lading van derden, alleen de legitieme binaire bestanden te verwijderen. AcroTranscoder.

Zelfuitpakkende archieven

Na RTF-bestanden schakelde de groep over op zelfuitpakkende (SFX) archieven met gemeenschappelijke documentpictogrammen om de gebruiker nog meer in verwarring te brengen. Threatbook schreef hierover (link in het Chinees). Eenmaal gestart, plaatst het zelfuitpakkende RAR-bestanden en voert het DLL's uit met de extensie .ocx, waarvan de uiteindelijke payload eerder is gedocumenteerd {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dllSinds medio januari 2019 gebruikt OceanLotus deze techniek opnieuw, maar heeft in de loop der tijd enkele configuraties gewijzigd. In deze sectie bespreken we de techniek en de wijzigingen.

Een aas maken

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 slim gemaakt - in de beschrijving (Versie informatie) Er wordt gezegd 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

Malware resets {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), evenals een foto 2018 thich thong lac.jpg.

Het lokmiddel ziet er zo uit:

ESET: nieuwe achterdeurleveringsschema's voor de OceanLotus cybergroep
Figuur 10. Decoy-afbeelding

U heeft misschien opgemerkt dat de eerste twee regels in het SFX-script het OCX-bestand twee keer aanroepen, maar dit is geen fout.

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

De besturingsstroom van een OCX-bestand is zeer vergelijkbaar met andere OceanLotus-componenten: veel opdrachtreeksen JZ/JNZ и PUSH/RET, afgewisseld met ongewenste code.

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

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

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

In principe geldt bij het eerste gesprek DllRegisterServer export sets registerwaarde 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. Van daaruit wordt de resource gelezen en uitgevoerd, en worden er veel acties in het RAM-geheugen uitgevoerd.

De shellcode is dezelfde PE-loader die in eerdere OceanLotus-campagnes werd gebruikt. Deze kan worden geëmuleerd met ons scriptUiteindelijk reset hij db293b825dcc419ba7dc2c49fa2757ee.dll, laadt het in het geheugen en voert het uit DllEntry.

De DLL extraheert de inhoud van de resource, decodeert deze (AES-256-CBC) en pakt deze uit (LZMA). De resource heeft een specifieke indeling die eenvoudig te decompileren is.

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

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

Vervolgens wordt de persistentie verzekerd door een taak te creëren met de naam BackgroundUploadTask[junk].jobWaar [junk] is een set bytes 0x9D и 0xA0.

Naam van taaktoepassing %windir%System32control.exe, en 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, die de functie exporteert CPlApplet. Dit bestand decodeert zijn enige bron. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, laadt vervolgens die DLL en roept de enige export aan DllEntry.

Backdoor-configuratiebestand

De backdoorconfiguratie is gecodeerd en geïntegreerd in de resources. De structuur van het configuratiebestand is zeer vergelijkbaar met het vorige.

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

Ondanks de vergelijkbare structuur zijn de waarden van veel velden bijgewerkt ten opzichte van de gegevens die in in ons oude rapport.

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

Aanvullend onderzoek

Tijdens het verzamelen van monsters vielen ons enkele kenmerken op. Het zojuist beschreven monster verscheen rond juli 2018, terwijl andere vergelijkbare monsters recenter verschenen, van half januari tot begin februari 2019. De infectievector was een SFX-archief dat een legitiem afleidingsdocument en een kwaadaardig OCX-bestand liet vallen.

Hoewel OceanLotus gebruikmaakt van nep-tijdstempels, merkten we 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:34am UTC) respectievelijk). Dit geeft waarschijnlijk aan dat de auteurs een soort "constructor" hebben die dezelfde sjablonen gebruikt en simpelweg enkele kenmerken verandert.

In de documenten die we sinds begin 2018 hebben onderzocht, zijn verschillende namen te vinden die de landen aangeven waarin de aanvallers geïnteresseerd zijn:

— De nieuwe contactgegevens van Cambodia 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 door diverse onderzoekers, zagen we enkele wijzigingen in de configuratiegegevens van de malware.

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

Ten tweede werden veel van de backdoor-configuratievelden aangepast, waarschijnlijk om detectie te voorkomen nu er steeds meer IoC's beschikbaar kwamen. Belangrijke velden die door de auteurs zijn aangepast, zijn onder andere:

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

Ten slotte werden bij alle nieuwe geanalyseerde versies nieuwe C&C's geïntroduceerd, die in het gedeelte IoC's vermeld staan.

Bevindingen

OceanLotus blijft zich ontwikkelen. De cybergroep richt zich op het verfijnen en uitbreiden van haar tools en lokkertjes. De auteurs vermommen kwaadaardige payloads met opvallende documenten die relevant zijn voor de beoogde slachtoffers. Ze ontwikkelen nieuwe trucs en gebruiken ook openbaar beschikbare tools, zoals de Equation Editor-exploit. Bovendien verbeteren ze de tools om de hoeveelheid artefacten die op de machines van het slachtoffer achterblijven te verminderen, waardoor de kans op detectie door antivirussoftware afneemt.

Indicatoren van compromis

Indicatoren van compromis en MITRE ATT&CK-kenmerken zijn beschikbaar op Welivesecurity и op GitHub.

Bron: www.habr.com

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster