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

09 Dec 2025 18:46

Шкідливе програмне забезпечення Castle RAT Client: Тактики, Техніки та Торгівельні прийоми

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
Шкідливе програмне забезпечення Castle RAT Client: Тактики, Техніки та Торгівельні прийоми
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

CastleRAT – це троян віддаленого доступу, вперше виявлений у березні 2025 року, представлений у варіантах на Python і компільованому C. Він збирає системні метадані, натиснення клавіш, вміст буфера обміну, знімки екрану та деталі медіа-пристроїв, а потім передає цю інформацію на сервер C2, використовуючи шифрування RC4. Шкідливе ПЗ може завантажувати додаткові навантаження, запускати їх через rundll32 та встановлювати стійкість за допомогою запланованих завдань та методів обходу UAC.

Розслідування

Команда дослідження загроз Splunk інженерувала виготовлення зворотнього коду Python та C, картографуючи їх поведінку з техніками MITRE ATT&CK, включаючи системне виявлення, реєстрацію клавіш, захоплення екрану, перерахування аудіо/відео пристроїв, рішення dead-drop і дублювання дескриптора для підвищення привілеїв. Дослідження підкреслило залежність CastleRAT від легітимних бінарників Windows (rundll32, ComputerDefaults.exe) та його використання www.ip-api.com для отримання публічної IP-адреси.

Запобігання

Захисники повинні виявляти підозрілі вихідні з’єднання з невідомими доменами, шаблони трафіку, зашифровані за допомогою RC4, та запуски rundll32 з DDL-завантаженнями на основі ординала. Проводьте моніторинг для запланованих завдань, створених для запуску CastleRAT, спроб обходу UAC за допомогою ComputerDefaults.exe і процесів, запущених із вимкнутими аудіо прапорами для браузера. Заблокуйте доступ до відомих місць рішень dead-drop, включаючи зловживані сторінки спільноти Steam.

Відповідь

Коли виявлено активність CastleRAT, ізолюйте постраждалий вузол, зупиніть шкідливі процеси та видаліть усі пов’язані заплановані завдання або артефакти стійкості. Збирайте криміналістичні докази, такі як ієрархії процесів, аргументи командного рядка та зміни реєстру. Виконайте всебічну перевірку на наявність додаткових DLL плагінів і каналів C2, а потім розгорніть заходи з виправлення та зміцнення в усьому середовищі.

mermaid graph TB %% Class definitions classDef technique fill:#e6f7ff %% Node definitions t1016_001[“<b>Техніка</b> – T1016.001 Виявлення конфігурації системної мережі<br />Збирає деталі системи, такі як ім’я комп’ютера, ім’я користувача, GUID машини, версію ОС та публічну IP-адресу для відправки на C2”] class t1016_001 technique t1115[“<b>Техніка</b> – T1115 Дані з буфера обміну<br />Збирає дані з буфера обміну Windows та передає їх, часто використовуючи симульовані дії вставки”] class t1115 technique t1036[“<b>Техніка</b> – T1036 Маскування<br />Іменує файли, що скидаються, та змінні середовища, щоб вони виглядали як легітимні компоненти Python або Java”] class t1036 technique t1056_001[“<b>Техніка</b> – T1056.001 Захоплення введення: Кейлогінг<br />Перехоплює натиснення клавіш, записує їх у локальний файл, шифрує файл за допомогою RC4 та відправляє його нападнику”] class t1056_001 technique t1559[“<b>Техніка</b> – T1559 Міжпроцесне спілкування<br />Створює прихований процесс shell зі стандартними потоками, перенаправленими через анонімні канали, дозволяючи віддалене виконання команд без видимої консолі”] class t1559 technique t1123[“<b>Техніка</b> – T1123 Захоплення аудіо<br />Перераховує пристрої захоплення медіа через Media Foundation”] class t1123 technique t1125[“<b>Техніка</b> – T1125 Захоплення відео<br />Перераховує пристрої захоплення медіа через Media Foundation”] class t1125 technique t1218_011[“<b>Техніка</b> – T1218.011 Виконання проксі через системні бінарні файли: Rundll32<br />Завантажує шкідливу функцію DLL export шляхом ординала”] class t1218_011 technique t1055_001[“<b>Техніка</b> – T1055.001 Впровадження в процес: Впровадження бібліотеки динамічних посилань<br />Використовує rundll32.exe для завантаження шкідливої DLL”] class t1055_001 technique t1547_010[“<b>Техніка</b> – T1547.010 Виконання автозапуску при завантаженні або вході в систему: Порти моніторів<br />Завантажує додаткові DLL плагіни з C2, дешифрує їх з RC4 та завантажує їх”] class t1547_010 technique t1053[“<b>Техніка</b> – T1053 Заплановане завдання/робота<br />Створює заплановане завдання для запуску шкідливого ПЗ при старті”] class t1053 technique t1113[“<b>Техніка</b> – T1113 Захоплення екрану<br />Періодично захоплює знімки екрану та передає їх”] class t1113 technique t1102_001[“<b>Техніка</b> – T1102.001 Веб-служба: Рішення Dead Drop<br />Отримує конфігурацію або навантаження від неагресивних зовнішніх веб-сайтів”] class t1102_001 technique t1127[“<b>Техніка</b> – T1127 Виконання проксі з довірених утиліт для розробників<br />Використовує ComputerDefaults.exe та дублювання дескриптора для обходу UAC і виконання коду з підвищеними привілеями”] class t1127 technique t1027[“<b>Техніка</b> – T1027 Затемнені файли або інформація<br />Використовує шифрування RC4 для команд та даних”] class t1027 technique t1048_001[“<b>Техніка</b> – T1048.001 Передача даних через альтернативний протокол: Симетрично зашифрований не C2 протокол<br />Відправляє зашифровані дані на C2”] class t1048_001 technique t1132_001[“<b>Техніка</b> – T1132.001 Кодування даних: Стандартне кодування<br />Кодує дані перед передачею”] class t1132_001 technique %% Connections showing attack flow t1016_001 u002du002d>|leads_to| t1115 t1115 u002du002d>|leads_to| t1036 t1036 u002du002d>|leads_to| t1056_001 t1056_001 u002du002d>|leads_to| t1559 t1559 u002du002d>|leads_to| t1123 t1123 u002du002d>|leads_to| t1125 t1125 u002du002d>|leads_to| t1218_011 t1218_011 u002du002d>|leads_to| t1055_001 t1055_001 u002du002d>|leads_to| t1547_010 t1547_010 u002du002d>|leads_to| t1053 t1053 u002du002d>|leads_to| t1113 t1113 u002du002d>|leads_to| t1102_001 t1102_001 u002du002d>|leads_to| t1127 t1127 u002du002d>|leads_to| t1027 t1027 u002du002d>|leads_to| t1048_001 t1048_001 u002du002d>|leads_to| t1132_001

Потік атаки

Виконання симуляції

Необхідна умова: Попередній огляд телеметрії та базового рівня повинен бути пройдено.

Обґрунтування: Цей розділ детально описує точне виконання техніки ТПП противника, розробленої для запуску правила виявлення. Команди та оповідь ПОВИННІ прямо відображати визначені ТПП та мають на меті генерувати точну телеметрію, очікувану логікою виявлення. Абстрактні або непов’язані приклади призведуть до неправильної діагностики.

  • Сюжет атаки та команди:

    1. Етап 1 – Розгортання CastleRAT бінарного файлу: Нападник копіює CastleRAT.exe у каталог жертви %APPDATA% для злиття з даними користувача.
    2. Етап 2 – Виконання кейлогінгу: Використовуючи невеликий завантажувач C# в пам’яті, нападник викликає SetWindowsHookEx для встановлення низькорівневого клавіатурного хука, що призводить до запису Sysmon API в CallTrace події створення процесу.
    3. Етап 3 – Підвищення привілеїв: Той самий завантажувач потім викликає DuplicateHandle для дублювання дескриптора з привілейованого системного процесу (наприклад, lsass.exe), дозволяючи шкідливому ПЗ працювати з правами SYSTEM. Обидва виклики API з’являються у тому ж CallTrace Sysmon, задовольняючи критерії правила виявлення.
  • Скрипт регресійного тесту:

    # -------------------------------------------------
    # Симуляція CastleRAT – ініціює SetWindowsHookEx та DuplicateHandle
    # -------------------------------------------------
    $castlePath = "$env:APPDATACastleRAT.exe"
    
    # 1. Скинути мінімальний шаблон, який завантажує реальне навантаження (симулюється тут)
    $payload = @"
    using System;
    using System.Runtime.InteropServices;
    public class Loader {
        [DllImport("user32.dll")]
        public static extern IntPtr SetWindowsHookEx(int idHook, IntPtr lpfn, IntPtr hMod, uint dwThreadId);
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool DuplicateHandle(IntPtr hSourceProcessHandle,
                                                  IntPtr hSourceHandle,
                                                  IntPtr hTargetProcessHandle,
                                                  out IntPtr lpTargetHandle,
                                                  uint dwDesiredAccess,
                                                  bool bInheritHandle,
                                                  uint dwOptions);
        public static void Execute() {
            // Встановити низькорівневий клавіатурний хук (WH_KEYBOARD_LL = 13)
            SetWindowsHookEx(13, IntPtr.Zero, IntPtr.Zero, 0);
            // Дублювати дескриптор з поточного процесу (симульовано)
            IntPtr dupHandle;
            DuplicateHandle((IntPtr)-1, (IntPtr)0x1234, (IntPtr)-1, out dupHandle, 0, false, 0);
        }
    }
    "@"
    
    # Компілювати код C# на місці
    Add-Type -TypeDefinition $payload -Language CSharp
    
    # Копіювати поточний процес PowerShell (діє як CastleRAT.exe) на цільовий шлях
    Copy-Item -Path $PSCommandPath -Destination $castlePath -Force
    
    # Виконати шкідливе навантаження
    [Loader]::Execute()
    
    # Залишити процес живим ненадовго, щоб забезпечити реєстрацію Sysmon стека викликів
    Start-Sleep -Seconds 5

“@

# Compile the C# code on‑the‑fly
Add-Type -TypeDefinition $payload -Language CSharp

# Copy the current PowerShell process (acts as CastleRAT.exe) to the target path
Copy-Item -Path $PSCommandPath -Destination $castlePath -Force

# Execute the malicious payload
[Loader]::Execute()

# Keep the process alive briefly to ensure Sysmon logs the call stack
Start-Sleep -Seconds 5
  • Команди очищення:

    # Видалити симульований бінарний файл CastleRAT
    Remove-Item -Path "$env:APPDATACastleRAT.exe" -Force
    
    # Опціонально видалити будь-які хуки (не потрібно для шаблону, але включено для повноти)
    # Немає відокремленого видалення для виклику SetWindowsHookEx з NULL зворотним викликом, який використовується вище.