Як зловмисники використовують підміну порядку пошуку DLL для прихованого запуску шкідливого коду

01.11.2025 2 хвилин Автор: Cyber Witcher

Кіберзлочинці дедалі активніше обходять захисні системи, використовуючи підміну порядку пошуку DLL — техніку, завдяки якій шкідливий код запускається під виглядом легітимних програм. У статті пояснюється, як працює цей метод, чому він особливо небезпечний для телеком- та промислового секторів, і чим відрізняються сучасні варіанти бекдорів PlugX, RainyDay і Turian. Ви побачите детальний розбір ланцюга атаки, способів обходу контролю безпеки та прихованого завантаження пейлоадів, а також типові ознаки компрометації, за якими можна виявити вторгнення на ранніх етапах.

Огляд

Виявлено триваючу кампанію, спрямовану на телекомунікаційний та виробничий сектори країн Центральної та Південної Азії. На основі аналізу зібраних доказів з середньою впевненістю оцінюється, що кампанію можна віднести до Naikon — активного китайськомовного кіберзлочинця, який діє з 2010 року. Така оцінка ґрунтується на форматі конфігурації PlugX, що використовувався під час кампанії, а також на ланцюжку зараження шкідливим ПЗ, що дуже схожий на попередні зразки RainyDay.

Під час розслідування виявлено два важливих факти. По-перше, кілька екземплярів бекдора Turian та нещодавно ідентифіковані варіанти PlugX зловживали тим самим легітимним мобільним спливаючим додатком, як і RainyDay, для завантаження себе в пам’ять. По-друге, у трьох сімействах шкідливих програм зафіксовано використання завантажувачів із подібною функцією розшифрування XOR та застосуванням однакового RC4-ключа для розшифрування зашифрованого корисного навантаження. Хоча активності, пов’язаної з RainyDay або Turian у межах цієї кампанії, не зафіксовано, наведені спостереження дозволяють робити обґрунтовані висновки щодо атрибуції.

Атрибуція

Найкон

Naikon — відома китайськомовна група кібершпигунів , яка діє щонайменше з 2010 року. Ця група загроз в основному націлена на урядові, військові та цивільні організації по всій Південно-Східній Азії. 

Naikon використовує різноманітні бекдори, включаючи Aira-bodyNebulae та RainyDay, а також численні спеціалізовані інструменти злому для підтримки збереження даних та вилучення їх із мережевого середовища жертв. Зокрема, Symantec повідомила, що група використовувала бекдор RainyDay для атаки на телекомунікаційних операторів у кількох азійських країнах у рамках тривалої шпигунської кампанії, яку вони простежили до 2020 року.

BackdoorDiplomacy

BackdoorDiplomacy – це група зловмисників, яка діє щонайменше з 2017 року. Її основна мета – міністерства закордонних справ та телекомунікаційні компанії по всій Африці, Європі, Близькому Сході та Азії.

Їхнім основним інструментом є Turian, який вважається оновленою версією Quarian. ESET помітила схожість у методах шифрування мережі Turian та бекдора, відомого як Backdoor.Whitebird.1. Bitdefender припустив, що Quarian, Turian та Whitebird можуть бути різними версіями одного й того ж бекдора. Bitdefender також опублікував блог про атаки на телекомунікаційні компанії на Близькому Сході, які розпочалися в лютому 2022 року.

Порівняння Naikon та BackdoorDiplomacy, використовуючи модель діамантів, зображену на малюнку 1.

Малюнок 1. Порівняння між Naikon та BackdoorDiplomacy за допомогою моделі діамантів.

Відносини в останніх кампаніях

Під час аналізу механізму зловживання порядком пошуку DLL, застосованого в цій кампанії, встановлено, що RainyDay, Turian та варіант PlugX використовували одне й те саме легітимне програмне забезпечення для запуску шкідливих завантажувачів. Попри те, що ці сімейства асоціюють із різними угрупованнями (Naikon та BackdoorDiplomacy), виявлено ознаки можливого взаємозв’язку між ними.

По-перше, помітна схожість у виборі цілей: обидві групи стабільно атакують телекомунікаційний сектор у країнах Центральної та Південної Азії. В одному з інцидентів Naikon націлилась на телеком-оператора в Казахстані — країні, що межує з Узбекистаном, який раніше фігурував серед жертв BackdoorDiplomacy. Історичні дані також підтверджують активність обох груп у державах Південної Азії.

Крім того, завантажувачі та структура shell-коду, що застосовуються цими акторами, демонструють суттєву подібність. Фіксується використання однакових RC4-ключів та схеми XOR → RC4 → RtlDecompressBuffer для розшифрування payload у RainyDay (Naikon), PlugX (Naikon) та Turian (BackdoorDiplomacy). Ці технічні збіги детальніше розглядаються в наступному розділі.  Було створено часову шкалу активності вторгнень, пов’язаної з цими трьома сімействами шкідливих програм (Малюнок 2), аналізуючи дані з:

  • Кампанії, які ми спостерігали

  • Звіти третіх сторін

  • Мітки часу компіляції шкідливого програмного забезпечення

  • Мітки часу, присутні в журналах натискань клавіш, що генеруються під час заражень

Малюнок 2. Хронологія RainyDay, нового варіанту PlugX та бекдору Turian.

Хоча ми не можемо зробити висновок про наявність чіткого зв’язку між Naikon та BackdoorDiplomacy, існують значні аспекти, що перетинаються, такі як вибір цілей, методи корисного навантаження шифрування/дешифрування, повторне використання ключів шифрування та використання інструментів, що підтримуються одним постачальником. Ці подібності свідчать про зв’язок із середньою достовірністю з китайськомовним учасником цієї кампанії.

Послідовність дій з атаки шкідливого програмного забезпечення

RainyDay, Turian та новий варіант PlugX, виявлений у цій кампанії, виконуються через перехоплення порядку пошуку DLL.

Хоча між цими трьома шкідливими програмами існують відмінності, поведінка самих завантажувачів схожа. Завантажувачі для RainyDay, PlugX та Turian, які завантажуються шляхом зловживання легітимними виконуваними файлами, зчитують зашифровані файли шелл-коду, розташовані в тому ж каталозі, що й виконувані файли, та розшифровують дані для запуску відповідного шкідливого програмного забезпечення. Розшифровані корисні навантаження RainyDay та PlugX розпаковуються в пам’ять та вводять код у викликаючий процес для виконання шкідливого програмного забезпечення. Turian вводить код у новий легітимний процес (wabmig.exe або explorer.exe) для виконання шкідливого програмного забезпечення. Після виконання він завантажує дані конфігурації, які визначають місце призначення команд та контролю (C2), та INI-файл, що містить розділ «AntiVir».

Малюнок 3. Потік шкідливого програмного забезпечення RainyDay.
Малюнок 4. Потік шкідливого програмного забезпечення нового варіанту PlugX.
Малюнок 5. Потік шкідливого програмного забезпечення Turian.

RainyDay, новий варіант PlugX та завантажувачі Turian

Ці три завантажувачі призначені для зчитування, розшифрування та виконання зашифрованого шелл-коду відповідного шкідливого програмного забезпечення з початкового каталогу.

Давайте розглянемо процедури розшифрування для завантажувачів RainyDay, PlugX та Turian. Ці три завантажувачі мають значну кількість спільного коду. По-перше, вони використовують API GetModuleFileNameA для отримання повного шляху до виконуваного файлу. Потім вони зчитують дані з початкового каталогу, використовуючи жорстко закодовані імена файлів у шкідливому програмному забезпеченні.

Початковий завантажувач RainyDay, який спостерігався у 2016 році, не шифрував дані. Однак у наступних зразках шкідливого програмного забезпечення кожен завантажувач містить процедуру розшифрування. Як показано на малюнках 6–8, завантажувач RainyDay розшифровує дані з «rdmin.src», завантажувач PlugX — з «Mcsitesdvisor.afx», а завантажувач Turian — з «winslivation.dat», кожен з яких використовує шифрування XOR. Розшифрований шелл-код потім розпаковується в пам’яті та виконується за допомогою інструкцій CALL або JMP.

Малюнок 6. Завантажувач RainyDay.
Малюнок 7. Завантажувач PlugX.
Малюнок 8. Навантажувач Turian.

Формат шелл-коду, який розшифровує кожен із трьох завантажувачів шкідливого програмного забезпечення, однаковий. Він містить дані, зашифровані та стиснуті за допомогою RC4 та LZNT1 відповідно. Потім ці дані розпаковуються та розшифровуються, що зрештою забезпечує код для виконання в пам’яті.

Після переходу за допомогою інструкції CALL або JMP, код, подібний до показаного на малюнку нижче, виконується повторно. У деяких випадках може бути реалізовано вирівнювання потоку керування (CFF).

Малюнок 9. Фрагмент коду, який використовуються RainyDay та Turian для реалізації CFF.

Як показано на зображенні, для розв’язання API Windows використовується адитивна хеш-функція API на основі ROL25. Потім код розшифровується за допомогою RC4, як показано на ілюстрації нижче.

Після розшифрування код стискається за допомогою LZNT1 та викликається API RtlDecompressBuffer для розпакування та розгортання RainyDay, PlugX або Turian.

Малюнок 10. Адитивна хеш-функція API на основі ROL25.
Малюнок 11. Розшифрування RC4 та код декомпресії LZNT1.

У DLL-файлі, розпакованому LZNT1, як показано на малюнку 12 нижче, видалено байти заголовка файлу. У цьому прикладі значення e_lfanew (яке вказує на розташування заголовка PE) встановлено на аномально велике значення 0x01240120, що чітко показує, що було вставлено недійсне значення.

Малюнок 12. Частина DLL-файлу, розпакованого за допомогою LZNT1.

Ключ RC4, що використовується для розшифрування шкідливого програмного забезпечення

На малюнку 13 нижче показано ключі RC4, що використовуються кожним із трьох різних сімейств шкідливих програм, та відповідні їм зразки. RainyDay використовує «8f-2;g=3/c?1wf+c92rv.a» як свій ключ RC4. Цей самий ключ також використовується в PlugX та Turian. У ранніх версіях RainyDay цей рядок використовувався для шифрування зв’язку, а не самого шкідливого програмного забезпечення. Інший ключ RC4, зазначений у RainyDay, «jfntv`1-m0vt801tyvqaf_)U89chasv», також використовується в PlugX. Можемо зробити висновок, що ті самі ключі RC4 спільні для RainyDay, PlugX та Turian. Також можемо зробити висновок, що зловмисники одночасно працюють з кількома сімействами шкідливих програм, і що використання спільних ключів RC4 кількома сімействами шкідливих програм свідчить про те, що ці дії здійснюються одними й тими ж або пов’язаними групами зловмисників.

Малюнок 13. Ключ RC4 за сімейством шкідливих програм.

Шляхи PDB, включені до завантажувача

У зразках завантажувача знайдено кілька шляхів PDB, які пояснюють роль DLL-файлів завантажувача.

Туріанський навантажувач:

C:\vc_code\No.3\3-2hao\3-2hao-211221\dlltoshellcode_and_shellcodeloader_211221\Resources\pc2msupp.pdb
C:\vc_code\code_test\26.icmpsh-master(tigong wangzhiban)\shellcodeloader_vs2008\Release\shellcodeloader_vs2008.pdb

Можливий завантажувач PlugX:

C:\Users\admin\Desktop\Desktop_bak\success_bai\MicrosoftEdgeUpdate.exe\shellcode_xor\dll-MicrosoftEdgeUpdate\Release\2-dll-MicrosoftEdgeUpdate.pdb

Глибший аналіз рядків PDB виявляє кілька ключових моментів. По-перше, всі завантажувачі містять структури шелл-коду, які є узгодженими для обох бекдорів, які витягуються та вводяться в пам’ять. По-друге, шлях PDB завантажувача Turian (також згаданий Bitdefender), “No.3\3-2hao\3-2hao-211221”, схоже, посилається на назви проектів, версії та позначку часу, де “211221”, можливо, представляє дату 21 грудня 2021 року.

Крім того, інший шлях PDB завантажувача Turian містить “icmpsh-master“, що, ймовірно, стосується ICMP Shell (icmpsh), відомого інструменту або методу шкідливого програмного забезпечення, що використовується для прихованого зв’язку C2. У рядку PDB фраза “(tigong wangzhiban)” у дужках перекладається з китайської як “надавати веб-версію” (提供网页版), що свідчить про те, що ця версія icmpsh могла бути модифікована для веб-використання, можливо, для взаємодії з віддаленим сервером або веб-інфраструктурою C2.

Зрештою, шлях PDB завантажувача RainyDay вказує на проект, що включає DLL-бібліотеку, пов’язану з “MicrosoftEdgeUpdate”. Ця DLL-бібліотека може бути шкідливою та призначеною для впровадження в легітимний процес MicrosoftEdgeUpdate.exe.

Малюнок 14. Завантажувач для кожного сімейства шкідливих програм, що містить PDB.

RainyDay та новий варіант PlugX з того ж ланцюга інфекції

У цьому розділі розглядається історія та технічні деталі бекдора RainyDay. Це шкідливе програмне забезпечення було вперше виявлено у 2021 році компанією Bitdefender, і Kaspersky може відстежувати його як FoundCore, виходячи з поведінки, яку вони описують у своєму аналізі. Поєднуючи дані з обох дослідницьких звітів, ми можемо окреслити ключові характеристики та поведінку бекдора RainyDay:

  • Він використовує легітимне завантаження DLL для запуску шкідливого програмного забезпечення.

  • Корисне навантаження містить шеллкод, який відповідає за вилучення кінцевого корисного навантаження.

  • Корисне навантаження шифрується за допомогою XOR-RC4-RtlDecompressBuffer, а його конфігурація шифрується за допомогою простого однобайтового ключа XOR.

  • Найголовніше, що конфігурація містить критично важливі деталі, такі як адреса сервера C2, ім’я папки, опис служби, м’ютекс, шлях до ключа реєстру та інша інформація.

З наведеної вище інформації вдалося знайти кілька завантажувачів та корисних навантажень бекдорів RainyDay у різних репозиторіях шкідливого програмного забезпечення. Хоча всі зразки відповідали сигнатурам бекдорів RainyDay, було виявлено, що остаточні бекдори насправді належать до двох різних сімейств шкідливих програм: раніше повідомленого бекдору RainyDay та нового варіанту сумнозвісного китайського трояна віддаленого доступу (RAT) PlugX. На малюнках 15–17 показано різні сімейства шкідливих програм, які містять один і той самий код, відповідальний за розшифрування конфігурації.

Малюнок 15. Код розшифрування конфігурації RainyDay, ідентифікований Bitdefender.
Малюнок 16. Найстаріший код розшифрування конфігурації RainyDay.
Малюнок 17. Код розшифрування конфігурації варіанта PlugX.

Старіша версія бекдору RainyDay

Після детального аналізу, було виявлено старіший варіант бекдора RainyDay. Структура коду тісно пов’язана з новішими варіантами, описаними в публікаціях інших постачальників кібербезпеки . Цей старіший варіант використовує ту саму логіку коду для визначення версії Windows та архітектури процесора цільової машини. Примітно, що журнали налагодження демонструють значну схожість між варіантами. Як показано на малюнку 18, очевидно, що зловмисник не лише покращив функціональність бекдора RainyDay, але й удосконалив вивід журналу налагодження. Це покращення, ймовірно, сприяє ефективнішому налагодженню окремих функцій розробниками шкідливого програмного забезпечення. Однак цей старіший варіант точно відображає те, що було детально описано в попередніх звітах Bitdefender , основними відмінностями є відсутність можливостей зв’язку C2 HTTP та функцій маніпулювання файлами.

Малюнок 18. Ліворуч: RainyDay, описаний Bitdefender. Праворуч: Старіший варіант RainyDay.

Виявивлено два додаткові переконливі докази, що підтверджують висновок про те, що це рання версія бекдора RainyDay. По-перше, завантажувач цього варіанту був скомпільований 27 лютого 2018 року о 12:32:40 UTC, що робить його найстарішим ідентифікованим зразком на сьогодні. По-друге, файл конфігурації містить позначку часу, що датується 28 грудня 2016 року. На основі цієї інформації з високою впевненістю можна оцінити, що бекдор RainyDay, ймовірно, працює щонайменше з 2016 року.

Малюнок 19. Стара версія конфігурації RainyDay.

Також було знайдено шлях до рядка PDB, вбудований у шкідливе програмне забезпечення, який розкриває оригінальну назву файлу бекдора.

C:\Users\Qs\Desktop\Workspace\1qaz\bin\core.pdb

Назви файлів однакові; отже, це відкриття ще більше підтверджує зв’язок між цим старішим варіантом бекдора RainyDay та версією FoundCore 2021 року .

Бекдор варіанту PlugX

Іншим останнім корисним навантаженням, є налаштований варіант бекдора PlugX, який, на нашу думку, став основним бекдором, що використовується зловмисником у останніх кампаніях. Хоча цей варіант PlugX не є особливо новим, а його функції плагіна були задокументовані в попередніх звітах, він виділяється з однієї ключової причини: його конфігурація суттєво відрізняється від раніше ідентифікованої конфігурації PlugX. Натомість він використовує ту саму структуру конфігурації, що й бекдор RainyDay. Ця аномалія переконливо свідчить про те, що зловмисники, ймовірно, мають доступ до оригінального вихідного коду PlugX, що дозволяє їм модифікувати його таким чином. Однак, все ж необхідно пам’ятати, що зловмисник може додатково виправити частину конфігурації бекдора PlugX, щоб вона відповідала його бажаній структурі конфігурації.

Малюнок 20. Конфігурація PlugX.

Є висока впевненість у тому, що варіант PlugX, який спостерігався в цій кампанії, є кастомізованою версією BackDoor.PlugX.38. Як і оригінальний варіант, він використовує обробник винятків «SetUnhandledExceptionFilter » для ідентифікації ідентифікатора потоку, відповідального за ініціювання винятку в «threads_container», а потім генерує пов’язані рядки. Однак цей варіант вводить модифікацію для використання додаткової операції XOR для шифрування цих рядків. Коли шкідливе програмне забезпечення виконує відповідну функцію, воно динамічно розшифровує рядки під час виконання.

Малюнок 21. Налаштування фільтра винятків.

Після завершення процедур підготовки троян підвищує свої привілеї, отримуючи SeDebugPrivilege та SeTcbPrivilege. Потім він ініціалізує свою головну процедуру та визначає шлях до папки, зазначений у його конфігурації, куди він розміщуватиме файли ланцюжка зараження. Шкідливе програмне забезпечення створює потік DoImpUserProc для керування операціями плагінів або виконання функції під назвою OnlineMainDump. Щоб уникнути виявлення, зловмисник приховує рядки SeDebugPrivilege та SeTcbPrivilege, шифруючи їх за допомогою модифікованого алгоритму шифрування Tiny Encryption Algorithm (TEA).

Малюнок 22. Привілеї ескалації.

Якщо бекдор PlugX виконує функцію OnlineMainDump, він спочатку намагається підвищити свої привілеї, щоб надати високорівневий доступ для власного процесу. Потім він отримує три конкретні плагіни: KeylogDump, Nethood та PortMap. Після цього він використовує ті ж методи, що й BackDoor.PlugX.38, щоб приховати свій шкідливий сервіс у процесі services.exe. Після завершення цієї дії ініціюється потік OnlineNotifyDump, і конфігурація переініціалізується. Потім шкідливе програмне забезпечення використовує потік OlProcManager для керування виконанням трьох плагінів у рамках поточного процесу.

Малюнок 23. Основна функція PlugX.

Після завершення всіх процедур ініціалізації шкідливе програмне забезпечення починає повторюваний цикл підключень до свого сервера C2. Хоча методологія підключення залишається ідентичною методології BackDoor.PlugX.38, цей варіант спеціально використовує протокол HTTPS для зв’язку. Крім того, було ідентифіковано версію бібліотеки “VTCP 10.12.08”, вбудовану в цей бекдор PlugX. Бібліотека VTCP вже була підтверджена в попередніх аналізах як компонент, який зазвичай асоціюється з PlugX, що додатково підтверджує приналежність цього варіанту до того ж сімейства шкідливих програм.

Малюнок 24. Протокол PlugX.

Крім того було зазначено, що зловмисник вбудував плагін кейлогера у всі проаналізовані корисні навантаження бекдора PlugX. Функціональність кейлогера та формат запису даних залишаються аналогічними описаним у попередніх звітах. Однак є помітні відмінності: ім’я файлу було змінено, а шлях до файлу скидання скориговано відповідно до поточного розташування бекдора PlugX. Ці зміни свідчать про те, що зловмисник прагнув краще інтегрувати кейлогер із цим конкретним варіантом.

Малюнок 25. Шлях до файлу журналу кейлогера.

Крім того, проаналізувавши кілька файлів журналів кейлогерів, виявлених на VirusTotal, було виявивлено позначки часу, які вказують на те, що ці файли активно генерувалися протягом 2022 року. Примітно, що один із файлів журналів продемонстрував успішне збереження в середовищі жертви, записуючи активність з кінця 2022 року до грудня 2024 року — протягом майже двох років безперервного компрометування.

Висновок

Ця кампанія — яскравий приклад того, як зрілі кібергрупи еволюціонують і не просто повторюють техніки, а тонко комбінують їх, приховуючи сліди на роки. Використання одного й того ж легітимного софту, схожих завантажувачів, однакових ключів RC4 і однакової логіки розшифрування — усе це малює картину добре узгодженої екосистеми інструментів, а не випадкового збігу. Попри відмінні бренди шкідливих програм і різні групи, що стоять за ними, зв’язки між RainyDay, PlugX і Turian натякають на спільні ресурси або технічний “консорціум”, який продовжує вдосконалювати атаки та розширювати охоплення.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.