6.9 KiB
Abuso de Processos no macOS
O macOS, como qualquer outro sistema operacional, fornece uma variedade de métodos e mecanismos para que 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 interceptar 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
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 %}
Injeção de 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 um comando Python executar código arbitrário.
Observe que os executáveis compilados com pyinstaller
não usarão essas variáveis ambientais, mesmo se estiverem 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
eELECTRON_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 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 ser o mesmo uid que está executando o processo ou root (e ela retorna informações sobre o processo, não uma maneira de injetar código).
Referências
- https://theevilbit.github.io/shield/
- https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra The PEASS Family, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.