
При расследовании киберинцидентов специалистам необходимо оперативно собрать и проанализировать артефакты на затронутых устройствах. Эта задача становится особенно сложной, когда на устройствах нет системы мониторинга и реагирования, которая отправляет телеметрию и алерты в централизованное хранилище.
Современные атаки, особенно те, что управляются человеком, оставляют минимум следов, и их сложно обнаружить стандартными средствами защиты. Но совсем незаметно действовать невозможно — какие-то артефакты все равно остаются. Проблема в том, что потенциально полезных артефактов много, но по сути это разные структуры данных: где-то логи ОС, где-то персистентные кеши. Многие артефакты плохо задокументированы, а о каких-то вообще нет доступной информации. Бесплатные инструменты для их сбора имеют недостатки: например, собирают неполные данные, поддерживают не все ОС.
В этой статье разбираем, как расследовать инциденты с помощью бесплатного инструмента BI.ZONE Triage, у которого появилась версия для macOS. Хотя эта ОС обладает встроенными механизмами защиты: XProtect, Malware Removal Tool и другими, устройства Apple остаются уязвимыми, в том числе для сложных APT-угроз и изощренных методов обхода встроенной защиты. Расскажем об особенностях сбора и анализа артефактов в macOS-среде и покажем, как инструмент помогает найти скрытые следы атак.
Как устроена утилита BI.ZONE Triage
BI.ZONE Triage помогает оперативно собрать криминалистические артефакты с операционных систем, провести расследование и оценить системы на факт компрометации. В частности, решение:
-
Проводит глубокую и подробную инвентаризацию текущего состояния устройства: от перечня запущенных процессов до списка подключенных к нему устройств.
-
Сканирует файловую систему устройства предоставленными пользователем YARA-правилами, чтобы выявить известные паттерны вредоносных файлов.
-
Сканирует системы предоставленным набором индикаторов компрометации.
BI.ZONE Triage не заменяет EDR-решение, так как у него более узкие задачи и функциональность.
Сравнение особенностей BI.ZONE Triage и EDR-решения
|
BI.ZONE Triage |
Коммерческое EDR-решение |
|
|---|---|---|
|
Назначение |
Бесплатный инструмент для сбора и анализа данных, который используется для расследований и оценки системы на факт компрометации |
Комплексное решение для защиты от современных киберугроз, которое обеспечивает постоянный мониторинг и защиту систем в режиме реального времени |
|
Принцип работы |
Применяется точечно для сбора необходимых данных и анализа уже произошедших событий |
Работает непрерывно, предотвращая атаки и моментально реагируя на них |
|
Особенности |
Использует те же механизмы сбора данных и анализа, что и, например, BI.ZONE EDR, но в более упрощенном и доступном формате для проведения расследований |
Собирает большой объем телеметрии и анализирует ее в реальном времени на признаки атак. Данные доступны для анализа в централизованном хранилище |
Версия BI.ZONE Triage для macOS представляет собой бинарный файл с облегченным агентом BI.ZONE EDR для macOS. Для запуска файла не потребуется дополнительных компонентов. Скачать бесплатную утилиту можно с GitHub. Запуск возможен только с привилегиями root.
Какие данные можно собирать
Для сбора данных в BI.ZONE Triage предусмотрено использование профилей (Profiles) и пресетов (Presets). Каждый профиль включает в себя набор данных ОС, сгруппированных по смыслу. В свою очередь, каждый пресет включает набор определенных профилей.
Набор собираемых данных в каждом профиле обширен (описание структуры и списка артефактов доступно на GitHub). Приведем примеры, чтобы разобраться, зачем нужно столько типов артефактов, что полезного в них можно найти и что подозрительного в них может быть.
Профили
|
Профиль |
Описание |
Что позволяет выявлять |
|---|---|---|
|
|
Данные о хосте (имя хоста, информация об ОС, информация о процессоре и т. д.) |
— Устройства, присутствующие в инфраструктуре (инвентаризация) — Используемые ОС, включая сильно устаревшие и неподдерживаемые Apple |
|
|
Информация об IP-адресах и интерфейсах системы, записях ARP, маршрутах, записях в файлах hosts и resolv, а также информация о сетях Wi-Fi |
— Модифицированный файл /etc/hosts для перенаправления корпоративных доменов на неизвестные IP-адреса — Необычные записи в таблице маршрутизации — Разрешение доменов Apple, использующие IP-адреса, отличные от Apple — Другие отклонения в сетевой конфигурации ОС |
|
|
Активные сетевые подключения, открытые на прослушивание порты |
— Процессы, прослушивающие нестандартные порты (например, 4444) — Исходящие соединения с известными вредоносными IP-адресами — Активность C2-фреймворков (долгоживущие соединения с неизвестным IP-адресом) — Другие отклонения в поведении ОС в сети |
|
|
Инвентаризация запущенных процессов |
— Процессы, запущенные из /tmp или других необычных мест — Аномальные связи между родителем процесса и самим процессом (например, сценарии, в которых Python запускает curl, и другие) — Процессы со случайными именами — Другие подозрительные активности процессов |
|
|
Активные пользовательские сессии |
— Сеансы, поддерживающие соединение в течение необычно длительного времени (длительный uptime) — Успешные входы в систему в необычное время суток — Необычные типы сеансов (например, SSH, в случаях когда он не должен использоваться, ведь по умолчанию в macOS служба SSH отключена) — Другие аномалии в пользовательских сессиях |
|
|
Пользователи, группы, SSH-ключи, правила sudoers, информация из файлов known_hosts |
— Неизвестные учетные записи из локальной группы администраторов — Слишком широкие правила в sudoers, позволяющие повысить привилегии — Скрытые учетные записи пользователей — Известные ключи вредоносных серверов, с которых подключались к macOS-хосту по SSH |
|
|
Данные автозагрузки cron, at, LaunchAgent, LaunchDaemon, библиотеки из DYLD_* |
— Запуск LaunchAgent/LaunchDaemon из /tmp, /Downloads и т. д. — Процессы, в которых на момент запуска были использованы переменные среды — Необычные задания cron или at — Другие подозрительные артефакты закрепления злоумышленников на устройстве |
|
|
История попыток входа в систему |
— Неудачные попытки входа с одного и того же IP-адреса — Попытки входа с использованием стандартных, распространенных или системных имен пользователей (например, nginx, apache или root) — Необычные методы входа (например, SSH, когда он не должен использоваться) — Входы в систему с IP-адресов скомпрометированных хостов |
|
|
История вводимых команд (.bash_history и т. п.) |
— Команды, использующиеся для отключения механизмов безопасности (межсетевого экрана, GateKeeper, EDR и т. д.) — Наличие закодированных base64 строк — Попытки получения доступа к чувствительным или критичным файлам, например к sudoers — Попытки загрузки и запуска файлов, например, при помощи curl или bash — Другие команды, которые обычно не запускаются пользователями в стандартных сценариях работы |
|
|
Информация об общих ресурсах SMB/NFS |
— Общие ресурсы с включенным анонимным доступом — Общие ресурсы, предоставляющие доступ к конфиденциальным каталогам |
|
|
Docker-контейнеры (Running, Stopped) |
— Контейнеры созданные с использованием недоверенных образов — Контейнеры, в которых работают майнеры криптовалюты — Другие факты несанкционированного использования контейнеров |
|
|
Информация об используемых репозиториях, установленных пакетах (системные, Python, Ruby, Homebrew и т. д.), информация об установленном ПО |
— Пакеты или приложения, установленные из неизвестных репозиториев — Недавно установленные пакеты, чьи файлы совпадают с хешами известных вредоносных программ — Уязвимые версии пакетов или приложений |
|
|
Инвентаризация файлов в home-каталогах пользователей системы |
— Скрытые подозрительные каталоги — Недавно измененные/созданные конфиденциальные файлы или файлы с секретами (пароли, API-ключи, приватные SSH-ключи) — Потенциальные следы действий злоумышленника в виде файлов |
|
|
Инвентаризация файлов в ключевых директориях системы с обогащением атрибутами файловой системы ( |
— Модифицированные системные двоичные файлы — Неподписанные расширения ядра — Файлы с измененными временными метками — Хеши файлов, относящихся к известным IoC — Необычные атрибуты файлов |
|
|
Инвентаризация файлов на рабочем столе пользователя и папки загрузок |
— Файлы, загруженные с известных вредоносных доменов — Файлы с двойными расширениями — Недавно загруженные подозрительные файлы — Файлы, соответствующие хешам известных вредоносных программ |
|
|
Инвентаризация настроек встроенных механизмов безопасности (SIP, FileVault, GateKeeper, XProtect) |
— Статус механизмов безопасности (SIP, Gatekeeper, FileVault, ALF) — Статус и наличие актуальных установленных сигнатур XProtect — Права TCC для сервисов (в т. ч. информация о Full Disk Access, FDA) |
|
|
Информация о подключенных устройствах (USB, Bluetooth) |
— Устройства, подключенные во время инцидентов безопасности — Потенциально вредоносные USB-устройства |
|
|
Инвентаризация системных настроек (Airdrop, настройка удаленного доступа, проверка подключения устройства к домену) |
Проверка текущей конфигурации ОС на предмет наличия небезопасных настроек удаленного доступа |
|
|
Инвентаризация файловой системы (папки загрузок, файлов из корзины) и инвентаризация установленных SUID/SGID-прав на файлы |
— Недавно удаленные в корзину файлы — Файлы с широкими правами (например, системные) — Бинарные файлы с установленными SUID\SGID-правами |
|
|
Расширенная информация о браузерах (список установленных расширений) |
— Подозрительные браузерные расширения — Уязвимые браузерные расширения |
|
|
Инвентаризация карантинных файлов (по результатам проверки XProtect) |
Файлы, попавшие в карантин XProtect |
|
|
Инвентаризация VPN профилей в ОС |
Установленные VPN-профили в системе |
Набор потенциальных индикаторов компрометации шире, чем примеры, перечисленные в столбце «Что позволяет выявлять».
Пресеты
Использование пресетов позволяет не перечислять все профили по отдельности.
Профили объединяются в группы следующим образом:
|
Пресет |
Профиль |
|---|---|
|
|
Все существующие профили |
|
|
|
|
|
|
|
|
|
Пресеты и профили при запуске указываются через запятую, например -p=logonhist,cmdhist или -p=investigation,containers. Чтобы при запуске пресета исключить из него определенные профили, каждый исключаемый профиль указывается с префиксом ‘-‘. Например, для сбора данных по всем профилям, кроме autoruns, используется ключ со следующим значением: -p=full,-autoruns.
Как сканировать систему с помощью YARA-правил
Кроме заранее подготовленных механизмов сбора данных можно проверять объекты файловой системы с помощью собственных YARA-правил, а также искать известные индикаторы компрометации.
Пример, когда с помощью YARA-правил обнаружили подозрительный файл:
Как проверить файловую систему на наличие файловых IoC
Рассмотрим пример, когда нужно собрать данные по файлам в ключевых директориях ОС, а также проверить их на наличие индикаторов компрометации из заданного набора. В решении BI.ZONE Triage для этого используется пресет iocsfs. Для проверки подготовим файл с набором индикаторов. Искать будем по хешам MD5.
Подготовим файл с хешем искомого файла iocs.txt:
90B05F1916CBD2DE0A4A7E139A0EDA9A
Далее выполним команду:
sudo ./bz_triage -p=iocsfs --stdout 2>/dev/null | grep -f ./iocs.txt
Таким образом, если искомые файлы найдутся, мы получим вывод записей JSON с информацией о них в STDOUT:
Как отправлять события в Elasticsearch
С помощью BI.ZONE Triage также можно разными способами выводить результаты. Кроме классических способов вывода в STDOUT и в файл, существует возможность оправлять данные по сети в произвольный IP:port. Этот сценарий позволяет собирать и централизованно хранить данные от BI.ZONE Triage, а также работать с ними, например в Elasticsearch.
Рассмотрим пример отправки событий в эту систему. Для этого подготовим конфигурацию Logstash и индекс в Elasticsearch. Простой пример конфигурации с последующей передачей данных может выглядеть следующим образом:
input { tcp { id => "watch_to_logstash" port => 5000 codec => json } }filter { } output { elasticsearch { id => "logstash-esm-indexer" hosts => ["https://10.10.10.11:9200"] user => "${BZ_TRIAGE_USER}" password => "${BZ_TRIAGE_PASS}" ilm_enabled => false manage_template => false index => "bz-triage-esm" ssl_certificate_verification => false } }
Пример команды запуска утилиты BI.ZONE Triage для отправки результата по сети:
sudo ./bz_triage -p=investigation --yararules=./rules.yar --yaradir=/tmp --dsthost=logstash.elk.local --dstport=5000
В результате выполнения команды:
-
будут собраны данные, указанные в пресете
investigation(все профили последовательно); -
YARA-сканер просканирует директорию /tmp с поддиректориями до третьего уровня (установлен по умолчанию);
-
все события будут переданы в виде отдельных записей JSON в logstash на адрес logstash.elk.local и TCP-порт 5000.
Как расследовать инцидент при помощи BI.ZONE Triage
Сотрудник обратился в службу кибербезопасности компании с запросом:
Я отвлекся на секунду, и на рабочем столе появилось окно от «Связки ключей» с просьбой ввести пароль. Затем появилось что-то странное, и устройство начало сильно греться.
Прикрепляю скриншот:

Поскольку macOS-устройства в компании не покрыты EDR-агентами, аналитик кибербезопасности анализирует события с помощью BI.ZONE Triage.
Чтобы было удобнее анализировать данные, результаты сбора событий отправляются по сети в Elasticsearch, поэтому на потенциально зараженном устройстве выполняется команда:
sudo ./bz_triage -p=all --dsthost=logstash.elk.local --dstport=5000
По команде с ОС собираются полезные артефакты, а затем эти данные отправляются в Elasticsearch, в котором аналитик и будет анализировать события.
Пошаговый анализ событий
1. Анализ событий BI.ZONE Triage. Поиск по истории вводимых в терминал (*_history) подозрительных команд.
Запрос Lucene:
dev_os_type:macos AND event_type:ConsoleCommandInfo
Обнаружена подозрительная активность:

Osascript и AppleScript — это языки сценариев Apple, используемые для автоматизации задач на macOS. Они позволяют пользователям управлять приложениями и системными функциями, отправляя команды и выполняя сценарии.
Эта активность является специфичной. Как правило, она используется злоумышленниками или ВПО для получения пользовательского пароля в открытом виде, чтобы выполнять последующие команды в привилегированном режиме.
2. Поиск подозрительных запущенных процессов.
Запрос Lucene:
dev_os_type:macos AND event_type:ProcessInfo
Обнаружен подозрительный процесс:

Видно, что в момент запуска BI.ZONE Triage также был запущенный процесс XMRig (известный майнер криптовалют).
3. Определение способа доставки файла на устройство.
Запрос Lucene:
dev_os_type:macos AND event_type:ConsoleCommandInfo AND cmdline:("wget" OR "curl")
Обнаружен подозрительный запуск curl:

4. Выявление активных пользователей и способа их входа.
Запрос Lucene:
dev_os_type:macos AND event_type:LogonHistorySuccess
Способ входа пользователя — SSHD:

По умолчанию служба SSH в macOS отключена. Эта активность — специфична и свидетельствует об успешной компрометации устройства.
Также замечаем событие успешного входа от службы VNC:

5. Поиск дополнительных артефактов, чтобы определить, что еще злоумышленник успел сделать на устройстве.
Запрос Lucene:
dev_os_type:macos AND event_type:ConsoleCommandInfo
Обнаружены попытки дополнительно собрать информацию:


Итог расследования
-
Злоумышленник подключился к устройству удаленно через настроенные службы, такие как VNC. Используя инструменты, позволяющие обойти аутентификацию, он смог войти в текущую сессию без необходимости вводить пароль.
-
Затем злоумышленник применил скрипт на AppleScript через Osascript для инициирования поддельного оконного интерфейса, напоминающего стандартный запрос на ввод пароля от приложения KeyChain, который просит пароль с поддельным текстом. Когда пользователь ввел настоящий пароль, злоумышленник получил его в формате plain-text.
-
После захвата пароля и получения доступа к устройству, злоумышленник провел разведку, анализируя файловую систему. Не найдя ничего ценного, он установил и запустил ПО для майнинга, которое использует ресурсы устройства для добычи криптовалют и позволяет извлекать прибыль за счет вычислительных мощностей жертвы.
Заключение
Современные атаки, управляемые человеком, реализуются так, чтобы оставлять минимальное количество следов на ОС и быть незаметными для средств защиты. Однако совсем не наследить почти невозможно. Поэтому критически важно в процессе расследования иметь под рукой инструменты, которые позволят провести глубокий анализ доступных артефактов ОС.
BI.ZONE Triage поможет автоматизированно собрать эти артефакты, значительно упростит их анализ, а также позволит отправить данные в централизованное хранилище. Решение доступно бесплатно и поддерживает macOS и Linux.
ссылка на оригинал статьи https://habr.com/ru/articles/918750/
Добавить комментарий