Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
macos_xprotect — Mergulho educacional aprofundado na proteção integrada contra malware da Apple: bancos de dados de assinaturas, regras YARA, integração com o Gatekeeper, binários de remediação e fluxo de detecção do macOS. | Kitploit
Ferramentas/GitHubGitHub/yo-yo-yo-jbo/macos_xprotect
Ferramentas DefensivasAnálise de MalwareAnálise de BináriosAprendizado e Educação
GitHubyo-yo-yo-jbo/macos_xprotect

macos_xprotect

Mergulho educacional aprofundado na proteção integrada contra malware da Apple: bancos de dados de assinaturas, regras YARA, integração com o Gatekeeper, binários de remediação e fluxo de detecção do macOS.

Ver Repositório
31há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Introdução ao macOS - XProtect

Dando continuidade à minha série de posts sobre introdução ao macOS, decidi dedicar um pequeno post ao XProtect.

O que é o XProtect?

O XProtect é o sistema antivírus e de assinaturas de malware integrado da Apple para macOS.
Ele opera como parte do XProtectService, que verifica aplicações e outros conteúdos executáveis em busca de assinaturas de malware conhecidas.
O XProtect funciona em segundo plano e é atualizado silenciosamente pela Apple por meio do mecanismo XProtectRemediator (mais sobre isso adiante).
Ele tem 3 funções principais:

  • Detecção baseada em assinaturas – Ele verifica arquivos contra um banco de dados de assinaturas de malware conhecidas.
  • Detecção comportamental (XProtect Remediator) – Introduzido no macOS Monterey, isso permite que o XProtect verifique proativamente e remova malware com base em comportamentos suspeitos, em vez de apenas assinaturas estáticas.
  • Bloqueio em tempo real – O XProtect impede a execução de software malicioso conhecido antes que ele possa ser executado.

XProtect tradicional

O diretório /Library/Apple/System/Library/CoreServices/XProtect.bundle é o bundle principal que contém a configuração do XProtect e as definições de assinaturas.
Este é um diretório de sistema somente leitura e é atualizado silenciosamente pela Apple por meio de atualizações do XProtect.
Dentro dele, podemos encontrar alguns arquivos de interesse, todos atualizados periodicamente pela Apple e protegidos pela Proteção de Integridade do Sistema (SIP).

XProtect.plist

O arquivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.plist armazena assinaturas de malware usadas pelo XProtect para detectar ameaças conhecidas.
Ele contém entradas que mapeiam famílias de malware para regras de detecção específicas, incluindo hashes e padrões de nomes de arquivo.
Aqui está um exemplo de uma família 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>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>

Isso é bastante legível para humanos; a única parte digna de nota é que o argumento string em cada correspondência está em representação hexadecimal, por exemplo, 002D00730061006C00740020002D00410020002D00610020002D00640020007C002000620061007300680020002D0073 corresponde a -salt -A -a -d | bash -s.
Isso é, obviamente, uma mina de ouro para autores de malware, que sabem exatamente quais padrões evitar.

XProtect.meta.plist

O arquivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/XProtect.meta.plist é um arquivo de metadados que define regras adicionais para o XProtect, incluindo políticas de aplicação e informações de versionamento.
Ele especifica quais versões do macOS aplicam determinadas regras do XProtect e as ações tomadas após a detecção, bem como listas negras para plugins.
Aqui está um exemplo:

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 você pode ver, eles contêm informações de versão para plugins na "lista negra", por exemplo.

XProtect.yara

Em versões recentes, o XProtect parece ter começado a suportar YARA.
O arquivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.yara contém várias regras YARA em formato de texto; aqui está um pequeno exemplo dele:

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
}

Este não é um post sobre regras YARA, mas, como antes, isso é uma mina de ouro para autores de malware (por exemplo, 43 68 65 63 6B 50 72 6F 63 65 73 73 é CheckProcess).

gk.db

Aqui você pode ver como a Apple projetou o XProtect para ser integrado ao Gatekeeper - embora este arquivo seja usado principalmente pelo syspolicyd.
O arquivo /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db é um banco de dados SQLite que contém uma "lista negra" de hashes de arquivos e IDs de equipe a serem bloqueados.
Você pode visualizá-lo com o utilitário 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 ~ $

Isso é, novamente, informação interessante para autores de malware, por exemplo - para saber quando o ID da equipe que usaram para assinar seu malware está no radar da Apple.

Binários de remediação

Embora o binário XProtect esteja em /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/, você encontrará binários adicionais lá.
Esses são arquivos de remediação para famílias 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

Um novo aplicativo de sistema XProtect armazenado como /Library/Apple/System/Library/CoreServices/XProtect.app foi introduzido no macOS Monterey e é responsável por executar o XProtect Remediator.
Ao contrário do XProtect tradicional (que usava principalmente detecção baseada em assinaturas), o XProtect Remediator verifica e remove ativamente malware de sistemas infectados.
Ele roda como um processo em segundo plano e pode remover automaticamente as ameaças detectadas sem intervenção do usuário.
O diretório /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources contém scripts de remediação e lógica de detecção adicional para verificação ativa.

com.apple.XProtect.agent.scan.plist

O arquivo /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources/com.apple.XProtect.agent.scan.plist contém configurações sobre quando executar verificações periódicas.
Por exemplo:

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>

Isso mostra certas condições de desempenho e até mesmo o período da verificação (604800 segundos = uma vez a cada 7 dias).

MRT

Alguns de vocês podem ter ouvido falar do MRT (Malware Removal Tool).
Armazenado em /Library/Apple/System/Library/CoreServices/MRT.app, o MRT é outro componente de segurança do macOS que trabalha junto com o XProtect.
Ele é responsável por remover malware que o XProtect detectou e opera silenciosamente em segundo plano.
O MRT é mais agressivo que o XProtect na erradicação de ameaças detectadas e pode remover arquivos maliciosos mesmo que estejam em execução.
Observe que, ao contrário do XProtect, o MRT não mantém arquivos de configuração - tudo está embutido no binário.
Até mesmo olhar as strings do binário principal (/Library/Apple/System/Library/CoreServices/MRT.app/Contents/MacOS/MRT) revela strings interessantes, por exemplo:

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"

Como tudo funciona em conjunto

Quando um arquivo é baixado por meio de um navegador ou aplicativo (por exemplo, Safari, Mail, Mensagens), ele é marcado com uma flag de quarentena (com.apple.quarantine) - já mencionei essa flag no meu post anterior sobre o Gatekeeper.
O Gatekeeper verifica se o arquivo está assinado e notarizado. Se não estiver, o usuário recebe um aviso antes da execução.
Se a execução for permitida, o XProtect verifica o arquivo contra suas assinaturas de malware conhecidas (de XProtect.plist, XProtect.yara e assim por diante).
Se malware for detectado, o sistema impede a execução. Se o malware for conhecido e puder ser remediado, o XProtect Remediator ou o MRT pode excluí-lo ou neutralizá-lo.
A Apple atualiza o XProtect, o MRT e o XProtect Remediator silenciosamente em segundo plano por meio do processo XProtectService.

Menção honrosa - Banshee

No início deste ano, a CheckPoint publicou um post sobre uma amostra de malware apelidada de Banshee.
Isso chamou bastante atenção, pois usava o mesmo algoritmo de criptografia que os binários do XProtect Remediator usam para "esconder suas regras YARA".
O algoritmo em si é simples:

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, os autores de malware pensaram que esse algoritmo não pode ser assinado estaticamente (já que é garantido gerar falsos positivos).
Encontrei um código semelhante na maioria dos binários de remediação, por exemplo:

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

O pesquisador de segurança que inicialmente descobriu isso (ald3ns) lançou uma ferramenta chamada XPR-dump que parece ainda funcionar na versão mais recente do XProtect. Você definitivamente deveria dar uma olhada!

Resumo

A principal conclusão deste post é que o XProtect joga um jogo de gato e rato com os atacantes (como qualquer antivírus) - listas negras, execução de YARA ou assinaturas estáticas simples estão todas no escopo.
O fato de esses arquivos serem implantados em todos os endpoints e serem fáceis de analisar torna bastante simples para autores de malware encontrar maneiras fáceis de contornar muitas dessas verificações.

Fique ligado!

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

Baixar ferramenta