ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor

I innlegget vil vi fortelle deg hvordan OceanLotus cybergroup (APT32 og APT-C-00) nylig brukte en av de offentlig tilgjengelige utnyttelsene for CVE-2017-11882, minnekorrupsjonssårbarheter i Microsoft Office, og hvordan gruppens skadevare sikrer utholdenhet på kompromitterte systemer uten å etterlate spor. Deretter beskriver vi hvordan gruppen siden begynnelsen av 2019 har brukt selvutpakkende arkiver for å kjøre kode.

OceanLotus spesialiserer seg på cyberspionasje, de prioriterte målene er landene i Sørøst-Asia. Angripere forfalsker dokumenter som tiltrekker oppmerksomheten til potensielle ofre for å overbevise dem om å utføre en bakdør, og også jobbe med utvikling av verktøy. Metodene som brukes for å lage honningpotter varierer i ulike angrep – fra «dobbelt utvidelse»-filer, selvutpakkende arkiver, makrodokumenter, til kjente utnyttelser.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor

Bruke utnyttelsen i Microsoft Equation Editor

I midten av 2018 kjørte OceanLotus en kampanje som utnyttet CVE-2017-11882-sårbarheten. Et av de ondsinnede dokumentene til cybergroppen ble analysert av 360 spesialister fra Threat Intelligence Center (studere på kinesisk), inkludert en detaljert beskrivelse av utnyttelsen. Innlegget nedenfor er en oversikt over et slikt ondsinnet dokument.

Den første fasen

Dokumentet FW Report on demonstration of former CNRP in Republic of Korea.doc (sha-1: D1357B284C951470066AAA7A8228190B88A5C7C3) ligner det som er nevnt i studien ovenfor. Det er interessant ved at det er rettet mot brukere som er interessert i kambodsjansk politikk (CNRP – Cambodia National Salvation Party, oppløst ved slutten av 2017). Til tross for .doc-utvidelsen er dokumentet i RTF-format (se figuren nedenfor), inneholder søppelkode og er også forvansket.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 1. Søppel i RTF

Til tross for tilstedeværelsen av misformede elementer, åpner Word denne RTF-filen. Som du kan se i figur 2, er her en EQNOLEFILEHDR-struktur ved offset 0xC00 etterfulgt av en MTEF-overskrift og deretter en MTEF-oppføring (figur 3) for fonten.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 2. FONT-postverdier

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 3. FONT-opptaksformat

Mulig feltoverløp navn, fordi størrelsen ikke kontrolleres før kopiering. For langt navn utløser sårbarheten. Som du kan se av innholdet i RTF-filen (offset 0xC26 i figur 2), er bufferen fylt med skallkode etterfulgt av en dummy-kommando (0x90) og returadresse 0x402114. Adressen er et dialogelement i EQNEDT32.exepeker på instruksjoner RET. Dette får EIP til å peke på starten av feltet navnDen som inneholder skallkoden.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 4. Begynnelsen av utnyttelsesskallkoden

adresse 0x45BD3C lagrer en variabel som er dereferert til den når en peker til den gjeldende lastede strukturen MTEFData. Her er resten av skallkoden.

Hensikten med skallkoden er å utføre den andre delen av skallkoden som er innebygd i det åpne dokumentet. Først prøver den originale skallkoden å finne filbeskrivelsen til det åpne dokumentet ved å iterere over alle systembeskrivelser (NtQuerySystemInformation med et argument SystemExtendedHandleInformation) og sjekke om de samsvarer PID beskrivelse og PID prosess WinWord og om dokumentet ble åpnet med en tilgangsmaske - 0x12019F.

For å bekrefte at riktig håndtak ble funnet (og ikke håndtaket til et annet åpent dokument), vises innholdet i filen ved hjelp av funksjonen CreateFileMapping, og skallkoden sjekker om de fire siste bytene i dokumentet samsvarer med "yyyy» (Eggjaktmetoden). Når et samsvar er funnet, kopieres dokumentet til en midlertidig mappe (GetTempPath) Hvordan ole.dll. Deretter leses de siste 12 bytene av dokumentet.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 5. End-of-Document Markers

32-bits verdi mellom markører AABBCCDD и yyyy er forskyvningen av neste skallkode. Det kalles med en funksjon CreateThread. Pakket ut den samme skallkoden som ble brukt av OceanLotus-gruppen tidligere. Python-emuleringsskript, som vi ga ut i mars 2018, kjører fortsatt for den andre etappens dump.

Den andre fasen

Å trekke ut komponenter

Fil- og katalognavn velges dynamisk. Koden velger tilfeldig navnet på en kjørbar eller DLL-fil i C:Windowssystem32. Den sender deretter en forespørsel til ressursene sine og henter feltet FileDescription å bruke som mappenavn. Hvis det ikke fungerer, velger koden tilfeldig et mappenavn fra katalogene %ProgramFiles% eller C:Windows (fra GetWindowsDirectoryW). Den unngår å bruke et navn som kan komme i konflikt med eksisterende filer, og sørger for at det ikke inneholder følgende ord: windows, Microsoft, desktop, system, system32 eller syswow64. Hvis katalogen allerede eksisterer, er "NLS_{6 tegn}" lagt til navnet.

ressurs 0x102 analysert og filer dumpet inn %ProgramFiles% eller %AppData%, til en mappe valgt tilfeldig. Opprettelsestiden endret til å ha samme verdier som kernel32.dll.

For eksempel, her er mappen og listen over filer opprettet ved å velge den kjørbare filen C:Windowssystem32TCPSVCS.exe som en datakilde.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 6. Uttak av ulike komponenter

Ressursstruktur 0x102 i en dropper er ganske komplisert. I et nøtteskall inneholder den:
- filnavn
— Filstørrelse og innhold
— Komprimeringsformat (COMPRESSION_FORMAT_LZNT1brukt av funksjonen RtlDecompressBuffer)

Den første filen er dumpet som TCPSVCS.exe, som er legitimt AcroTranscoder.exe (i følge FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Du har kanskje lagt merke til at noen DLL-filer er større enn 11 MB. Dette er fordi en stor sammenhengende buffer med tilfeldige data er plassert inne i den kjørbare. Det er mulig at dette er en måte å unngå oppdagelse av enkelte sikkerhetsprodukter.

Sikre utholdenhet

ressurs 0x101 i dropperen inneholder to 32-bits heltall som spesifiserer hvordan persistens skal håndheves. Verdien av den første angir hvordan skadelig programvare vil vedvare uten administratorrettigheter.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Tabell 1. Utholdenhetsmekanisme for ikke-administratorer

Verdien til det andre heltallet spesifiserer hvordan skadelig programvare skal sikre utholdenhet ved å kjøre med administrative rettigheter.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Tabell 2. Administrator-utholdenhetsmekanisme

Tjenestenavnet er filnavnet uten filtypen; visningsnavnet er navnet på mappen, men hvis det allerede eksisterer, vil strengen "Revision 1” (tallet øker til et ubrukt navn blir funnet). Operatørene har passet på at utholdenheten gjennom tjenesten er spenstig - ved svikt må tjenesten startes på nytt etter 1 sekund. Deretter verdien WOW64 Den nye tjenesteregisternøkkelen er satt til 4, noe som indikerer at dette er en 32-bits tjeneste.

En planlagt oppgave opprettes gjennom flere COM-grensesnitt: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. I hovedsak skaper skadelig programvare en skjult oppgave, setter kontoinformasjonen sammen med gjeldende bruker- eller administratorinformasjon, og setter deretter utløseren.

Dette er en daglig oppgave med en varighet på 24 timer og intervaller mellom to løp på 10 minutter, noe som betyr at den vil gå konstant.

Ondsinnet bit

I vårt eksempel, den kjørbare TCPSVCS.exe (AcroTranscoder.exe) er legitim programvare som laster DLL-ene som er droppet med den. I dette tilfellet er det av interesse Flash Video Extension.dll.

Dens funksjon DLLMain kaller bare en annen funksjon. Det er noen uklare predikater:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 7. Fuzzy predikater

Etter disse villedende kontrollene får koden en del .text fil TCPSVCS.exe, endrer beskyttelsen til PAGE_EXECUTE_READWRITE og overskriver den med dummy-instruksjoner:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 8. Rekkefølge av instruksjoner

På slutten til adressen til funksjonen FLVCore::Uninitialize(void), eksportert Flash Video Extension.dll, er instruksjonen lagt til CALL. Dette betyr at etter at den skadelige DLL-filen er lastet, når kjøretiden kaller WinMain в TCPSVCS.exe, vil instruksjonspekeren peke til NOP, noe som resulterer i anrop FLVCore::Uninitialize(void), neste nivå.

Funksjonen lager ganske enkelt en mutex som starter med {181C8480-A975-411C-AB0A-630DB8B0A221}etterfulgt av gjeldende brukernavn. Den leser deretter den dumpede *.db3-filen, som inneholder posisjonsuavhengig kode, og bruker CreateThread å utføre innhold.

Innholdet i *.db3-filen er skallkoden som OceanLotus-teamet vanligvis bruker. Vi har igjen vellykket dekomprimert nyttelasten ved hjelp av emulatorskriptet vi publiserte. på GitHub.

Manuset henter den siste fasen. Denne komponenten er en bakdør som vi allerede har analysert i tidligere OceanLotus-studie. Dette kan bestemmes av GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binær fil. Skadevarekonfigurasjonen er fortsatt kryptert i PE-ressursen. Den har omtrent samme konfigurasjon, men C&C-serverne er forskjellige fra de forrige:

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

OceanLotus-gruppen demonstrerer igjen en kombinasjon av forskjellige teknikker for å unngå deteksjon. De kom tilbake med et "ferdig" opplegg for infeksjonsprosessen. Ved å velge tilfeldige navn og fylle kjørbare filer med tilfeldige data, reduserer de antallet pålitelige IoC-er (basert på hasher og filnavn). Dessuten, ved å bruke tredjeparts DLL-lasting, trenger angripere bare å fjerne den legitime binære filen AcroTranscoder.

Selvutpakkende arkiver

Etter RTF-filer byttet gruppen til selvutpakkende (SFX) arkiver med vanlige dokumentikoner for å forvirre brukeren ytterligere. Threatbook skrev om det (lenke på kinesisk). Ved oppstart dumpes selvutpakkende RAR-filer og DLL-er med .ocx-utvidelsen kjøres, den endelige nyttelasten som tidligere ble dokumentert {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Siden midten av januar 2019 har OceanLotus gjenbrukt denne teknikken, men endret noen konfigurasjoner over tid. I denne delen vil vi snakke om teknikken og endringene.

Å lage en lokke

Dokumentet THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (sha-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) ble først funnet i 2018. Denne SFX-filen ble opprettet med sinnet - i beskrivelsen (Versjonsinfo) sier at det er et JPEG-bilde. SFX-skriptet ser slik ut:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 9. SFX-kommandoer

Skadevaren tilbakestilles {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (sha-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), samt et bilde 2018 thich thong lac.jpg.

Lokkebildet ser slik ut:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 10. Decoy Image

Du har kanskje lagt merke til at de to første linjene i SFX-skriptet kaller OCX-filen to ganger, men dette er ikke en feil.

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

Kontrollflyten til OCX-filen er veldig lik andre OceanLotus-komponenter - mange kommandosekvenser JZ/JNZ и PUSH/RETsammenflettet med søppelkode.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 11. Obfuskert kode

Etter filtrering av søppelkoden, eksporten DllRegisterServer, kalt regsvr32.exe, følgende:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 12. Hovedinstallatørkode

I utgangspunktet første gang du ringer DllRegisterServer eksport angir registerverdi HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model for kryptert offset i DLL (0x10001DE0).

Når funksjonen kalles en gang til, leser den samme verdi og kjøres på den adressen. Herfra leses og utføres ressursen, og mange handlinger utføres i RAM.

Skallkoden er den samme PE-lasteren som ble brukt i tidligere OceanLotus-kampanjer. Det kan emuleres med manuset vårt. Til slutt faller han db293b825dcc419ba7dc2c49fa2757ee.dll, laster den inn i minnet og kjører DllEntry.

DLL-en trekker ut innholdet i ressursen, dekrypterer (AES-256-CBC) og dekomprimerer (LZMA) den. Ressursen har et spesifikt format som er lett å dekompilere.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 13. Konfigurasjonsstruktur for installatør (KaitaiStruct Visualizer)

Konfigurasjonen er satt eksplisitt - avhengig av rettighetsnivået vil binære data bli skrevet til %appdata%IntellogsBackgroundUploadTask.cpl eller %windir%System32BackgroundUploadTask.cpl (eller SysWOW64 for 64-bits systemer).

Ytterligere utholdenhet sikres ved å opprette en oppgave med navn BackgroundUploadTask[junk].jobDer [junk] er et sett med byte 0x9D и 0xA0.

Navn på oppgaveapplikasjon %windir%System32control.exe, og verdien til parameteren er banen til den nedlastede binære filen. Den skjulte oppgaven kjører hver dag.

Strukturelt sett er en CPL-fil en DLL med et internt navn ac8e06de0a6c4483af9837d96504127e.dll, som eksporterer funksjonen CPlApplet. Denne filen dekrypterer sin eneste ressurs {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, laster deretter den DLL-filen og kaller den eneste eksporten DllEntry.

Bakdørs konfigurasjonsfil

Bakdørskonfigurasjonen er kryptert og innebygd i ressursene. Strukturen til konfigurasjonsfilen er veldig lik den forrige.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 14. Bakdørskonfigurasjonsstruktur (KaitaiStruct Visualizer)

Til tross for den lignende strukturen, er verdiene til mange felt oppdatert sammenlignet med dataene vist i vår gamle rapport.

Det første elementet i den binære matrisen inneholder DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identifisert av Tencent. Men siden eksportnavnet er fjernet fra binærfilen, samsvarer ikke hashen.

Ytterligere forskning

Ved å samle prøver, tok vi hensyn til noen egenskaper. Prøven som nettopp er beskrevet dukket opp rundt juli 2018, og andre lignende dukket opp nylig, i midten av januar – begynnelsen av februar 2019. Et SFX-arkiv ble brukt som en infeksjonsvektor, og droppet et legitimt lokkedokument og en ondsinnet OCX-fil.

Selv om OceanLotus bruker falske tidsstempler, la vi merke til at tidsstemplene til SFX- og OCX-filer alltid er de samme (0x57B0C36A (08 kl. 14:2016 UTC) og 0x498BE80F (02/06/2009 @ 7:34 am UTC) henholdsvis). Dette tyder nok på at forfatterne har en slags "konstruktør" som bruker de samme malene og bare endrer noen egenskaper.

Blant dokumentene som vi har studert siden begynnelsen av 2018, er det forskjellige navn som indikerer de angripende landene av interesse:

- Den nye kontaktinformasjonen til Cambodia Media(New).xls.exe
- 李建香 (个人简历).exe (falsk pdf-dokument av en CV)
— tilbakemelding, Rally i USA fra 28. til 29. juli 2018.exe

Siden oppdagelsen av bakdøren {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll og publiseringen av analysen av flere forskere, observerte vi noen endringer i konfigurasjonsdataene for skadelig programvare.

Først begynte forfatterne å fjerne navn fra hjelpe-DLL-DLL-ene (DNSprov.dll og to versjoner HttpProv.dll). Da sluttet operatørene å pakke den tredje DLL-filen (andre versjon HttpProv.dll), velger å bygge inn bare én.

For det andre har mange bakdørskonfigurasjonsfelt blitt endret, sannsynligvis for å unngå oppdagelse ettersom mange IoC-er har blitt tilgjengelige. Blant de viktige feltene som er modifisert av forfatterne, er følgende:

  • endret registernøkkel AppX (se IoCs)
  • mutex-kodingsstreng ("def", "abc", "ghi")
  • portnummer

Til slutt har alle analyserte nye versjoner nye C&C-er oppført i IoC-delen.

Funn

OceanLotus fortsetter å utvikle seg. Cybergruppen er fokusert på å foredle og utvide verktøyene og lokkene. Forfattere maskerer ondsinnede nyttelaster med oppsiktsvekkende dokumenter som er relevante for de tiltenkte ofrene. De utvikler nye kretser og bruker også offentlig tilgjengelige verktøy som Equation Editor-utnyttelsen. Dessuten forbedrer de verktøyene for å redusere antall gjenstander som er igjen på ofrenes maskiner, og reduserer dermed sjansen for å bli oppdaget av antivirusprogramvare.

Indikatorer på kompromisser

Indikatorer for kompromiss samt MITER ATT&CK-attributter er tilgjengelige på Velivesikkerhet и på GitHub.

Kilde: www.habr.com

Legg til en kommentar