macOS PID Reuse
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
macOS XPC 서비스가 PID를 기반으로 호출된 프로세스를 확인하고 감사 토큰을 사용하지 않을 때, PID 재사용 공격에 취약합니다. 이 공격은 경쟁 조건에 기반하며, 익스플로잇이 XPC 서비스에 메시지를 전송하여 기능을 악용한 후, **posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)
**를 허용된 바이너리로 실행합니다.
이 함수는 허용된 바이너리가 PID를 소유하게 만들지만, 악의적인 XPC 메시지는 그 직전에 전송됩니다. 따라서, XPC 서비스가 PID를 사용하여 발신자를 인증하고 posix_spawn
실행 후에 확인하면, 이를 인증된 프로세스에서 온 것으로 생각할 것입니다.
shouldAcceptNewConnection
함수나 이를 호출하는 함수가 **auditToken
**을 호출하지 않고 **processIdentifier
**를 호출하는 경우, 이는 프로세스 PID를 확인하고 있다는 것을 의미합니다.
예를 들어, 이 이미지에서처럼 (참조에서 가져옴):
이 예시 익스플로잇을 확인하세요 (다시, 참조에서 가져옴) 익스플로잇의 두 부분을 확인할 수 있습니다:
여러 개의 포크를 생성하는 부분
각 포크는 메시지를 전송한 후 **posix_spawn
**을 실행하면서 페이로드를 XPC 서비스에 전송합니다.
익스플로잇이 작동하려면 export`` ``
**OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
**를 설정하거나 익스플로잇 내부에 넣는 것이 중요합니다:
첫 번째 옵션은 **NSTasks
**를 사용하고 인수를 통해 자식 프로세스를 시작하여 RC를 악용하는 것입니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)