hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2023-11-02 18:01:38 +00:00
..
macos-ipc-inter-process-communication Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-11-02 18:01:38 +00:00
macos-library-injection Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-11-02 18:01:38 +00:00
macos-.net-applications-injection.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-11-02 18:01:38 +00:00
macos-dirty-nib.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-10 17:53:57 +00:00
macos-electron-applications-injection.md Translated ['linux-hardening/privilege-escalation/electron-cef-chromium- 2023-10-27 16:25:29 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-10 17:53:57 +00:00

Abuso de Processos no macOS

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

Abuso de Processos no macOS

O macOS, assim como qualquer outro sistema operacional, oferece uma variedade de métodos e mecanismos para que processos interajam, se comuniquem e compartilhem dados. Embora essas técnicas sejam essenciais para o funcionamento eficiente do sistema, elas também podem ser abusadas por atores maliciosos 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ções

O Hooking de Funções envolve a interceptação de chamadas de função ou mensagens dentro de um código de software. Ao fazer o hook de 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 entre Processos

A Comunicação entre Processos (IPC) refere-se a diferentes métodos pelos quais processos separados compartilham e trocam dados. Embora o IPC seja fundamental para muitas aplicações legítimas, ele também pode ser usado de forma inadequada 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 em Aplicações Electron

Aplicações Electron executadas 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 %}

NIB Sujo

Arquivos NIB definem elementos de interface do usuário (UI) e suas interações dentro de um aplicativo. No entanto, eles podem executar comandos arbitrários e o Gatekeeper não impede que um aplicativo já executado seja executado novamente se um arquivo NIB for modificado. Portanto, eles podem ser usados para fazer com que programas arbitrários executem comandos arbitrários:

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

Injeção em Aplicações .Net

É possível injetar código em aplicações .Net abusando da funcionalidade de depuração do .Net (não protegida por 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 %}

Injeção em Python

Se a variável de ambiente PYTHONINSPECT estiver definida, o processo Python entrará em um CLI Python assim que terminar.

Outras variáveis de ambiente, como PYTHONPATH e PYTHONHOME, também podem ser úteis para fazer com que um comando Python execute código arbitrário.

Observe que executáveis compilados com pyinstaller não usarão essas variáveis de ambiente, mesmo que estejam sendo executados usando um Python incorporado.

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 de 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 links físicos: Tipicamente, o abuso mais comum é colocar um link com nossos privilégios de usuário e apontá-lo para uma localização de privilégio mais alto. A detecção é muito simples para ambos os links físicos e simbólicos. 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 links simbólicos, o bloqueio não é possível, pois não temos informações sobre o destino do link antes da criação. Isso é uma limitação do framework EndpointSecuriy da Apple.

Chamadas feitas por outros processos

No post do blog você pode encontrar 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 ter o mesmo uid que o processo em execução ou ser root (e ela retorna informações sobre o processo, não uma maneira de injetar código).

Referências

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