Выделение паролей в MAC OS X — эволюция malware?

    Финский исследователь 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 по-умолчанию, автоматически снимает блокировку сразу же после успешного логина пользователя в систему со своим пользовательским паролем. Тем не менее, реальный пароль к нему может и не отличаться от того, что используется пользователем. При этом не разрешено устанавливать нулевой пароль, автоматическая блокировка осуществляется с течением времени при длительном простое системы.

    image
    image

    Как только пользователь разлочил 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
    Метки:
    Group-IB 48,84
    Компания
    Поделиться публикацией
    Комментарии 8
    • 0
      > Тем не менее, реальный пароль к нему может и не отличаться от того, что используется пользователем.

      Не это ли делает эту уязвимость достаточно сомнительной? Ведь никто из пользователей MacOSX, как правило, не устанавливает системные пароли самостоятельно. Обычно вообще используется вход без логина.
      Как быть в данном случае?
      • +1
        разблокировывается и беспользовании сломали мозг, еще до начала рабочего дня =)
      • 0
        Главная проблема — рут может читать keychain'ы других пользователей
        Ну на то он и рут чтобы мочь всё.
        • +3
          Автор — клон Ализара?

          Итак суть проблемы: рут может получить plaintext пароли других залогиненых пользователей.

          Выделенное жирным важно. Рут нужен для сканирования памяти, но там нечего будет искать, если целевой пользователь не будет залогинен. Получить пароли не из памяти — то есть с диска, все так же нельзя.

          Эта уязвимость по своей сути by design. Иначе при каждом обращении программ к keychain, вам приходилось бы вводить пароль на неё. Но если с вводом пароля каждый раз у вас проблем нет и вы больше боитесь малвари, которая может стырить пароли, то…

          Способ защиты: поставить пароль на keychain «login» отличный от пароля к аккаунту.
          Хотя малварь при желании может и кейлоггер вставить… но это уже другая история.

          Мораль: заражаться вируснёй — это плохо, по возможности избегайте этого.
          • 0
            «Эта уязвимость по своей сути by design» — автор и не скрывает этого, что отражено в его блоге
          • 0
            Ну да, очередной «вирус», который надо запускать вручную с паролем от рута.
            • 0
              речь не шла ни о каких вирусах, речь шла о достаточно эффективном сборе парольной информации

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.