ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus

En ĉi tiu afiŝo ni rakontos al vi kiel la cibergrupo OceanLotus (APT32 kaj APT-C-00) ĵus uzis unu el la publike disponeblaj ekspluatoj por CVE-2017-11882, memorkoruptecoj en Microsoft Office, kaj kiel la malware de la grupo atingas persiston sur kompromititaj sistemoj sen lasi spuron. Poste, ni priskribos kiel, ekde la komenco de 2019, la grupo uzas mem-eltirajn arkivojn por ruli kodon.

OceanLotus specialiĝas pri ciberspionado, kun prioritataj celoj estas landoj en Sudorienta Azio. Atakantoj forĝas dokumentojn kiuj altiras la atenton de eblaj viktimoj por konvinki ilin ekzekuti la malantaŭan pordon, kaj ankaŭ laboras pri evoluigado de iloj. La metodoj uzataj por krei mielpotojn varias laŭ atakoj, de "duobla etendo" dosieroj, mem-eltiraj arkivoj, dokumentoj kun makrooj, ĝis konataj atingoj.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus

Uzante ekspluatadon en Microsoft Equation Editor

Meze de 2018, OceanLotus faris kampanjon ekspluatante la vundeblecon CVE-2017-11882. Unu el la malicaj dokumentoj de la cibergrupo estis analizita de specialistoj de 360 ​​Threat Intelligence Center (esploro en la ĉina), inkluzive de detala priskribo de la ekspluato. La suba afiŝo enhavas superrigardon de tia malica dokumento.

Unua etapo

La dokumento FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) similas al tiu menciita en la supra studo. Ĝi estas interesa ĉar ĝi celas uzantojn interesitajn pri kamboĝa politiko (CNRP - Kamboĝa Nacia Sava Partio, dissolvita fine de 2017). Malgraŭ la etendo .doc, la dokumento estas en formato RTF (vidu la bildon sube), enhavas ruban kodon, kaj ankaŭ estas distordita.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 1. "Rubo" en RTF

Kvankam estas misklaraj elementoj, Word malfermas ĉi tiun RTF-dosieron sukcese. Kiel vi povas vidi en Figuro 2, ekzistas EQNOLEFILEHDR-strukturo ĉe ofseto 0xC00, sekvita de MTEF-kapo, kaj poste MTEF-eniro (Figuro 3) por la tiparo.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 2. FONT-enirvaloroj

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 3. FONT registra formato

Ebla superfluo en la kampo nomo, ĉar ĝia grandeco ne estas kontrolita antaŭ kopiado. Nomo tro longa ekigas vundeblecon. Kiel vi povas vidi el la enhavo de la RTF-dosiero (offset 0xC26 en Figuro 2), la bufro estas plenigita per ŝelkodo sekvita de falsa komando (0x90) kaj revenadreso 0x402114. La adreso estas dialogelemento en EQNEDT32.exe, indikante instrukciojn RET. Ĉi tio igas EIP montri al la komenco de la kampo nomoenhavanta la ŝelkodon.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 4. Komenco de la ekspluata ŝelkodo

Adreso 0x45BD3C stokas variablon kiu estas dereferencita ĝis ĝi atingas montrilon al la nuntempe ŝarĝita strukturo MTEFData. La resto de la ŝelkodo estas ĉi tie.

La celo de la ŝelkodo estas efektivigi la duan pecon de ŝelkodo enigita en la malferma dokumento. La origina ŝelkodo unue provas trovi la dosierpriskribilon de la malfermita dokumento ripetante ĉiujn sistempriskribilojn (NtQuerySystemInformation kun argumento SystemExtendedHandleInformation) kaj kontrolante ĉu ili kongruas PID priskribilo kaj PID procezo WinWord kaj ĉu la dokumento estis malfermita kun alirmasko - 0x12019F.

Por konfirmi, ke la ĝusta tenilo estas trovita (kaj ne la tenilo al alia malfermita dokumento), la enhavo de la dosiero estas montrata per la funkcio CreateFileMapping, kaj la ŝelkodo kontrolas ĉu la lastaj kvar bajtoj de la dokumento kongruas kun "yyyy"(Metodo de Ovo-Ĉasado). Post kiam kongruo estas trovita, la dokumento estas kopiita al provizora dosierujo (GetTempPath) Kiel ole.dll. Tiam la lastaj 12 bajtoj de la dokumento estas legitaj.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 5. Fino de Dokumentaj Markiloj

32-bita valoro inter markiloj AABBCCDD и yyyy estas la ofseto de la sekva ŝelkodo. Ĝi nomiĝas uzante la funkcion CreateThread. Eltiris la saman ŝelkodon, kiu estis uzita de la OceanLotus-grupo pli frue. Skripto de emulado de Python, kiun ni publikigis en marto 2018, ankoraŭ funkcias por la dua faza rubejo.

Dua etapo

Forigante Komponentojn

Dosieroj kaj dosierujoj estas dinamike elektitaj. La kodo hazarde elektas la nomon de la rulebla aŭ DLL-dosiero en C:Windowssystem32. Ĝi tiam faras peton al siaj rimedoj kaj prenas la kampon FileDescription uzi kiel la dosierujon nomo. Se ĉi tio ne funkcias, la kodo hazarde elektas dosierujon el la dosierujoj %ProgramFiles%C:Windows (de GetWindowsDirectoryW). Ĝi evitas uzi nomon kiu povus konflikti kun ekzistantaj dosieroj kaj certigas ke ĝi ne enhavas la sekvajn vortojn: windows, Microsoft, desktop, system, system32syswow64. Se la dosierujo jam ekzistas, "NLS_{6 signoj}" estas aldonita al la nomo.

rimedo 0x102 estas analizitaj kaj dosieroj estas forĵetitaj en %ProgramFiles%%AppData%, al hazarde elektita dosierujo. Ŝanĝita krea tempo por havi la samajn valorojn kiel kernel32.dll.

Ekzemple, jen la dosierujo kaj listo de dosieroj kreitaj elektante la ruleblan C:Windowssystem32TCPSVCS.exe kiel datumfonto.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 6. Ekstraktado de diversaj komponantoj

Rimeda strukturo 0x102 en guto estas sufiĉe kompleksa. En resumo, ĝi enhavas:
— Dosiernomoj
— Dosiera grandeco kaj enhavo
— Kunprema formato (COMPRESSION_FORMAT_LZNT1, uzata de la funkcio RtlDecompressBuffer)

La unua dosiero estas rekomencigita kiel TCPSVCS.exe, kio estas legitima AcroTranscoder.exe (laŭ FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Vi eble rimarkis, ke iuj DLL-dosieroj estas pli grandaj ol 11 MB. Ĉi tio estas ĉar granda apuda bufro de hazardaj datumoj estas metita ene de la rulebla dosiero. Eblas, ke ĉi tio estas maniero eviti detekton de iuj sekurecaj produktoj.

Certigante persiston

rimedo 0x101 en la guto enhavas du 32-bitajn entjerojn kiuj precizigas kiel persisto devus esti provizita. La valoro de la unua specifas kiel la malware persistos sen administrantoj.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Tabelo 1. Persista mekanismo sen administranto-rajtoj

La valoro de la dua entjero specifas kiel la malware devus atingi persiston kiam kuras kun administranto rajtoj.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Tablo 2. Persista mekanismo kun administranto-rajtoj

La servonomo estas la dosiernomo sen etendaĵo; la montra nomo estas la nomo de la dosierujo, sed se ĝi jam ekzistas, la ĉeno " estas almetita al ĝiRevision 1” (la nombro pligrandiĝas ĝis troviĝos neuzata nomo). La funkciigistoj certigis, ke persisto tra la servo estas fortika - en kazo de fiasko, la servo devus esti rekomencita post 1 sekundo. Tiam la valoro WOW64 La registroŝlosilo de la nova servo estas agordita al 4, indikante ke ĝi estas 32-bita servo.

Planita tasko estas kreita per pluraj COM-interfacoj: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Esence, la malware kreas kaŝitan taskon, fiksas la kontajn informojn kune kun la aktualaj informoj pri uzanto aŭ administranto, kaj poste starigas la ellasilon.

Ĉi tio estas ĉiutaga tasko kun daŭro de 24 horoj kaj intervaloj inter du ekzekutoj de 10 minutoj, kio signifas, ke ĝi funkcios senĉese.

Malica peco

En nia ekzemplo, la rulebla dosiero TCPSVCS.exe (AcroTranscoder.exe) estas legitima programaro, kiu ŝarĝas DLL-ojn kiuj estas rekomencigitaj kune kun ĝi. En ĉi tiu kazo, ĝi estas interesa Flash Video Extension.dll.

Ĝia funkcio DLLMain nur vokas alian funkcion. Kelkaj neklaraj predikatoj ĉeestas:

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 7. Neklaraj predikatoj

Post ĉi tiuj misgvidaj kontroloj, la kodo ricevas sekcion .text dosiero TCPSVCS.exe, ŝanĝas sian defendon al PAGE_EXECUTE_READWRITE kaj reverkas ĝin aldonante falsajn instrukciojn:

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 8. Sekvo de instrukcioj

Fine al la funkcio adreso FLVCore::Uninitialize(void), eksportita Flash Video Extension.dll, instrukcio estas aldonita CALL. Ĉi tio signifas, ke post kiam la malica DLL estas ŝarĝita, kiam la rultempo vokas WinMain в TCPSVCS.exe, la instrukcimontrilo montros al NOP, kaŭzante FLVCore::Uninitialize(void), sekva etapo.

La funkcio simple kreas mutekson komencantan per {181C8480-A975-411C-AB0A-630DB8B0A221}sekvata de la nuna uzantnomo. Ĝi tiam legas la forĵetitan *.db3-dosieron, kiu enhavas pozicion-sendependan kodon, kaj uzas CreateThread por efektivigi la enhavon.

La enhavo de la *.db3-dosiero estas la ŝelkodo, kiun la OceanLotus-grupo kutime uzas. Ni denove sukcese malpakis ĝian utilan ŝarĝon per la emulila skripto, kiun ni publikigis sur GitHub.

La skripto ĉerpas la finan etapon. Ĉi tiu komponanto estas malantaŭa pordo, en kiu ni jam analizis antaŭa OceanLotus studo. Ĉi tio povas esti determinita de la GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binara dosiero. La malware-agordo ankoraŭ estas ĉifrita en la PE-rimedo. Ĝi havas proksimume la saman agordon, sed la C&C-serviloj diferencas de la antaŭaj:

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

La teamo de OceanLotus denove pruvas kombinaĵon de malsamaj teknikoj por eviti detekton. Ili revenis kun "rafinita" diagramo de la infekta procezo. Elektante hazardajn nomojn kaj plenigante ruleblajn dosierojn per hazardaj datumoj, ili reduktas la nombron da fidindaj IoCs (bazitaj sur hashoj kaj dosiernomoj). Krome, danke al la uzo de triaj DLL-ŝarĝado, atakantoj nur bezonas forigi la legitiman binaron. AcroTranscoder.

Mem-eltiraj arkivoj

Post RTF-dosieroj, la grupo moviĝis al mem-eltiraj (SFX) arkivoj kun oftaj dokumentikonoj por plue konfuzi la uzanton. Threatbook skribis pri tio (ligilo en la ĉina). Post lanĉo, mem-eltiraj RAR-dosieroj estas faligitaj kaj DLL-oj kun etendo .ocx estas ekzekutitaj, kies fina ŝarĝo estis antaŭe dokumentita. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Ekde meze de januaro 2019, OceanLotus reuzas ĉi tiun teknikon, sed ŝanĝas kelkajn agordojn laŭlonge de la tempo. En ĉi tiu sekcio ni parolos pri la tekniko kaj ŝanĝoj.

Kreante Allogaĵon

La dokumento THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) unue estis trovita en 2018. Ĉi tiu SFX-dosiero estis kreita saĝe - en la priskribo (Versiaj Informoj) ĝi diras, ke ĉi tio estas JPEG-bildo. La SFX-skripto aspektas jene:

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 9. SFX-Komandoj

La malware restarigas {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), same kiel bildon 2018 thich thong lac.jpg.

La forlogaĵbildo aspektas jene:

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 10. Forlogaĵo-bildo

Vi eble rimarkis, ke la unuaj du linioj en la SFX-skripto nomas la OCX-dosieron dufoje, sed ĉi tio ne estas eraro.

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

La kontrolfluo de OĈ-dosiero tre similas al aliaj komponantoj de OceanLotus - multaj komandsekvencoj JZ/JNZ и PUSH/RET, alternante kun rubkodo.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 11. Malklarigita kodo

Post filtrado de rubkodo, eksportu DllRegisterServer, vokis regsvr32.exe, jene:

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 12. Baza instalilo-kodo

Esence, je la unua voko DllRegisterServer eksporto aroj registra valoro HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model por ĉifrita ofseto en DLL (0x10001DE0).

Kiam la funkcio estas vokita duan fojon, ĝi legas la saman valoron kaj efektivigas ĉe tiu adreso. De ĉi tie la rimedo kaj multaj agoj en RAM estas legitaj kaj ekzekutitaj.

La ŝelkodo estas la sama PE-ŝargilo uzata en pasintaj kampanjoj de OceanLotus. Ĝi povas esti kopiita uzante nia skripto. Fine li restarigis db293b825dcc419ba7dc2c49fa2757ee.dll, ŝarĝas ĝin en memoron kaj ekzekutas DllEntry.

La DLL ĉerpas la enhavon de sia rimedo, malĉifras (AES-256-CBC) kaj malkunpremas (LZMA). La rimedo havas specifan formaton, kiu estas facile malkompilebla.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 13. Instalila agorda strukturo (KaitaiStruct Visualizer)

La agordo estas precizigita eksplicite - depende de la privilegia nivelo, binaraj datumoj estos skribitaj al %appdata%IntellogsBackgroundUploadTask.cpl%windir%System32BackgroundUploadTask.cpl (aŭ SysWOW64 por 64-bitaj sistemoj).

Plia persisto estas certigita kreante taskon kun la nomo BackgroundUploadTask[junk].jobkie [junk] reprezentas aron da bajtoj 0x9D и 0xA0.

Nomo de Taska Apliko %windir%System32control.exe, kaj la parametrovaloro estas la vojo al la elŝutita binara dosiero. La kaŝita tasko funkcias ĉiutage.

Strukture, CPL-dosiero estas DLL kun interna nomo ac8e06de0a6c4483af9837d96504127e.dll, kiu eksportas funkcion CPlApplet. Ĉi tiu dosiero malĉifras sian solan rimedon {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, tiam ŝarĝas ĉi tiun DLL kaj vokas ĝian nuran eksportadon DllEntry.

Backdoor agorda dosiero

La malantaŭporda agordo estas ĉifrita kaj enigita en ĝiaj rimedoj. La strukturo de la agorda dosiero estas tre simila al la antaŭa.

ESET: novaj malantaŭpordaj liverkabaloj por la cibergrupo OceanLotus
Figuro 14. Malantaŭa agorda strukturo (KaitaiStruct Visualizer)

Kvankam la strukturo estas simila, multaj el la kampaj valoroj estis ĝisdatigitaj de tiuj montritaj en nia malnova raporto.

La unua elemento de la binara tabelo enhavas DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identigite fare de Tencent. Sed ĉar la eksportnomo estis forigita de la duuma, la hashoj ne kongruas.

Pliaj Esploroj

Dum kolektado de specimenoj, ni rimarkis iujn trajtojn. La ĵus priskribita specimeno aperis ĉirkaŭ julio 2018, kaj aliaj similaj aperis same lastatempe meze de januaro ĝis frua februaro 2019. La SFX-arkivo estis utiligita kiel infekta vektoro, faligante legitiman forlogaĵon kaj malican OSX-dosieron.

Kvankam OceanLotus uzas falsajn tempomarkojn, ni rimarkis, ke la tempomarkoj de SFX kaj OCX-dosieroj ĉiam estas la samaj (0x57B0C36A (08/14/2016 @ 7:15 UTC) kaj 0x498BE80F (02/06/2009 @ 7:34am UTC) respektive). Ĉi tio verŝajne indikas, ke la aŭtoroj havas ian "dezajniston", kiu uzas la samajn ŝablonojn kaj simple ŝanĝas iujn trajtojn.

Inter la dokumentoj, kiujn ni studis ekde la komenco de 2018, estas diversaj nomoj indikante la landojn de intereso por la atakantoj:

— La Nova Kontakta Informo De Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (falsa pdf-dokumento de CV)
— komentoj, Mitingo en Usono de la 28-29-a de julio 2018.exe

Ekde la malantaŭa pordo estis malkovrita {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll kaj la publikigo de ĝia analizo de pluraj esploristoj, ni observis iujn ŝanĝojn en la datumoj de agordo de malware.

Unue, la aŭtoroj komencis forigi nomojn de helpaj DLL-oj (DNSprov.dll kaj du versioj HttpProv.dll). La funkciigistoj tiam ĉesis enpaki la trian DLL (la dua versio HttpProv.dll), elektante enigi nur unu.

Due, multaj malantaŭpordaj agordaj kampoj estis ŝanĝitaj, verŝajne eviti detekton ĉar multaj IoC-oj iĝis haveblaj. Gravaj kampoj modifitaj de la aŭtoroj inkluzivas:

  • AppX-registra ŝlosilo ŝanĝita (vidu IoCs)
  • mutex-kodiga ĉeno ("def", "abc", "ghi")
  • havennumero

Fine, ĉiuj novaj versioj analizitaj havas novajn C&C-ojn listigitajn en la sekcio de IoCs.

trovoj

OceanLotus daŭre evoluas. La cibergrupo koncentriĝas pri rafinado kaj vastigado de la iloj kaj forlogaĵoj. Aŭtoroj maskas malicajn ŝarĝojn uzante atentokaptajn dokumentojn, kies temo rilatas al la celitaj viktimoj. Ili disvolvas novajn skemojn kaj ankaŭ uzas publike disponeblajn ilojn, kiel la ekspluato de Equation Editor. Krome, ili plibonigas ilojn por redukti la nombron da artefaktoj restantaj sur la maŝinoj de viktimoj, tiel reduktante la eblecon de detekto per antivirusa programaro.

Indikiloj de kompromiso

Indikiloj de kompromiso same kiel MITRE ATT&CK-atributoj estas haveblaj pri Welivesecurity и sur GitHub.

fonto: www.habr.com

Aldoni komenton