Сразу после того как стало известно о возможности заполучить root-a без пароля, мне стало интересно, можно ли сделать это удалённо.

После долгих экспериментов получился следующий маловероятный, но все же осуществимый сценарий. Сначала опишу, как его воспроизвести, а далее, почему важен каждый из пунктов.

Обстоятельства должны сложиться таким образом, что:

  1. Жертва использует уязвимую версию 10.13.1

    image
  2. У жертвы включен Screen Sharing.

    image
  3. Жертва подключена проводом к сети (с выходом в Интернет или нет — не важно).

    image
  4. Жертва прочитала в интернете о существовании уязвимости, попробовала на своем Mac-е и не предприняла никаких действий для ликвидации.

    imageimage
  5. Атакующий должен знать ip адрес жертвы или же найти её в списке устройств в сети.

Атака выглядит следующим образом:

  1. Атакующий подключается по VNC (Finder > Cmd+K > vnc://жертва > root без пароля)

    imageimageimage
  2. Атакующий на Login Screen жертвы выбирает Other…

    image
  3. Атакующий вводит root без пароля.

    image
  4. Готово.

    image

Теперь разберем, почему все так сложно.

  1. Тут очевидно.
  2. Screen sharing открывает доступ по vnc. По умолчанию он выключен, однако вероятность того, что пользователь когда-то его использовал и оставил включенным все же есть.
  3. Подключение по проводу важно. По Wifi VNC соединение оборвётся в тот момент, когда root пользователь только начинает логиниться. Видимо, это связано с тем, что у root-а нет доступа к keychain обычного админа. Уже работающее Wifi подключение root зачем-то обрывает, а переподключиться не может. По проводу соединение не обрывается.
  4. Самое маловероятное. Нужно, чтобы на компьютере жертвы был доступен логин для root-a. И без пароля. Этого эффекта, на данный момент можно добиться единственным известным мне способом — заэксплуатировать ту самую, оригинальную уязвимость. Нужно, чтобы жертва хотя бы раз открыла тот самый «замочек» root-ом с пустым паролем.
  5. Mac атакующего сам найдет жертву со включенным Screen Sharing в своей подсети. Однако, обычные способы обнаружения открытого vnc порта так же подойдут. nmap вам впомощь.

    Во время атаки root с пустым паролем по сути работает дважды. Первый раз, когда vnc соединение только устанавливается. Второй раз на Login Screen жертвы.

Напоследок:

  • Жертва видит индикатор, что Screen Sharing активен, и может в любой момент отключить атакующего. Хотя вряд ли ей это поможет.
  • Если попытать провернуть атаку через wifi, на Mac-е жертвы останется залогиненый root. Его нужно будет разлогинить для последующей перезагрузки или выключения.
  • У залогиненого рута «замочек» сразу открыт и никак не хочет закрываться.
  • При установлении VNC подключения есть опция «Попросить экран текущего пользователя». Пользователь может вас пустить за свой экран. Что с этим делать — думайте сами.

Комментарии (4)


  1. appsforlife
    07.12.2017 00:42

    А что конкретно меняется в системе, когда жертва в пункте 4 пробует залогиниться под рутом? Скажем если я жертва попробовала уязвимость, а потом макось обновилась, то что будет? Ящик Пандоры уже открыт или как?


    1. buriy
      07.12.2017 11:26

      >А что конкретно меняется в системе, когда жертва в пункте 4 пробует залогиниться под рутом?
      Почитайте подробный разбор в https://objective-see.com/blog/blog_0x24.html
      Первое нажатие «Unlock» (для проверки «уязвимости») меняет пароль для записи root на пустой или выбранный вами.
      image


  1. kolayuk
    07.12.2017 10:38

    А подключаться по ssh не проще? Тут и скриншаринг не нужен и вайфай отваливаться не будет…


  1. rdc
    07.12.2017 11:42

    уязвимость немного ненастоящая, кстати
    например, если открыть замочек с её помощью и попробовать добавить пользователя, то папка пользователя создаётся, а он сам — нет.
    т.е. админских прав фактически не даётся