Код PyRAT: Внутрішня структура бекдору на основі Python
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Стаття профілює PyRAT, троян віддаленого доступу на основі Python, упакований як ELF-бінарник за допомогою PyInstaller. Він працює на Linux та Windows, спілкується з сервером C2 через незашифрований HTTP і підтримує виконання команд, ексфільтрацію файлів, захоплення скріншотів та функцію самознищення. Стійкість реалізована через XDG autostart на Linux і ключ реєстру Run на Windows. У звіті наголошено, наскільки легкий цей інструмент і як легко його можуть перепрофілювати кіберзлочинці.
Дослідження
Дослідники видобули вбудований байткод Python за допомогою pyinstxtractor, декомпілювали модулі та ідентифікували основний клас Agent, який виконує відбиток хоста, генерацію UID, керування потоками та координацію C2. Статичний аналіз виявив ключові імпорти, імена файлів, взаємодію з реєстром та HTTP POST-endpoint, який використовується для маяків. Поведінкове тестування показало повний робочий процес: створення стійкості, виконання команд, перерахування файлів, операції завантаження/вивантаження, створення ZIP-архіву, захоплення скріншотів та необов’язкове очищення артефактів.
Пом’якшення
Моніторинг підозрілих .desktop файлів автозапуску, створених у профілях користувачів, та доповнень до ключа реєстру HKCURun з невідомими іменами виконуваних файлів. На мережевому рівні стежте за вихідним HTTP POST-трафіком до невідомих хостів, що націлюється на /api/{uid}/hello-endpoint. На кінцевих точках позначте невідомі ELF-бінарники, що містять вбудований Python-контент та аномальну поведінку процесів, таку як часте виконання підпроцесів.
Відповідь
Якщо виявлено, ізолюйте систему, зберіть зразок ELF та будь-які пов’язані .desktop файли, а також збережіть відповідний стан реєстру. Витягніть UID, адресу C2 та будь-які файли, передані під час виконання, як частину форензіки. Заблокуйте виявлену інфраструктуру C2, видаліть стійкість і виконайте повне очищення. Змініть облікові дані для облікових записів, які могли бути скомпрометовані.
graph TB %% Class Definitions classDef malware fill:#ff9999 classDef technique fill:#99ccff classDef action fill:#ccffcc classDef persistence fill:#ffcc99 classDef cleanup fill:#dddddd %% Node Definitions malware_pyrat[“<b>Шкідливе ПЗ</b> – <b>Назва</b>: PyRAT ELF<br/><b>Опис</b>: RAT для Linux/Windows, що виконується як ELF-бінарник”] class malware_pyrat malware tech_system_info[“<b>Техніка</b> – <b>T1082 Виявлення Інформації про Систему</b><br/>Збирає версію ОС, імʼя хоста та апаратні характеристики”] class tech_system_info technique tech_user_discovery[“<b>Техніка</b> – <b>T1033 Виявлення Власника/Користувача Системи</b><br/>Перелічує активного користувача та дані облікового запису”] class tech_user_discovery technique action_establish_c2[“<b>Дія</b> – Встановлення C2 через незашифрований HTTP POST”] class action_establish_c2 action tech_web_service[“<b>Техніка</b> – <b>T1102.003 Вебсервіс: Односторонній Звʼязок</b><br/>Використовує HTTP POST для надсилання даних на віддалений сервер”] class tech_web_service technique tech_exfil_unenc[“<b>Техніка</b> – <b>T1048.003 Ексфільтрація через Незашифрований Не-C2 Протокол</b><br/>Передає дані без шифрування”] class tech_exfil_unenc technique tech_data_encoding[“<b>Техніка</b> – <b>T1132.002 Кодування Даних: Нестандартне Кодування</b><br/>Застосовує власне кодування перед передачею”] class tech_data_encoding technique action_execute_cmd[“<b>Дія</b> – Виконання Команд”] class action_execute_cmd action tech_windows_shell[“<b>Техніка</b> – <b>T1059.003 Командний Рядок Windows</b><br/>Виконує команди через cmd.exe”] class tech_windows_shell technique tech_unix_shell[“<b>Техніка</b> – <b>T1059.004 Unix Shell</b><br/>Виконує команди через /bin/sh”] class tech_unix_shell technique action_collect_files[“<b>Дія</b> – Збір Файлів та Перелік Файлової Системи”] class action_collect_files action tech_archive[“<b>Техніка</b> – <b>T1560.002 Архівація Зібраних Даних: Через Бібліотеку</b><br/>Стискає дані за допомогою ZIP-бібліотеки”] class tech_archive technique tech_screenshot[“<b>Техніка</b> – <b>T1113 Захоплення Екрана</b><br/>Робить знімок робочого столу”] class tech_screenshot technique tech_persist_linux[“<b>Техніка</b> – <b>T1547.013 XDG Autostart</b><br/>Додає .desktop-запис до каталогу автозапуску користувача”] class tech_persist_linux persistence tech_persist_windows[“<b>Техніка</b> – <b>T1547.014 Ключі Run Реєстру / Папка Автозапуску</b><br/>Створює запис у HKCU\\Run для стійкості”] class tech_persist_windows persistence tech_cleanup[“<b>Техніка</b> – <b>T1070.009 Видалення Індикаторів: Очищення Стійкості</b><br/>Видаляє артефакти стійкості та журнали”] class tech_cleanup cleanup %% Connections malware_pyrat –>|призводить_до| tech_system_info malware_pyrat –>|призводить_до| tech_user_discovery tech_system_info –>|надає інформацію для| action_establish_c2 tech_user_discovery –>|надає інформацію для| action_establish_c2 action_establish_c2 –>|використовує| tech_web_service action_establish_c2 –>|використовує| tech_exfil_unenc action_establish_c2 –>|використовує| tech_data_encoding action_establish_c2 –>|дозволяє| action_execute_cmd action_execute_cmd –>|використовує| tech_windows_shell action_execute_cmd –>|використовує| tech_unix_shell action_execute_cmd –>|призводить_до| action_collect_files action_collect_files –>|призводить_до| tech_archive tech_archive –>|призводить_до| tech_screenshot tech_screenshot –>|дозволяє| tech_persist_linux tech_screenshot –>|дозволяє| tech_persist_windows tech_persist_linux –>|згодом призводить до| tech_cleanup tech_persist_windows –>|згодом призводить до| tech_cleanup
Потік Атаки
Детекції
Можливе Самоусунення Шкідливого ПО або Операція Сховища Stderr (через cmdline)
Перегляд
Архів було створено у папці Linux Tmp (через file_event)
Перегляд
Можливі Точки Стійкості [ASEPs – Hive Software/NTUSER] (через cmdline)
Перегляд
Ймовірна Спроба Видалення Ключів Реєстру (через process_creation)
Перегляд
Ймовірна Спроба Модифікації Файлів Autostart XDG Linux (через cmdline)
Перегляд
Небезпечні Дозволи для Бінарного/Сценарного/Папкового об’єкта було задано (через cmdline)
Перегляд
Індикатори компрометації (HashMd5) для виявлення: Код PyRAT: RAT на основі Python та його Інтернали
Перегляд
Стійкість Windows через Ключ Run поточного користувача [Событие реєстру Windows]
Перегляд
Виявлення Стійкості PyRAT на Linux [Створення процесів Linux]
Перегляд
Виконання симуляції
Передумова: Повинно було пройти Протестування Телеметрії та Базових Даних.
Обґрунтування: У цьому розділі детально описується точне виконання методики противника (TTP), призначеної для запуску правила виявлення. Команди та опис ПОВИННІ безпосередньо відображати ідентифіковані TTP та прагнути генерувати саме ту телеметрію, яку очікує логіка виявлення.
-
Сценарій атак та Команди:
Атакуючий отримав компрометовані SSH облікові дані для звичайного користувача. Після входу вони виконують живий‑за‑рахунок‑землі сценарій, який:
- Записує шкідливий вантаж ELF (
agent-svc.pyc) у домашній каталог користувача, маскуючи його як байткод Python, хоча насправді це ELF-бінарник. - Копіює замаскований інструмент пакета Debian іменований
dpkgnу/usr/local/bin, надаючи йому права виконання. Інструмент є простою оболонкою, яка просто запускає вантаж ELF. - Встановлює запис робочого столу автоматичного завантаження (
dpkgn.desktop) у~/.config/autostartщоб вантаж запускався при кожному запуску графічної сесії. - Встановлює відповідні дозволи щоб уникнути негайного підозрювань.
Комбіновані події з файлами (
agent-svc.pycanddpkgn) задовольняють першу умову правила, тоді як.desktopфайл задовольняє другу умову. - Записує шкідливий вантаж ELF (
-
Скрипт регресійного тестування:
#!/usr/bin/env bash set -euo pipefail # 1. Deploy malicious ELF disguised as .pyc MALWARE_PATH="$HOME/agent-svc.pyc" echo "Creating fake ELF payload (dummy binary) ..." dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none chmod +x "$MALWARE_PATH" # 2. Deploy fake Debian tool named dpkgn FAKE_TOOL="/usr/local/bin/dpkgn" echo "#!/usr/bin/env bash" | sudo tee "$FAKE_TOOL" > /dev/null echo "exec "$MALWARE_PATH" "$@"" | sudo tee -a "$FAKE_TOOL" > /dev/null sudo chmod +x "$FAKE_TOOL" # 3. Create autostart desktop entry AUTOSTART_DIR="$HOME/.config/autostart" mkdir -p "$AUTOSTART_DIR" DESKTOP_FILE="$AUTOSTART_DIR/dpkgn.desktop" cat > "$DESKTOP_FILE" <<EOF [Desktop Entry] Type=Application Exec=$FAKE_TOOL Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name=Package Manager Comment=System Update Service EOF echo "PyRAT persistence artifacts deployed." -
Команди для очищення:
#!/usr/bin/env bash set -euo pipefail # Remove malicious ELF rm -f "$HOME/agent-svc.pyc" # Remove fake tool sudo rm -f /usr/local/bin/dpkgn # Remove autostart entry rm -f "$HOME/.config/autostart/dpkgn.desktop" echo "Cleanup completed."