Sa post na ito sasabihin namin sa iyo kung paano ginamit kamakailan ng cyber group na OceanLotus (APT32 at APT-C-00) ang isa sa mga magagamit na pampublikong pagsasamantala para sa
Dalubhasa ang OceanLotus sa cyber espionage, na ang mga priority target ay mga bansa sa Southeast Asia. Gumagawa ng mga dokumento ang mga attacker na nakakaakit ng atensyon ng mga potensyal na biktima para kumbinsihin silang isagawa ang backdoor, at gumagawa din ng mga tool. Ang mga paraan na ginagamit upang lumikha ng mga honeypot ay nag-iiba-iba sa mga pag-atake, mula sa "double-extension" na mga file, self-extracting archive, mga dokumentong may mga macro, hanggang sa mga kilalang pagsasamantala.
Paggamit ng pagsasamantala sa Microsoft Equation Editor
Noong kalagitnaan ng 2018, nagsagawa ang OceanLotus ng kampanyang nagsasamantala sa kahinaan ng CVE-2017-11882. Ang isa sa mga malisyosong dokumento ng cyber group ay sinuri ng mga espesyalista mula sa 360 Threat Intelligence Center (
Ang unang yugto
dokumento FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) ay katulad ng nabanggit sa pag-aaral sa itaas. Ito ay kawili-wili dahil ito ay naglalayong sa mga user na interesado sa Cambodian na pulitika (CNRP - Cambodia National Rescue Party, dissolved sa katapusan ng 2017). Sa kabila ng extension na .doc, ang dokumento ay nasa format na RTF (tingnan ang larawan sa ibaba), naglalaman ng code ng basura, at nasira din.
Figure 1. "Basura" sa RTF
Kahit na may mga gusot na elemento, matagumpay na binuksan ng Word ang RTF file na ito. Gaya ng makikita mo sa Figure 2, mayroong EQNOLEFILEHDR structure sa offset 0xC00, na sinusundan ng MTEF header, at pagkatapos ay isang MTEF entry (Figure 3) para sa font.
Figure 2. FONT entry values
Figure 3.
Posibleng pag-apaw sa field pangalan, dahil hindi sinusuri ang laki nito bago kopyahin. Ang isang pangalan na masyadong mahaba ay nagti-trigger ng isang kahinaan. Tulad ng nakikita mo mula sa mga nilalaman ng RTF file (offset 0xC26 sa Figure 2), ang buffer ay puno ng shellcode na sinusundan ng isang dummy command (0x90
) at return address 0x402114
. Ang address ay isang elemento ng diyalogo sa EQNEDT32.exe
, na nagpapahiwatig ng mga tagubilin RET
. Nagiging sanhi ito ng EIP na tumuro sa simula ng field pangalannaglalaman ng shellcode.
Figure 4. Simula ng exploit shellcode
address 0x45BD3C
nag-iimbak ng isang variable na na-dereference hanggang sa umabot ito sa isang pointer sa kasalukuyang na-load na istraktura MTEFData
. Ang natitirang shellcode ay narito.
Ang layunin ng shellcode ay isagawa ang pangalawang piraso ng shellcode na naka-embed sa bukas na dokumento. Ang orihinal na shellcode ay unang sumusubok na hanapin ang file descriptor ng bukas na dokumento sa pamamagitan ng pag-ulit sa lahat ng system descriptor (NtQuerySystemInformation
na may argumento SystemExtendedHandleInformation
) at tingnan kung magkatugma ang mga ito PID deskriptor at PID proseso WinWord
at kung ang dokumento ay binuksan gamit ang isang access mask - 0x12019F
.
Upang kumpirmahin na ang tamang hawakan ay natagpuan (at hindi ang hawakan sa isa pang bukas na dokumento), ang mga nilalaman ng file ay ipinapakita gamit ang function. CreateFileMapping
, at sinusuri ng shellcode kung tumutugma ang huling apat na byte ng dokumento "yyyy
"(Paraan ng Egg Hunting). Kapag natagpuan ang isang tugma, ang dokumento ay kinokopya sa isang pansamantalang folder (GetTempPath
) Paano ole.dll
. Pagkatapos ay basahin ang huling 12 byte ng dokumento.
Figure 5. End of Document Marker
32-bit na halaga sa pagitan ng mga marker AABBCCDD
и yyyy
ay ang offset ng susunod na shellcode. Tinatawag itong gamit ang function CreateThread
. Na-extract ang parehong shellcode na ginamit ng OceanLotus group kanina.
Ang pangalawang yugto
Pag-alis ng Mga Bahagi
Ang mga pangalan ng file at direktoryo ay dynamic na pinili. Ang code ay random na pinipili ang pangalan ng executable o DLL file sa C:Windowssystem32
. Pagkatapos ay humiling ito sa mga mapagkukunan nito at kinukuha ang field FileDescription
gamitin bilang pangalan ng folder. Kung hindi ito gumana, random na pipili ang code ng pangalan ng folder mula sa mga direktoryo %ProgramFiles%
o C:Windows
(mula sa GetWindowsDirectoryW). Iniiwasan nito ang paggamit ng isang pangalan na maaaring sumalungat sa mga kasalukuyang file at tinitiyak na hindi ito naglalaman ng mga sumusunod na salita: windows
, Microsoft
, desktop
, system
, system32
o syswow64
. Kung mayroon nang direktoryo, ang "NLS_{6 na character}" ay idinagdag sa pangalan.
mapagkukunan 0x102
ay sinusuri at ang mga file ay itinapon sa %ProgramFiles%
o %AppData%
, sa isang random na napiling folder. Binago ang oras ng paglikha upang magkaroon ng parehong mga halaga tulad ng kernel32.dll
.
Halimbawa, narito ang folder at listahan ng mga file na ginawa sa pamamagitan ng pagpili sa executable C:Windowssystem32TCPSVCS.exe
bilang pinagmumulan ng datos.
Figure 6. Pagkuha ng iba't ibang bahagi
Istraktura ng mapagkukunan 0x102
sa isang dropper ay medyo kumplikado. Sa madaling salita, naglalaman ito ng:
— Mga pangalan ng file
— Laki ng file at nilalaman
— Format ng compression (COMPRESSION_FORMAT_LZNT1
, ginagamit ng function RtlDecompressBuffer
)
Ang unang file ay na-reset bilang TCPSVCS.exe
, na lehitimo AcroTranscoder.exe
(ayon kay FileDescription
, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
Maaaring napansin mo na ang ilang DLL file ay mas malaki sa 11 MB. Ito ay dahil ang isang malaking magkadikit na buffer ng random na data ay inilalagay sa loob ng executable na file. Posible na ito ay isang paraan upang maiwasan ang pagtuklas ng ilang mga produkto ng seguridad.
Tinitiyak ang pagtitiyaga
mapagkukunan 0x101
sa dropper ay naglalaman ng dalawang 32-bit integer na tumutukoy kung paano dapat ibigay ang pagtitiyaga. Tinutukoy ng halaga ng una kung paano magpapatuloy ang malware nang walang mga karapatan ng administrator.
Talahanayan 1. Mekanismo ng pagtitiyaga nang walang mga karapatan ng administrator
Ang halaga ng pangalawang integer ay tumutukoy kung paano dapat makamit ng malware ang pagtitiyaga kapag tumatakbo nang may mga karapatan ng administrator.
Talahanayan 2. Mekanismo ng pagtitiyaga na may mga karapatan ng administrator
Ang pangalan ng serbisyo ay ang pangalan ng file na walang extension; ang display name ay ang pangalan ng folder, ngunit kung mayroon na ito, ang string na " ay nakadugtong ditoRevision 1
” (ang bilang ay tataas hanggang sa makita ang hindi nagamit na pangalan). Tiniyak ng mga operator na ang pagtitiyaga sa pamamagitan ng serbisyo ay matatag - kung sakaling mabigo, ang serbisyo ay dapat na i-restart pagkatapos ng 1 segundo. Pagkatapos ang halaga WOW64
Ang registry key ng bagong serbisyo ay nakatakda sa 4, na nagpapahiwatig na ito ay isang 32-bit na serbisyo.
Ang isang naka-iskedyul na gawain ay nilikha sa pamamagitan ng ilang COM interface: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. Sa pangkalahatan, ang malware ay gumagawa ng isang nakatagong gawain, itinatakda ang impormasyon ng account kasama ang kasalukuyang impormasyon ng user o administrator, at pagkatapos ay itinatakda ang trigger.
Ito ay isang pang-araw-araw na gawain na may tagal na 24 na oras at mga pagitan sa pagitan ng dalawang execution na 10 minuto, na nangangahulugang ito ay tatakbo nang tuluy-tuloy.
Malicious bit
Sa aming halimbawa, ang executable file TCPSVCS.exe
(AcroTranscoder.exe
) ay lehitimong software na naglo-load ng mga DLL na na-reset kasama nito. Sa kasong ito, ito ay interesado Flash Video Extension.dll
.
Ang function nito DLLMain
tumatawag lang ng ibang function. Mayroong ilang malabo na predicate:
Figure 7. Malabo na panaguri
Pagkatapos ng mga mapanlinlang na pagsusuring ito, nakakakuha ang code ng isang seksyon .text
file TCPSVCS.exe
, binabago ang depensa nito sa PAGE_EXECUTE_READWRITE
at muling isinulat ito sa pamamagitan ng pagdaragdag ng mga dummy na tagubilin:
Figure 8. Pagkakasunod-sunod ng mga tagubilin
Sa dulo sa address ng function FLVCore::Uninitialize(void)
, na-export Flash Video Extension.dll
, idinagdag ang pagtuturo CALL
. Nangangahulugan ito na pagkatapos ma-load ang nakakahamak na DLL, kapag tumawag ang runtime WinMain
в TCPSVCS.exe
, ang pagtuturo pointer ay ituturo sa NOP, nagiging sanhi FLVCore::Uninitialize(void)
, susunod na yugto.
Ang function ay lumilikha lamang ng isang mutex na nagsisimula sa {181C8480-A975-411C-AB0A-630DB8B0A221}
sinusundan ng kasalukuyang username. Pagkatapos ay binabasa nito ang na-dump na *.db3 file, na naglalaman ng code na independyente sa posisyon, at mga gamit CreateThread
upang maisagawa ang nilalaman.
Ang mga nilalaman ng *.db3 file ay ang shellcode na karaniwang ginagamit ng grupong OceanLotus. Muli naming matagumpay na na-unpack ang payload nito gamit ang emulator script na na-publish namin
Kinukuha ng script ang huling yugto. Ang bahaging ito ay isang backdoor, kung saan nasuri na namin {A96B020F-0000-466F-A96D-A91BBF8EAC96}
binary file. Naka-encrypt pa rin ang configuration ng malware sa resource ng PE. Ito ay may humigit-kumulang na parehong configuration, ngunit ang mga C&C server ay iba sa mga nauna:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
Ang koponan ng OceanLotus ay muling nagpakita ng kumbinasyon ng iba't ibang mga diskarte upang maiwasan ang pagtuklas. Bumalik sila na may "pinong" diagram ng proseso ng impeksyon. Sa pamamagitan ng pagpili ng mga random na pangalan at pagpuno sa mga executable ng random na data, binabawasan nila ang bilang ng mga maaasahang IoC (batay sa mga hash at mga pangalan ng file). Bukod dito, salamat sa paggamit ng third-party na pag-load ng DLL, kailangan lang alisin ng mga umaatake ang lehitimong binary AcroTranscoder
.
Self-extracting archive
Pagkatapos ng mga RTF file, lumipat ang grupo sa self-extracting (SFX) na mga archive na may mga karaniwang icon ng dokumento para lalong malito ang user. Sumulat ang Threatbook tungkol dito ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. Mula noong kalagitnaan ng Enero 2019, muling ginagamit ng OceanLotus ang diskarteng ito, ngunit binabago ang ilang configuration sa paglipas ng panahon. Sa seksyong ito ay pag-uusapan natin ang tungkol sa pamamaraan at mga pagbabago.
Paglikha ng Lure
dokumento THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) ay unang natagpuan noong 2018. Ang SFX file na ito ay nilikha nang matalino - sa paglalarawan (Impormasyon sa Bersyon) sinasabi nito na ito ay isang JPEG na imahe. Ang script ng SFX ay ganito ang hitsura:
Larawan 9. Mga Utos ng SFX
Nagre-reset ang malware {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
), pati na rin ang isang larawan 2018 thich thong lac.jpg.
Ganito ang hitsura ng decoy image:
Figure 10. Decoy na imahe
Maaaring napansin mo na ang unang dalawang linya sa script ng SFX ay tumatawag sa OCX file nang dalawang beses, ngunit hindi ito isang error.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
Ang kontrol na daloy ng isang OCX file ay halos kapareho sa iba pang bahagi ng OceanLotus - maraming mga pagkakasunud-sunod ng command JZ/JNZ
и PUSH/RET
, alternating gamit ang garbage code.
Figure 11. Obfuscated code
Pagkatapos i-filter ang junk code, i-export DllRegisterServer
, tinawag regsvr32.exe
, mukhang sumusunod:
Figure 12. Basic installer code
Talaga, sa unang tawag DllRegisterServer
Ang pag-export ay nagtatakda ng halaga ng pagpapatala HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
para sa naka-encrypt na offset sa DLL (0x10001DE0
).
Kapag tinawag ang function sa pangalawang pagkakataon, babasahin nito ang parehong halaga at ipapatupad sa address na iyon. Mula dito ang mapagkukunan at maraming mga aksyon sa RAM ay binabasa at naisakatuparan.
Ang shellcode ay ang parehong PE loader na ginamit sa mga nakaraang kampanya ng OceanLotus. Maaari itong tularan gamit ang db293b825dcc419ba7dc2c49fa2757ee.dll
, nilo-load ito sa memorya at ini-execute DllEntry
.
Kinukuha ng DLL ang mga nilalaman ng mapagkukunan nito, nagde-decrypt (AES-256-CBC) at nagde-decompress (LZMA) nito. Ang mapagkukunan ay may partikular na format na madaling i-decompile.
Larawan 13. Istraktura ng pagsasaayos ng installer (KaitaiStruct Visualizer)
Ang configuration ay tahasang tinukoy - depende sa antas ng pribilehiyo, ang binary data ay isusulat sa %appdata%IntellogsBackgroundUploadTask.cpl
o %windir%System32BackgroundUploadTask.cpl
(O SysWOW64
para sa 64-bit system).
Ang karagdagang pagtitiyaga ay tinitiyak sa pamamagitan ng paglikha ng isang gawain na may pangalan BackgroundUploadTask[junk].job
Saan [junk]
kumakatawan sa isang hanay ng mga byte 0x9D
и 0xA0
.
Pangalan ng Aplikasyon ng Gawain %windir%System32control.exe
, at ang value ng parameter ay ang path patungo sa na-download na binary file. Ang nakatagong gawain ay tumatakbo araw-araw.
Sa istruktura, ang isang CPL file ay isang DLL na may panloob na pangalan ac8e06de0a6c4483af9837d96504127e.dll
, na nag-e-export ng isang function CPlApplet
. Idini-decrypt ng file na ito ang tanging mapagkukunan nito {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
, pagkatapos ay nilo-load ang DLL na ito at tinatawag ang tanging export nito DllEntry
.
Backdoor configuration file
Ang configuration ng backdoor ay naka-encrypt at naka-embed sa mga mapagkukunan nito. Ang istraktura ng file ng pagsasaayos ay halos kapareho sa nauna.
Figure 14. Backdoor configuration structure (KaitaiStruct Visualizer)
Bagama't magkapareho ang istraktura, marami sa mga value ng field ang na-update mula sa mga ipinapakita sa
Ang unang elemento ng binary array ay naglalaman ng isang DLL (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
Karagdagang pagsasaliksik
Habang nangongolekta ng mga sample, napansin namin ang ilang mga katangian. Ang specimen na inilarawan ay lumitaw noong Hulyo 2018, at ang iba pang katulad nito ay lumitaw kamakailan noong kalagitnaan ng Enero hanggang unang bahagi ng Pebrero 2019. Ginamit ang archive ng SFX bilang isang vector ng impeksyon, nag-drop ng isang lehitimong dokumento ng decoy at isang malisyosong OSX file.
Kahit na gumagamit ang OceanLotus ng mga pekeng timestamp, napansin namin na ang mga timestamp ng SFX at OCX file ay palaging pareho (0x57B0C36A
(08/14/2016 @ 7:15pm UTC) at 0x498BE80F
(02/06/2009 @ 7:34am UTC) ayon sa pagkakabanggit). Ito ay malamang na nagpapahiwatig na ang mga may-akda ay may ilang uri ng "designer" na gumagamit ng parehong mga template at binago lamang ang ilang mga katangian.
Kabilang sa mga dokumento na aming pinag-aralan mula noong simula ng 2018, mayroong iba't ibang mga pangalan na nagpapahiwatig ng mga bansang interesado sa mga umaatake:
— Ang Bagong Impormasyon sa Pakikipag-ugnayan Ng Cambodia Media(Bago).xls.exe
— 李建香 (个人简历).exe (pekeng pdf na dokumento ng isang CV)
— feedback, Rally sa USA mula Hulyo 28-29, 2018.exe
Dahil ang backdoor ay natuklasan {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
at ang paglalathala ng pagsusuri nito ng ilang mananaliksik, naobserbahan namin ang ilang pagbabago sa data ng configuration ng malware.
Una, sinimulan ng mga may-akda na tanggalin ang mga pangalan mula sa mga helper DLL (DNSprov.dll
at dalawang bersyon HttpProv.dll
). Pagkatapos ay itinigil ng mga operator ang pag-package ng ikatlong DLL (ang pangalawang bersyon HttpProv.dll
), pinipiling mag-embed ng isa lang.
Pangalawa, maraming mga field ng configuration sa backdoor ang binago, malamang na umiwas sa pagtuklas dahil maraming IoC ang naging available. Ang mga mahahalagang field na binago ng mga may-akda ay kinabibilangan ng:
- Binago ang registry key ng AppX (tingnan ang mga IoC)
- mutex encoding string ("def", "abc", "ghi")
- numero ng port
Sa wakas, lahat ng bagong bersyon na nasuri ay may mga bagong C&C na nakalista sa seksyong IoCs.
Natuklasan
Ang OceanLotus ay patuloy na umuunlad. Nakatuon ang cyber group sa pagpino at pagpapalawak ng mga tool at decoy. Ang mga may-akda ay nagbabalatkayo ng mga malisyosong payload gamit ang mga dokumentong nakakaakit ng pansin na ang paksa ay nauugnay sa mga nilalayong biktima. Bumubuo sila ng mga bagong scheme at gumagamit din ng mga tool na magagamit sa publiko, tulad ng pagsasamantala ng Equation Editor. Bukod dito, pinapabuti nila ang mga tool upang bawasan ang bilang ng mga artifact na natitira sa mga makina ng mga biktima, sa gayon ay binabawasan ang pagkakataong matukoy ng antivirus software.
Mga tagapagpahiwatig ng kompromiso
Available ang mga indicator ng kompromiso gayundin ang mga katangian ng MITRE ATT&CK
Pinagmulan: www.habr.com