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

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

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

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

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

Категории

Все категории
Loading categories
macos_xprotect — Образовательное углублённое исследование встроенной защиты Apple от вредоносных программ: базы сигнатур, правила YARA, интеграция с Gatekeeper, бинарные файлы для устранения угроз и процесс обнаружения в macOS. | Kitploit
Инструменты/GitHubGitHub/yo-yo-yo-jbo/macos_xprotect
Оборонительные ИнструментыАнализ вредоносных программАнализ Бинарных ФайловОбучение и Образование
GitHubyo-yo-yo-jbo/macos_xprotect

macos_xprotect

Образовательное углублённое исследование встроенной защиты Apple от вредоносных программ: базы сигнатур, правила YARA, интеграция с Gatekeeper, бинарные файлы для устранения угроз и процесс обнаружения в macOS.

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
311 месяц назадЕщё не проверено

Введение в macOS - XProtect

Продолжая мою серию постов о введении в macOS, я решил посвятить короткий пост XProtect.

Что такое XProtect?

XProtect — это встроенная антивирусная система macOS и система сигнатур вредоносных программ от Apple.
Она работает как часть XProtectService, которая сканирует приложения и другой исполняемый контент на наличие известных сигнатур вредоносных программ.
XProtect работает в фоновом режиме и незаметно обновляется Apple через механизм XProtectRemediator (подробнее об этом позже).
XProtect выполняет 3 основные функции:

  • Обнаружение на основе сигнатур — сканирует файлы по базе данных известных сигнатур вредоносных программ.
  • Поведенческое обнаружение (XProtect Remediator) — появилось в macOS Monterey; позволяет XProtect активно сканировать и удалять вредоносные программы на основе подозрительного поведения, а не только статических сигнатур.
  • Блокировка в реальном времени — XProtect предотвращает запуск известного вредоносного ПО до того, как оно сможет выполниться.

Традиционный XProtect

Каталог /Library/Apple/System/Library/CoreServices/XProtect.bundle — это основной бандл, содержащий конфигурацию XProtect и определения сигнатур.
Это системный каталог только для чтения, который незаметно обновляется Apple через обновления XProtect.
Внутри него можно найти несколько интересных файлов, все они периодически обновляются Apple и защищены System Integrity Protection (SIP).

XProtect.plist

Файл /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.plist хранит сигнатуры вредоносных программ, используемые XProtect для обнаружения известных угроз.
Он содержит записи, сопоставляющие семейства вредоносных программ с конкретными правилами обнаружения, включая хэши и шаблоны имён файлов.
Вот пример одного семейства вредоносных программ — Bundalore:

root@kitploit:~
<dict>
        <key>Description</key>
        <string>OSX.Bundlore.D</string>
        <key>LaunchServices</key>
        <dict>
                <key>LSItemContentType</key>
                <string>com.apple.application-bundle</string>
        </dict>
        <key>Matches</key>
        <array>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>46617364554153</string>
                </dict>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>20006500630068006F002000</string>
                </dict>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>20007C0020006F00700065006E00730073006C00200065006E00630020002D006100650073002D003200350036002D0063006600620020002D007000610073007300200070006100730073003A</string>
                </dict>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>002D00730061006C00740020002D00410020002D00610020002D00640020007C002000620061007300680020002D0073</string>
                </dict>
        </array>
</dict>

Это довольно читаемо; единственное, что заслуживает внимания, — аргумент string в каждом совпадении представлен в шестнадцатеричном виде, например, 002D00730061006C00740020002D00410020002D00610020002D00640020007C002000620061007300680020002D0073 соответствует -salt -A -a -d | bash -s.
Конечно, это золотая жила для авторов вредоносных программ, которые точно знают, каких шаблонов следует избегать.

XProtect.meta.plist

Файл /Library/Apple/System/Library/CoreServices/XProtect.bundle/XProtect.meta.plist — это файл метаданных, который определяет дополнительные правила для XProtect, включая политики принудительного применения и информацию о версиях.
Он указывает, какие версии macOS применяют определённые правила XProtect и какие действия выполняются при обнаружении, а также чёрные списки плагинов.
Вот пример:

root@kitploit:~
<key>JavaWebComponentVersionMinimum</key>
<string>1.6.0_45-b06-451</string>
<key>PlugInBlacklist</key>
<dict>
        <key>10</key>
        <dict>
                <key>com.apple.java.JavaAppletPlugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>14.8.0</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.apple.java.JavaPlugin2_NPAPI</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>14.8.0</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.macromedia.Flash Player ESR.plugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>18.0.0.382</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.macromedia.Flash Player.plugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>32.0.0.101</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.microsoft.SilverlightPlugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>5.1.41212.0</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.oracle.java.JavaAppletPlugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>1.8.51.16</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
        </dict>
</dict>

Как видите, они содержат информацию о версиях «заблокированных» плагинов, например.

XProtect.yara

В последних версиях XProtect, похоже, начал поддерживать YARA.
Файл /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.yara содержит несколько YARA-правил в текстовом формате. Вот короткий пример:

root@kitploit:~
rule XProtect_MACOS_SLEEPYSTEGOSAURUS_SYM {
    meta:
        description = "MACOS.SLEEPYSTEGOSAURUS.SYM"
        uuid = "BB4F7D16-C939-4047-A9AF-E74E7B51FAC1"
    strings:
        $a1 = { 45 78 65 63 43 6D 64 }
        $a2 = { 47 65 74 48 6F 73 74 49 6E 66 6F }
        $a3 = { 52 75 6E 53 63 72 69 70 74 }
        $a4 = { 52 75 6E 53 63 72 69 70 74 55 72 6C }
        $a5 = { 4C 61 75 6E 63 68 50 6C 69 73 74 }
        $a6 = { 43 68 65 63 6B 50 72 6F 63 65 73 73 }
        $a7 = { 43 68 65 63 6B 49 6E }
        $a8 = { 52 75 6E 43 6D 64 46 69 6C 65 }
        $a9 = { 53 68 6F 77 48 74 6D 6C }
        $a10 = { 50 6C 69 73 74 48 65 6C 70 65 72 }
        $a11 = { 4C 61 75 6E 63 68 64 48 65 6C 70 65 72 }
        $a12 = { 43 6F 6D 6D 61 6E 64 46 69 6C 65 }
        $a13 = { 57 72 69 74 65 50 6C 69 73 74 }
        $a14 = { 4A 53 4F 4E 46 69 6C 65 50 72 6F 63 65 73 73 6F 72 }
        $a15 = { 43 68 72 6F 6D 65 48 65 6C 70 65 72 }
        $a16 = { 53 61 6E 64 62 6F 78 65 72 }
    condition:
        Macho and filesize < 2MB and all of them
}

Это не пост о YARA-правилах, но, как и раньше, — это золотая жила для авторов вредоносных программ (например, 43 68 65 63 6B 50 72 6F 63 65 73 73 — это CheckProcess).

gk.db

Здесь можно увидеть, как Apple спроектировал интеграцию XProtect с Gatekeeper — правда, этот файл в основном используется syspolicyd.
Файл /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db — это база данных SQLite, содержащая «чёрный список» хэшей файлов и Team ID для блокировки.
Его можно просмотреть с помощью утилиты sqlite3:

root@kitploit:~
jbo@McJbo ~ $ sqlite3 "/Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db" .schema
CREATE TABLE settings (name TEXT, value TEXT, PRIMARY KEY (name));
CREATE TABLE blocked_hashes (hash BLOB, hash_type INTEGER, flags INTEGER, PRIMARY KEY (hash, hash_type));
CREATE TABLE blocked_teams (team_id TEXT, flags INTEGER, PRIMARY KEY (team_id));
jbo@McJbo ~ $ sqlite3 "/Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db" "SELECT * FROM blocked_teams LIMIT 5;"
F9X83Q5222|1
Q6XAB4776L|0
DK5C9Y86C8|0
8VK2WEPW22|0
5LWMEF3EX3|0
jbo@McJbo ~ $

Это снова интересная информация для авторов вредоносных программ, например, чтобы узнать, когда Team ID, использованный для подписи их вредоносного ПО, попал в поле зрения Apple.

Бинарные файлы устранения угроз

Хотя бинарный файл XProtect находится в /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/, там можно найти и дополнительные бинарные файлы.
Это файлы устранения угроз для конкретных семейств:

root@kitploit:~
jbo@McJbo ~ $ ls -l /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/
total 47256
-rwxr-xr-x  1 root  wheel   513696 Feb 27 16:54 XProtect
-rwxr-xr-x  1 root  wheel  2498784 Feb 27 16:54 XProtectRemediatorAdload
-rwxr-xr-x  1 root  wheel  2367952 Feb 27 16:54 XProtectRemediatorBadGacha
-rwxr-xr-x  1 root  wheel  2053968 Feb 27 16:54 XProtectRemediatorBlueTop
-rwxr-xr-x  1 root  wheel  2332752 Feb 27 16:54 XProtectRemediatorBundlore
-rwxr-xr-x  1 root  wheel  2299648 Feb 27 16:54 XProtectRemediatorCardboardCutout
-rwxr-xr-x  1 root  wheel  2333248 Feb 27 16:54 XProtectRemediatorColdSnap
-rwxr-xr-x  1 root  wheel  2052736 Feb 27 16:54 XProtectRemediatorCrapyrator
-rwxr-xr-x  1 root  wheel  2859040 Feb 27 16:54 XProtectRemediatorDolittle
-rwxr-xr-x  1 root  wheel  2205520 Feb 27 16:54 XProtectRemediatorDubRobber
-rwxr-xr-x  1 root  wheel  2334752 Feb 27 16:54 XProtectRemediatorEicar
-rwxr-xr-x  1 root  wheel  2053120 Feb 27 16:54 XProtectRemediatorFloppyFlipper
-rwxr-xr-x  1 root  wheel  2053616 Feb 27 16:54 XProtectRemediatorGenieo
-rwxr-xr-x  1 root  wheel  2053504 Feb 27 16:54 XProtectRemediatorGreenAcre
-rwxr-xr-x  1 root  wheel  2332800 Feb 27 16:54 XProtectRemediatorKeySteal
-rwxr-xr-x  1 root  wheel  4659088 Feb 27 16:54 XProtectRemediatorMRTv3
-rwxr-xr-x  1 root  wheel  2382448 Feb 27 16:54 XProtectRemediatorPirrit
-rwxr-xr-x  1 root  wheel  2333024 Feb 27 16:54 XProtectRemediatorRankStank
-rwxr-xr-x  1 root  wheel  2299728 Feb 27 16:54 XProtectRemediatorRoachFlight
-rwxr-xr-x  1 root  wheel  2384416 Feb 27 16:54 XProtectRemediatorSheepSwap
-rwxr-xr-x  1 root  wheel  2053232 Feb 27 16:54 XProtectRemediatorSnowBeagle
-rwxr-xr-x  1 root  wheel  2350624 Feb 27 16:54 XProtectRemediatorSnowDrift
-rwxr-xr-x  1 root  wheel  2019712 Feb 27 16:54 XProtectRemediatorToyDrop
-rwxr-xr-x  1 root  wheel  2105696 Feb 27 16:54 XProtectRemediatorTrovi
-rwxr-xr-x  1 root  wheel  2332768 Feb 27 16:54 XProtectRemediatorWaterNet
jbo@McJbo ~ $

XProtect Remediator

Новое системное приложение XProtect, расположенное по пути /Library/Apple/System/Library/CoreServices/XProtect.app, было представлено в macOS Monterey и отвечает за запуск XProtect Remediator.
В отличие от традиционного XProtect (который в основном использовал обнаружение на основе сигнатур), XProtect Remediator активно сканирует и удаляет вредоносные программы с заражённых систем.
Он работает как фоновый процесс и может автоматически удалять обнаруженные угрозы без вмешательства пользователя. Каталог /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources содержит скрипты устранения угроз и дополнительную логику обнаружения для активного сканирования.

com.apple.XProtect.agent.scan.plist

Файл /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources/com.apple.XProtect.agent.scan.plist содержит настройки, определяющие, когда выполнять периодические сканирования.
Например:

root@kitploit:~
<key>com.apple.XProtect.PluginService.agent.slow.scan</key>
<dict>
        <key>Repeating</key>
        <true/>
        <key>PowerNap</key>
        <true/>
        <key>CPUIntensive</key>
        <true/>
        <key>DiskIntensive</key>
        <true/>
        <key>AllowBattery</key>
        <false/>
        <key>Priority</key>
        <string>Utility</string>
        <key>Interval</key>
        <integer>604800</integer>
</dict>

Здесь показаны определённые условия производительности и даже период сканирования (604800 секунд = один раз в 7 дней).

MRT

Некоторые из вас, возможно, слышали о MRT (Malware Removal Tool).
MRT, расположенный в /Library/Apple/System/Library/CoreServices/MRT.app, — ещё один компонент безопасности macOS, который работает вместе с XProtect.
Он отвечает за удаление вредоносных программ, обнаруженных XProtect, и работает незаметно в фоновом режиме.
MRT более агрессивен, чем XProtect, в уничтожении обнаруженных угроз и может удалять вредоносные файлы, даже если они в данный момент выполняются.
Обратите внимание, что в отличие от XProtect, MRT не ведёт файлов конфигурации — всё зашито в сам бинарный файл.
Даже обычный просмотр строк основного бинарного файла (/Library/Apple/System/Library/CoreServices/MRT.app/Contents/MacOS/MRT) выявляет интересные строки, например:

root@kitploit:~
import sys,base64;exec(base64.b64decode('
import sys,base64,warnings;warnings.filterwarnings('ignore');exec(base64.b64decode('
import sys;import re, subprocess;cmd = "ps -ef | grep Little\ Snitch | grep -v grep"

Как всё работает вместе

Когда файл загружается через браузер или приложение (например, Safari, Mail, Messages), он помечается флагом карантина (com.apple.quarantine) — я уже упоминал этот флаг в своём предыдущем посте о Gatekeeper.
Gatekeeper проверяет, подписан ли файл и прошёл ли нотаризацию. Если нет, пользователь получает предупреждение перед запуском.
Если запуск разрешён, XProtect сканирует файл на предмет известных сигнатур вредоносных программ (из XProtect.plist, XProtect.yara и так далее).
Если вредоносная программа обнаружена, система предотвращает её запуск. Если вредоносная программа известна и поддаётся устранению, XProtect Remediator или MRT могут удалить или нейтрализовать её.
Apple незаметно обновляет XProtect, MRT и XProtect Remediator в фоновом режиме через процесс XProtectService.

Почётное упоминание — Banshee

Ранее в этом году CheckPoint опубликовали пост об образце вредоносной программы под названием Banshee.
Это привлекло довольно много внимания, поскольку в нём использовался тот же алгоритм шифрования, который бинарные файлы XProtect Remediator используют для «сокрытия своих YARA-правил».
Сам алгоритм прост:

root@kitploit:~
def macos_xprotect_string_decryption(encrypted: bytes, encr_key: int) -> str:
    """
    Author: @Check Point Research
    Decrypts MacOS Xprotect binaries & Banshee Stealer encrypted strings.
    """
    decrypted = "".join(
        chr(
            (encr_key >> ((i * 8) & 0x38) & 0xFF) ^ encrypted[i]
        )
        for i in range(len(encrypted))
    )
    return decrypted.partition("\\x00")[0]

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

root@kitploit:~
10000592a      if (data_1000ffe7e != 0)
10000592c          void* rax_1 = &data_1000fb0a0
100005933          int64_t i = 0
100005951          do
100005940              *rax_1 = *rax_1 ^ (0x363a34363a303900 u>> (i.b & 0x38)).b
100005943              i = i + 8
100005947              rax_1 = rax_1 + 1
100005951          while (i != 0x26ef0)
100005953          data_1000ffe7e = 0

Исследователь безопасности, который первым это обнаружил (ald3ns), выпустил инструмент под названием XPR-dump, который, судя по всему, всё ещё работает с новейшей версией XProtect. Обязательно зацените его!

Итоги

Главный вывод из этого поста: XProtect играет с атакующими в кошки-мышки (как и любой антивирус) — чёрные списки, запуск YARA или простые статические сигнатуры — всё это в ходу.
Тот факт, что эти файлы разворачиваются на всех конечных устройствах и их легко анализировать, позволяет авторам вредоносных программ довольно легко находить простые обходы многих этих проверок.

Оставайтесь на связи!

Jonathan Bar Or (https://jonathanbaror.com)

Скачать инструмент