ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor

I indlægget vil vi fortælle dig, hvordan OceanLotus-cybergruppen (APT32 og APT-C-00) for nylig brugte en af ​​de offentligt tilgængelige udnyttelser til CVE-2017-11882, hukommelseskorruptionssårbarheder i Microsoft Office, og hvordan gruppens malware sikrer persistens på kompromitterede systemer uden at efterlade spor. Dernæst beskriver vi, hvordan gruppen siden begyndelsen af ​​2019 har brugt selvudpakkende arkiver til at køre kode.

OceanLotus har specialiseret sig i cyberspionage, de prioriterede mål er landene i Sydøstasien. Angribere forfalsker dokumenter, der tiltrækker potentielle ofres opmærksomhed for at overbevise dem om at udføre en bagdør og arbejder også med udvikling af værktøjer. Metoderne, der bruges til at skabe honeypots, varierer i forskellige angreb - fra "double extension"-filer, selvudpakkende arkiver, makrodokumenter til velkendte udnyttelser.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor

Brug af udnyttelsen i Microsoft Equation Editor

I midten af ​​2018 kørte OceanLotus en kampagne, der udnyttede CVE-2017-11882 sårbarheden. Et af cybergruppens ondsindede dokumenter blev analyseret af 360 Threat Intelligence Center-specialister (studere på kinesisk), herunder en detaljeret beskrivelse af udnyttelsen. Indlægget nedenfor er en oversigt over sådan et ondsindet dokument.

Den første etape

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (sha-1: D1357B284C951470066AAA7A8228190B88A5C7C3) ligner det, der er nævnt i undersøgelsen ovenfor. Det er interessant, fordi det er rettet mod brugere, der er interesserede i cambodjansk politik (CNRP - Cambodia National Salvation Party, opløst i slutningen af ​​2017). På trods af .doc-udvidelsen er dokumentet i RTF-format (se figuren nedenfor), indeholder uønsket kode og er også forvansket.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 1. Skrald i RTF

På trods af tilstedeværelsen af ​​misdannede elementer, åbner Word denne RTF-fil. Som du kan se i figur 2, er her en EQNOLEFILEHDR-struktur ved offset 0xC00 efterfulgt af en MTEF-header og derefter en MTEF-indgang (figur 3) for skrifttypen.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 2. FONT-postværdier

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

Muligt feltoverløb navn, fordi dens størrelse ikke kontrolleres før kopiering. For langt navn udløser sårbarheden. Som du kan se fra indholdet af RTF-filen (offset 0xC26 i figur 2), er bufferen fyldt med shellcode efterfulgt af en dummy-kommando (0x90) og returadresse 0x402114. Adressen er et dialogelement i EQNEDT32.exepeger på instruktioner RET. Dette får EIP til at pege på starten af ​​feltet navnDen indeholder shell-koden.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 4. Begyndelsen af ​​udnyttelsesshellkoden

adresse 0x45BD3C gemmer en variabel, der dereferences, indtil den når en pegepind til den aktuelt indlæste struktur MTEFData. Her er resten af ​​shellkoden.

Formålet med shellcode er at udføre det andet stykke shellcode, der er indlejret i det åbne dokument. Først forsøger den originale shellcode at finde filbeskrivelsen for det åbne dokument ved at iterere over alle systembeskrivelser (NtQuerySystemInformation med et argument SystemExtendedHandleInformation) og kontrollere, om de matcher PID beskrivelse og PID proces WinWord og om dokumentet blev åbnet med en adgangsmaske - 0x12019F.

For at bekræfte at finde det korrekte håndtag (og ikke et andet åbent dokumenthåndtag), vises indholdet af filen ved hjælp af funktionen CreateFileMapping, og shellkoden kontrollerer, om de sidste fire bytes af dokumentet matcher "yyyy» (Æggejagtmetoden). Når et match er fundet, kopieres dokumentet til en midlertidig mappe (GetTempPath) Hvordan ole.dll. Derefter læses de sidste 12 bytes af dokumentet.

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

32-bit værdi mellem markører AABBCCDD и yyyy er forskydningen af ​​den næste shellkode. Det kaldes med en funktion CreateThread. Udtrak den samme shellkode, som blev brugt af OceanLotus-gruppen tidligere. Python emuleringsscript, som vi udgav i marts 2018, kører stadig til anden fase-dump.

Den anden fase

Udpakning af komponenter

Fil- og mappenavne vælges dynamisk. Koden vælger tilfældigt navnet på en eksekverbar eller DLL-fil i C:Windowssystem32. Den sender derefter en anmodning til sine ressourcer og henter feltet FileDescription til at bruge som mappenavn. Hvis det ikke virker, vælger koden tilfældigt et mappenavn fra mapperne %ProgramFiles% eller C:Windows (fra GetWindowsDirectoryW). Det undgår at bruge et navn, der kan være i konflikt med eksisterende filer, og sørger for, at det ikke indeholder følgende ord: windows, Microsoft, desktop, system, system32 eller syswow64. Hvis mappen allerede eksisterer, tilføjes "NLS_{6 tegn}" til navnet.

ressource 0x102 parset og filer dumpet ind %ProgramFiles% eller %AppData%, til en mappe valgt tilfældigt. Oprettelsestidspunktet ændret til at have samme værdier som kernel32.dll.

Her er for eksempel mappen og listen over filer, der er oprettet ved at vælge den eksekverbare C:Windowssystem32TCPSVCS.exe som datakilde.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 6. Udvinding af forskellige komponenter

Ressourcestruktur 0x102 i en dropper er ret kompliceret. I en nøddeskal indeholder den:
- filnavne
— Filstørrelse og indhold
— Komprimeringsformat (COMPRESSION_FORMAT_LZNT1bruges af funktionen RtlDecompressBuffer)

Den første fil dumpes som TCPSVCS.exe, hvilket er legitimt AcroTranscoder.exe (ifølge FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Du har måske bemærket, at nogle DLL-filer er større end 11 MB. Dette skyldes, at en stor sammenhængende buffer af tilfældige data er placeret inde i den eksekverbare. Det er muligt, at dette er en måde at undgå registrering af nogle sikkerhedsprodukter.

Sikring af vedholdenhed

ressource 0x101 i dropperen indeholder to 32-bit heltal, der specificerer, hvordan persistens skal håndhæves. Værdien af ​​den første angiver, hvordan malwaren vil fortsætte uden administratorrettigheder.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Tabel 1. Ikke-administrator persistensmekanisme

Værdien af ​​det andet heltal angiver, hvordan malwaren skal sikre persistens ved at køre med administrative rettigheder.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Tabel 2. Administratorpersistensmekanisme

Tjenestenavnet er filnavnet uden filtypenavnet; visningsnavnet er navnet på mappen, men hvis det allerede findes, vil strengen "Revision 1” (tallet stiger, indtil der findes et ubrugt navn). Operatørerne har sørget for, at vedholdenheden gennem tjenesten er modstandsdygtig - i tilfælde af fejl skal tjenesten genstartes efter 1 sekund. Derefter værdien WOW64 Den nye registreringsnøgle til tjenesten er sat til 4, hvilket indikerer, at dette er en 32-bit tjeneste.

En planlagt opgave oprettes gennem flere COM-grænseflader: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Grundlæggende opretter malwaren en skjult opgave, angiver kontooplysningerne sammen med den aktuelle bruger- eller administratoroplysninger og sætter derefter udløseren.

Dette er en daglig opgave med en varighed på 24 timer og intervaller mellem to løbeture á 10 minutter, hvilket betyder, at den vil køre konstant.

Ondsindet Bit

I vores eksempel, den eksekverbare TCPSVCS.exe (AcroTranscoder.exe) er legitim software, der indlæser de DLL'er, der er droppet med den. I dette tilfælde er det af interesse Flash Video Extension.dll.

Dens funktion DLLMain kalder bare en anden funktion. Der er nogle uklare prædikater:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 7. Fuzzy prædikater

Efter disse vildledende kontroller får koden et afsnit .text fil TCPSVCS.exe, ændrer sin beskyttelse til PAGE_EXECUTE_READWRITE og overskriver det med dummy instruktioner:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 8. Instruktionsrækkefølge

Til sidst til funktionens adresse FLVCore::Uninitialize(void), eksporteret Flash Video Extension.dll, tilføjes instruktionen CALL. Det betyder, at efter den ondsindede DLL er indlæst, når runtime kalder WinMain в TCPSVCS.exe, vil instruktionsmarkøren pege på NOP, hvilket resulterer i opkald FLVCore::Uninitialize(void), næste fase.

Funktionen opretter simpelthen en mutex, der starter med {181C8480-A975-411C-AB0A-630DB8B0A221}efterfulgt af det aktuelle brugernavn. Den læser derefter den dumpede *.db3-fil, som indeholder positionsuafhængig kode, og bruger CreateThread at eksekvere indhold.

Indholdet af *.db3-filen er den shell-kode, som OceanLotus-teamet typisk bruger. Vi har igen succesfuldt dekomprimeret dens nyttelast ved hjælp af emulatorscriptet, vi udgav. på GitHub.

Scriptet henter den sidste fase. Denne komponent er en bagdør, som vi allerede har analyseret i tidligere OceanLotus undersøgelse. Dette kan bestemmes af GUID'en {A96B020F-0000-466F-A96D-A91BBF8EAC96} binær fil. Malware-konfigurationen er stadig krypteret i PE-ressourcen. Den har nogenlunde den samme konfiguration, men C&C-serverne er forskellige fra de tidligere:

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

OceanLotus-gruppen demonstrerer igen en kombination af forskellige teknikker for at undgå påvisning. De vendte tilbage med et "færdigt" skema over infektionsprocessen. Ved at vælge tilfældige navne og udfylde eksekverbare filer med tilfældige data, reducerer de antallet af pålidelige IoC'er (baseret på hashes og filnavne). Desuden, ved at bruge tredjeparts DLL-indlæsning, behøver angribere kun at fjerne den legitime binære AcroTranscoder.

Selvudpakkende arkiver

Efter RTF-filer skiftede gruppen til selvudpakkende (SFX) arkiver med fælles dokumentikoner for yderligere at forvirre brugeren. Threatbook skrev om det (link på kinesisk). Ved opstart dumpes selvudpakkende RAR-filer, og DLL'er med .ocx-udvidelsen udføres, hvis endelige nyttelast tidligere var dokumenteret {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Siden midten af ​​januar 2019 har OceanLotus genbrugt denne teknik, men har ændret nogle konfigurationer over tid. I dette afsnit vil vi tale om teknikken og ændringerne.

At skabe en lokke

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (sha-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) blev først fundet i 2018. Denne SFX-fil blev oprettet med sindet - i beskrivelsen (Version info) siger, at det er et JPEG-billede. SFX-scriptet ser sådan ud:

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

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

Lokkebilledet ser således ud:

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 10. Lokkebillede

Du har måske bemærket, at de første to linjer i SFX-scriptet kalder OCX-filen to gange, men dette er ikke en fejl.

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

OCX-filens kontrolflow ligner meget andre OceanLotus-komponenter - mange kommandosekvenser JZ/JNZ и PUSH/RETsammenflettet med uønsket kode.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 11. Sløret kode

Efter filtrering af skraldekoden, eksporten DllRegisterServer, hedder regsvr32.exe, som følger:

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

Dybest set første gang du ringer DllRegisterServer eksport sætter registreringsværdi HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model for krypteret offset i DLL (0x10001DE0).

Når funktionen kaldes anden gang, læser den den samme værdi og udføres på den adresse. Herfra læses og udføres ressourcen, og mange handlinger udføres i RAM.

Shellkoden er den samme PE-loader, der blev brugt i tidligere OceanLotus-kampagner. Det kan efterlignes med vores manuskript. Til sidst falder han db293b825dcc419ba7dc2c49fa2757ee.dll, indlæser det i hukommelsen og udfører DllEntry.

DLL'en udtrækker indholdet af sin ressource, dekrypterer (AES-256-CBC) og dekomprimerer (LZMA) den. Ressourcen har et specifikt format, der er let at dekompilere.

ESET: Nye leveringsordninger for OceanLotus Cybergroup Backdoor
Figur 13. Installatørkonfigurationsstruktur (KaitaiStruct Visualizer)

Konfigurationen er indstillet eksplicit - afhængigt af privilegieniveauet vil binære data blive skrevet til %appdata%IntellogsBackgroundUploadTask.cpl eller %windir%System32BackgroundUploadTask.cpl (eller SysWOW64 til 64-bit systemer).

Yderligere vedholdenhed sikres ved at oprette en opgave med navnet BackgroundUploadTask[junk].jobHvor [junk] er et sæt bytes 0x9D и 0xA0.

Navn på opgaveapplikation %windir%System32control.exe, og værdien af ​​parameteren er stien til den downloadede binære fil. Den skjulte opgave kører hver dag.

Strukturelt er en CPL-fil en DLL med et internt navn ac8e06de0a6c4483af9837d96504127e.dll, som eksporterer funktionen CPlApplet. Denne fil dekrypterer dens eneste ressource {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, indlæser derefter den DLL og kalder dens eneste eksport DllEntry.

Bagdørs konfigurationsfil

Bagdørskonfigurationen er krypteret og indlejret i dens ressourcer. Strukturen af ​​konfigurationsfilen er meget lig den forrige.

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

På trods af den lignende struktur er værdierne af mange felter blevet opdateret i forhold til de data, der er vist i vores gamle rapport.

Det første element i det binære array indeholder DLL'en (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identificeret af Tencent. Men da eksportnavnet er blevet fjernet fra binæren, stemmer hasherne ikke.

Yderligere forskning

Ved at indsamle prøver var vi opmærksomme på nogle egenskaber. Den netop beskrevne prøve dukkede op omkring juli 2018, og andre lignende dukkede op for nylig i midten af ​​januar - begyndelsen af ​​februar 2019. Et SFX-arkiv blev brugt som en infektionsvektor, der droppede et legitimt lokkedokument og en ondsindet OCX-fil.

Selvom OceanLotus bruger falske tidsstempler, har vi bemærket, at tidsstemplerne for SFX- og OCX-filer altid er de samme (0x57B0C36A (08/14/2016 @ 7:15 UTC) og 0x498BE80F (02/06/2009 @ 7:34 am UTC) henholdsvis). Dette indikerer sandsynligvis, at forfatterne har en form for "konstruktør", der bruger de samme skabeloner og blot ændrer nogle karakteristika.

Blandt de dokumenter, som vi har studeret siden begyndelsen af ​​2018, er der forskellige navne, der indikerer de angribende lande af interesse:

- De nye kontaktoplysninger for Cambodia Media(New).xls.exe
- 李建香 (个人简历).exe (falsk pdf-dokument af et CV)
— feedback, Rally i USA fra 28.-29. juli 2018.exe

Siden opdagelsen af ​​bagdøren {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll og offentliggørelsen af ​​dens analyse af flere forskere, observerede vi nogle ændringer i malware-konfigurationsdata.

Først begyndte forfatterne at fjerne navne fra hjælpe-DLL-DLL'erne (DNSprov.dll og to versioner HttpProv.dll). Så stoppede operatørerne med at pakke den tredje DLL (anden version HttpProv.dll), og vælger kun at integrere én.

For det andet er mange bagdørskonfigurationsfelter blevet ændret, sandsynligvis for at undgå registrering, da mange IoC'er er blevet tilgængelige. Blandt de vigtige felter, der er ændret af forfatterne, er følgende:

  • ændret registreringsnøgle AppX (se IoC'er)
  • mutex-kodningsstreng ("def", "abc", "ghi")
  • portnummer

Endelig har alle analyserede nye versioner nye C&C'er anført i IoCs sektionen.

Fund

OceanLotus fortsætter med at udvikle sig. Cybergruppen er fokuseret på at forfine og udvide værktøjerne og lokkerne. Forfattere maskerer ondsindet nyttelast med opmærksomhedsfangende dokumenter, der er relevante for de påtænkte ofre. De udvikler nye kredsløb og bruger også offentligt tilgængelige værktøjer såsom Equation Editor exploit. Desuden forbedrer de værktøjerne til at reducere antallet af artefakter, der er tilbage på ofrenes maskiner, og derved reducerer chancen for at blive opdaget af antivirussoftware.

Indikatorer på kompromis

Indikatorer for kompromis samt MITER ATT&CK-attributter er tilgængelige om velværesikkerhed и på GitHub.

Kilde: www.habr.com

Tilføj en kommentar