hacktricks/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-system-extensions.md

9.8 KiB

Extensões do Sistema macOS

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

Extensões do Sistema / Framework de Segurança de Endpoint

Ao contrário das Extensões do Kernel, as Extensões do Sistema são executadas no espaço do usuário em vez do espaço do kernel, reduzindo o risco de falhas do sistema devido a mau funcionamento da extensão.

Existem três tipos de extensões do sistema: Extensões do DriverKit, Extensões de Rede e Extensões de Segurança de Endpoint.

Extensões do DriverKit

O DriverKit é um substituto para as extensões do kernel que fornecem suporte de hardware. Ele permite que drivers de dispositivos (como drivers USB, Serial, NIC e HID) sejam executados no espaço do usuário em vez do espaço do kernel. O framework do DriverKit inclui versões do 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 esses drivers serem executados.

Extensões de Rede

As Extensões de Rede fornecem a capacidade de personalizar comportamentos de rede. Existem vários tipos de Extensões de Rede:

  • Proxy de Aplicativo: Isso é usado 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.
  • Túnel de Pacotes: Isso é usado 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.
  • Filtro de Dados: Isso é usado para filtrar "fluxos" de rede. Ele pode monitorar ou modificar dados de rede no nível do fluxo.
  • Filtro de Pacotes: Isso é usado para filtrar pacotes de rede individuais. Ele pode monitorar ou modificar dados de rede no nível do pacote.
  • Proxy DNS: Isso é usado para criar um provedor DNS personalizado. Ele pode ser usado para monitorar ou modificar solicitações e respostas DNS.

Framework de Segurança de Endpoint

O Framework de Segurança de Endpoint é um framework fornecido pela Apple no macOS que fornece 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 do Kernel (KEXT) localizada em /System/Library/Extensions/EndpointSecurity.kext. Essa KEXT é composta por vários componentes principais:

  • EndpointSecurityDriver: Isso atua como o "ponto de entrada" para a extensão do kernel. É o principal ponto de interação entre o sistema operacional e o framework de Segurança de Endpoint.
  • EndpointSecurityEventManager: Este componente é responsável por implementar hooks do kernel. Hooks do kernel permitem que o framework monitore eventos do sistema interceptando chamadas do sistema.
  • EndpointSecurityClientManager: Isso gerencia a comunicação com os clientes do espaço do usuário, acompanhando quais clientes estão conectados e precisam receber notificações de eventos.
  • EndpointSecurityMessageManager: Isso envia mensagens e notificações de eventos para os clientes do 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 soquete
  • Eventos do kernel (como carregar/descarregar uma extensão do kernel ou abrir um dispositivo I/O Kit)

Arquitetura do Framework de Segurança de Endpoint

A comunicação do espaço do usuário com o Framework de Segurança de Endpoint ocorre por meio da classe IOUserClient. Duas subclasses diferentes são usadas, dependendo do tipo de chamador:

  • EndpointSecurityDriverClient: Isso requer a permissão com.apple.private.endpoint-security.manager, que é detida apenas pelo processo do sistema endpointsecurityd.
  • EndpointSecurityExternalClient: Isso requer a permissão com.apple.developer.endpoint-security.client. Isso seria usado normalmente 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 do sistema usam para se comunicar com o kernel. Essa biblioteca usa o I/O Kit (IOKit) para se comunicar com a Extensão de Segurança de Endpoint KEXT.

endpointsecurityd é um daemon do sistema chave envolvido no gerenciamento e lançamento de extensões de segurança de endpoint, especialmente durante o processo de inicialização inicial. Somente as extensões do sistema marcadas com NSEndpointSecurityEarlyBoot em seu arquivo Info.plist recebem esse tratamento de inicialização inicial.

Outro daemon do sistema, sysextd, valida as extensões do sistema e as move para os locais adequados do sistema. Em seguida, ele solicita ao daemon relevante que carregue a extensão. O SystemExtensions.framework é responsável por ativar e desativar as extensões do sistema.

Bypassando o ESF

O 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

A questão é que o aplicativo de segurança precisa ter permissões de Acesso Total ao Disco. Portanto, se um invasor pudesse remover isso, ele poderia impedir que o software fosse executado:

tccutil reset All

Para mais informações sobre essa bypass e outras relacionadas, confira a palestra #OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csaba

No final, isso foi corrigido dando a nova permissão kTCCServiceEndpointSecurityClient ao aplicativo de segurança gerenciado por tccd para que o tccutil não limpe suas permissões, impedindo-o de ser executado.

Referências

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