Бұл постта біз OceanLotus (APT32 және APT-C-00) кибер тобы жақында жалпыға қолжетімді эксплуатациялардың бірін қалай пайдаланғанын айтамыз.
OceanLotus кибер тыңшылыққа маманданған, оның басымдықтары Оңтүстік-Шығыс Азия елдері. Шабуыл жасаушылар әлеуетті құрбандардың назарын аударатын, оларды бэкдорды орындауға сендіру үшін жалған құжаттарды жасайды, сонымен қатар құралдарды әзірлеуде жұмыс істейді. Бал балшықтарын жасау үшін қолданылатын әдістер «қос кеңейтілген» файлдардан, өздігінен ашылатын мұрағаттардан, макростары бар құжаттардан белгілі эксплуаттарға дейін әртүрлі шабуылдарға байланысты.
Microsoft Equation Editor қолданбасында эксплуатацияны пайдалану
2018 жылдың ортасында OceanLotus CVE-2017-11882 осалдығын пайдаланатын науқан жүргізді. Кибертоптың зиянды құжаттарының бірін 360 Threat Intelligence Center мамандары талдаған (
бірінші кезең
Құжат FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) жоғарыдағы зерттеуде айтылғанға ұқсас. Бұл қызықты, себебі ол Камбоджа саясатына қызығушылық танытқан пайдаланушыларға бағытталған (CNRP - Камбоджа Ұлттық Құтқару партиясы, 2017 жылдың соңында таратылған). .doc кеңейтіміне қарамастан, құжат RTF пішімінде (төмендегі суретті қараңыз), қоқыс коды бар және сонымен бірге бұрмаланған.
Сурет 1. РТФ-дағы «Қоқыс».
Бұзылған элементтер болса да, Word бұл RTF файлын сәтті ашады. 2-суретте көріп отырғаныңыздай, 0xC00 офсетінде EQNOLEFILEHDR құрылымы бар, одан кейін MTEF тақырыбы, содан кейін қаріп үшін MTEF жазбасы (3-сурет).
2-сурет. FONT енгізу мәндері
Сурет 3.
Егістікте толып кетуі мүмкін ат, себебі оның өлшемі көшіру алдында тексерілмейді. Тым ұзын атау осалдықты тудырады. RTF файлының мазмұнынан көріп отырғаныңыздай (0-суретте 26xC2 офсет), буфер қабықша кодымен толтырылған, содан кейін жалған пәрмен (0x90
) және қайтару мекенжайы 0x402114
. Мекенжай диалогтық элемент болып табылады EQNEDT32.exe
, нұсқауларды көрсетеді RET
. Бұл EIP өрістің басына нұсқайды атқабық кодын қамтиды.
Сурет 4. Эксплуатациялық қабық кодының басталуы
Мекен-жай 0x45BD3C
ағымдағы жүктелген құрылымға көрсеткішке жеткенше сілтемесі жойылған айнымалы мәнді сақтайды MTEFData
. Shell-кодтың қалған бөлігі осында.
Shellcode мақсаты ашық құжатқа енгізілген қабық кодының екінші бөлігін орындау болып табылады. Түпнұсқа қабық коды алдымен барлық жүйе дескрипторларын қайталау арқылы ашық құжаттың файл дескрипторын табуға тырысады (NtQuerySystemInformation
дәлелмен SystemExtendedHandleInformation
) және олардың сәйкестігін тексеру PID дескриптор және PID процесс WinWord
және құжат кіру маскасымен ашылды ма - 0x12019F
.
Дұрыс дескриптор (басқа ашық құжаттың дескрипті емес) табылғанын растау үшін файлдың мазмұны функция арқылы көрсетіледі. CreateFileMapping
, және қабық коды құжаттың соңғы төрт байтының сәйкестігін тексереді "yyyy
«(Жұмыртқа аулау әдісі). Сәйкестік табылғаннан кейін құжат уақытша қалтаға көшіріледі (GetTempPath
) Қалай ole.dll
. Содан кейін құжаттың соңғы 12 байты оқылады.
Сурет 5. Құжат маркерлерінің соңы
Маркерлер арасындағы 32 биттік мән AABBCCDD
и yyyy
келесі қабық кодының ығысуы болып табылады. Функцияның көмегімен деп аталады CreateThread
. Бұрын OceanLotus тобы пайдаланған қабық коды шығарылды.
Екінші кезең
Құрамдастарды жою
Файл және каталог атаулары динамикалық түрде таңдалады. Код орындалатын файлдың немесе DLL файлының атын кездейсоқ таңдайды C:Windowssystem32
. Содан кейін ол өз ресурстарына сұрау жасайды және өрісті шығарады FileDescription
қалта атауы ретінде пайдалану үшін. Бұл жұмыс істемесе, код каталогтардан қалта атауын кездейсоқ таңдайды %ProgramFiles%
немесе C:Windows
(GetWindowsDirectoryW сайтынан). Ол бар файлдармен қайшы келуі мүмкін атауды пайдаланбайды және оның құрамында келесі сөздер жоқ екеніне кепілдік береді: windows
, Microsoft
, desktop
, system
, system32
немесе syswow64
. Каталог бұрыннан бар болса, атқа "NLS_{6 таңба}" қосылады.
ресурс 0x102
талданады және файлдарға тасталады %ProgramFiles%
немесе %AppData%
, кездейсоқ таңдалған қалтаға. Мәндері бірдей болу үшін жасау уақыты өзгертілді kernel32.dll
.
Мысалы, мұнда орындалатын файлды таңдау арқылы жасалған қалта мен файлдар тізімі берілген C:Windowssystem32TCPSVCS.exe
деректер көзі ретінде.
Сурет 6. Әртүрлі компоненттерді алу
Ресурс құрылымы 0x102
тамызғышта өте күрделі. Бір сөзбен айтқанда, оның құрамында:
— Файл атаулары
— Файл өлшемі мен мазмұны
— қысу пішімі (COMPRESSION_FORMAT_LZNT1
, функциясы арқылы пайдаланылады RtlDecompressBuffer
)
Бірінші файл қалпына келтірілді TCPSVCS.exe
, бұл заңды AcroTranscoder.exe
(сәйкес) FileDescription
, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
Кейбір DLL файлдарының көлемі 11 МБ-тан асатынын байқаған боларсыз. Себебі орындалатын файлдың ішінде кездейсоқ деректердің үлкен іргелес буфері орналастырылады. Бұл кейбір қауіпсіздік өнімдерімен анықталмаудың жолы болуы мүмкін.
Табандылықты қамтамасыз ету
ресурс 0x101
тамызғышта табандылықты қалай қамтамасыз ету керектігін көрсететін екі 32 биттік бүтін сандар бар. Біріншісінің мәні зиянды бағдарламаның әкімші құқықтарынсыз қалай сақталатынын көрсетеді.
Кесте 1. Әкімші құқықтарынсыз тұрақтылық механизмі
Екінші бүтін санның мәні зиянды бағдарлама әкімші құқықтарымен іске қосылған кезде тұрақтылыққа қалай жету керектігін көрсетеді.
Кесте 2. Әкімші құқықтары бар тұрақтылық механизмі
Қызмет атауы кеңейтімі жоқ файл атауы болып табылады; көрсетілетін атау қалтаның атауы, бірақ ол бұрыннан бар болса, жол «Revision 1
” (пайдаланылмаған атау табылғанша сан артады). Операторлар қызмет арқылы табандылықтың сенімді екеніне көз жеткізді - сәтсіздікке ұшыраған жағдайда, қызметті 1 секундтан кейін қайта қосу керек. Содан кейін мән WOW64
Жаңа қызметтің тізілім кілті 4-ке орнатылған, бұл оның 32-биттік қызмет екенін көрсетеді.
Жоспарланған тапсырма бірнеше COM интерфейстері арқылы жасалады: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. Негізінде, зиянды бағдарлама жасырын тапсырма жасайды, ағымдағы пайдаланушы немесе әкімші ақпаратымен бірге тіркелгі ақпаратын орнатады, содан кейін триггерді орнатады.
Бұл ұзақтығы 24 сағат және екі орындалу арасындағы аралық 10 минуттық күнделікті тапсырма, яғни ол үздіксіз орындалады.
Зиянды бит
Біздің мысалда орындалатын файл TCPSVCS.exe
(AcroTranscoder.exe
) - онымен бірге қалпына келтірілетін DLL файлдарын жүктейтін заңды бағдарламалық құрал. Бұл жағдайда ол қызығушылық тудырады Flash Video Extension.dll
.
Оның қызметі DLLMain
басқа функцияны шақырады. Кейбір анық емес предикаттар бар:
Сурет 7. Анық емес предикаттар
Бұл жаңылыстыратын тексерулерден кейін код бөлімді алады .text
файл TCPSVCS.exe
, қорғанысын өзгертеді PAGE_EXECUTE_READWRITE
және жалған нұсқауларды қосу арқылы оны қайта жазады:
Сурет 8. Нұсқаулар тізбегі
Функция мекенжайының соңында FLVCore::Uninitialize(void)
, экспортталады Flash Video Extension.dll
, нұсқау қосылады CALL
. Бұл зиянды DLL жүктелгеннен кейін орындалу уақыты шақырылғанда дегенді білдіреді WinMain
в TCPSVCS.exe
, нұсқау көрсеткіші NOP белгісін көрсетеді, себебі FLVCore::Uninitialize(void)
, келесі кезең.
Функция жай ғана бастап мутекс жасайды {181C8480-A975-411C-AB0A-630DB8B0A221}
содан кейін ағымдағы пайдаланушы аты. Содан кейін ол позициядан тәуелсіз кодты қамтитын демпингтік *.db3 файлын оқиды және пайдаланады CreateThread
мазмұнды орындау үшін.
*.db3 файлының мазмұны OceanLotus тобы әдетте пайдаланатын қабық коды болып табылады. Біз жариялаған эмулятор сценарийін пайдаланып, оның пайдалы жүктемесін қайтадан сәтті шығардық
Сценарий соңғы кезеңді шығарады. Бұл компонент біз талдап қойған бэкдор {A96B020F-0000-466F-A96D-A91BBF8EAC96}
екілік файл. Зиянды бағдарлама конфигурациясы әлі де PE ресурсында шифрланған. Оның конфигурациясы шамамен бірдей, бірақ C&C серверлері алдыңғыларынан ерекшеленеді:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
OceanLotus командасы анықтауды болдырмау үшін тағы да түрлі әдістердің комбинациясын көрсетеді. Олар инфекция процесінің «тазаланған» диаграммасымен оралды. Кездейсоқ атауларды таңдау және орындалатын файлдарды кездейсоқ деректермен толтыру арқылы олар сенімді IoC санын азайтады (хэштер мен файл атауларына негізделген). Сонымен қатар, үшінші тараптың DLL жүктеуін пайдаланудың арқасында шабуылдаушылар тек заңды екілік файлды жоюы керек. AcroTranscoder
.
Өздігінен ашылатын мұрағаттар
RTF файлдарынан кейін топ пайдаланушыны одан әрі шатастыру үшін жалпы құжат белгішелері бар өздігінен ашылатын (SFX) мұрағаттарға көшті. Бұл туралы Threbook жазды ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. 2019 жылдың қаңтар айының ортасынан бастап OceanLotus бұл әдісті қайта пайдалануда, бірақ уақыт өте келе кейбір конфигурацияларды өзгертеді. Бұл бөлімде біз техника мен өзгерістер туралы айтатын боламыз.
Арба құру
Құжат THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) алғаш рет 2018 жылы табылды. Бұл SFX файлы ақылмен жасалған - сипаттамада (Нұсқа туралы ақпарат) бұл JPEG кескіні екенін айтады. SFX сценарийі келесідей көрінеді:
Сурет 9. SFX пәрмендері
Зиянды бағдарлама қалпына келтіріледі {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
), сонымен қатар сурет 2018 thich thong lac.jpg.
Бұзылған кескін келесідей көрінеді:
10-сурет. Жалған сурет
SFX сценарийіндегі алғашқы екі жол OCX файлын екі рет шақыратынын байқаған боларсыз, бірақ бұл қате емес.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
OCX файлының басқару ағыны басқа OceanLotus құрамдастарына өте ұқсас - көптеген пәрмен тізбегі JZ/JNZ
и PUSH/RET
, қоқыс кодымен кезектесіп.
Сурет 11. Түсініксіз код
Қалаусыз кодты сүзгеннен кейін экспорттаңыз DllRegisterServer
, деп аталады regsvr32.exe
, келесідей көрінеді:
Сурет 12. Орнатушының негізгі коды
Негізінде бірінші қоңырауда DllRegisterServer
экспорт тізілім мәнін орнатады HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
DLL ішінде шифрланған офсет үшін (0x10001DE0
).
Функция екінші рет шақырылғанда, ол бірдей мәнді оқып, сол мекенжайда орындалады. Осыдан жедел жадтағы ресурс және көптеген әрекеттер оқылады және орындалады.
Shellcode бұрынғы OceanLotus науқандарында пайдаланылған PE жүктеушісі болып табылады. Оны пайдалану арқылы эмуляциялауға болады db293b825dcc419ba7dc2c49fa2757ee.dll
, оны жадқа жүктейді және орындайды DllEntry
.
DLL өз ресурсының мазмұнын шығарады, шифрын ашады (AES-256-CBC) және оны ашады (LZMA). Ресурста декомпиляцияға оңай арнайы пішім бар.
Сурет 13. Орнатушы конфигурация құрылымы (KaitaiStruct Visualizer)
Конфигурация анық көрсетілген - артықшылық деңгейіне байланысты екілік деректер жазылады %appdata%IntellogsBackgroundUploadTask.cpl
немесе %windir%System32BackgroundUploadTask.cpl
(немесе SysWOW64
64 биттік жүйелер үшін).
Әрі қарай табандылық атымен тапсырма жасау арқылы қамтамасыз етіледі BackgroundUploadTask[junk].job
қайда [junk]
байттар жиынын білдіреді 0x9D
и 0xA0
.
Тапсырма қолданбасының аты %windir%System32control.exe
, ал параметр мәні жүктеп алынған екілік файлдың жолы болып табылады. Жасырын тапсырма күн сайын орындалады.
Құрылымдық жағынан CPL файлы ішкі атауы бар DLL болып табылады ac8e06de0a6c4483af9837d96504127e.dll
, ол функцияны экспорттайды CPlApplet
. Бұл файл өзінің жалғыз ресурсын шешеді {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
, содан кейін осы DLL файлын жүктейді және оның жалғыз экспортын шақырады DllEntry
.
Backdoor конфигурация файлы
Бэкдор конфигурациясы шифрланған және оның ресурстарына енгізілген. Конфигурация файлының құрылымы алдыңғыға өте ұқсас.
Сурет 14. Backdoor конфигурация құрылымы (KaitaiStruct Visualizer)
Құрылым ұқсас болғанымен, көптеген өріс мәндері көрсетілгендерден жаңартылды
Екілік массивтің бірінші элементінде DLL бар (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
Қосымша зерттеулер
Үлгілерді жинау кезінде біз кейбір ерекшеліктерді байқадық. Жаңа ғана сипатталған үлгі 2018 жылдың шілдесінде пайда болды, ал басқалары 2019 жылдың қаңтар айының ортасынан ақпан айының басында пайда болды. SFX мұрағаты заңды алдау құжатын және зиянды OSX файлын тастап, инфекция векторы ретінде пайдаланылды.
OceanLotus жалған уақыт белгілерін пайдаланса да, SFX және OCX файлдарының уақыт белгілері әрқашан бірдей екенін байқадық (0x57B0C36A
(08 @ 14:2016 UTC) және 0x498BE80F
(02/06/2009 @ 7:34 UTC) тиісінше). Бұл авторларда бірдей үлгілерді қолданатын және кейбір сипаттамаларды жай ғана өзгертетін қандай да бір «дизайнер» бар екенін көрсетсе керек.
2018 жылдың басынан бері біз зерттеген құжаттардың арасында шабуылдаушыларды қызықтыратын елдерді көрсететін әртүрлі атаулар бар:
— Камбоджа медиасының жаңа байланыс ақпараты(New).xls.exe
— 李建香 (个人简历).exe (резюменің жалған pdf құжаты)
— кері байланыс, АҚШ-тағы ралли 28-29 шілде 2018.exe
Артқы есік ашылғаннан бері {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
және оның талдауын бірнеше зерттеушілер жариялағанда, біз зиянды бағдарлама конфигурациясының деректерінде кейбір өзгерістерді байқадық.
Біріншіден, авторлар көмекші DLL файлдарынан атауларды жоюды бастады (DNSprov.dll
және екі нұсқасы HttpProv.dll
). Содан кейін операторлар үшінші DLL (екінші нұсқасы HttpProv.dll
), тек біреуін ендіруді таңдау.
Екіншіден, көптеген IoC қол жетімді болған сайын анықтаудан жалтаратын көптеген бэкдор конфигурация өрістері өзгертілді. Авторлар өзгерткен маңызды өрістерге мыналар жатады:
- AppX тіркеу кілті өзгертілді (IoC қараңыз)
- мутекстік кодтау жолы («def», «abc», «ghi»)
- порт нөмірі
Соңында, талданған барлық жаңа нұсқаларда IoC бөлімінде тізімделген жаңа C&C бар.
қорытындылар
OceanLotus дамуын жалғастыруда. Кибертоп құралдар мен айла-амалдарды жетілдіруге және кеңейтуге бағытталған. Авторлар тақырыбы болжанған құрбандарға қатысы бар назар аударатын құжаттарды пайдалана отырып, зиянды жүктерді жасырады. Олар жаңа схемаларды әзірлейді, сондай-ақ Equation Editor эксплуатациясы сияқты жалпыға қолжетімді құралдарды пайдаланады. Сонымен қатар, олар құрбандардың машиналарында қалған артефакттардың санын азайту үшін құралдарды жетілдіреді, осылайша антивирустық бағдарламалық құрал арқылы анықтау мүмкіндігін азайтады.
Келісім көрсеткіштері
Ымыра көрсеткіштері, сондай-ақ MITER ATT&CK атрибуттары қол жетімді
Ақпарат көзі: www.habr.com