8.8 KiB
Extensões do Sistema macOS
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub HackTricks e HackTricks Cloud.
Extensões de Sistema / Framework de Segurança de Endpoint
Diferentemente das Extensões de Kernel, as Extensões de Sistema são executadas no espaço do usuário em vez de no espaço do kernel, reduzindo o risco de uma falha do sistema devido a mau funcionamento da extensão.
Existem três tipos de extensões de sistema: Extensões DriverKit, Extensões de Rede e Extensões de Segurança de Endpoint.
Extensões DriverKit
DriverKit é um substituto para extensões de kernel que fornecem suporte a hardware. Ele permite que drivers de dispositivos (como USB, Serial, NIC e drivers HID) sejam executados no espaço do usuário em vez de no espaço do kernel. O framework DriverKit inclui versões no espaço do usuário de certas classes do I/O Kit, e o kernel encaminha eventos normais do I/O Kit para o espaço do usuário, oferecendo um ambiente mais seguro para a execução desses drivers.
Extensões de Rede
Extensões de Rede fornecem a capacidade de personalizar comportamentos de rede. Existem vários tipos de Extensões de Rede:
- App Proxy: Utilizado para criar um cliente VPN que implementa um protocolo VPN personalizado orientado a fluxo. Isso significa que ele lida com o tráfego de rede com base em conexões (ou fluxos) em vez de pacotes individuais.
- Tunnel de Pacotes: Utilizado para criar um cliente VPN que implementa um protocolo VPN personalizado orientado a pacotes. Isso significa que ele lida com o tráfego de rede com base em pacotes individuais.
- Filtrar Dados: Utilizado para filtrar "fluxos" de rede. Pode monitorar ou modificar dados de rede no nível do fluxo.
- Filtrar Pacotes: Utilizado para filtrar pacotes de rede individuais. Pode monitorar ou modificar dados de rede no nível do pacote.
- Proxy DNS: Utilizado para criar um provedor DNS personalizado. Pode ser usado para monitorar ou modificar solicitações e respostas DNS.
Framework de Segurança de Endpoint
Segurança de Endpoint é um framework fornecido pela Apple no macOS que oferece um conjunto de APIs para segurança do sistema. É destinado ao uso por fornecedores de segurança e desenvolvedores para construir produtos que possam monitorar e controlar a atividade do sistema para identificar e proteger contra atividades maliciosas.
Este framework fornece uma coleção de APIs para monitorar e controlar a atividade do sistema, como execuções de processos, eventos do sistema de arquivos, eventos de rede e kernel.
O núcleo deste framework é implementado no kernel, como uma Extensão de Kernel (KEXT) localizada em /System/Library/Extensions/EndpointSecurity.kext
. Este KEXT é composto por vários componentes-chave:
- EndpointSecurityDriver: Atua como o "ponto de entrada" para a extensão de kernel. É o principal ponto de interação entre o OS e o framework de Segurança de Endpoint.
- EndpointSecurityEventManager: Este componente é responsável por implementar ganchos do kernel. Ganchos do kernel permitem que o framework monitore eventos do sistema interceptando chamadas de sistema.
- EndpointSecurityClientManager: Gerencia a comunicação com clientes no espaço do usuário, mantendo o controle de quais clientes estão conectados e precisam receber notificações de eventos.
- EndpointSecurityMessageManager: Envia mensagens e notificações de eventos para clientes no espaço do usuário.
Os eventos que o framework de Segurança de Endpoint pode monitorar são categorizados em:
- Eventos de arquivo
- Eventos de processo
- Eventos de socket
- Eventos de kernel (como carregar/descarregar uma extensão de kernel ou abrir um dispositivo I/O Kit)
Arquitetura do Framework de Segurança de Endpoint
Comunicação no espaço do usuário com o framework de Segurança de Endpoint acontece através da classe IOUserClient. Duas subclasses diferentes são usadas, dependendo do tipo de chamador:
- EndpointSecurityDriverClient: Requer a autorização
com.apple.private.endpoint-security.manager
, que é mantida apenas pelo processo do sistemaendpointsecurityd
. - EndpointSecurityExternalClient: Requer a autorização
com.apple.developer.endpoint-security.client
. Normalmente seria usada por software de segurança de terceiros que precisa interagir com o framework de Segurança de Endpoint.
As Extensões de Segurança de Endpoint:libEndpointSecurity.dylib
é a biblioteca C que as extensões de sistema usam para se comunicar com o kernel. Esta biblioteca usa o I/O Kit (IOKit
) para se comunicar com o KEXT de Segurança de Endpoint.
endpointsecurityd
é um daemon do sistema chave envolvido na gestão e lançamento de extensões de sistema de segurança de endpoint, particularmente durante o processo de inicialização precoce. Apenas extensões de sistema marcadas com NSEndpointSecurityEarlyBoot
em seu arquivo Info.plist
recebem esse tratamento de inicialização precoce.
Outro daemon do sistema, sysextd
, valida extensões de sistema e as move para os locais apropriados do sistema. Em seguida, solicita ao daemon relevante para carregar a extensão. O SystemExtensions.framework
é responsável por ativar e desativar extensões de sistema.
Bypassando ESF
ESF é usado por ferramentas de segurança que tentarão detectar um red teamer, então qualquer informação sobre como isso poderia ser evitado é interessante.
CVE-2021-30965
O fato é que a aplicação de segurança precisa ter permissões de Acesso Total ao Disco. Então, se um atacante pudesse remover isso, ele poderia impedir o software de funcionar:
tccutil reset All
Para mais informações sobre este bypass e relacionados, confira a palestra #OBTS v5.0: "O Calcanhar de Aquiles do EndpointSecurity" - Fitzl Csaba
No final, isso foi corrigido ao dar a nova permissão kTCCServiceEndpointSecurityClient
ao aplicativo de segurança gerenciado por tccd
, então tccutil
não vai limpar suas permissões impedindo que ele seja executado.
Referências
- OBTS v3.0: "Segurança & Insegurança do Endpoint" - Scott Knight
- https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub HackTricks e HackTricks Cloud.