Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
macos_xprotect — Análisis educativo en profundidad de la protección antimalware integrada de Apple: bases de datos de firmas, reglas YARA, integración con Gatekeeper, binarios de remediación y flujo de detección de macOS. | Kitploit
Herramientas/GitHubGitHub/yo-yo-yo-jbo/macos_xprotect
Herramientas DefensivasAnálisis de MalwareAnálisis de BinariosAprendizaje y Educación
GitHubyo-yo-yo-jbo/macos_xprotect

macos_xprotect

Análisis educativo en profundidad de la protección antimalware integrada de Apple: bases de datos de firmas, reglas YARA, integración con Gatekeeper, binarios de remediación y flujo de detección de macOS.

Ver Repositorio
31hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Introducción a macOS - XProtect

Continuando con mi serie de entradas de blog sobre introducción a macOS, he decidido dedicar una breve entrada a XProtect.

¿Qué es XProtect?

XProtect es el antivirus y sistema de firmas de malware integrado de Apple para macOS.
Funciona como parte de XProtectService, que analiza aplicaciones y otro contenido ejecutable en busca de firmas de malware conocidas.
XProtect trabaja en segundo plano y Apple lo actualiza silenciosamente mediante el mecanismo XProtectRemediator (más sobre esto más adelante).
Tiene 3 funciones principales:

  • Detección basada en firmas: analiza archivos contra una base de datos de firmas de malware conocidas.
  • Detección de comportamiento (XProtect Remediator): introducido en macOS Monterey, permite a XProtect buscar y eliminar malware de forma proactiva basándose en comportamientos sospechosos en lugar de solo firmas estáticas.
  • Bloqueo en tiempo real: XProtect impide la ejecución de software malicioso conocido antes de que pueda ejecutarse.

XProtect tradicional

El directorio /Library/Apple/System/Library/CoreServices/XProtect.bundle es el paquete principal que contiene la configuración de XProtect y las definiciones de firmas.
Es un directorio de solo lectura del sistema y Apple lo actualiza silenciosamente mediante las actualizaciones de XProtect.
Dentro de él, podemos encontrar algunos archivos de interés, todos actualizados periódicamente por Apple y protegidos por Protección de Integridad del Sistema (SIP).

XProtect.plist

El archivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.plist almacena las firmas de malware que XProtect utiliza para detectar amenazas conocidas.
Contiene entradas que asignan familias de malware a reglas de detección específicas, incluidos hashes y patrones de nombres de archivo.
Aquí hay un ejemplo de una familia de malware: 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>46617364654153</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>

Esto es bastante legible para humanos; lo único digno de mención es que el argumento string en cada coincidencia está en representación hexadecimal, p. ej., 002D00730061006C00740020002D00410020002D00610020002D00640020007C002000620061007300680020002D0073 corresponde a -salt -A -a -d | bash -s.
Esto es, por supuesto, una mina de oro para los autores de malware, que saben exactamente qué patrones evitar.

XProtect.meta.plist

El archivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/XProtect.meta.plist es un archivo de metadatos que define reglas adicionales para XProtect, incluidas políticas de aplicación y información de versiones.
Especifica qué versiones de macOS aplican ciertas reglas de XProtect y las acciones tomadas tras la detección, así como listas negras para plugins.
Aquí hay un ejemplo:

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>

Como puedes ver, estos contienen información de versión para plugins "en lista negra", por ejemplo.

XProtect.yara

En versiones recientes, XProtect parece haber comenzado a soportar YARA.
El archivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.yara contiene varias reglas YARA en formato de texto; aquí hay un breve ejemplo:

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
}

Esta no es una entrada de blog sobre reglas YARA, pero como antes: esto es una mina de oro para los autores de malware (p. ej., 43 68 65 63 6B 50 72 6F 63 65 73 73 es CheckProcess).

gk.db

Aquí puedes ver cómo Apple diseñó XProtect para integrarse con Gatekeeper, aunque este archivo es utilizado principalmente por syspolicyd.
El archivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db es una base de datos SQLite que contiene una "lista negra" de hashes de archivos e IDs de equipo a bloquear.
Puedes verla con la utilidad 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 ~ $

Esta es nuevamente información interesante para los autores de malware, por ejemplo, para saber cuándo el ID de equipo que usaron para firmar su malware está en el radar de Apple.

Binarios de remediación

Mientras que el binario XProtect se encuentra en /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/, encontrarás binarios adicionales allí.
Esos son archivos de remediación para familias específicas:

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

Una nueva aplicación de sistema XProtect almacenada como /Library/Apple/System/Library/CoreServices/XProtect.app se introdujo en macOS Monterey y es responsable de ejecutar XProtect Remediator.
A diferencia del XProtect tradicional (que usaba principalmente detección basada en firmas), XProtect Remediator analiza y elimina activamente malware de los sistemas infectados.
Se ejecuta como un proceso en segundo plano y puede eliminar automáticamente amenazas detectadas sin intervención del usuario. El directorio /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources contiene scripts de remediación y lógica de detección adicional para el análisis activo.

com.apple.XProtect.agent.scan.plist

El archivo /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources/com.apple.XProtect.agent.scan.plist contiene configuraciones sobre cuándo ejecutar análisis periódicos.
Por ejemplo:

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>

Esto muestra ciertas condiciones de rendimiento e incluso el período del análisis (604800 segundos = una vez cada 7 días).

MRT

Algunos de vosotros habréis oído hablar de MRT (Malware Removal Tool).
Almacenado en /Library/Apple/System/Library/CoreServices/MRT.app, MRT es otro componente de seguridad de macOS que trabaja junto con XProtect.
Es responsable de eliminar el malware que XProtect ha detectado y opera silenciosamente en segundo plano.
MRT es más agresivo que XProtect a la hora de erradicar amenazas detectadas y puede eliminar archivos maliciosos incluso si se están ejecutando actualmente.
Ten en cuenta que, a diferencia de XProtect, MRT no mantiene archivos de configuración: todo está integrado en el binario.
Incluso mirar las cadenas del binario principal (/Library/Apple/System/Library/CoreServices/MRT.app/Contents/MacOS/MRT) revela cadenas interesantes, p. ej.:

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"

Cómo funciona todo en conjunto

Cuando un archivo se descarga mediante un navegador o una aplicación (p. ej., Safari, Mail, Mensajes), se marca con un atributo de cuarentena (com.apple.quarantine): ya mencioné ese atributo en mi entrada de blog anterior sobre Gatekeeper.
Gatekeeper comprueba si el archivo está firmado y notarizado. Si no lo está, el usuario recibe una advertencia antes de la ejecución.
Si se permite la ejecución, XProtect analiza el archivo contra sus firmas de malware conocidas (de XProtect.plist, XProtect.yara, etc.).
Si se detecta malware, el sistema impide la ejecución. Si el malware es conocido y puede remediarse, XProtect Remediator o MRT pueden eliminarlo o neutralizarlo.
Apple actualiza XProtect, MRT y XProtect Remediator silenciosamente en segundo plano mediante el proceso XProtectService.

Mención honorífica: Banshee

A principios de este año, CheckPoint publicó una entrada de blog sobre una muestra de malware denominada Banshee.
Esto recibió bastante atención porque utilizaba el mismo algoritmo de cifrado que los binarios de XProtect Remediator usan para "ocultar sus reglas YARA".
El algoritmo en sí es 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]

Obviamente, los autores de malware pensaron que este algoritmo no se puede firmar estáticamente (ya que está garantizado que generará falsos positivos).
Encontré un código similar en la mayoría de los binarios de remediación, p. ej.:

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

El investigador de seguridad que inicialmente descubrió esto (ald3ns) ha lanzado una herramienta llamada XPR-dump que parece seguir funcionando con la versión más reciente de XProtect. ¡Definitivamente deberías echarle un vistazo!

Resumen

La conclusión más importante de esta entrada de blog es que XProtect juega al gato y al ratón con los atacantes (como cualquier antivirus): las listas negras, la ejecución de YARA o las simples firmas estáticas están todas en el ámbito.
El hecho de que esos archivos se desplieguen en todos los endpoints y sean fáciles de analizar hace que sea bastante fácil para los autores de malware encontrar evasiones simples para muchas de esas comprobaciones.

¡Mantente atento!

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

Descargar herramienta