Кампанія «Safari» від Північної Кореї доставляє RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
У статті розглядається нова шкідлива програма для macOS під назвою Mach-O Man, яка пов’язана з відомим підрозділом Chollima групи Lazarus. Шкідливе програмне забезпечення поширюється через скомпрометовані акаунти Telegram і фальшиві запрошення на зустрічі, які переконують цілі запускати команду ClickFix на своїх пристроях. Інструментарій включає кілька виконуваних Mach-O файлів, призначених для збору деталей про хост, підтримання стійкості та крадіжки облікових даних і даних браузера, при цьому дані передаються через Telegram. Кампанія, схоже, зосереджена на біржах криптовалют та інших організаціях у фінансовому секторі.
Розслідування
Дослідники виявили бінарний файл інсценування з назвою teamsSDK.bin який було завантажено та виконано через послідовність шкідливих команд. Додаткові компоненти, включаючи D1yCPUyk.bin, minst2.bin, і macrasv2, потім використовувалися для інвентаризації системи, створення LaunchAgent для стійкості та збору розширень браузера, даних keychain і файлів cookie. Комунікація командно-контрольного сервера покладалася на сервер HTTP на основі Go, що відкрите кінцеву точку без автентифікації /info і витік токена API бота Telegram. Слідчі також виявили сервіси віддаленого доступу, такі як RDP, WinRM і Chrome Remote Desktop, що відкрили на хості C2.
Зменшення ризиків
Користувачі повинні уникати взаємодії з небажаними посиланнями на зустрічі та підтверджувати легітимність будь-яких термінальних команд, запропонованих під час несподіваних розмов. Організації повинні стежити за несанкціонованими LaunchAgents, вимагати підписання довіреним кодом для виконуваних файлів macOS і обмежувати виконання невідомих файлів. Захист мережі має блокувати вихідні з’єднання із підозрілими HTTP-серверами на основі Go і позначати трафік, що використовує агент Go-http-client юзер агент. Токени бота Telegram повинні бути захищені від розголосу, а сервіси віддаленого доступу повинні бути обмежені контролем доступу з мінімальними привілеями.
Реагування
Команди безпеки повинні виявляти виконання невідомих .bin файлів і стежити за створенням LaunchAgents під назвою com.onedrive.launcher. Також слід генерувати сповіщення про вихідні з’єднання з підозрілою інфраструктурою, що використовують Go-http-client агент, а також повторні POST-запити до /info кінцевих точок. Оборонці повинні стежити за несподіваною активністю API Telegram, пов’язаною з невідомими токенами ботів. Повний форенсік хосту повинен бути проведений для виявлення та видалення всіх шкідливих бінарних файлів, після чого слід скинути облікові дані для будь-яких облікових записів, які могли бути скомпрометовані.
"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ffcc99 classDef process fill:#e6ffe6 classDef file fill:#ffe6cc classDef service fill:#e6e6ff %% Node Definitions initial_access_user_execution["<b>Action</b> – <b>T1204.001 Виконання користувачем</b><br/>Жертва клікає на шкідливий посилання “fix” на зустрічі в Telegram, яке запускає команду curl"] class initial_access_user_execution action tool_curl["<b>Tool</b> – <b>Name</b>: curl<br/><b>Description</b>: утиліта командного рядка для передачі даних з сервера або до сервера"] class tool_curl tool file_teamsSDK_bin["<b>File</b> – <b>Name</b>: teamsSDK.bin (Mach-O)<br/><b>Description</b>: Бінарний файл завантаження, скачаний і виконаний"] class file_teamsSDK_bin file process_curl_download["<b>Process</b> – Завантаження та виконання curl teamsSDK.bin"] class process_curl_download process malware_teamsSDK["<b>Malware</b> – <b>Name</b>: teamsSDK<br/><b>Description</b>: контактує з C2 після виконання"] class malware_teamsSDK malware service_go_http["<b>Service</b> – HTTP-сервер на основі Go<br/><b>Порт</b>: 80/443<br/><b>Кінцева точка</b>: /info (без автентифікації)"] class service_go_http service process_c2_communication["<b>Process</b> – Комунікує з C2 через HTTP POST на /info"] class process_c2_communication process file_minst2_bin["<b>File</b> – <b>Name</b>: minst2.bin"] class file_minst2_bin file process_install_launchagent["<b>Process</b> – Інсталяція plist LaunchAgent для стійкості"] class process_install_launchagent process malware_fake_onedrive["<b>Malware</b> – Фальшивий виконуваний файл “OneDrive”, який запускається при вході"] class malware_fake_onedrive malware tool_macrasv2["<b>Tool</b> – <b>Name</b>: macrasv2<br/><b>Опис</b>: вилучає записи Keychain, паролі браузера, файли cookie, розширення"] class tool_macrasv2 tool process_keychain_extraction["<b>Process</b> – Витягує дані Keychain macOS і дані браузера"] class process_keychain_extraction process action_discovery_system_info["<b>Action</b> – <b>T1082 Виявлення інформації про систему</b><br/>Збирає ID процесора, ім’я хоста, користувача, встановлені додатки"] class action_discovery_system_info action action_discovery_software["<b>Action</b> – <b>T1518 Виявлення ПЗ</b><br/>Перераховує встановлені браузери та розширення"] class action_discovery_software action service_telegram_bot["<b>Service</b> – Telegram Bot API<br/><b>Призначення</b>: Отримання ексфільтрованих облікових даних"] class service_telegram_bot service process_exfiltration["<b>Process</b> – Надсилає зібрані дані боту Telegram"] class process_exfiltration process action_content_injection["<b>Action</b> – <b>T1659 Інжекція контенту</b><br/>Без автентифікації /info кінцева точка дозволяє довільне завантаження файлів"] class action_content_injection action action_dynamic_resolution["<b>Action</b> – <b>T1568 Динамічне розв’язування</b><br/>Розв’язує домен C2 під час виконання"] class action_dynamic_resolution action %% З’єднання initial_access_user_execution –>|використовує| tool_curl tool_curl –>|завантажує| file_teamsSDK_bin file_teamsSDK_bin –>|виконаний| process_curl_download process_curl_download –>|запускає| malware_teamsSDK malware_teamsSDK –>|комунікує з| service_go_http service_go_http –>|отримує дані через| process_c2_communication process_c2_communication –>|тригерний| file_minst2_bin file_minst2_bin –>|інсталює| process_install_launchagent process_install_launchagent –>|створює| malware_fake_onedrive malware_fake_onedrive –>|виконується під час входу| action_discovery_system_info action_discovery_system_info –>|приводить до| action_discovery_software action_discovery_software –>|надає дані| tool_macrasv2 tool_macrasv2 –>|виконує| process_keychain_extraction process_keychain_extraction –>|надає дані| process_exfiltration process_exfiltration –>|надсилає до| service_telegram_bot malware_teamsSDK –>|дозволяє| action_content_injection action_content_injection –>|дозволяє| file_minst2_bin malware_teamsSDK –>|дозволяє| action_dynamic_resolution action_dynamic_resolution –>|розв’язує| service_go_http "
Потік атаки
Виявлення
Підозрілі зміни прав доступу до тимчасового каталогу у MacOS (через командний рядок)
Перегляд
Спроба виконання підозрілого curl [MacOS] (через командний рядок)
Перегляд
IOCs (HashSha256) для виявлення: Північна Корея: Полювання на RATs
Перегляд
Виявлення розгортання комплекту шкідливого ПЗ Mach-O Man [Створення процесу в Linux]
Перегляд
Імітація виконання
Необхідна умова: перевірка телеметрії та базової конфігурації повинна пройти.
Аргументація: цей розділ детально описує точне виконання техніки супротивника (T1546.006 / T1587.001), призначеної для запуску правила виявлення. Команди відображають реалістичне розгортання «living-off-the-land» з бінарними файлами Mach-O Man.
-
Наратив атаки та команди:
- Атакувальник, який вже отримав доступ до хоста macOS, копіює чотири бінарних файли Mach-O Man з місця підготовки (
/tmp/stage) у записувану директорію (/usr/local/bin). - Бінарні файли робляться виконуваними і запускаються послідовно, щоб імітувати ініціалізацію комплексу, розвідку, стійкість та фази крадіжки облікових даних.
- Стійкість досягається шляхом запису плейлиста запуску демонів, що вказує на
minst2.bin.
# Крок 1 - Підготовка бінарних файлів (імітується копіюванням з папки тестових активів) mkdir -p /usr/local/bin/macho cp ./assets/teamsSDK.bin /usr/local/bin/macho/ cp ./assets/D1YrHRTg.bin /usr/local/bin/macho/ cp ./assets/minst2.bin /usr/local/bin/macho/ cp ./assets/macrasv2 /usr/local/bin/macho/ # Крок 2 - Надання виконуваних прав chmod +x /usr/local/bin/macho/*.bin # Крок 3 - Виконання бінарних файлів інсценування та розвідки /usr/local/bin/macho/teamsSDK.bin & /usr/local/bin/macho/D1YrHRTg.bin & # Крок 4 - Встановлення стійкості (запуск демона) для minst2.bin cat <<'EOF' > /Library/LaunchDaemons/com.macho.minst2.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key><string>com.macho.minst2</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/macho/minst2.bin</string> </array> <key>RunAtLoad</key><true/> </dict> </plist> EOF sudo launchctl load -w /Library/LaunchDaemons/com.macho.minst2.plist # Крок 5 - Виконання компонента крадіжки облікових даних/ексфілу /usr/local/bin/macho/macrasv2 & - Атакувальник, який вже отримав доступ до хоста macOS, копіює чотири бінарних файли Mach-O Man з місця підготовки (
-
Скрипт тестування регресії: (самостійний bash-скрипт, що відтворює наведені вище кроки)
#!/usr/bin/env bash set -euo pipefail # --- ЗМІННІ ------------------------------------------------- BIN_DIR="/usr/local/bin/macho" ASSET_DIR="$(pwd)/assets" PLIST="/Library/LaunchDaemons/com.macho.minst2.plist" # --- ПОПЕРЕДНІЙ ЗАСІБ ------------------------------------------------- if [[ $(id -u) -ne 0 ]]; then echo "Скрипт вимагає прав адміністратора для встановлення запуску демона. Перезапустіть із sudo." exit 1 fi # --- РОЗГОРТАННЯ БІНАРНИХ ФАЙЛІВ ------------------------------------------- mkdir -p "$BIN_DIR" for bin in teamsSDK.bin D1YrHRTg.bin minst2.bin macrasv2; do cp "$ASSET_DIR/$bin" "$BIN_DIR/$bin" chmod +x "$BIN_DIR/$bin" done # --- ВИКОНАННЯ ПІДГОТОВКИ ТА РОЗВІДКИ ------------------------------------ "$BIN_DIR/teamsSDK.bin" & "$BIN_DIR/D1YrHRTg.bin" & # --- СТІЙКІСТЬ (запуск демона) ------------------------------- cat <<'EOF' > "$PLIST" <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key><string>com.macho.minst2</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/macho/minst2.bin</string> </array> <key>RunAtLoad</key><true/> </dict> </plist> EOF launchctl load -w "$PLIST" # --- ВИКОНАННЯ КОМПОНЕНТА КРАДІЖКИ ОБЛІКОВИХ ДАНИХ ----------------------- "$BIN_DIR/macrasv2" & echo "Імітація виконана – зачекайте кілька секунд для появи телеметрії." -
Команди очистки:
#!/usr/bin/env bash set -euo pipefail BIN_DIR="/usr/local/bin/macho" PLIST="/Library/LaunchDaemons/com.macho.minst2.plist" # Від'єднати демон запуску if [[ -f "$PLIST" ]]; then sudo launchctl unload -w "$PLIST" sudo rm -f "$PLIST" fi # Зупинити будь-які залишкові шкідливі процеси pkill -f teamsSDK.bin || true pkill -f D1YrHRTg.bin || true pkill -f minst2.bin || true pkill -f macrasv2 || true # Видалити бінарні файли sudo rm -rf "$BIN_DIR" echo "Очищення завершене."