ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus

У пасце распавядзем, як кібергрупа OceanLotus (APT32 і APT-C-00) нядаўна выкарыстала адзін з агульнадаступных эксплойтаў да CVE-2017-11882, уразлівасці пашкоджанні памяці ў Microsoft Office, і як шкоднаснае ПА групы забяспечвае персістэнтнасць у скампраметаваных сістэмах, не пакідаючы слядоў. Далей апішам, як з пачатку 2019 года група выкарыстоўвала самараспакоўныя архівы для запуску кода.

OceanLotus спецыялізуецца на кібершпіянажы, прыярытэтныя мэты - краіны Паўднёва-Усходняй Азіі. Атакуючыя падрабляюць дакументы, якія прыцягваюць увагу патэнцыйных ахвяр, каб пераканаць тых выканаць бэкдор, а таксама працуюць над развіццём інструментара. Метады, выкарыстоўваныя для стварэння прынад, вар'іруюцца ў розных нападах - ад файлаў з "двайным пашырэннем", самораспаковывающихся архіваў, дакументаў з макрасамі да вядомых эксплойтаў.

ESET: новыя схемы дастаўкі бэкдора кібергрупы 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 (гл. малюнак ніжэй), утрымоўвае смеццевы код, а таксама скажоны.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 1. "Смецце" ў RTF

Нягледзячы на ​​наяўнасць скажоных элементаў, Word паспяхова адчыняе гэты RTF-файл. Як відаць з малюнка 2, тут структура EQNOLEFILEHDR са зрушэннем 0xC00, за якой ідзе загаловак MTEF, а затым запіс MTEF (малюнак 3) для шрыфта.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 2. Значэнні запісу FONT

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 3. Фармат запісу FONT

Магчыма перапаўненне ў поле імя, паколькі яго памер не правяраецца перад капіраваннем. Занадта доўгае імя запускае ўразлівасць. Як відаць з змесціва RTF-файла (зрушэнне 0xC26 на малюнку 2), буфер запаўняецца шелл-кодам, за якім варта фіктыўная каманда (0x90) і адрас вяртання 0x402114. Адрас з'яўляецца дыялогавым элементам у EQNEDT32.exe, які паказвае на інструкцыю RET. Гэта прыводзіць да таго, што EIP паказвае на пачатак поля імя, які змяшчае шэл-код.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 4. Пачатак шелл-кода эксплойту

Адрас 0x45BD3C захоўвае зменную, якая разназываецца, пакуль не дасягне паказальніка на бягучую загружаную структуру MTEFData. Тут знаходзіцца астатняя частка шел-кода.

Прызначэнне шелл-кода - выкананне другога фрагмента шелл-кода, убудаванага ў адкрыты дакумент. Спачатку зыходны шелл-код спрабуе знайсці дэскрыптар файла адчыненага дакумента, перабіраючы ўсе дэскрыптары сістэмы (NtQuerySystemInformation з аргументам SystemExtendedHandleInformation) і правяраючы, ці адпавядаюць PID дэскрыптара і PID працэсу WinWord і ці быў дакумент адкрыты з маскай доступу - 0x12019F.

Каб пацвердзіць выяўленне правільнага дэскрыптара (а не дэскрыптара іншага адчыненага дакумента), змесціва файла адлюстроўваецца з дапамогай функцыі CreateFileMapping, і шелл-код правярае, ці адпавядаюць апошнія чатыры байта дакументаyyyy»(метад Egg Hunting). Як толькі будзе выяўлена супадзенне, дакумент капіюецца ў часовую тэчку (GetTempPath) як ole.dll. Затым чытаюцца апошнія 12 байт дакумента.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 5. Маркеры канца дакумента

32-бітнае значэнне паміж маркерамі AABBCCDD и yyyy - гэта зрушэнне наступнага шелл-кода. Ён выклікаецца з дапамогай функцыі CreateThread. Выняты той жа шелл-код, што выкарыстоўваўся гуртом OceanLotus раней. Скрыпт эмуляцыі Python, Які мы выпусцілі ў сакавіку 2018 года, усё яшчэ працуе для дампа другога этапу.

Другі этап

Выманне кампанентаў

Імёны файлаў і каталогаў выбіраюцца дынамічна. Код выпадковым чынам выбірае імя выкананага ці DLL-файла ў C:Windowssystem32. Затым ён робіць запыт да сваіх рэсурсаў і здабывае поле FileDescription для выкарыстання ў якасці імя тэчкі. Калі гэта не працуе, код выпадковым чынам выбірае імя тэчкі з каталогаў. %ProgramFiles% або C:Windows (з GetWindowsDirectoryW). Ён пазбягае выкарыстання імя, якое можа канфліктаваць з існуючымі файламі, і сочыць за тым, каб яно не змяшчала наступныя словы: windows, Microsoft, desktop, system, system32 або syswow64. Калі каталог ужо існуе, да імя дадаецца "NLS_{6 сімвалаў}".

Рэсурс 0x102 аналізуецца і файлы скідаюцца ў %ProgramFiles% або %AppData%, у тэчку, абраную выпадковым чынам. Час стварэння зменена, каб мець тыя ж значэння, што і ў kernel32.dll.

Напрыклад, вось тэчка і спіс файлаў, створаных шляхам выбару выкананага файла C:Windowssystem32TCPSVCS.exe у якасці крыніцы дадзеных.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 6. Выманне розных кампанентаў

Структура рэсурса 0x102 у дроппер досыць складана. У двух словах, ён змяшчае:
- Імёны файлаў
- Памер і змест файлаў
- Фармат сціску (COMPRESSION_FORMAT_LZNT1, які выкарыстоўваецца функцыяй RtlDecompressBuffer)

Першы файл скідаецца як TCPSVCS.exe, які з'яўляецца легітымным AcroTranscoder.exe (згодна FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Магчыма, вы заўважылі, што памер некаторых DLL-файлаў перавышае 11 Мб. Гэта злучана з тым, што вялікі бесперапынны буфер выпадковых дадзеных размяшчаецца ўсярэдзіне выкананага файла. Не выключана, што гэта спосаб пазбегнуць выяўлення некаторымі прадуктамі для бяспекі.

Забеспячэнне персістэнтнасці

Рэсурс 0x101 у дроппере ўтрымоўвае два 32-бітных цэлых лікі, якія вызначаюць, якім чынам варта забяспечыць персістэнтнасць. Значэнне першага паказвае, як шкоднасная праграма будзе захоўваць персістэнтнасць без правоў адміністратара.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Табліца 1. Механізм персістэнтнасці без правоў адміністратара

Значэнне другога цэлага ліку паказвае, як шкоднасная праграма павінна забяспечыць персістэнтнасць, працуючы з правамі адміністратара.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Табліца 2. Механізм персістэнтнасці з правамі адміністратара

Імя службы - гэта імя файла без пашырэння; адлюстраванае імя – імя тэчкі, але калі яно ўжо існуе, да яго дадаецца радок “Revision 1” (колькасць павялічваецца да таго часу, пакуль не будзе знойдзена імя, якое не выкарыстоўваецца). Аператары паклапаціліся аб тым, каб персістэнтнасць праз службу была ўстойлівай - у выпадку збою служба павінна быць перазапушчана праз 1 секунду. Затым значэнню WOW64 новага ключа рэестра службы прысвойваецца значэнне 4, што паказвае на тое, што гэта 32-разрадная служба.

Запланаванае заданне ствараецца праз некалькі САМ інтэрфейсаў: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Па сутнасці, шкоднасная праграма стварае ўтоеную задачу, усталёўвае інфармацыю аб уліковым запісе разам з інфармацыяй аб бягучым карыстальніку або адміністратара і затым задае трыгер.

Гэта штодзённае заданне з працягласцю 24 гадзіны і інтэрваламі паміж двума выкананнямі ў 10 хвілін, што азначае, што яно будзе выконвацца ўвесь час.

Шкоднасны біт

У нашым прыкладзе выкананы файл TCPSVCS.exe (AcroTranscoder.exe) з'яўляецца легітымным ПЗ, якія загружаюць DLL, якія скідаюцца разам з ім. У гэтым выпадку цікавасць уяўляе Flash Video Extension.dll.

Яго функцыя DLLMain проста выклікае яшчэ адну функцыю. Прысутнічаюць некаторыя невыразныя прэдыкаты:

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 7. Невыразныя прэдыкаты

Пасля гэтых якія ўводзяць у памылку праверак код атрымлівае падзел .text файл TCPSVCS.exe, змяняе яго абарону на PAGE_EXECUTE_READWRITE і перазапісвае яго, дадаючы фіктыўныя інструкцыі:

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 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. Мы зноў паспяхова распакавалі яго карысную нагрузку, выкарыстоўваючы скрыпт эмулятара, які мы апублікавалі на GitHub.

Скрыпт здабывае фінальны этап. Гэты кампанент з'яўляецца бэкдорам, які мы ўжо прааналізавалі ў папярэднім даследаванні OceanLotus. Гэта можна вызначыць па GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} бінарнага файла. Канфігурацыя шкоднаснага ПЗ усё яшчэ зашыфравана ў РЭ рэсурсе. Ён мае прыкладна тую ж канфігурацыю, але C&C-серверы адрозніваюцца ад ранейшых:

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

Група OceanLotus зноў дэманструе спалучэнне розных тэхнік, каб пазбягаць выяўленні. Яны вярнуліся з "дапрацаванай" схемай працэсу заражэння. Выбіраючы выпадковыя імёны і запаўняючы выкананыя файлы выпадковымі дадзенымі, яны памяншаюць лік надзейных IoC (на аснове хэшаў і імёнаў файлаў). Больш таго, дзякуючы выкарыстанню іншай загрузкі DLL, атакавалым трэба толькі выдаліць законны бінарнік. AcroTranscoder.

Самараспакоўныя архівы

Пасля RTF-файлаў група перайшла на самараспакоўныя (SFX) архівы з распаўсюджанымі абразкамі дакументаў, каб яшчэ больш заблытаць карыстальніка. Аб гэтым пісалі Threatbook (спасылка на кітайскай). Пасля запуску скідаюцца самараспакоўныя RAR-файлы і выконваюцца DLL з пашырэннем .ocx, фінальная карысная нагрузка якіх раней была задакументавана {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. З сярэдзіны студзеня 2019 года OceanLotus паўторна выкарыстоўваюць гэтую тэхніку, але з часам мяняюць некаторыя канфігурацыі. У дадзеным раздзеле мы раскажам пра тэхніку і змены.

Стварэнне прынады

дакумент THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) упершыню знойдзены ў 2018 годзе. Гэты SFX файл створаны з розумам - у апісанні (Version Info) сказана, што гэта выява JPEG. Скрыпт SFX выглядае наступным чынам:

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 9. Каманды SFX

Шкоднасная праграма скідае {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), а таксама карцінку 2018 thich thong lac.jpg.

Выява-прынада выглядае наступным чынам:

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 10. Выява-прынада

Магчыма, вы заўважылі, што першыя два радкі ў скрыпце SFX двойчы выклікаюць ОСХ файл, але гэта не памылка.

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

Струмень кіравання ОСХ файла вельмі падобны на іншыя кампаненты OceanLotus – шмат паслядоўнасцяў каманд JZ/JNZ и PUSH/RET, якія чаргуюцца са смеццевым кодам.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 11. Абфуцаваны код

Пасля фільтрацыі смеццевага кода экспарт DllRegisterServer, выкліканы regsvr32.exe, Выглядае наступным чынам:

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 12. Асноўны код усталёўшчыка

Па сутнасці, пры першым выкліку DllRegisterServer экспарт устанаўлівае значэнне рэестра HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model для зашыфраванага афсета ў DLL (0x10001DE0).

Калі функцыя выклікаецца ў другі раз, яна чытае тое ж значэнне і выконваецца па гэтым адрасе. Адсюль чытаецца і выконваецца рэсурс і шмат дзеянняў у аператыўнай памяці.

Шэл-код - той жа загрузнік РЭ, які выкарыстоўваецца ў мінулых кампаніях OceanLotus. Яго можна эмуляваць з дапамогай нашага скрыпту. У выніку ён скідае db293b825dcc419ba7dc2c49fa2757ee.dll, загружае яго ў памяць і выконвае DllEntry.

DLL здабывае змесціва свайго рэсурсу, расшыфроўвае (AES-256-CBC) і распакоўвае (LZMA) яго. Рэсурс мае спецыфічны фармат, які лёгка дэкампіляваць.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 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.

Файл канфігурацыі бэкдора

Канфігурацыя бэкдора зашыфравана і ўбудавана ў яго рэсурсы. Структура файла канфігурацыі вельмі падобная да папярэдняй.

ESET: новыя схемы дастаўкі бэкдора кібергрупы OceanLotus
Малюнак 14. Структура канфігурацыі бэкдора (KaitaiStruct Visualizer)

Нягледзячы на ​​падобную структуру, значэнні шматлікіх палёў былі абноўлены ў параўнанні з дадзенымі, прыведзенымі ў нашай старой справаздачы.

Першы элемент бінарнага масіва змяшчае DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), ідэнтыфікаваную Tencent. Але паколькі імя экспарту было выдаленае з бінарнага файла, хешы не супадаюць.

Дадатковыя даследаванні

Збіраючы ўзоры, мы звярнулі ўвагу на некаторыя характарыстыкі. Толькі што апісаны ўзор з'явіўся прыкладна ў ліпені 2018 года, а іншыя падобныя да яго – зусім нядаўна, у сярэдзіне студзеня – пачатку лютага 2019 года. У якасці вектара заражэння выкарыстоўваўся архіў SFX, які скідае легітымны дакумент-прынаду і шкоднасны файл ОСХ.

Нягледзячы на ​​тое, што OceanLotus выкарыстоўваюць падробленыя часавыя пазнакі, мы заўважылі, што часавыя пазнакі файлаў SFX і OCX заўсёды аднолькавыя (0x57B0C36A (08/14/2016 @ 7:15pm UTC) і 0x498BE80F (02/06/2009 @ 7:34am UTC) адпаведна). Верагодна, гэта паказвае на тое, што ў аўтараў ёсць нейкі "канструктар", які выкарыстоўвае адны і тыя ж шаблоны і проста мяняе некаторыя характарыстыкі.

Сярод дакументаў, якія мы вывучылі з пачатку 2018 года, сустракаюцца розныя назвы, якія паказваюць на краіны, якія цікавяць атакуючых:

- The New Contact Information Of Cambodia Media(New).xls.exe
- 李建香 (个人简历).exe (fake pdf document of a CV)
– feedback, Rally in USA ад July 28-29, 2018.exe

З моманту выяўлення бэкдора {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll і публікацыі яго аналізу некалькімі даследнікамі мы назіралі некаторыя змены ў дадзеных канфігурацыі шкоднасных праграм.

Па-першае, аўтары пачалі выдаляць імёны з дапаможных DLL DLLs (DNSprov.dll і дзве версіі HttpProv.dll). Затым аператары спынілі пакаваць трэцюю DLL (другая версія HttpProv.dll), выбраўшы ўбудаванне толькі адной.

Па-другое, многія палі канфігурацыі бэкдора былі зменены, верагодна, каб пазбегнуць выяўлення, паколькі многія IoCs сталі даступныя. У ліку важных палёў, змененых аўтарамі, наступныя:

  • зменены раздзел рэестра AppX (гл. IoCs)
  • радок кадавання мьютэкса ("def", "abc", "ghi")
  • нумар порта

Нарэшце, ва ўсіх новых прааналізаваных версіях з'явіліся новыя C&C, пералічаныя ў падзеле IoCs.

Высновы

OceanLotus працягвае развівацца. Кібергрупа сфакусаваная на дапрацоўцы і пашырэнні інструментара і прынад. Аўтары маскіруюць шкоднасныя карысныя нагрузкі з дапамогай якія прывабліваюць увагу дакументаў, тэма якіх актуальная для меркаваных ахвяр. Яны распрацоўваюць новыя схемы, а таксама выкарыстоўваюць агульнадаступныя прылады, напрыклад, эксплойт Equation Editor. Больш таго, яны ўдасканальваюць прылады, каб паменшыць колькасць артэфактаў, якія застаюцца на машынах ахвяр, тым самым змяншаючы шанец на выяўленне антывірусным ПА.

індыкатары кампраметацыі

Індыкатары кампраметацыі, а таксама атрыбуты MITRE ATT&CK даступныя на Welivesecurity и на GitHub.

Крыніца: habr.com

Дадаць каментар