Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/yo-yo-yo-jbo/macos_xprotect
Outils DéfensifsAnalyse de MalwareAnalyse de BinairesApprentissage et Éducation
GitHubyo-yo-yo-jbo/macos_xprotect

macos_xprotect

Plongée pédagogique dans la protection intégrée d'Apple contre les malwares : bases de données de signatures, règles YARA, intégration de Gatekeeper, binaires de remédiation et flux de détection macOS.

Voir le dépôt
31il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Introduction à macOS - XProtect

Poursuivant ma série d'articles de blog sur l'introduction à macOS, j'ai décidé de consacrer un court article à XProtect.

Qu'est-ce que XProtect ?

XProtect est le système antivirus et de signatures de logiciels malveillants intégré d'Apple pour macOS.
Il fonctionne dans le cadre du service XProtectService, qui analyse les applications et autres contenus exécutables à la recherche de signatures de logiciels malveillants connues.
XProtect fonctionne en arrière-plan et est mis à jour silencieusement par Apple via le mécanisme XProtectRemediator (plus de détails plus loin).
Il a 3 fonctions principales :

  • Détection par signatures – Il analyse les fichiers par rapport à une base de données de signatures de logiciels malveillants connues.
  • Détection comportementale (XProtect Remediator) – Introduit dans macOS Monterey, cela permet à XProtect de rechercher et de supprimer de manière proactive les logiciels malveillants en se basant sur des comportements suspects plutôt que sur de simples signatures statiques.
  • Blocage en temps réel – XProtect empêche l'exécution de logiciels malveillants connus avant qu'ils ne puissent s'exécuter.

XProtect traditionnel

Le répertoire /Library/Apple/System/Library/CoreServices/XProtect.bundle est le principal bundle qui contient la configuration et les définitions de signatures de XProtect. Il s'agit d'un répertoire système en lecture seule, mis à jour silencieusement par Apple via les mises à jour de XProtect. Dans ce répertoire, on trouve certains fichiers intéressants, tous mis à jour périodiquement par Apple et protégés par .



System Integrity Protection (SIP)

XProtect.plist

Le fichier /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.plist stocke les signatures de logiciels malveillants utilisées par XProtect pour détecter les menaces connues.
Il contient des entrées associant des familles de logiciels malveillants à des règles de détection spécifiques, notamment des hashs et des modèles de noms de fichiers.
Voici un exemple d'une famille de logiciels malveillants - 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>

C'est assez lisible, la seule partie notable est que l'argument string de chaque correspondance est en représentation hexadécimale, par exemple 002D00730061006C00740020002D00410020002D00610020002D00640020007C002000620061007300680020002D0073 correspond à -salt -A -a -d | bash -s.
C'est, bien sûr, une mine d'or pour les auteurs de logiciels malveillants, qui savent exactement quels modèles éviter.

XProtect.meta.plist

Le fichier /Library/Apple/System/Library/CoreServices/XProtect.bundle/XProtect.meta.plist est un fichier de métadonnées qui définit des règles supplémentaires pour XProtect, notamment les politiques d'application et les informations de version.
Il spécifie quelles versions de macOS appliquent certaines règles de XProtect et les actions prises lors de la détection, ainsi que les listes noires pour les plugins.
Voici un exemple :

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>

Comme vous pouvez le voir, ceux-ci contiennent par exemple des informations de version pour les plugins "mis sur liste noire".

XProtect.yara

Dans les versions récentes, XProtect semble avoir commencé à prendre en charge YARA.
Le fichier /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.yara contient plusieurs règles YARA au format texte, voici un court exemple :

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
}

Cet article n'est pas consacré aux règles YARA, mais comme précédemment - c'est une mine d'or pour les auteurs de logiciels malveillants (par exemple 43 68 65 63 6B 50 72 6F 63 65 73 73 correspond à CheckProcess).

gk.db

Ici, vous pouvez voir comment Apple a conçu XProtect pour être intégré à Gatekeeper - ce fichier est cependant principalement utilisé par syspolicyd.
Le fichier /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db est une base de données SQLite contenant une "liste noire" de hashs de fichiers et d'identifiants d'équipe à bloquer.
Vous pouvez le consulter avec l'utilitaire 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 ~ $

C'est encore une fois une information intéressante pour les auteurs de logiciels malveillants, par exemple - pour savoir quand l'identifiant d'équipe qu'ils ont utilisé pour signer leur logiciel malveillant est sur le radar d'Apple.

Binaires de remédiation

Alors que le binaire XProtect se trouve dans /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/, vous y trouverez des binaires supplémentaires.
Ce sont des fichiers de remédiation pour des familles spécifiques :

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

Une nouvelle application système XProtect stockée sous /Library/Apple/System/Library/CoreServices/XProtect.app a été introduite dans macOS Monterey et est responsable de l'exécution de XProtect Remediator.
Contrairement au XProtect traditionnel (qui utilisait principalement la détection par signatures), XProtect Remediator analyse et supprime activement les logiciels malveillants des systèmes infectés.
Il s'exécute en tant que processus d'arrière-plan et peut automatiquement supprimer les menaces détectées sans intervention de l'utilisateur.
Le répertoire /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources contient des scripts de remédiation et une logique de détection supplémentaire pour l'analyse active.

com.apple.XProtect.agent.scan.plist

Le fichier /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources/com.apple.XProtect.agent.scan.plist contient des paramètres sur le moment où exécuter des analyses périodiques.
Par exemple :

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>

Cela montre certaines conditions de performance et même la période d'analyse (604800 secondes = une fois tous les 7 jours).

MRT

Certains d'entre vous ont peut-être entendu parler de MRT (Malware Removal Tool).
Stocké dans /Library/Apple/System/Library/CoreServices/MRT.app, MRT est un autre composant de sécurité de macOS qui fonctionne aux côtés de XProtect.
Il est responsable de la suppression des logiciels malveillants détectés par XProtect et fonctionne silencieusement en arrière-plan.
MRT est plus agressif que XProtect pour éradiquer les menaces détectées et peut supprimer des fichiers malveillants même s'ils sont en cours d'exécution.
Notez que contrairement à XProtect, MRT ne conserve pas de fichiers de configuration - tout est intégré dans le binaire.
Même l'examen des chaînes de caractères du binaire principal (/Library/Apple/System/Library/CoreServices/MRT.app/Contents/MacOS/MRT) révèle des chaînes intéressantes, par exemple :

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"

Comment tout fonctionne ensemble

Lorsqu'un fichier est téléchargé via un navigateur ou une application (par exemple Safari, Mail, Messages), il est marqué avec un attribut de quarantaine (com.apple.quarantine) - j'ai déjà mentionné cet attribut dans mon précédent article de blog sur Gatekeeper.
Gatekeeper vérifie si le fichier est signé et notarisé. Si ce n'est pas le cas, l'utilisateur reçoit un avertissement avant l'exécution.
Si l'exécution est autorisée, XProtect analyse le fichier par rapport à ses signatures de logiciels malveillants connues (issues de XProtect.plist, XProtect.yara, etc.).
Si un logiciel malveillant est détecté, le système empêche son exécution. Si le logiciel malveillant est connu et peut être traité, XProtect Remediator ou MRT peut le supprimer ou le neutraliser.
Apple met à jour XProtect, MRT et XProtect Remediator silencieusement en arrière-plan via le processus XProtectService.

Mention honorable - Banshee

Plus tôt cette année, CheckPoint a publié un article de blog sur un échantillon de logiciel malveillant surnommé Banshee.
Cela a suscité beaucoup d'attention car il utilisait le même algorithme de chiffrement que les binaires XProtect Remediator utilisent pour "masquer leurs règles YARA".
L'algorithme lui-même est simple :

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]

De toute évidence, les auteurs de logiciels malveillants pensaient que cet algorithme ne pouvait pas être détecté par des signatures statiques (car il est garanti de générer des faux positifs).
J'ai trouvé un code similaire dans la plupart des binaires de remédiation, par exemple :

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

Le chercheur en sécurité qui l'a initialement découvert (ald3ns) a publié un outil appelé XPR-dump qui semble encore fonctionner avec la version la plus récente de XProtect. Vous devriez absolument y jeter un œil !

Résumé

Le principal enseignement de cet article est que XProtect joue au chat et à la souris avec les attaquants (comme n'importe quel antivirus) - la mise sur liste noire, l'exécution de YARA ou les simples signatures statiques font toutes partie du jeu.
Le fait que ces fichiers soient déployés sur tous les terminaux et soient faciles à analyser permet aux auteurs de logiciels malveillants de trouver facilement des contournements pour bon nombre de ces contrôles.

Restez à l'écoute !

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

Télécharger l’outil