Сразу после того как стало известно о возможности заполучить root-a без пароля, мне стало интересно, можно ли сделать это удалённо.
После долгих экспериментов получился следующий маловероятный, но все же осуществимый сценарий. Сначала опишу, как его воспроизвести, а далее, почему важен каждый из пунктов.
Обстоятельства должны сложиться таким образом, что:
Атака выглядит следующим образом:
Теперь разберем, почему все так сложно.
Напоследок:
После долгих экспериментов получился следующий маловероятный, но все же осуществимый сценарий. Сначала опишу, как его воспроизвести, а далее, почему важен каждый из пунктов.
Обстоятельства должны сложиться таким образом, что:
- Жертва использует уязвимую версию 10.13.1
- У жертвы включен Screen Sharing.
- Жертва подключена проводом к сети (с выходом в Интернет или нет — не важно).
- Жертва прочитала в интернете о существовании уязвимости, попробовала на своем Mac-е и не предприняла никаких действий для ликвидации.
- Атакующий должен знать ip адрес жертвы или же найти её в списке устройств в сети.
Атака выглядит следующим образом:
- Атакующий подключается по VNC (Finder > Cmd+K > vnc://жертва > root без пароля)
- Атакующий на Login Screen жертвы выбирает Other…
- Атакующий вводит root без пароля.
- Готово.
Теперь разберем, почему все так сложно.
- Тут очевидно.
- Screen sharing открывает доступ по vnc. По умолчанию он выключен, однако вероятность того, что пользователь когда-то его использовал и оставил включенным все же есть.
- Подключение по проводу важно. По Wifi VNC соединение оборвётся в тот момент, когда root пользователь только начинает логиниться. Видимо, это связано с тем, что у root-а нет доступа к keychain обычного админа. Уже работающее Wifi подключение root зачем-то обрывает, а переподключиться не может. По проводу соединение не обрывается.
- Самое маловероятное. Нужно, чтобы на компьютере жертвы был доступен логин для root-a. И без пароля. Этого эффекта, на данный момент можно добиться единственным известным мне способом — заэксплуатировать ту самую, оригинальную уязвимость. Нужно, чтобы жертва хотя бы раз открыла тот самый «замочек» root-ом с пустым паролем.
- Mac атакующего сам найдет жертву со включенным Screen Sharing в своей подсети. Однако, обычные способы обнаружения открытого vnc порта так же подойдут. nmap вам впомощь.
Во время атаки root с пустым паролем по сути работает дважды. Первый раз, когда vnc соединение только устанавливается. Второй раз на Login Screen жертвы.
Напоследок:
- Жертва видит индикатор, что Screen Sharing активен, и может в любой момент отключить атакующего. Хотя вряд ли ей это поможет.
- Если попытать провернуть атаку через wifi, на Mac-е жертвы останется залогиненый root. Его нужно будет разлогинить для последующей перезагрузки или выключения.
- У залогиненого рута «замочек» сразу открыт и никак не хочет закрываться.
- При установлении VNC подключения есть опция «Попросить экран текущего пользователя». Пользователь может вас пустить за свой экран. Что с этим делать — думайте сами.
Комментарии (4)
kolayuk
07.12.2017 10:38А подключаться по ssh не проще? Тут и скриншаринг не нужен и вайфай отваливаться не будет…
rdc
07.12.2017 11:42уязвимость немного ненастоящая, кстати
например, если открыть замочек с её помощью и попробовать добавить пользователя, то папка пользователя создаётся, а он сам — нет.
т.е. админских прав фактически не даётся
appsforlife
А что конкретно меняется в системе, когда жертва в пункте 4 пробует залогиниться под рутом? Скажем если
яжертва попробовала уязвимость, а потом макось обновилась, то что будет? Ящик Пандоры уже открыт или как?buriy
>А что конкретно меняется в системе, когда жертва в пункте 4 пробует залогиниться под рутом?
Почитайте подробный разбор в https://objective-see.com/blog/blog_0x24.html
Первое нажатие «Unlock» (для проверки «уязвимости») меняет пароль для записи root на пустой или выбранный вами.