macOS Sensitive Locations & Interesting Daemons
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Паролі
Тіні Паролів
Тіньовий пароль зберігається з конфігурацією користувача в plist-файлах, розташованих у /var/db/dslocal/nodes/Default/users/
.
Наступний однорядник можна використовувати для вивантаження всіх відомостей про користувачів (включаючи інформацію про хеші):
Скрипти, подібні до цього або цього можуть бути використані для перетворення хешу в формат hashcat.
Альтернативна однорядкова команда, яка виведе облікові дані всіх не-сервісних облікових записів у форматі hashcat -m 7100
(macOS PBKDF2-SHA512):
Вивантаження ключів
Зверніть увагу, що при використанні бінарного файлу security для вивантаження розшифрованих паролів кілька запитів попросять користувача дозволити цю операцію.
Відповідно до цього коментаря juuso/keychaindump#10 (comment), здається, що ці інструменти більше не працюють у Big Sur.
Огляд Keychaindump
Інструмент під назвою keychaindump був розроблений для витягування паролів з ключниць macOS, але він стикається з обмеженнями на новіших версіях macOS, таких як Big Sur, як зазначено в обговоренні. Використання keychaindump вимагає від зловмисника отримати доступ і підвищити привілеї до root. Інструмент використовує той факт, що ключниця за замовчуванням розблокована під час входу користувача для зручності, що дозволяє додаткам отримувати до неї доступ без повторного введення пароля користувача. Однак, якщо користувач вирішить заблокувати свою ключницю після кожного використання, keychaindump стає неефективним.
Keychaindump працює, націлюючись на конкретний процес під назвою securityd, який Apple описує як демон для авторизації та криптографічних операцій, що є критично важливим для доступу до ключниці. Процес витягування включає в себе ідентифікацію Master Key, отриманого з пароля для входу користувача. Цей ключ є необхідним для читання файлу ключниці. Щоб знайти Master Key, keychaindump сканує купу пам'яті securityd за допомогою команди vmmap
, шукаючи потенційні ключі в областях, позначених як MALLOC_TINY
. Для перевірки цих пам'яткових місць використовується наступна команда:
Після ідентифікації потенційних майстер-ключів, keychaindump шукає в купах конкретний шаблон (0x0000000000000018
), який вказує на кандидата для майстер-ключа. Додаткові кроки, включаючи деобфускацію, необхідні для використання цього ключа, як зазначено в вихідному коді keychaindump. Аналітики, які зосереджуються на цій області, повинні звернути увагу на те, що критичні дані для дешифрування ключа зберігаються в пам'яті процесу securityd. Приклад команди для запуску keychaindump:
chainbreaker
Chainbreaker може бути використаний для витягування наступних типів інформації з ключниці OSX у судово допустимий спосіб:
Хешований пароль ключниці, придатний для злому за допомогою hashcat або John the Ripper
Інтернет паролі
Загальні паролі
Приватні ключі
Публічні ключі
Сертифікати X509
Захищені нотатки
Паролі Appleshare
Знаючи пароль для розблокування ключниці, майстер-ключ, отриманий за допомогою volafox або volatility, або файл розблокування, такий як SystemKey, Chainbreaker також надасть паролі у відкритому вигляді.
Без одного з цих методів розблокування ключниці Chainbreaker відобразить всю іншу доступну інформацію.
Dump keychain keys
Вивантажити ключі з ключниці (з паролями) за допомогою SystemKey
Вивантаження ключів з ключниці (з паролями) шляхом злому хешу
Вивантаження ключів ключниці (з паролями) за допомогою дампу пам'яті
Слідуйте цим крокам, щоб виконати дамп пам'яті
Вивантаження ключів з ключниці (з паролями) за допомогою пароля користувача
Якщо ви знаєте пароль користувача, ви можете використовувати його для вивантаження та розшифровки ключниць, що належать користувачу.
kcpassword
Файл kcpassword - це файл, який містить пароль для входу користувача, але лише якщо власник системи увімкнув автоматичний вхід. Тому користувач буде автоматично увійдений без запиту пароля (що не дуже безпечно).
Пароль зберігається у файлі /etc/kcpassword
xored з ключем 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
. Якщо пароль користувача довший за ключ, ключ буде повторно використано.
Це робить пароль досить легким для відновлення, наприклад, за допомогою скриптів, таких як цей.
Цікава інформація в базах даних
Повідомлення
Notifications
Ви можете знайти дані сповіщень у $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
Більшість цікавої інформації буде в blob. Тому вам потрібно буде витягнути цей вміст і перетворити його на людську читабельність або використати strings
. Щоб отримати доступ, ви можете зробити:
Notes
Користувацькі ноти можна знайти в ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
Налаштування
У macOS налаштування програм знаходяться в $HOME/Library/Preferences
, а в iOS вони знаходяться в /var/mobile/Containers/Data/Application/<UUID>/Library/Preferences
.
У macOS інструмент командного рядка defaults
може бути використаний для зміни файлу налаштувань.
/usr/sbin/cfprefsd
заявляє про XPC сервіси com.apple.cfprefsd.daemon
та com.apple.cfprefsd.agent
і може бути викликаний для виконання дій, таких як зміна налаштувань.
Системні сповіщення
Сповіщення Darwin
Основний демон для сповіщень - /usr/sbin/notifyd
. Щоб отримувати сповіщення, клієнти повинні зареєструватися через Mach порт com.apple.system.notification_center
(перевірте їх за допомогою sudo lsmp -p <pid notifyd>
). Демон налаштовується за допомогою файлу /etc/notify.conf
.
Імена, що використовуються для сповіщень, є унікальними зворотними DNS позначеннями, і коли сповіщення надсилається одному з них, клієнти, які вказали, що можуть його обробити, отримають його.
Можливо скинути поточний статус (і побачити всі імена), надіславши сигнал SIGUSR2 процесу notifyd і прочитавши згенерований файл: /var/run/notifyd_<pid>.status
:
Distributed Notification Center
Розподілений центр сповіщень основний бінарний файл якого /usr/sbin/distnoted
, є ще одним способом надсилання сповіщень. Він надає деякі XPC сервіси і виконує певні перевірки, щоб спробувати перевірити клієнтів.
Apple Push Notifications (APN)
У цьому випадку програми можуть реєструватися для тем. Клієнт згенерує токен, зв'язавшись з серверами Apple через apsd
.
Потім постачальники також згенерують токен і зможуть підключитися до серверів Apple, щоб надсилати повідомлення клієнтам. Ці повідомлення будуть локально отримані apsd
, який передасть сповіщення програмі, що чекає на нього.
Налаштування розташовані в /Library/Preferences/com.apple.apsd.plist
.
Існує локальна база даних повідомлень, розташована в macOS в /Library/Application\ Support/ApplePushService/aps.db
і в iOS в /var/mobile/Library/ApplePushService
. Вона має 3 таблиці: incoming_messages
, outgoing_messages
та channel
.
Також можливо отримати інформацію про демон та з'єднання, використовуючи:
User Notifications
Це сповіщення, які користувач повинен бачити на екрані:
CFUserNotification
: Цей API надає спосіб показати на екрані спливаюче вікно з повідомленням.Дошка оголошень: Це показує в iOS банер, який зникає і буде збережений у Центрі сповіщень.
NSUserNotificationCenter
: Це дошка оголошень iOS у MacOS. База даних зі сповіщеннями знаходиться в/var/folders/<user temp>/0/com.apple.notificationcenter/db2/db
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated