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)
Kiedy usługa XPC w macOS sprawdza wywołany proces na podstawie PID a nie na podstawie tokenu audytu, jest podatna na atak ponownego użycia PID. Atak ten opiera się na warunkach wyścigu, w których eksploit będzie wysyłał wiadomości do usługi XPC, nadużywając funkcjonalności, a dopiero po tym wykona posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)
z dozwolonym binarnym.
Ta funkcja sprawi, że dozwolona binarna przejmie PID, ale złośliwa wiadomość XPC zostanie wysłana tuż przed tym. Więc, jeśli usługa XPC używa PID do uwierzytelnienia nadawcy i sprawdza go PO wykonaniu posix_spawn
, pomyśli, że pochodzi z autoryzowanego procesu.
Jeśli znajdziesz funkcję shouldAcceptNewConnection
lub funkcję przez nią wywoływaną wywołującą processIdentifier
i nie wywołującą auditToken
. To bardzo prawdopodobnie oznacza, że weryfikuje PID procesu a nie token audytu.
Na przykład w tym obrazie (pochodzącym z odniesienia):
Sprawdź ten przykład eksploitu (ponownie, pochodzący z odniesienia), aby zobaczyć 2 części eksploitu:
Jedna, która generuje kilka forków
Każdy fork wyśle ładunek do usługi XPC, wykonując posix_spawn
tuż po wysłaniu wiadomości.
Aby eksploatacja działała, ważne jest, aby export`` ``
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
lub umieścić wewnątrz eksploitu:
Pierwsza opcja używająca NSTasks
i argumentu do uruchomienia dzieci w celu wykorzystania RC
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)