SOC Prime Bias: Середній

25 Nov 2025 18:38

DarkGate Під Капотом

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
DarkGate Під Капотом
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

DarkGate — це завантажувач на основі Delphi, що продається як шкідливе програмне забезпечення як послуга на кримінальних ринках. Він включає повну функціональність RAT, динамічну резолюцію API і багатошарові трюки ухилення, такі як користувацькі набори символів base64, Union-API–стиль системний виклик завантаження, та APC ін’єкцію. Інструмент, приписаний продавцю “RastaFarEye”, був прийнятий такими акторами, як TA577 та Ducktail. Він спілкується з C2 через HTTP з обфускованими навантаженнями та може розгортати утиліти віддаленого робочого столу, красти токени Discord і запускати інтерактивну зворотну оболонку.

Аналіз шкідливого ПЗ DarkGate

Публікація пропонує детальний процес реверс-інжинірингу виконуваного файлу DarkGate, пояснюючи його індивідуальне змішування конфігурацій, генерацію BotID на основі XOR та шифроване логування. Він каталогізує техніки збереження завантажувача, шляхи ескалації привілеїв, робочі процеси викрадення токенів та зловживання легітими бінарними файлами, такими як PsExec і Extexport для побічного завантаження DLL. Стаття також документує шаблони C2 комунікацій, стандартні hVNC облікові дані та типові HTTP порти, що використовуються (2351 і 9999).

Захист

Сині команди повинні стежити за створенням згаданих файлів і записів запуску в реєстрі, негайно анулювати або блокувати стандартні облікові дані hVNC і виявляти використання PsExec та Extexport для несанкціонованого завантаження DLL. Аналітика поведінки повинна охоплювати використання Union-API системних викликів, APC ін’єкцію через NtTestAlert і підробку PID-батька. Захист мережі може виявляти дивні HTTP порти і намагатися декодувати користувацькі алфавіти base64 DarkGate для виявлення трафіку C2.

Відповідь

Як тільки активність DarkGate підтверджена, ізолюйте уражену кінцеву точку, зберіть задокументовані артефакти, знищіть шкідливі процеси і очистіть всі точки опори збереження. Оновіть будь-які розкриті облікові дані і блокуйте відомі домени і діапазони IP C2. Детальний судово-медичний перегляд повинен виявити всі вторинні навантаження і підтвердити, що всі DLL, завантажені через Extexport або пов’язані з ним завантажувачі, були ліквідовані.

mermaid graph TB %% Визначення класів classDef technique fill:#ffcc99 classDef tool fill:#c2e0ff classDef action fill:#d9ffd9 %% Вузли – Техніки step_initial_infection[“<b>Техніка</b> – <b>T1055.001: Первинний доступ через скрипт AutoIt</b><br />Скрипт AutoIt використовується для доставки шкідливого навантаження до системи жертви.”] class step_initial_infection technique step_dynamic_api[“<b>Техніка</b> – <b>T1027.007: Обфусціровані/Збережені файли – Динамічна резолюція API</b><br />Шкідливий код резолює необхідні API Windows під час виконання, щоб обійти статичний аналіз.”] class step_dynamic_api technique step_union_syscall[“<b>Техніка</b> – <b>T1106: Native API</b><br />Виконується уникнення системних викликів Union API, щоб приховати шкідливу поведінку від інструментів моніторингу.”] class step_union_syscall technique step_process_injection[“<b>Техніка</b> – <b>T1055.004: Впровадження процесу – APC</b><br />Використовується ін’єкція асинхронного виклику процедури для запуску шкідливого коду всередині легітимного процесу.”] class step_process_injection technique step_token_manipulation[“<b>Техніка</b> – <b>T1134: Маніпуляція з токенами доступу</b><br />Атакаючий краде або модифікує токени доступу, щоб отримати підвищені привілеї.”] class step_token_manipulation technique step_priv_esc_psexec[“<b>Техніка</b> – <b>T1548.002: Зловживання механізмом контролю за підвищенням прав – PsExec</b><br />PsExec використовується для виконання команд як користувача з вищими привілеями на віддалених системах.”] class step_priv_esc_psexec technique step_persistence[“<b>Техніка</b> – <b>T1547.001: Скрипти ініціалізації завантаження або входу – LNK і ключі реєстру Run</b><br />Файли ярликів і ключі реєстру Run створюються, щоб забезпечити запуск шкідливого ПЗ під час завантаження.”] class step_persistence technique step_keylogging[“<b>Техніка</b> – <b>T1056.001: Перехоплення вводу – Кейлоггінг</b><br />Записуються натискання клавіш користувача, щоб зібрати облікові дані та конфіденційну інформацію.”] class step_keylogging technique step_remote_vnc[“<b>Техніка</b> – <b>T1021.005: Віддалені сервіси – VNC</b><br />Прихований сервер VNC забезпечує атакаючого інтерактивним віддаленим доступом до робочого столу.”] class step_remote_vnc technique step_command_execution[“<b>Техніка</b> – <b>T1059.001: Інтерпретатор команд і скриптів – PowerShell</b> і <b>T1059.003: Інтерпретатор команд і скриптів – Командна оболонка Windows</b><br />PowerShell і cmd використовуються для запуску додаткових команд атакаючого.”] class step_command_execution technique step_c2_communication[“<b>Техніка</b> – <b>T1102.002/T1102.003: Протокол прикладного рівня – Веб протоколи (HTTP/HTTPS)</b> і <b>T1132.002: Кодування даних – Стандартне кодування</b><br />Трафік C2 надсилається через HTTP з користувацьким кодуванням, щоб змішуватись із звичайним веб-трафіком.”] class step_c2_communication technique step_environment_checks[“<b>Техніка</b> – <b>T1497.001: Ухилення від віртуалізації/пісочниць – Системні перевірки</b> і <b>T1112: Зміна реєстру</b><br />Шкідливе ПЗ перевіряє середовище та змінює значення реєстру, щоб приховати свою присутність.”] class step_environment_checks technique %% Вузли – Засоби tool_autoit[“<b>Засіб</b> – <b>Назва</b>: AutoIt<br /><b>Опис</b>: Скриптова мова, використовується для створення первинного скрипту інфекції.”] class tool_autoit tool tool_psexec[“<b>Засіб</b> – <b>Назва</b>: PsExec<br /><b>Опис</b>: Утиліта для віддаленого виконання, що запускає процеси з підвищеними привілеями.”] class tool_psexec tool tool_vnc[“<b>Засіб</b> – <b>Назва</b>: Прихований сервер VNC<br /><b>Опис</b>: Забезпечує атакаючого прихованою можливістю віддаленого доступу до робочого столу.”] class tool_vnc tool %% Зв’язки – Потік атаки step_initial_infection u002du002d>|використовує| tool_autoit step_initial_infection u002du002d>|призводить до| step_dynamic_api step_dynamic_api u002du002d>|призводить до| step_union_syscall step_union_syscall u002du002d>|призводить до| step_process_injection step_process_injection u002du002d>|призводить до| step_token_manipulation step_token_manipulation u002du002d>|призводить до| step_priv_esc_psexec step_priv_esc_psexec u002du002d>|використовує| tool_psexec step_priv_esc_psexec u002du002d>|призводить до| step_persistence step_persistence u002du002d>|призводить до| step_keylogging step_keylogging u002du002d>|призводить до| step_remote_vnc step_remote_vnc u002du002d>|використовує| tool_vnc step_remote_vnc u002du002d>|призводить до| step_command_execution step_command_execution u002du002d>|призводить до| step_c2_communication step_c2_communication u002du002d>|призводить до| step_environment_checks

Потік атаки

Виконання моделювання

Передумова: Телеметрія та перевірка попереднього польоту повинні бути пройдені.

  • Сценарій атаки та команди:
    Імітований супротивник вже проник у кінцеву точку і намагається встановити постійний доступ через RDP. Спочатку вони збирають облікові дані, зберігаючи їх за допомогоюcmdkey, потім використовуютьpsexec.exeдля руху латерально і, нарешті, запускають навантаження PowerShell, яке встановлює фрагмент кейлогера. Кожен крок розроблений для генерації точних подій створення процесу, які відслідковує правило виявлення.

    1. Збір облікових даних (T1552.001)– Зберігати створений запис облікових даних, що відповідаєselection_cmdkeyшаблону правила.
    2. Латеральний рух (T1219)– Виконатиpsexec.exeна віддаленому хості, викликавши команду, яка відкриває нову сесію PowerShell.
    3. Виконання PowerShell (T1059.001)– Запустити команду PowerShell, яка завантажує шкідливий скрипт (тут змодельовано за допомогою base64‑кодування безпечної команди).
    4. Встановлення кейлогера (T1056.001)– Скомпілювати і виконати невелику бінарну програму на C, яка викликаєGetAsyncKeyState, генеруючиAPIпідходження поля.
  • Скрипт регресійного тестування:

    # Скрипт моделювання DarkGate – PowerShell
    # --------------------------------------------------
    # 1. Запис облікових даних Cmdkey (відповідає шаблону виявлення)
    $generic = '""'                         # пустий generic, як використовується DarkGate
    $user    = 'SafeMode'                   # ім'я користувача, яке очікує правило
    $pass    = 'darkgatepassword0'          # пароль, який очікує правило
    cmd.exe /c cmdkey /generic:$generic /user:$user /pass:$pass
    
    # 2. Латеральний рух PsExec (бінарний файл повинен бути в PATH або вказати повний шлях)
    $remoteHost = '10.0.0.5'
    $psexecPath = "$env:SystemRootSystem32psexec.exe"
    if (Test-Path $psexecPath) {
        & $psexecPath \$remoteHost -accepteula cmd /c "whoami"
    } else {
        Write-Host "PsExec не знайдено на $psexecPath – пропускаємо цей крок."
    }
    
    # 3. Виконання PowerShell (base64‑кодування безпечної команди)
    $psCommand = 'Write-Output "Виконано навантаження PowerShell"'
    $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($psCommand))
    powershell.exe -EncodedCommand $encoded
    
    # 4. Компиляція і виконання фрагмента кейлогера
    $cSource = @"
    #include <windows.h>
    int main() {
        // Простий виклик до GetAsyncKeyState для забезпечення відповідності API
        GetAsyncKeyState(VK_RETURN);
        return 0;
    }
    "@
    $srcPath = "$env:TEMPkeylog_stub.c"
    $exePath = "$env:TEMPkeylog_stub.exe"
    $cSource | Set-Content -Path $srcPath -Encoding ASCII
    # Скомпілювати з Visual C++ (cl.exe повинен бути в PATH)
    cl.exe /nologo /O2 /Fe:$exePath $srcPath
    if (Test-Path $exePath) {
        & $exePath
    }
  • Команди очищення:

    # Прибрати запис облікових даних
    cmd.exe /c cmdkey /delete:$generic
    
    # Видалити тимчасові файли
    Remove-Item -Force -ErrorAction SilentlyContinue "$env:TEMPkeylog_stub.c"
    Remove-Item -Force -ErrorAction SilentlyContinue "$env:TEMPkeylog_stub.exe"
    
    # Необов'язково: завершити будь-які stray процеси psexec або powershell, запущені скриптом
    Get-Process -Name psexec, powershell -ErrorAction SilentlyContinue | Stop-Process -Force