SOC Prime Bias: Критичний

06 May 2026 14:26

Quasar Linux (QLNX): Точка входу в ланцюг постачання з повними можливостями RAT

Author Photo
SOC Prime Team linkedin icon Стежити
Quasar Linux (QLNX): Точка входу в ланцюг постачання з повними можливостями RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Quasar Linux (QLNX) – це вдосконалений троян для віддаленого доступу в Linux, який поєднує користувацький простір і руткіт eBPF з бекдором PAM та широкими можливостями збору облікових даних. Шкідлива програма підтримує безфайлове виконання, маскування імені процесу та кілька технік для збереження, які допомагають їй залишатися прихованою на інфікованих системах. Її зосередження на робочих станціях розробників робить її особливо небезпечною для атаки на ланцюжок постачання, оскільки вона може красти токени, SSH-ключі та хмарні облікові дані. Шкідливе ПЗ також використовує зашифровані комунікації та підтримує однорангову архітектуру для покращення стійкості та підтримання доступу.

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

Дослідники з Trend Micro отримали бінарний файл QLNX та провели як статичний, так і динамічний аналіз, виявивши вбудований вихідний код для компонентів руткіта і бекдора PAM. Їх розслідування документувало здатність шкідливої програми компілювати компоненти безпосередньо на цільовому хості, спектр механізмів стійкості, які вона використовує, і повний набір команд, які підтримує імплантат. Аналіз мережі також виявив призначений для користувача протокол на основі TLS та унікальний ідентифікатор, що використовується в комунікаціях. Внаслідок цієї роботи дослідники витягнули показники компрометації для підтримки полювання та виявлення.

Пом’якшення

Захисники повинні шукати QLNX, відстежуючи його унікальний файл блокування м’ютексу, підозрілі LD_PRELOAD записи і незвичайні gcc команди компіляції, що генерують шкідливі спільні об’єкти. Організації також повинні блокувати виконання невідомих двійкових файлів з назвою quasar-implant і обмежувати записування доступу до /etc/ld.so.preload. Автентифікація з кількома факторами повинна бути застосована для облікових записів розробників, а групи безпеки повинні ретельно стежити за спробами вивести з системи облікові дані та файли з чутливими токенами.

Відповідь

Якщо знайдено індикатори QLNX, негайно ізолюйте уражену систему, зберіть образи пам’яті та диска, та завершити шкідливий процес. Видаліть несанкціоновані записи з /etc/ld.so.preload, видаліть скомпільовані шкідливі .so файли, і очистіть файл блокування, який використовує імплантат. Усі потенційно компрометовані облікові дані, особливо токени хмар і реєстрів пакетів, повинні бути змінені без зволікання. Слідчі також мають оцінити, чи були якісь системи ланцюжка постачання, репозиторії або будівельні навколишні середовища забруднені під час проникнення.

graph TB %% Визначення класів classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef process fill:#ccffcc classDef persistence fill:#ffdd99 %% Вузол шкідливого ПЗ malware_qlnx[“<b>Шкідливе ПЗ</b> – <b>Назва</b>: QLNX<br/><b>Опис</b>: fileless Linux-імплант, що використовує rootkit-техніки”] class malware_qlnx malware %% Фаза виконання action_execution[“<b>Дія</b> – <b>Виконання</b>: запускає fileless-імплант через memfd_create та execveat, підробляє argv0 і назву процесу”] class action_execution action technique_process_spoof[“<b>Техніка</b> – T1564.010:<br/>Приховування артефактів – підміна аргументів процесу”] class technique_process_spoof technique technique_unix_shell[“<b>Техніка</b> – T1059.004:<br/>Інтерпретатор команд і скриптів – Unix shell”] class technique_unix_shell technique %% Фаза ескалації привілеїв action_priv_esc[“<b>Дія</b> – <b>Ескалація привілеїв</b>: намагається використати sudo або pkexec для отримання підвищених прав”] class action_priv_esc action technique_priv_esc[“<b>Техніка</b> – T1548.004:<br/>Зловживання механізмом контролю підвищення привілеїв – виконання з запитом підтвердження”] class technique_priv_esc technique %% Фаза персистентності action_persistence[“<b>Дія</b> – <b>Персистентність</b>: встановлює systemd-сервіси, cron @reboot, init.d-скрипти, автозапуск XDG та LD_PRELOAD-хук”] class action_persistence action technique_rc_scripts[“<b>Техніка</b> – T1037.004:<br/>Скрипти ініціалізації завантаження або входу – RC-скрипти”] class technique_rc_scripts technique technique_autostart[“<b>Техніка</b> – T1547:<br/>Автоматичний запуск під час завантаження або входу”] class technique_autostart technique technique_hijack[“<b>Техніка</b> – T1574:<br/>Перехоплення потоку виконання через LD_PRELOAD”] class technique_hijack technique class action_persistence persistence %% Фаза обходу захисту action_defense_evasion[“<b>Дія</b> – <b>Обхід захисту</b>: розгортає LD_PRELOAD rootkit, eBPF-контролер, ін’єкцію процесів та очищає журнали”] class action_defense_evasion action technique_rootkit[“<b>Техніка</b> – T1014:<br/>Rootkit – приховує файли, процеси та порти”] class technique_rootkit technique technique_thread_hijack[“<b>Техніка</b> – T1055.003:<br/>Ін’єкція процесів – перехоплення виконання потоків”] class technique_thread_hijack technique technique_process_hollow[“<b>Техніка</b> – T1055.012:<br/>Ін’єкція процесів – process hollowing”] class technique_process_hollow technique %% Фаза збору облікових даних action_credential_harvest[“<b>Дія</b> – <b>Збір облікових даних</b>: збирає дані з файлів, SSH-ключів, /etc/shadow, браузерів та PAM”] class action_credential_harvest action technique_creds_files[“<b>Техніка</b> – T1552.001:<br/>Незахищені облікові дані – у файлах”] class technique_creds_files technique technique_private_keys[“<b>Техніка</b> – T1552.004:<br/>Незахищені облікові дані – приватні ключі”] class technique_private_keys technique technique_shadow_dump[“<b>Техніка</b> – T1003.008:<br/>Вивантаження облікових даних ОС – /etc/passwd та /etc/shadow”] class technique_shadow_dump technique technique_cookies[“<b>Техніка</b> – T1550.004:<br/>Використання альтернативних матеріалів автентифікації – вебсесійні cookies”] class technique_cookies technique technique_pam[“<b>Техніка</b> – T1555:<br/>Облікові дані зі сховищ паролів – PAM-модуль”] class technique_pam technique %% Фаза збору action_collection[“<b>Дія</b> – <b>Збір</b>: захоплює дані буфера обміну та знімки екрана”] class action_collection action technique_clipboard[“<b>Техніка</b> – T1115:<br/>Дані буфера обміну”] class technique_clipboard technique technique_screenshot[“<b>Техніка</b> – T1113:<br/>Знімок екрана”] class technique_screenshot technique %% Фаза C2 action_c2[“<b>Дія</b> – <b>Командування та керування</b>: ексфільтрація даних через зашифрований TLS/HTTPS канал”] class action_c2 action technique_exfil[“<b>Техніка</b> – T1041:<br/>Ексфільтрація через C2-канал”] class technique_exfil technique %% Латеральний рух action_lateral[“<b>Дія</b> – <b>Латеральний рух</b>: використовує зібрані SSH-ключі для доступу до віддалених хостів”] class action_lateral action technique_remote_exploit[“<b>Техніка</b> – T1210:<br/>Експлуатація віддалених сервісів”] class technique_remote_exploit technique %% Зв’язки malware_qlnx –>|виконує| action_execution action_execution –>|використовує| technique_process_spoof action_execution –>|використовує| technique_unix_shell action_execution –>|призводить до| action_priv_esc action_priv_esc –>|використовує| technique_priv_esc action_priv_esc –>|призводить до| action_persistence action_persistence –>|використовує| technique_rc_scripts action_persistence –>|використовує| technique_autostart action_persistence –>|використовує| technique_hijack action_persistence –>|призводить до| action_defense_evasion action_defense_evasion –>|використовує| technique_rootkit action_defense_evasion –>|використовує| technique_thread_hijack action_defense_evasion –>|використовує| technique_process_hollow action_defense_evasion –>|призводить до| action_credential_harvest action_credential_harvest –>|використовує| technique_creds_files action_credential_harvest –>|використовує| technique_private_keys action_credential_harvest –>|використовує| technique_shadow_dump action_credential_harvest –>|використовує| technique_cookies action_credential_harvest –>|використовує| technique_pam action_credential_harvest –>|призводить до| action_collection action_collection –>|використовує| technique_clipboard action_collection –>|використовує| technique_screenshot action_collection –>|призводить до| action_c2 action_c2 –>|використовує| technique_exfil action_c2 –>|дозволяє| action_lateral action_lateral –>|використовує| technique_remote_exploit

Потік Атаки

Виявлення

Можлива спроба зв’язку домену IP-lookup (через dns)

Команда SOC Prime
05 травня 2026

Підозрілий автозапуск .desktop скинуто в профіль користувача (через file_event)

Команда SOC Prime
05 травня 2026

Прихований файл був створений на Linux хості (через file_event)

Команда SOC Prime
05 травня 2026

Індикатори компрометації (HashSha256) для виявлення: Quasar Linux (QLNX) – Невидимий плацдарм у ланцюжку постачання: Внутрішньо функціональний Linux RAT з руткітом, бекдором PAM, збором облікових даних та інше

Правила SOC Prime AI
05 травня 2026

Індикатори компрометації (HashSha1) для виявлення: Quasar Linux (QLNX) – Невидимий плацдарм у ланцюжку постачання: Внутрішньо функціональний Linux RAT з руткітом, бекдором PAM, збором облікових даних та інше

Правила SOC Prime AI
05 травня 2026

Індикатори компрометації (HashMd5) для виявлення: Quasar Linux (QLNX) – Невидимий плацдарм у ланцюжку постачання: Внутрішньо функціональний Linux RAT з руткітом, бекдором PAM, збором облікових даних та інше

Правила SOC Prime AI
05 травня 2026

Виявлення безфайлового виконання та впровадження коду QLNX [Створення процесу в Linux]

Правила SOC Prime AI
05 травня 2026

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

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

Пояснення: У цьому розділі описується точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди та описи МАЮТЬ безпосередньо відображати виявлені TTP та бути націленими на генерацію саме тієї телеметрії, яка очікується згідно логіки виявлення.

  • Опис атаки та команди:

    1. Етап 1 – Генерація корисного навантаження: Зловмисник пише мінімальний C-навантажувач, що викликає memfd_create для створення анонімного файлу у пам’яті, записує просту кодову оболонку (наприклад, execve("/bin/sh", …)), робить його виконуваним та запускає його через execveat.
    2. Етап 2 – Компілювання на льоту: Використовуючи gcc (видимий індикатор у правилі) зловмисник компілює джерело без звернення до диска (вихід спрямований на /dev/fd/3).
    3. Етап 3 – Виконання та Впровадження: Скомпільований бінарний файл запускається, викликає memfd_create, завантажує кодову оболонку, і нарешті викликає execveat для виконання ELF у пам’яті. Опціонально ptrace може бути використано для впровадження коду у суміжний процес, що також задовольнить правило.
  • Скрипт регресійного тесту:

    #!/usr/bin/env bash
    #
    # Симуляція безфайлового виконання QLNX‑
    # Генерує ELF у пам'яті за допомогою memfd_create і запускає його з execveat.
    # Потребується: gcc, libcap2-bin (для демонстрації execveat) та auditd правила перед польотом.
    
    set -euo pipefail
    
    # 1️⃣ Створити C код, що здійснює маніпуляцію з memfd + execveat
    cat > /tmp/payload.c <<'EOF'
    #define _GNU_SOURCE
    #include <sys/mman.h>
    #include <sys/syscall.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <string.h>
    
    int main(void) {
        // Створити анонімний дескриптор файлу (memfd)
        int fd = syscall(SYS_memfd_create, "memfd_payload", MFD_CLOEXEC);
        if (fd == -1) _exit(1);
    
        // Простий ELF бінарний файл, що лише виконує execve /bin/sh
        const unsigned char elf[] = {
            0x7f,0x45,0x4c,0x46,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            // ... (скорочено для стислості – мінімальний статично пов'язаний ELF для /bin/sh)
        };
        write(fd, elf, sizeof(elf));
        // Зробити його виконуваним
        fchmod(fd, 0755);
    
        // Використати execveat, щоб запустити бінарний файл у пам'яті
        syscall(SYS_execveat, fd, "", NULL, NULL, AT_EMPTY_PATH);
        _exit(0);
    }
    EOF
    
    # 2️⃣ Компілювати з gcc (це буде зафіксовано правилом виявлення)
    gcc -static -o /tmp/payload /tmp/payload.c
    
    # 3️⃣ Виконати шкідливий бінарний файл – це тригерує execveat
    /tmp/payload
    
    # 4️⃣ Очистка
    rm -f /tmp/payload /tmp/payload.c
  • Команди очистки:

    # Видалити залишкові файли і відключити потенційні правила аудиту (якщо тестове середовище є одноразовим)
    rm -f /tmp/payload /tmp/payload.c
    sudo auditctl -d -a always,exit -F arch=b64 -S execveat -k qlnx_execveat
    sudo auditctl -d -a always,exit -F arch=b64 -S memfd_create -k qlnx_memfd
    sudo auditctl -d -a always,exit -F arch=b64 -S ptrace -k qlnx_ptrace