Новий технічний документ: Варіанти BPFDoor Маскуються на Видному Місці
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Rapid7 Labs виявила сім нових варіантів BPFDoor, що зловживають фільтрами Berkeley Packet Filters на рівні ядра для підтримки прихованого доступу через бекдор у телекомунікаційних середовищах. Нові родини, httpShell та icmpShell, використовують безстанні тунелі ICMP та HTTP із “магічними” форматами пакетів і прихованими IP-полями для встановлення командно-контрольного зв’язку з мінімальною помітністю. Звіт пояснює, як імпланти намагаються залишатися практично невидимими за допомогою маскування процесів, очищення файлів-дескрипторів, підробки міток часу та зашифрованої комунікації ICMP.
Розслідування
Дослідники проаналізували майже 300 зразків та виявили нові ознаки байткоду BPF, нові маркери “магічних байтів” та імена процесів, специфічні для варіантів, як-от hpasmlited та cmathreshd. Валідація в лабораторії в Docker відтворила тунелювання PTY на основі ICMP, обмін зашифрованими RC4 корисними навантаженнями та маршрутизаційна поведінка, де прапор –1 повертає трафік до адреси джерела пакета. Команда також виявила інфраструктуру підтримки, включаючи домени, що прикидаються NTP-over-SSL сервісами, використаними для змішування трафіку постановки та контролю.
Пом’якшення
Пріоритетно відстежуйте телеметрію, що виявляє зловживання, яке близько до ядра: моніторинг створення сокетів AF_PACKET, виявлення прикріплення фільтра BPF і пошук аномалій протоколу, пов’язаних із цими варіантами, включаючи послідовність ICMP 1234 та недійсний код ICMP 1. Попереджайте про підозрілі демони з відсутніми шляхами до виконуваних файлів, підробленими іменами сервісів або характеристиками виконання, які несумісні з легітимними системними процесами. Rapid7 рекомендує запускати триажний скрипт rapid7_bpfdoor_check.sh та оновлювати YARA/Suricata виявлення новими задокументованими підписами магічних байтів.
Відповідь
Якщо ознаки будуть виявлені, ізолюйте систему, зупиніть підозрілий імплант-процес і заблокуйте пов’язані домени та діапазони IP-адрес. Захопіть пам’ять та артефакти диска, щоб зберегти стан BPF і доказів виконання, потім використовуйте rapid7_bpfdoor_check.sh для ідентифікації активних фільтрів BPF та пов’язаних нульових байт артефактів-мьютексу. Нарешті, оновіть виявлення за допомогою опублікованих підписів і продовжуйте моніторинг повторної появи тих самих маркерів пакетів, імен процесів та поведінки фільтра-прикріплення.
graph TB classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f4c2c2 tech_socket_filters[“<b>Техніка</b> – T1205.002 Сигналізація трафіку: socket-фільтри<br/><b>Опис</b>: AF_PACKET сокети з BPF-фільтрами для моніторингу трафіку”] class tech_socket_filters technique tech_masq_task_service[“<b>Техніка</b> – T1036.004 Маскування сервісу/задачі<br/><b>Опис</b>: Підробка назв системних демонів”] class tech_masq_task_service technique tech_overwrite_args[“<b>Техніка</b> – T1036.011 Перезапис аргументів процесу”] class tech_overwrite_args technique tech_rename_utils[“<b>Техніка</b> – T1036.003 Перейменування утиліт”] class tech_rename_utils technique tech_obfuscate_strings[“<b>Техніка</b> – T1027 Обфускація даних”] class tech_obfuscate_strings technique tech_clear_history[“<b>Техніка</b> – T1070.003 Очищення історії команд”] class tech_clear_history technique tech_wipe_timestamps[“<b>Техніка</b> – T1070.004 Видалення файлів”] class tech_wipe_timestamps technique tech_unix_shell[“<b>Техніка</b> – T1059.004 Unix shell”] class tech_unix_shell technique tech_break_process[“<b>Техніка</b> – T1036.009 Розрив дерева процесів”] class tech_break_process technique tech_http_c2[“<b>Техніка</b> – T1071.001 HTTP”] class tech_http_c2 technique tech_icmp_tunnel[“<b>Техніка</b> – T1572 ICMP тунелювання”] class tech_icmp_tunnel technique tech_rc4_encryption[“<b>Техніка</b> – T1573.001 RC4 шифрування”] class tech_rc4_encryption technique tech_data_obfuscation[“<b>Техніка</b> – T1001 Обфускація даних”] class tech_data_obfuscation technique tech_port_knocking[“<b>Техніка</b> – T1205.001 Port knocking”] class tech_port_knocking technique tech_proxy[“<b>Техніка</b> – T1090 Проксі”] class tech_proxy technique tech_create_process[“<b>Техніка</b> – T1543 Створення системного процесу”] class tech_create_process technique tech_socket_filters –>|активує| tech_masq_task_service tech_masq_task_service –>|підтримує| tech_overwrite_args tech_overwrite_args –>|підтримує| tech_rename_utils tech_rename_utils –>|посилює| tech_obfuscate_strings tech_obfuscate_strings –>|приховує| tech_clear_history tech_clear_history –>|завершує| tech_wipe_timestamps tech_wipe_timestamps –>|підготовка| tech_unix_shell tech_unix_shell –>|ламає| tech_break_process tech_break_process –>|канал для| tech_http_c2 tech_break_process –>|канал для| tech_icmp_tunnel tech_icmp_tunnel –>|використовує| tech_rc4_encryption tech_rc4_encryption –>|додає| tech_data_obfuscation tech_port_knocking –>|активує| tech_socket_filters tech_socket_filters –>|використовується| tech_proxy tech_proxy –>|пересилає| tech_http_c2 tech_proxy –>|пересилає| tech_icmp_tunnel tech_create_process –>|персистентність як| tech_masq_task_service
Потік Атаки
Виявлення
Можливий контакт із динамічним сервісом DNS (через dns)
Переглянути
ІОЦ (HashSha256) для виявлення: Нова Біла книга: Приховані варіанти BPFDoor – це голка, яка виглядає як сіно
Переглянути
Виявлення варіантів BPFDoor через аномалії процесів [Створення процесів Linux]
Переглянути
Виявлення магічного пакета BPFDoor та інцидентів ICMP [Міжмережевий екран]
Переглянути
Виконання Симуляції
Передумова: Проведення попередньої перевірки телеметрії та базового рівня має бути успішним.
Історія Атаки та Команди
-
Створіть шкідливий Bash-скрипт у рідко моніторованому шляху
/var/run/user/0. - Зробіть скрипт виконуваним а потім видаліть файл залишаючи його відкритим, що призводить до видаленого іноду який ядро записує як частину командного рядка, коли процес продовжує працювати.
- Виконайте файл-дескриптор, що залишився відкритим, що змушує процес працювати з видаленого іноду і генерує саме ту телеметрію, на яку орієнтується правило Sigma.
-
Перевірте що командний рядок процесу в журналах аудиту містить рядок “видалений інод”, що задовольняє
вибір3. -
Уникайте виключених маскувальних рядків (
hpasmlited,cmathreshd) щоб забезпечити спрацювання правила.
Скрипт тесту регресії
#!/usr/bin/env bash
# -------------------------------------------------
# Перевірка виконання BPFDoor зі видаленого іноду
# -------------------------------------------------
# 1. Підготуйте шкідливе (безпечне) корисне навантаження
PAYLOAD="/var/run/user/0/malicious.sh"
echo -e "#!/usr/bin/env bashnsleep 60" > "$PAYLOAD"
chmod +x "$PAYLOAD"
# 2. Відкрийте файл дескриптора (залиште файл відкритим)
exec 3<"$PAYLOAD"
# 3. Видаліть файл із файлової системи – інод залишається відкритим через FD 3
rm -f "$PAYLOAD"
# 4. Виконайте скрипт через його невідкріплений файловий дескриптор.
# /proc/self/fd/3 вказує на тепер видалений інод.
bash /proc/self/fd/3 &
# 5. Дайте процесу час на запуск та реєстрацію
sleep 5
# 6. Очищення: закрийте файловий дескриптор
exec 3<&−
echo "Симуляція завершена – перевірте SIEM на наявність попереджень."
Команди Очищення
#!/usr/bin/env bash
# -------------------------------------------------
# Очищення після симуляції BPFDoor
# -------------------------------------------------
# Закрийте будь-які "виснуть" процеси сну, запущені скриптом
pkill -f "sleep 60"
# Переконайтеся, що в цільовій директорії не залишилися файли
rm -f /var/run/user/0/malicious.sh
echo "Очищення завершено."
Кінець Звіту