ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus

I det hÀr inlÀgget kommer vi att berÀtta hur cybergruppen OceanLotus (APT32 och APT-C-00) nyligen utnyttjade en av de offentligt tillgÀngliga exploits till CVE-2017-11882, en minneskorruptionssÄrbarhet i Microsoft Office, och hur gruppens skadlig programvara sÀkerstÀller persistens i komprometterade system utan att lÀmna spÄr. Vi kommer ocksÄ att beskriva hur gruppen sedan början av 2019 har anvÀnt sjÀlvutpackerande arkiv för att köra kod.

OceanLotus specialiserar sig pĂ„ cyberspionage, med prioriterade mĂ„l i Sydostasien. Angriparna förfalskar dokument som fĂ„ngar intresset hos potentiella offer för att övertyga dem att köra en bakdörr, och arbetar ocksĂ„ med att utveckla verktyg. Metoderna som anvĂ€nds för att skapa fĂ€llor varierar i olika attacker – frĂ„n filer med "dubbel filĂ€ndelse", sjĂ€lvutpackerande arkiv, dokument med makron till kĂ€nda exploits.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus

Utnyttjande av exploit i Microsoft Equation Editor

I mitten av 2018 genomförde OceanLotus en kampanj som anvÀnde sÄrbarheten CVE-2017-11882. Ett av terroristgruppens skadliga dokument analyserades av experter frÄn 360 Threat Intelligence Center (studie pÄ kinesiska), vilket inkluderar en detaljerad beskrivning av exploiten. I inlÀgget nedan finns en översikt av ett liknande skadligt dokument.

Första steget

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) Ă€r liknande det som nĂ€mnts i ovanstĂ„ende studie. Det Ă€r intressant eftersom det riktar sig till anvĂ€ndare som Ă€r intresserade av kambodjansk politik (CNRP – Kambodjas nationella rĂ€ddningsparti, som upplöstes i slutet av 2017). Trots att det har filĂ€ndelsen .doc har dokumentet RTF-format (se bild nedan), innehĂ„ller skrĂ€pkod samt Ă€r förvrĂ€ngt.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 1. "SkrÀp" i RTF

Trots nÀrvaron av förvrÀngda element öppnar Word den hÀr RTF-filen framgÄngsrikt. Som framgÄr av bild 2 finns strukturen EQNOLEFILEHDR med en offset pÄ 0xC00, följt av en MTEF-header och sedan en MTEF-post (bild 3) för typsnittet.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 2. VÀrden för FONT-posten

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 3. Format för FONT-posten

Möjlig överflödning i fÀltet name, eftersom dess storlek inte kontrolleras innan kopiering. Ett för lÄngt namn aktiverar sÄrbarheten. Som framgÄr av innehÄllet i RTF-filen (offset 0xC26 i bild 2) fylls bufferten med shellkod, följt av en falsk kommando (0x90) och returadress 0x402114. Adressen Àr en dialogkomponent i EQNEDT32.exe, som anger instruktionen RET. Det resulterar i att EIP pekar pÄ början av fÀltet name, som innehÄller shell-kod.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 4. Början av shell-koden för exploit

Adress 0x45BD3C lagrar en variabel som avderefereras tills den nÄr pekaren till den aktuella laddade strukturen MTEFData. HÀr finns den ÄterstÄende delen av shell-koden.

Syftet med shell-koden Ă€r att exekvera det andra fragmentet av shell-koden som Ă€r inbĂ€ddat i det öppna dokumentet. Först försöker den ursprungliga shell-koden att hitta handtaget till den öppna dokumentfilen genom att iterera över alla handtag i systemet (NtQuerySystemInformation med argumentet SystemExtendedHandleInformation) och kontrollerar om PID handtaget och PID processen WinWord och om dokumentet öppnades med Ă„tkomstmasken – 0x12019F.

För att bekrĂ€fta att rĂ€tt handtag har hittats (och inte ett handtag för ett annat öppet dokument) visas filens innehĂ„ll med hjĂ€lp av funktionen CreateFileMapping, och shell-koden kontrollerar om de senaste fyra byte av dokumentet matchar "yyyy" (metod för Äggjakt). SĂ„ snart en överenskommelse upptĂ€ckts kopieras dokumentet till en temporĂ€r mapp (GetTempPath) som ole.dll. DĂ„ lĂ€ses de sista 12 byte av dokumentet.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 5. Slutmarkörer för dokumentet

32-bitars vĂ€rde mellan markörerna AABBCCDD och yyyy – detta Ă€r förskjutningen för nĂ€sta shell-kod. Den kallas med hjĂ€lp av funktionen CreateThread. Den samma shell-kod som anvĂ€ndes av OceanLotus-gruppen tidigare har extraherats. Python-emuleringsscriptet, som vi slĂ€ppte i mars 2018, fungerar fortfarande för dumpning av andra steget.

Andra steget

Extrahera komponenter

Filnamn och kataloger vÀljs dynamiskt. Koden vÀljer slumpmÀssigt ett namn för exekverbart eller DLL-fil i C:Windowssystem32. Den gör sedan en begÀran till sina resurser och extraherar fÀltet FileDescription för att anvÀndas som mappnamn. Om detta misslyckas vÀljer koden slumpmÀssigt ett mappnamn frÄn katalogerna %ProgramFiles% eller C:Windows (frÄn GetWindowsDirectoryW). Den undviker att anvÀnda namn som kan krocka med existerande filer och ser till att det inte innehÄller följande ord: windows, Microsoft, desktop, system, system32. eller syswow64. Om katalogen redan finns lÀggs "NLS_{6 tecken}" till namnet.

Resurs 0x102 analyseras och filer dumpas till %ProgramFiles% eller %AppData%, i en slumpmÀssigt vald mapp. Skapelsedatumet Àndras för att ha samma vÀrden som kernel32.dll.

Till exempel, hÀr Àr en mapp och en lista med filer som skapats genom att vÀlja körbara filen C:Windowssystem32TCPSVCS.exe som datakÀlla.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Figur 6. Utdragning av olika komponenter

Resursstrukturen 0x102 i dropparen Àr ganska komplex. Kort sagt innehÄller den:
— Filnamn
— Storlek och innehĂ„ll i filer
— Komprimeringsformat (COMPRESSION_FORMAT_LZNT1, som anvĂ€nds av funktionen RtlDecompressBuffer)

Den första filen dumpas som TCPSVCS.exe, som Àr legitimt AcroTranscoder.exe (enligt FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Du kanske har mÀrkt att storleken pÄ vissa DLL-filer överstiger 11 MB. Detta beror pÄ att en stor sammanhÀngande buffert av slumpmÀssiga data placeras inuti den körbara filen. Det Àr möjligt att detta Àr ett sÀtt att undvika upptÀckten av vissa sÀkerhetsprodukter.

SÀkerstÀlla persistens

Resurs 0x101 i dropparen innehÄller tvÄ 32-bitars heltal som anger hur persistens ska sÀkerstÀllas. Det första vÀrdet anger hur skadlig programvara kommer att upprÀtthÄlla persistens utan administratörsrÀttigheter.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Tabell 1. Persistensmekanism utan administratörsrÀttigheter

Det andra heltalets vÀrde anger hur skadlig programvara ska sÀkerstÀlla persistens nÀr den arbetar med administratörsrÀttigheter.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Tabell 2. Persistensmekanism med administratörsrÀttigheter

TjĂ€nstens namn Ă€r filnamnet utan filtillĂ€gg; det visade namnet Ă€r mappens namn, men om det redan finns lĂ€ggs en strĂ€ng till “Revision 1” (siffran ökar tills ett oanvĂ€nt namn hittas). Operatörerna ser till att persistens via tjĂ€nsten Ă€r stabil – vid ett misslyckande ska tjĂ€nsten startas om inom 1 sekund. DĂ„ tilldelas vĂ€rdet WOW64 för den nya tjĂ€nstens registernyckel vĂ€rdet 4, vilket indikerar att det Ă€r en 32-bitars tjĂ€nst.

Ett schemalagt jobb skapas via flera COM-grÀnssnitt: ITaskScheduler, ITask, ITaskTrigger, IPersistFile och ITaskScheduler. I grund och botten skapar den skadliga programvaran en dold uppgift, stÀller in kontoinformation tillsammans med information om den nuvarande anvÀndaren eller administratören och sÀtter sedan en trigger.

Detta Àr en daglig uppgift med en varaktighet pÄ 24 timmar och mellanrum mellan tvÄ körningar pÄ 10 minuter, vilket innebÀr att den kommer att köras kontinuerligt.

Skadlig bit

I vÄrt exempel Àr den exekverbara filen TCPSVCS.exe (AcroTranscoder.exe) legitim mjukvara som laddar DLL-filer som ÄterstÀlls tillsammans med den. I det hÀr fallet Àr intresset riktat mot Flash Video Extension.dll.

Dess funktion DLLMain anropar helt enkelt en annan funktion. Det finns vissa otydliga predikat:

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Figur 7. Otydliga predikat

Efter dessa vilseledande kontroller fÄr koden sektionen .text filen TCPSVCS.exe, Àndrar dess skydd till PAGE_EXECUTE_READWRITE och skriver över det med falska instruktioner:

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Figur 8. Instruktionssekvens

I slutet lÀggs en instruktion till adressen för funktionen FLVCore::Uninitialize(void), som exporteras Flash Video Extension.dll, CALL. Detta innebÀr att efter att den skadliga DLL-filen laddats, nÀr köromrÄdet anropar WinMain pÄ TCPSVCS.exe, pekaren till instruktionen kommer att rikta sig mot NOP, vilket i sin tur anropar FLVCore::Uninitialize(void), nÀsta steg.

Funktionen skapar helt enkelt en mutex som börjar med {181C8480-A975-411C-AB0A-630DB8B0A221}, följt av det aktuella anvÀndarnamnet. Sedan lÀser den den ÄterstÀllda filen med filÀndelsen *.db3 som innehÄller positionsoberoende kod, och anvÀnder CreateThread för att köra innehÄllet.

InnehÄllet i filen *.db3 Àr shellkod som ofta anvÀnds av OceanLotus-gruppen. Vi har Äterigen framgÄngsrikt packat upp dess nyttolast med hjÀlp av en emulator-skript som vi publicerat pÄ GitHub.

Skriptet extraherar det slutliga steget. Denna komponent Àr en bakdörr som vi redan har analyserat i den tidigare OceanLotus-studien. Detta kan identifieras genom GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} av den binÀra filen. Konfigurationen av skadlig programvara Àr fortfarande krypterad i PE-resursen. Den har ungefÀr samma konfiguration, men C&C-servrarna skiljer sig frÄn de tidigare:

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

OceanLotus-gruppen visar Äterigen en kombination av olika tekniker för att undvika upptÀckten. De har Äterkommit med en "förbÀttrad" infektionprocess. Genom att vÀlja slumpmÀssiga namn och fylla exekverbara filer med slumpmÀssiga data minskar de antalet pÄlitliga IoC (baserat pÄ hashvÀrden och filnamn). Dessutom, genom att anvÀnda en tredjeparts DLL-laddare, behöver angriparna bara ta bort den legitima binÀren AcroTranscoder.

SjÀlvppackande arkiv

Efter RTF-filer gick gruppen över till sjÀlvpackande (SFX) arkiv med vanliga dokumentikoner för att förvirra anvÀndaren Ànnu mer. Detta rapporterades av Threatbook (lÀnk pÄ kinesiska). Efter uppstart raderas sjÀlvextraherande RAR-filer och DLL-filer med .ocx-tillÀgg körs, dÀr den slutliga payloaden tidigare dokumenterades {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Sedan mitten av januari 2019 har OceanLotus ÄteranvÀnt denna teknik, men förÀndrat vissa konfigurationer över tid. I detta avsnitt kommer vi att beskriva tekniken och Àndringarna.

Skapande av en fÀlla

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) upptĂ€cktes för första gĂ„ngen 2018. Denna SFX-fil Ă€r skapad med omsorg – i beskrivningen (Version Info) anges att detta Ă€r en JPEG-bild. SFX-skriptet ser ut som följande:

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 9. SFX-kommandon

Malware raderar {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), samt bilden 2018 thich thong lac.jpg.

FÀllan ser ut som följer:

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 10. FĂ€llan

Du har kanske mÀrkt att de första tvÄ raderna i SFX-skriptet anropar OCX-filen tvÄ gÄnger, men det Àr ingen bugg.

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

Kontrollflödet i OCX-filen liknar andra OceanLotus-komponenter – mĂ„nga kommandosekvenser JZ/JNZ och PUSH/RET, alternerande med skrĂ€pkod.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 11. Obfuskerad kod

Efter filtrering av skrÀpkoden exporterar DllRegisterServer, som anropas regsvr32.exe, ser ut som följande:

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 12. Huvudkod för distributören

I grund och botten stÀller den första anropningen DllRegisterServer exporten vÀrdet i registreringsdatabasen HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model till det krypterade offsetet i DLL (0x10001DE0).

NÀr funktionen anropas för andra gÄngen lÀser den samma vÀrde och körs vid den adressen. HÀrifrÄn lÀses och körs resursen och mÄnga ÄtgÀrder sker i minnet.

Shellkoden Àr samma PE-laddare som anvÀndes i tidigare OceanLotus-kampanjer. Den kan emuleras med hjÀlp av vÄrt skript. Resultatet Àr att den raderar db293b825dcc419ba7dc2c49fa2757ee.dll, laddar den i minnet och kör DllEntry.

DLL:n extraherar innehÄllet i sin resurs, dekrypterar (AES-256-CBC) och packar upp (LZMA) det. Resursen har ett specifikt format som Àr lÀtt att dekom pilera.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Bild 13. Struktur för distributörens konfiguration (KaitaiStruct Visualizer)

Konfigurationen anges uttryckligen – beroende pĂ„ privilegienivĂ„n kommer binĂ€rdata att skrivas till %appdata%IntellogsBackgroundUploadTask.cpl eller %windir%System32BackgroundUploadTask.cpl (eller SysWOW64 för 64-bitars system).

NÀsta, sÀkerstÀlls persistensen genom att skapa en uppgift med namnet BackgroundUploadTask[junk].job, dÀr [junk] Àr en uppsÀttning av byte 0x9D och 0xA0.

Uppgiftsappens namn %windir%System32control.exe, och parametervÀrdet Àr sökvÀgen till den laddade binÀra filen. Den dolda uppgiften körs varje dag.

Konstruktionen av CPL-filen Àr i grunden en DLL med det interna namnet ac8e06de0a6c4483af9837d96504127e.dll, som exporterar funktionen CPlApplet. Denna fil avkodar sin enda resurs {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, laddar sedan denna DLL och anropar dess enda export DllEntry.

Konfigurationsfilen för backdoor

Backdoor-konfigurationen Àr krypterad och inbÀddad i dess resurser. Strukturen av konfigurationsfilen liknar mycket den tidigare.

ESET: nya leveransscheman för bakdörrar frÄn cybergruppen OceanLotus
Figur 14. Strukturen av backdoor-konfigurationen (KaitaiStruct Visualizer)

Trots den liknande strukturen har mÄnga av fÀlten uppdaterats jÀmfört med data som presenteras i vÄr gamla rapport.

Det första elementet i det binÀra arrayet innehÄller DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identifierad som Tencent. Men eftersom exportnamnet har tagits bort frÄn den binÀra filen matchar inte hasharna.

Ytterligare forskning

Vid insamlingen av prover har vi lagt mÀrke till vissa egenskaper. Det nybeskrivna provet dök upp runt juli 2018, medan andra liknande dök upp nyligen, i mitten av januari till början av februari 2019. Infektionsvektorn var en SFX-arkiv som slÀppte ett legitimt speldokument och en skadlig OS-fil.

Trots att OceanLotus anvÀnder falska tidsstÀmplar, har vi noterat att tidsstÀmplarna för SFX- och OCX-filer alltid Àr desamma (0x57B0C36A (08/14/2016 @ 7:15pm UTC) och 0x498BE80F (02/06/2009 @ 7:34am UTC) respektive). Det tyder troligen pÄ att författarna har nÄgon form av "byggare" som anvÀnder samma mallar och bara Àndrar nÄgra egenskaper.

Bland dokumenten som vi har granskat sedan början av 2018 dyker det upp olika namn som pekar pÄ intressanta lÀnder för angriparna:

— The New Contact Information Of Cambodia Media(New).xls.exe
— 李ć»ș驙 (äžȘäșș缀掆).exe (falskt pdf-dokument av ett CV)
— feedback, Rally i USA frĂ„n 28-29 juli 2018.exe

Sedan upptÀckten av backdoor {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll och publiceringen av dess analys av flera forskare har vi observerat vissa förÀndringar i konfigurationsdata för skadlig programvara.

För det första började författarna att ta bort namn frÄn hjÀlpbiblioteken DLL (DNSprov.dll och tvÄ versioner HttpProv.dll). Sedan slutade operatörerna att paketera den tredje DLL:en (den andra versionen HttpProv.dll), valde att bara integrera en.

För det andra har mÄnga fÀlt i bakdörrens konfiguration Àndrats, troligen för att undvika upptÀckter, eftersom mÄnga IoCs har blivit tillgÀngliga. Bland de viktiga fÀlt som har Àndrats av författarna Àr följande:

  • den Ă€ndrade AppX-registeravsnittet (se IoCs)
  • strĂ€ng för mutexkodning ("def", "abc", "ghi")
  • portnummer

Slutligen har nya C&C servrar dykt upp i alla nya analyserade versioner, som listas i avsnittet IoCs.

Slutsatser

OceanLotus fortsÀtter att utvecklas. Cybergruppen fokuserar pÄ att förbÀttra och utöka sin verktygslÄda och agn. Författarna maskerar skadlig programvara med hjÀlp av uppseendevÀckande dokument vars Àmnen Àr relevanta för de avsedda offren. De utvecklar nya scheman och anvÀnder offentligt tillgÀngliga verktyg, till exempel exploit för Equation Editor. Dessutom förbÀttrar de sina verktyg för att minska mÀngden artefakter som lÀmnas pÄ offrens maskiner, vilket dÀrmed minskar chansen att upptÀckas av antivirusprogram.

Indikatorer pÄ kompromiss

Indikatorer pÄ kompromiss, samt MITRE ATT&CK-attribut, Àr tillgÀngliga pÄ Welivesecurity och pÄ GitHub.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster