Quasar Linux (QLNX): Точка входу в ланцюг постачання з повними можливостями RAT
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 файли, і очистіть файл блокування, який використовує імплантат. Усі потенційно компрометовані облікові дані, особливо токени хмар і реєстрів пакетів, повинні бути змінені без зволікання. Слідчі також мають оцінити, чи були якісь системи ланцюжка постачання, репозиторії або будівельні навколишні середовища забруднені під час проникнення.
Потік Атаки
Виявлення
Можлива спроба зв’язку домену IP-lookup (через dns)
Перегляд
Підозрілий автозапуск .desktop скинуто в профіль користувача (через file_event)
Перегляд
Прихований файл був створений на Linux хості (через file_event)
Перегляд
Індикатори компрометації (HashSha256) для виявлення: Quasar Linux (QLNX) – Невидимий плацдарм у ланцюжку постачання: Внутрішньо функціональний Linux RAT з руткітом, бекдором PAM, збором облікових даних та інше
Перегляд
Індикатори компрометації (HashSha1) для виявлення: Quasar Linux (QLNX) – Невидимий плацдарм у ланцюжку постачання: Внутрішньо функціональний Linux RAT з руткітом, бекдором PAM, збором облікових даних та інше
Перегляд
Індикатори компрометації (HashMd5) для виявлення: Quasar Linux (QLNX) – Невидимий плацдарм у ланцюжку постачання: Внутрішньо функціональний Linux RAT з руткітом, бекдором PAM, збором облікових даних та інше
Перегляд
Виявлення безфайлового виконання та впровадження коду QLNX [Створення процесу в Linux]
Перегляд
## Виконання симуляції
Передумова: Телеметрія та базову перевірку перед польотом необхідно успішно пройти.
Пояснення: У цьому розділі описується точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди та описи МАЮТЬ безпосередньо відображати виявлені TTP та бути націленими на генерацію саме тієї телеметрії, яка очікується згідно логіки виявлення.
-
Опис атаки та команди:
- Етап 1 – Генерація корисного навантаження: Зловмисник пише мінімальний C-навантажувач, що викликає
memfd_createдля створення анонімного файлу у пам’яті, записує просту кодову оболонку (наприклад,execve("/bin/sh", …)), робить його виконуваним та запускає його черезexecveat. - Етап 2 – Компілювання на льоту: Використовуючи
gcc(видимий індикатор у правилі) зловмисник компілює джерело без звернення до диска (вихід спрямований на/dev/fd/3). - Етап 3 – Виконання та Впровадження: Скомпільований бінарний файл запускається, викликає
memfd_create, завантажує кодову оболонку, і нарешті викликаєexecveatдля виконання ELF у пам’яті. Опціональноptraceможе бути використано для впровадження коду у суміжний процес, що також задовольнить правило.
- Етап 1 – Генерація корисного навантаження: Зловмисник пише мінімальний C-навантажувач, що викликає
-
Скрипт регресійного тесту:
#!/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