hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md

5.8 KiB

macOS Dirty NIB

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Para mais detalhes sobre a técnica, confira o post original em: https://blog.xpnsec.com/dirtynib/**. Aqui está um resumo:

Os arquivos NIB, parte do ecossistema de desenvolvimento da Apple, são destinados a definir elementos de UI e suas interações em aplicativos. Eles abrangem objetos serializados como janelas e botões, e são carregados em tempo de execução. Apesar de seu uso contínuo, a Apple agora defende o uso de Storyboards para uma visualização mais abrangente do fluxo da UI.

Preocupações de Segurança com Arquivos NIB

É crucial notar que os arquivos NIB podem representar um risco de segurança. Eles têm o potencial de executar comandos arbitrários, e alterações nos arquivos NIB dentro de um aplicativo não impedem o Gatekeeper de executar o aplicativo, representando uma ameaça significativa.

Processo de Injeção de Dirty NIB

Criando e Configurando um Arquivo NIB

  1. Configuração Inicial:
  • Crie um novo arquivo NIB usando o XCode.
  • Adicione um Objeto à interface, definindo sua classe como NSAppleScript.
  • Configure a propriedade source inicial via Atributos de Tempo de Execução Definidos pelo Usuário.
  1. Gadget de Execução de Código:
  • A configuração facilita a execução de AppleScript sob demanda.
  • Integre um botão para ativar o objeto Apple Script, acionando especificamente o seletor executeAndReturnError:.
  1. Teste:
  • Um Apple Script simples para fins de teste:
set theDialogText to "PWND"
display dialog theDialogText
  • Teste executando no depurador XCode e clicando no botão.

Mirando em um Aplicativo (Exemplo: Pages)

  1. Preparação:
  • Copie o aplicativo alvo (por exemplo, Pages) para um diretório separado (por exemplo, /tmp/).
  • Inicie o aplicativo para contornar problemas do Gatekeeper e armazene em cache.
  1. Sobrescrevendo o Arquivo NIB:
  • Substitua um arquivo NIB existente (por exemplo, Painel Sobre NIB) pelo arquivo DirtyNIB criado.
  1. Execução:
  • Acione a execução interagindo com o aplicativo (por exemplo, selecionando o item de menu Sobre).

Prova de Conceito: Acessando Dados do Usuário

  • Modifique o AppleScript para acessar e extrair dados do usuário, como fotos, sem o consentimento do usuário.

Exemplo de Código: Arquivo .xib Malicioso

Abordando Restrições de Inicialização

  • Restrições de Inicialização impedem a execução do aplicativo em locais inesperados (por exemplo, /tmp).
  • É possível identificar aplicativos não protegidos por Restrições de Inicialização e direcioná-los para injeção de arquivo NIB.

Proteções Adicionais do macOS

A partir do macOS Sonoma em diante, modificações dentro de pacotes de aplicativos são restritas. No entanto, métodos anteriores envolviam:

  1. Copiar o aplicativo para um local diferente (por exemplo, /tmp/).
  2. Renomear diretórios dentro do pacote do aplicativo para contornar proteções iniciais.
  3. Após executar o aplicativo para registrar no Gatekeeper, modificar o pacote do aplicativo (por exemplo, substituindo MainMenu.nib por Dirty.nib).
  4. Renomear diretórios de volta e executar novamente o aplicativo para executar o arquivo NIB injetado.

Nota: Atualizações recentes do macOS mitigaram esse exploit ao impedir modificações de arquivos dentro de pacotes de aplicativos após o cache do Gatekeeper, tornando o exploit ineficaz.

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: