macOS PID Reuse
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Quando um serviço XPC do macOS está verificando o processo chamado com base no PID e não no token de auditoria, ele é vulnerável a um ataque de reutilização de PID. Este ataque é baseado em uma condição de corrida onde um exploit vai enviar mensagens para o serviço XPC abusando da funcionalidade e logo após isso, executando posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)
com o binário permitido.
Esta função fará com que o binário permitido possua o PID, mas a mensagem XPC maliciosa teria sido enviada logo antes. Assim, se o serviço XPC usar o PID para autenticar o remetente e verificá-lo APÓS a execução de posix_spawn
, ele pensará que vem de um processo autorizado.
Se você encontrar a função shouldAcceptNewConnection
ou uma função chamada por ela chamando processIdentifier
e não chamando auditToken
. Isso provavelmente significa que está verificando o PID do processo e não o token de auditoria.
Como por exemplo nesta imagem (retirada da referência):
Verifique este exemplo de exploit (novamente, retirado da referência) para ver as 2 partes do exploit:
Uma que gera vários forks
Cada fork irá enviar o payload para o serviço XPC enquanto executa posix_spawn
logo após enviar a mensagem.
Para que o exploit funcione, é importante export`` ``
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
ou colocar dentro do exploit:
Primeira opção usando NSTasks
e argumento para iniciar os filhos para explorar o RC
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)