У Apple довольно хорошая защита и даже при состоянии устройства в спящем режиме оно продолжает передавать информацию о своём местоположении в сеть. Как это происходит и как это обойти, вы узнаете в этой статье.
Сегодня мы поговорим о том, как злоумышленники способны обходить системы безопасности для осуществления краж.
Статья предназначена исключительно для ознакомления, чтобы вы смогли защитить свои устройства от кражи.
- ДИСКЛЕЙМЕР:Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях.
Дальнейшее повествование я буду вести от имени вора. Для того чтобы понимать, как работают механизмы защиты, нужно воспроизвести реальную модель угроз (модель нарушителя).
Итак, я украл включенный макбук у жертвы в кафе. В момент кражи я закрыл крышку, так что ноутбук перешел в спящий режим и отключился от WiFi. Это важный момент, так как он воспроизводит самый популярный сценарий, в котором ноутбук попадает в руки к вору. Чаще всего владельцы макбуков просто закрывают крышку и убирают ноутбук в сумку, не выключая комп.
Что будет делать в этот момент жертва? В панике зайдет в приложение FindMy и будет пытаться отследить компьютер или заблокировать его.
Трекинг устройств без доступа в интернет:
Заблокировать или стереть данные не получится, ведь у ноутбука нет связи с интернетом. Зато получится увидеть реальные координаты ноутбука на карте.
В 2019 году Apple анонсировала обновленное приложение FindMy и новый способ трекинга устройств, в настройках он называется Offline Finding. Большинство пользователей техники Apple не знает об этой функции.
Принцип работы такой: для начала вам нужно иметь минимум два устройства Apple, привязанные к одной учетной записи iCloud. На обоих устройствах должна стоять актуальная операционная система, не ниже iOS 13 и macOS 10.15 (Catalina). Если все условия выполнены, оба устройства генерируют ключи и обмениваются приватными частями (закрытым ключом) друг с другом, так что каждое устройство может расшифровать сообщения другого:
По заверению Apple эти ключи хранятся только на устройствах и не сохраняются на сервере. То есть воспользоваться функцией можно только с другого устройства и нельзя с сайта icloud.com. Это значит, что потеряв оба устройства, на сайте icloud.com получится посмотреть только онлайн геолокацию, которая работает только, если устройство имеет доступ в интернет, но не offline finding:
Сама же передача данных о геолокации происходит по BLE-протоколу.
BlueTooth украденного устройства может работать даже в спящем режиме и передавать данные на другие устройства от Apple:
В macOS за эту функцию отвечает демон /usr/libexec/searchpartyuseragent. Ключи, предположительно, хранятся в ключнице под именем LocalBeaconStore → LocalBeaconStoreKey. Огорчает только что BLE-маяки рассылаются только при включенной системе или в спящем режиме, то есть чтобы отключить такой трекинг, вору достаточно зажать кнопку выключения. Было бы прекрасно, если бы этот функционал работал прямо на Bluetooth/WiFi чипе, когда на материнской плате есть дежурное питание.
Спуффинг BlueTooth-трафика:
Если потерянный макбук сам не знает свои координаты, а только отправляет публичный ключ, значит координаты добавляет устройство, принявшее сигнал. А значит эта схема уязвима к спуфингу!
В схеме с ретранслятором приёмник слушает все сигналы от жертвы и по интернету пересылает их на передатчик. Случайные прохожие, принявшие сигнал, добавляют к нему свои координаты и пересылают на сервер. Я сижу с устройством жертвы в подвале, а передатчик лежит в другом конце города. Таким образом, жертва видит поддельные координаты.
Для построения такой схемы потребуется два компьютера с BLE-адаптерами соединенные в одну сеть и фреймворк BtleJuice.
Чтобы проксировать запросы на передатчик, нужен сервер и подойдет с минимальным конфигом.
Кража данных:
Данные на диске могут быть намного ценнее самого макбука. Что если там ключи от биткоин-кошельков, логины-пароли, или интимные фотографии? Поэтому сперва попробуем прочитать данные на диске. Мы украли ноутбук во включенном состоянии, но в момент кражи крышка была закрыта, и сейчас он заблокирован паролем юзера. Большинство владельцев макбуков носит их в спящем режиме, то есть просто закрывает крышку. Это самое вероятное состояние, в котором вор получит компьютер.
Самый простой способ прочитать данные — загрузиться с USB-флешки в Linux. Но если в системе включен FileVault, то прочитать данные не получится, поэтому перезагружаться для нас рискованно, ведь заранее неизвестно, включено шифрование или нет. Пока компьютер включен, файловая система точно расшифрована, поэтому нужно попытаться получить доступ не перезагружаясь.
macOS добавляет большую задержку перед вводом нового пароля после неудачных попыток, поэтому брутфорс или перебор по словарю нам не поможет.
Для такой атаки можно использовать любые аппаратные тулзы, позволяющие эмулировать HID-клавиатуру, в том числе raspberry pi или arduino. Ключевым моментом здесь будет словарь для подбора.
Подключаем MacBook к Wi-Fi:
Пока ноутбук включен и файловая система разблокирована, попробуем постучаться к нему по сети. Возможно, у жертвы включен сетевой диск или какие-то другие сервисы, через которые можно пролезть внутрь. Попробуем уговорить ноутбук подключиться к нашему WiFi:
Когда устройства сканируют WiFi-сети, в пакетах probe request они рассылают еще и имена сетей, к которым недавно подключились. То есть пока вы ходите по городу, ваш телефон или ноутбук рассылает имя вашей домашней WiFi-сети в надежде, что она ему ответит. По задумке это должно ускорить подключение к сети, когда она рядом.
Чтобы узнать, к каким сетям готов подключаться ноутбук жертвы, я кладу рядом с ним внешний WiFi-адаптер и закрываю крышку импровизированной клетки Фарадея. Теперь адаптер будет хорошо слышать сигналы от ноутбука и не слышать другие.
Запускаем мониторный режим c фильтром по одному типу пакетов, ведь мы хотим видеть только проб-реквесты:
tcpdump -e -l -I -i en0 type mgt subtype probe-req
BSSID:Broadcast DA:Broadcast SA:xx:xx:xx:xx:xx:xx Probe Request (MGTS_GPON_1856)
BSSID:Broadcast DA:Broadcast SA:xx:xx:xx:xx:xx:xx Probe Request (MGTS_GPON_1856)
BSSID:Broadcast DA:Broadcast SA:xx:xx:xx:xx:xx:xx Probe Request (Onlime)
BSSID:Broadcast DA:Broadcast SA:xx:xx:xx:xx:xx:xx Probe Request (MT_FREE)
Видно, что ноутбук помнит несколько разных сетей, среди которых есть похожие на домашние. Важно иметь в виду, если ноутбук помнит сеть с паролем, то он не будет автоматически подключаться к ней, если она вдруг появится без пароля, но с тем же именем. Из этих названий мы можем предположить, что первые две сети, скорее всего, имели пароли, а вот последняя, это сеть московского общественного транспорта и она, видимо, была сохранена в памяти компьютера без пароля.
Теперь нам нужно поднять точку доступа с именем выбранной сети, в нашем случае MT_FREE, чтобы ноутбук автоматически к ней подключился. При этом нужно учесть, что если ноутбук сможет попасть в интернет, владелец сразу сможет его заблокировать и очистить диск. Но полностью интернет отключать нельзя, иначе macOS может сразу отключиться от такой WiFi-сети, посчитав ее сломанной. Поэтому в ней должен быть работающий DHCP, DNS-резолвер и интернет по HTTP, чтобы работали тесты на captive-портал. Достаточно открыть в интернет только TCP порт 80, и macOS будет считать, что сеть абсолютно нормальная, при этом антикражные функции iCloud работать не будут.
Если макбук успешно подключится к WiFi, нам останется просканировать его по сети на предмет открытых сервисов, сетевых шар и т.д.
Пароль на UEFI:
На всех макбуках без чипа T2, прошивка на материнской плате никак не защищена. Ее можно легко перепрошить, в том числе убрать пароль на UEFI. Для этого достаточно подключиться программатором к дебаг-разъему на материнской плате и дальше можно работать с чипом памяти как с обычной флешкой.
Универсальный кабель для прошивки флешки под все модели макбуков
Есть некоторая путаница с этими разъемами, так как у них нет ключа, то есть можно подключать разными сторонами. На разных моделях макбуков разъем находится в разных местах, также иногда требуется отдельно припаять питание флешки 3.3V. Поэтому иногда нужно внимательно изучить схему конкретной материнской платы.
Существуют также полностью автономные устройства, которые находят нужное смещение в прошивке и налету патчат его, отключая UEFI пароль. В некоторых сервисных центрах, где предлагают избавление от пароля на UEFI, предпочитают выпаивать чип памяти и прошивать его в зажиме программатора.
Защита:
- На диске макбука выделяется маленький раздел под линукс. Современное ядро (efistub) может грузиться сразу без всяких промежуточных загрузчиков вроде refind. По умолчанию ноутбук загружает Linux, в котором запускается замаскированный под macOS мастер первичной настройки.
- Хитрость состояла в том, что в легитимной macOS был установлен скрипт, который выполнялся каждый раз при грейсфульном (корректном) выключении, и устанавливал флаг в nvram: загрузить macOS один раз при следующей перезагрузке. То есть если вырубить ноутбук просто зажав кнопку, флаг не установится, и вор попадет в фишинговый линукс. При этом настоящий владелец может пользоваться системой, не замечая линукса. То есть все штатные выключения, перезагрузка и обновления работают как обычно. Загрузка в линукс происходит только в случае аварийного отключения. Таким образом, вор неизбежно попадает в фишинговый линукс, потому что не может корректно завершить сеанс юзера.
- Мастер настройки предлагает выполнить первичную настройку системы и для этого просит подключиться к WiFi. Дальше рисует фейковый процесс загрузки чего-то, а сам в этот момент отстукивается на сервер и дает полный доступ настоящему владельцу.
- Владелец по BSSID точек доступа WiFi находит местоположение ноутбука, может слушать звук с микрофона и смотреть на вора через камеру, и т.д. Пока интерфейс мастера настройки показывает фейковый процесс загрузки обновлений, владелец ноутбука уже едет по адресу б@ть (Личико).