Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
osxcollector — Инструментарий для сбора и анализа криминалистических доказательств для OS X | Kitploit
Инструменты/GitHubGitHub/yelparchive/osxcollector
Дисковая криминалистикаOSINT (Разведка открытых источников)Криминалистика памятиФорензикаЦифровая криминалистикаРеагирование на ИнцидентыArchived
GitHubyelparchive/osxcollector

osxcollector

Инструментарий для сбора и анализа криминалистических доказательств для OS X

Репозиторий
1.9k23987 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Сайт
Поделиться

osxcollector

Build Status PyPI

OSXCollector: Руководство

OSXCollector — это набор инструментов для сбора и анализа криминалистических данных на OS X.

Криминалистический сбор

Скрипт сбора запускается на потенциально заражённой машине и создаёт JSON-файл, описывающий целевую систему. OSXCollector собирает информацию из plist-файлов, баз данных SQLite и локальной файловой системы.

Криминалистический анализ

Имея на руках результаты сбора, аналитик может ответить на такие вопросы:

  • Заражена ли эта машина?
  • Как вредоносное ПО туда попало?
  • Как предотвратить и выявить дальнейшее заражение?

Компания Yelp автоматизирует анализ большинства сеансов OSXCollector, преобразуя его вывод в легко читаемое и применимое на практике резюме, содержащее только подозрительные объекты. Ознакомьтесь с проектом OSXCollector Output Filters, чтобы узнать, как максимально эффективно использовать автоматизированный анализ вывода OSXCollector.

Выполнение сбора

osxcollector.py — это один Python-файл, который работает без каких-либо зависимостей на стандартной машине OS X. Это упрощает запуск сбора на любой машине — не нужно возиться с brew, pip, конфигурационными файлами или переменными окружения. Просто скопируйте единственный файл на машину и запустите его:

Для запуска достаточно sudo osxcollector.py.

root@kitploit:~
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz

Если вы просто клонировали репозиторий GitHub, osxcollector.py находится внутри каталога osxcollector/, поэтому его нужно запускать так:

root@kitploit:~
$ sudo osxcollector/osxcollector.py

ВАЖНО: убедитесь, что команда python на вашем Mac OS X использует стандартный интерпретатор Python, поставляемый с системой, и не переопределена, например, версией Python, установленной через brew. OSXCollector опирается на несколько нативных привязок Python к библиотекам OS X, которые могут быть недоступны в других версиях Python, кроме той, что была установлена изначально в системе. В качестве альтернативы вы можете запустить osxcollector.py, явно указав нужную версию Python:

root@kitploit:~
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py

Вывод сборщика в формате JSON вместе с некоторыми вспомогательными файлами (например, системными журналами) упаковывается в архив .tar.gz для передачи аналитику.

osxcollector.py также имеет множество полезных опций для изменения работы сборщика:

  • -i INCIDENT_PREFIX/--id=INCIDENT_PREFIX: Задаёт идентификатор, который используется как префикс имени выходного файла. Значение по умолчанию — osxcollect.

    root@kitploit:~
    $ sudo osxcollector.py -i IncontinentSealord
    Wrote 35394 lines.
    Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
    

    Проявите фантазию с именами инцидентов — так легче пережить боль с улыбкой.

  • -p ROOTPATH/--path=ROOTPATH: Задаёт путь к корню файловой системы, на которой выполняется сбор. Значение по умолчанию — /. Это удобно для сбора на образе диска.

    root@kitploit:~
    $ sudo osxcollector.py -p '/mnt/powned'
    
  • -s SECTION/--section=SECTION: Запускает только часть полного сбора. Может быть указано несколько раз. Полный список разделов и подразделов:

    • version

Детали сбора

Сборщик создаёт архив .tar.gz, содержащий все собранные артефакты. В архиве находится JSON-файл с основной информацией. Кроме того, в него включается набор полезных журналов из целевой системы.

Общие ключи

Каждая запись

Каждая строка JSON-файла содержит 1 единицу информации. Существуют общие ключи, присутствующие в каждой JSON-записи:

  • osxcollector_incident_id: Уникальный идентификатор, общий для всех записей.
  • osxcollector_section: Раздел или тип данных, которые содержит эта запись.
  • osxcollector_subsection: Подраздел или более детальное описание типа данных, которые содержит эта запись.
Файловые записи

Для записей, представляющих файлы, имеется несколько полезных ключей:

  • atime: Время последнего доступа к файлу.
  • ctime: Время создания файла.
  • mtime: Время последнего изменения файла.
  • file_path: Абсолютный путь к файлу.
  • md5: MD5-хэш содержимого файла.
  • sha1: SHA1-хэш содержимого файла.
  • sha2: SHA2-хэш содержимого файла.

Для записей, представляющих загруженные файлы:

  • xattr-wherefrom: Список, содержащий URL-адреса источника и реферера для загруженного файла.
  • xattr-quarantines: Строка, описывающая, какое приложение загрузило файл.
SQLite-записи

Для записей, представляющих строку базы данных SQLite:

  • osxcollector_table_name: Имя таблицы, из которой взята строка.
  • osxcollector_db_path: Абсолютный путь к файлу SQLite.

Для записей, представляющих данные, связанные с конкретным пользователем:

  • osxcollector_username: Имя пользователя.

Метки времени

OSXCollector пытается преобразовать метки времени в удобочитаемые строки даты/времени в формате YYYY-mm-dd hh:MM:ss. Для автоматического определения различных типов меток используются эвристики:

  • секунды с начала эпохи
  • миллисекунды с начала эпохи
  • секунды с 2001-01-01
  • секунды с 1601-01-01

Разделы

Раздел version

Текущая версия OSXCollector.

Раздел system_info

Собирает основную информацию о системе:

  • имя системы
  • имя узла
  • выпуск (release)
  • версия
  • архитектура (machine)
Раздел kext

Собирает расширения ядра из:

  • /System/Library/Extensions
  • /Library/Extensions
Раздел startup

Собирает информацию о LaunchAgents, LaunchDaemons, ScriptingAdditions, StartupItems и других элементах входа из:

  • /System/Library/LaunchAgents
  • /System/Library/LaunchDaemons
  • /Library/LaunchAgents
  • ~/Library/LaunchAgents
  • /Library/LaunchDaemons
  • /System/Library/ScriptingAdditions
  • /Library/ScriptingAdditions
  • /System/Library/StartupItems
  • /Library/StartupItems
  • ~/Library/Preferences/com.apple.loginitems.plist

Дополнительную информацию о загрузке Mac OS X можно найти здесь: http://www.malicious-streams.com/article/Mac_OSX_Startup.pdf

Раздел applications

Хэширует установленные приложения и собирает историю установки из:

  • /Applications
  • ~/Applications
  • /Library/Receipts/InstallHistory.plist
Раздел quarantines

Карантины — это, по сути, информация, необходимая для отображения сообщения «Вы уверены, что хотите запустить это?», когда пользователь пытается открыть файл, загруженный из Интернета. Более подробно можно узнать из объяснения Apple Support о карантинах: http://support.apple.com/kb/HT3662

Этот раздел также собирает информацию из XProtect — хэш-проверки вредоносных программ для карантинных файлов. Plist-файл находится по адресу: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.plist

XProtect также добавляет минимальные версии для интернет-плагинов. Этот plist-файл находится по адресу: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist

Раздел downloads

Хэширует загруженные файлы всех пользователей из:

  • ~/Downloads
  • ~/Library/Mail Downloads
  • ~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads
Раздел chrome

Собирает следующую информацию из веб-браузера Google Chrome:

  • История (History)
  • Архивная история (Archived History)
  • Куки (Cookies)
  • Расширения (Extensions)
  • Данные для входа (Login Data)
  • Популярные сайты (Top Sites)
  • Веб-данные (Web Data)

Эти данные извлекаются из ~/Library/Application Support/Google/Chrome/Default

Раздел firefox

Собирает информацию из различных баз данных SQLite в профиле Firefox:

  • Куки (Cookies)
  • Загрузки (Downloads)
  • История форм (Form History)
  • История (History)
  • Пароли (Signons)
  • Разрешения (Permissions)
  • Дополнения (Addons)
  • Расширения (Extensions)
  • Настройки контента (Content Preferences)
  • Отчёт о состоянии (Health Report)
  • Магазин веб-приложений (Webapps Store)

Эта информация извлекается из ~/Library/Application Support/Firefox/Profiles

Более подробно о папке профиля Firefox см. http://kb.mozillazine.org/Profile_folder_-_Firefox

Раздел safari

Собирает информацию из различных plist-файлов и баз данных SQLite в профиле Safari:

  • Загрузки (Downloads)
  • История (History)
  • Расширения (Extensions)
  • Базы данных (Databases)
  • Локальное хранилище (Local Storage)
Раздел accounts

Собирает информацию об учётных записях пользователей:

  • системные администраторы: /private/var/db/dslocal/nodes/Default/groups/admin.plist
  • системные пользователи: /private/var/db/dslocal/nodes/Default/users
  • социальные учётные записи: ~/Library/Accounts/Accounts3.sqlite
  • недавние элементы пользователей: ~/Library/Preferences/com.apple.recentitems.plist
Раздел mail

Хэширует файлы в каталогах почтового приложения:

  • ~/Library/Mail
  • ~/Library/Mail Downloads
Раздел full_hash

Хэширует все файлы на диске. Все до единого. По умолчанию не запускается. Его необходимо запустить с помощью:

root@kitploit:~
$ sudo osxcollector.py -s full_hash

Базовый ручной анализ

Криминалистический анализ — это одновременно искусство и наука. Каждый аналитик увидит несколько иную историю, читая вывод OSXCollector. В этом и заключается часть удовольствия от анализа.

Обычно сбор выполняется на целевой машине, потому что что-то подозрительно: антивирус обнаружил файл, который ему не нравится, глубокая проверка пакетов зафиксировала внешний вызов, мониторинг конечных точек заметил новый элемент автозагрузки. Детали этого первоначального предупреждения — путь к файлу, метка времени, хэш, домен, IP-адрес и т. д. — этого достаточно, чтобы начать.

Метки времени

Простой поиск по grep за несколько минут до и после определённого времени работает отлично:

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'

История браузера

Она здесь. Такой инструмент, как jq, может быть очень полезен для необычного вывода:

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]' | jq 'select(has("url"))|.url'

Один пользователь

root@kitploit:~
$ cat INCIDENT32.json | jq 'select(.osxcollector_username=="ivanlei")|.'

Автоматизированный анализ

Проект OSXCollector Output Filters содержит фильтры, которые обрабатывают и преобразуют вывод OSXCollector. Цель фильтров — упростить анализ результатов работы OSXCollector.

Советы по разработке

Функциональность OSXCollector хранится в одном файле: osxcollector.py. Сборщик должен работать на «чистой» установке OS X без дополнительных пакетов или зависимостей.

Перед редактированием исходного кода убедитесь, что все тесты OSXCollector проходят. Запустить тесты можно с помощью: make test

После внесения изменений в исходный код снова выполните make test, чтобы убедиться, что ваши изменения не нарушили работу тестов.

Лицензия

Эта работа лицензирована в соответствии с GNU General Public License и является производной от https://github.com/jipegit/OSXAuditor

Сообщение в блоге

  • OSXCollector: Forensic Collection and Automated Analysis for OS X — Иван Лейхтлинг (Ivan Leichtling)

Презентации

  • OSXCollector: Automated forensic evidence collection & analysis for OS X — Куба Сендор (Kuba Sendor) на BruCON 0x07
  • Squashing Rotten Apples: Automated forensics & analysis for Mac OS X with OSXCollector — Куба Сендор (Kuba Sendor) на BSides Manchester 2015
  • OSXCollector — Иван Лейхтлинг (Ivan Leichtling) на августовской встрече Macbrained
  • OSXCollector - Automated Forensic Evidence Collection & Analysis for OS X — Иван Лейхтлинг (Ivan Leichtling) на OpenNSM
  • OSXCollector - Automated Forensic Evidence Collection & Analysis for OS X — Иван Лейхтлинг (Ivan Leichtling) на Duo Tech Talk (сообщение в блоге)

Внешние презентации

  • OSX Archaeology: Becoming Indiana Jones with OSXCollector and Strata — Крис Хендерсон (Chris Henderson) и Джастин Ларсон (Justin Larson) на SAINTCon 2015

Ресурсы

Хотите узнать больше о криминалистике OS X?

  • mac4n6.com Сары Эдвардс (Sarah Edward's) — Лучшие презентации по криминалистике Mac.

Несколько других интересных инструментов:

  • KnockKnock — KnockKnock — это скрипт Python командной строки, который отображает постоянные двоичные файлы OS X, настроенные на автоматический запуск при каждой загрузке.
  • Grr — Google Rapid Response: удаленная криминалистика в реальном времени для реагирования на инциденты.
  • osquery — Инструментирование, мониторинг и аналитика операционной системы на основе SQL.
Скачать инструмент
  • system_info
  • kext
  • startup
    • launch_agents
    • scripting_additions
    • startup_items
    • login_items
  • applications
    • applications
    • install_history
  • quarantines
  • downloads
    • downloads
    • email_downloads
    • old_email_downloads
  • chrome
    • history
    • archived_history
    • cookies
    • login_data
    • top_sites
    • web_data
    • databases
    • local_storage
    • preferences
  • firefox
    • cookies
    • downloads
    • formhistory
    • history
    • signons
    • permissions
    • addons
    • extension
    • content_prefs
    • health_report
    • webapps_store
    • json_files
  • safari
    • downloads
    • history
    • extensions
    • databases
    • localstorage
    • extension_files
  • accounts
    • system_admins
    • system_users
    • social_accounts
    • recent_items
  • mail
  • full_hash
  • root@kitploit:~
    $ sudo osxcollector.py -s 'startup' -s 'downloads'
    
  • -c/--collect-cookies: Собирает значения cookie. По умолчанию OSXCollector не выгружает значение cookie, так как оно может содержать конфиденциальную информацию (например, идентификатор сессии).

  • -l/--collect-local-storage: Собирает значения, хранящиеся в локальном хранилище веб-браузеров. По умолчанию OSXCollector не выгружает эти значения, так как они могут содержать конфиденциальную информацию.

  • -d/--debug: Включает подробный вывод и точки останова Python. Если с OSXCollector что-то не так, попробуйте эту опцию.

    root@kitploit:~
    $ sudo osxcollector.py -d