macOS XPC Connecting Process Check
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)
Коли встановлюється з'єднання з XPC сервісом, сервер перевіряє, чи дозволено це з'єднання. Це перевірки, які зазвичай виконуються:
Перевірте, чи підписаний процес, що підключається, сертифікатом, підписаним Apple (видається тільки Apple).
Якщо це не перевірено, зловмисник може створити підроблений сертифікат, щоб відповідати будь-якій іншій перевірці.
Перевірте, чи підписаний процес, що підключається, сертифікатом організації (перевірка ID команди).
Якщо це не перевірено, будь-який сертифікат розробника від Apple може бути використаний для підпису та підключення до сервісу.
Перевірте, чи містить процес, що підключається, правильний ідентифікатор пакета.
Якщо це не перевірено, будь-який інструмент, підписаний тією ж організацією, може бути використаний для взаємодії з XPC сервісом.
(4 або 5) Перевірте, чи має процес, що підключається, правильний номер версії програмного забезпечення.
Якщо це не перевірено, старі, небезпечні клієнти, вразливі до ін'єкцій процесів, можуть бути використані для підключення до XPC сервісу, навіть якщо інші перевірки виконані.
(4 або 5) Перевірте, чи має процес, що підключається, посилене середовище виконання без небезпечних прав (як ті, що дозволяють завантажувати довільні бібліотеки або використовувати змінні середовища DYLD).
Якщо це не перевірено, клієнт може бути вразливим до ін'єкцій коду.
Перевірте, чи має процес, що підключається, право, яке дозволяє йому підключатися до сервісу. Це стосується бінарних файлів Apple.
Перевірка повинна бути базована на аудитному токені клієнта, а не на його ідентифікаторі процесу (PID), оскільки перший запобігає атакам повторного використання PID.
Розробники рідко використовують API виклик аудитного токена, оскільки він приватний, тому Apple може змінити його в будь-який момент. Крім того, використання приватних API не дозволено в додатках Mac App Store.
Якщо використовується метод processIdentifier
, він може бути вразливим.
xpc_dictionary_get_audit_token
слід використовувати замість xpc_connection_get_audit_token
, оскільки останній також може бути вразливим у певних ситуаціях.
Для отримання додаткової інформації про атаку повторного використання PID перевірте:
macOS PID ReuseДля отримання додаткової інформації про атаку xpc_connection_get_audit_token
перевірте:
Trustcache - це захисний метод, введений в машинах Apple Silicon, який зберігає базу даних CDHSAH бінарних файлів Apple, щоб лише дозволені, не модифіковані бінарні файли могли виконуватися. Це запобігає виконанню версій зниженого рівня.
Сервер реалізує цю перевірку в функції, яка називається shouldAcceptNewConnection
.
Об'єкт NSXPCConnection має приватну властивість auditToken
(ту, що повинна використовуватися, але може змінитися) та публічну властивість processIdentifier
(ту, що не повинна використовуватися).
Процес, що підключається, можна перевірити за допомогою чогось на кшталт:
Якщо розробник не хоче перевіряти версію клієнта, він може принаймні перевірити, що клієнт не вразливий до ін'єкцій процесів:
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)