hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2023-06-26 15:32:55 +00:00
..
macos-ipc-inter-process-communication Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-06-26 14:52:09 +00:00
macos-library-injection Translated to Portuguese 2023-06-06 18:56:34 +00:00
macos-.net-applications-injection.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-06-26 15:32:55 +00:00
macos-electron-applications-injection.md Translated ['backdoors/salseo.md', 'generic-methodologies-and-resources/ 2023-06-14 11:54:08 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-06-26 13:20:56 +00:00

Abuso de Processos no macOS

O macOS, como qualquer outro sistema operacional, fornece uma variedade de métodos e mecanismos para que os processos interajam, comuniquem-se e compartilhem dados. Embora essas técnicas sejam essenciais para o funcionamento eficiente do sistema, elas também podem ser abusadas por atores mal-intencionados para realizar atividades maliciosas.

Injeção de Biblioteca

A Injeção de Biblioteca é uma técnica em que um atacante força um processo a carregar uma biblioteca maliciosa. Uma vez injetada, a biblioteca é executada no contexto do processo alvo, fornecendo ao atacante as mesmas permissões e acesso do processo.

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

Hooking de Função

O Hooking de Função envolve a interceptação de chamadas de função ou mensagens dentro de um código de software. Ao enganchar funções, um atacante pode modificar o comportamento de um processo, observar dados sensíveis ou até mesmo obter controle sobre o fluxo de execução.

{% content-ref url="../mac-os-architecture/macos-function-hooking.md" %} macos-function-hooking.md {% endcontent-ref %}

Comunicação Interprocesso

A Comunicação Interprocesso (IPC) refere-se a diferentes métodos pelos quais processos separados compartilham e trocam dados. Embora a IPC seja fundamental para muitas aplicações legítimas, ela também pode ser mal utilizada para subverter o isolamento de processos, vazar informações sensíveis ou realizar ações não autorizadas.

{% content-ref url="../mac-os-architecture/macos-ipc-inter-process-communication/" %} macos-ipc-inter-process-communication {% endcontent-ref %}

Injeção de Aplicativos Electron

Os aplicativos Electron executados com variáveis de ambiente específicas podem ser vulneráveis à injeção de processos:

{% content-ref url="macos-electron-applications-injection.md" %} macos-electron-applications-injection.md {% endcontent-ref %}

Injeção de Aplicativos .Net

É possível injetar código em aplicativos .Net abusando da funcionalidade de depuração do .Net (não protegida pelas proteções do macOS, como o endurecimento em tempo de execução).

{% content-ref url="macos-.net-applications-injection.md" %} macos-.net-applications-injection.md {% endcontent-ref %}

Detecção

Shield

Shield (Github) é um aplicativo de código aberto que pode detectar e bloquear ações de injeção de processos:

  • Usando Variáveis de Ambiente: ele monitorará a presença de qualquer uma das seguintes variáveis de ambiente: DYLD_INSERT_LIBRARIES, CFNETWORK_LIBRARY_PATH, RAWCAMERA_BUNDLE_PATH e ELECTRON_RUN_AS_NODE
  • Usando chamadas task_for_pid: para encontrar quando um processo deseja obter a porta de tarefa de outro, o que permite injetar código no processo.
  • Parâmetros de aplicativos Electron: Alguém pode usar os argumentos de linha de comando --inspect, --inspect-brk e --remote-debugging-port para iniciar um aplicativo Electron no modo de depuração e, assim, injetar código nele.
  • Usando links simbólicos ou hardlinks: Tipicamente, o abuso mais comum é colocar um link com nossos privilégios de usuário e apontá-lo para um local de privilégio mais alto. A detecção é muito simples para ambos os hardlinks e symlinks. Se o processo que cria o link tiver um nível de privilégio diferente do arquivo de destino, criamos um alerta. Infelizmente, no caso de symlinks, o bloqueio não é possível, pois não temos informações sobre o destino do link antes da criação. Esta é uma limitação do framework EndpointSecuriy da Apple.

Chamadas feitas por outros processos

Neste post de blog, você pode descobrir como é possível usar a função task_name_for_pid para obter informações sobre outros processos injetando código em um processo e, em seguida, obter informações sobre esse outro processo.

Observe que, para chamar essa função, você precisa ser o mesmo uid que o processo em execução ou root (e ela retorna informações sobre o processo, não uma maneira de injetar código).

Referências

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