hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections
2023-10-15 22:42:31 +00:00
..
macos-sandbox Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-15 10:00:46 +00:00
macos-tcc Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-15 15:35:33 +00:00
macos-dangerous-entitlements.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-15 22:42:31 +00:00
macos-gatekeeper.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-15 15:35:33 +00:00
macos-sip.md Translated ['macos-hardening/macos-security-and-privilege-escalation/REA 2023-09-11 00:05:15 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-15 22:42:31 +00:00

Proteções de Segurança do macOS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Gatekeeper

Gatekeeper é geralmente usado para se referir à combinação de Quarantine + Gatekeeper + XProtect, 3 módulos de segurança do macOS que tentarão impedir que os usuários executem software potencialmente malicioso baixado.

Mais informações em:

{% content-ref url="macos-gatekeeper.md" %} macos-gatekeeper.md {% endcontent-ref %}

Limitações de Processos

SIP - Proteção de Integridade do Sistema

{% content-ref url="macos-sip.md" %} macos-sip.md {% endcontent-ref %}

Sandbox

O Sandbox do macOS limita as aplicações em execução dentro do sandbox às ações permitidas especificadas no perfil do Sandbox com o qual o aplicativo está sendo executado. Isso ajuda a garantir que a aplicação acesse apenas os recursos esperados.

{% content-ref url="macos-sandbox/" %} macos-sandbox {% endcontent-ref %}

TCC - Transparência, Consentimento e Controle

TCC (Transparência, Consentimento e Controle) é um mecanismo no macOS para limitar e controlar o acesso do aplicativo a determinados recursos, geralmente do ponto de vista da privacidade. Isso pode incluir coisas como serviços de localização, contatos, fotos, microfone, câmera, acessibilidade, acesso total ao disco e muito mais.

{% content-ref url="macos-tcc/" %} macos-tcc {% endcontent-ref %}

Restrições de Inicialização

Controla de onde e o que pode iniciar um binário assinado pela Apple:

  • Você não pode iniciar um aplicativo diretamente se ele deve ser executado pelo launchd
  • Você não pode executar um aplicativo fora do local confiável (como /System/)

O arquivo que contém informações sobre essas restrições está localizado no macOS em /System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4 (e no iOS parece estar em /usr/standalone/firmware/FUD/StaticTrustCache.img4).

Parece que era possível usar a ferramenta img4tool para extrair o cache:

img4tool -e in.img4 -o out.bin

(No entanto, não consegui compilá-lo no M1). Você também pode usar o pyimg4, mas o seguinte script não funciona com essa saída.

Em seguida, você pode usar um script como este para extrair dados.

A partir desses dados, você pode verificar os aplicativos com um valor de restrição de inicialização de 0, que são aqueles que não estão restritos (verifique aqui para saber o que cada valor significa).

MRT - Ferramenta de Remoção de Malware

A Ferramenta de Remoção de Malware (MRT) é outra parte da infraestrutura de segurança do macOS. Como o nome sugere, a função principal do MRT é remover malware conhecido de sistemas infectados.

Uma vez que o malware é detectado em um Mac (seja pelo XProtect ou por outros meios), o MRT pode ser usado para remover automaticamente o malware. O MRT opera silenciosamente em segundo plano e geralmente é executado sempre que o sistema é atualizado ou quando uma nova definição de malware é baixada (parece que as regras que o MRT usa para detectar malware estão dentro do binário).

Embora tanto o XProtect quanto o MRT façam parte das medidas de segurança do macOS, eles desempenham funções diferentes:

  • O XProtect é uma ferramenta preventiva. Ele verifica arquivos conforme são baixados (por meio de determinados aplicativos) e, se detectar algum tipo conhecido de malware, impede a abertura do arquivo, evitando assim que o malware infecte o sistema em primeiro lugar.
  • O MRT, por outro lado, é uma ferramenta reativa. Ele opera após a detecção de malware em um sistema, com o objetivo de remover o software ofensivo para limpar o sistema.

O aplicativo MRT está localizado em /Library/Apple/System/Library/CoreServices/MRT.app

Gerenciamento de Tarefas em Segundo Plano

O macOS agora alerta sempre que uma ferramenta usa uma técnica conhecida para persistir a execução de código (como Itens de Login, Daemons...), para que o usuário saiba melhor qual software está persistindo.

Isso é executado com um daemon localizado em /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd e o agente em /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app

A maneira como o backgroundtaskmanagementd sabe que algo está instalado em uma pasta persistente é obtendo os FSEvents e criando alguns manipuladores para eles.

Além disso, há um arquivo plist que contém aplicativos conhecidos que frequentemente persistem, mantido pela Apple, localizado em: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist

[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]

Enumeração

É possível enumerar todos os itens de plano de fundo configurados em execução na ferramenta de linha de comando da Apple:

# The tool will always ask for the users password
sfltool dumpbtm

Além disso, também é possível listar essas informações com o DumpBTM.

# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM

Essas informações estão sendo armazenadas em /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm e o Terminal precisa de FDA.

Mexendo com o BTM

Quando uma nova persistência é encontrada, ocorre um evento do tipo ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD. Portanto, qualquer maneira de prevenir que esse evento seja enviado ou que o agente alerte o usuário ajudará um invasor a burlar o BTM.

  • Redefinindo o banco de dados: Executar o seguinte comando irá redefinir o banco de dados (deve reconstruí-lo do zero), no entanto, por algum motivo, após executar isso, nenhuma nova persistência será alertada até que o sistema seja reiniciado.
  • É necessário ter root.
# Reset the database
sfltool resettbtm
  • Parar o Agente: É possível enviar um sinal de parada para o agente, para que ele não alerte o usuário quando novas detecções forem encontradas.
# Get PID
pgrep BackgroundTaskManagementAgent
1011

# Stop it
kill -SIGSTOP 1011

# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
  • Bug: Se o processo que criou a persistência existir rapidamente logo após, o daemon tentará obter informações sobre ele, falhará e não conseguirá enviar o evento indicando que algo novo está persistindo.

Referências e mais informações sobre BTM:

Cache de Confiança

O cache de confiança do macOS da Apple, às vezes também chamado de cache AMFI (Apple Mobile File Integrity), é um mecanismo de segurança no macOS projetado para impedir a execução de software não autorizado ou malicioso. Essencialmente, é uma lista de hashes criptográficos que o sistema operacional usa para verificar a integridade e autenticidade do software.

Quando um aplicativo ou arquivo executável tenta ser executado no macOS, o sistema operacional verifica o cache de confiança AMFI. Se o hash do arquivo for encontrado no cache de confiança, o sistema permite que o programa seja executado porque o reconhece como confiável.

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥