Чтобы подключиться к любой сотовой APN-службе, устройству необходимо иметь следующую информацию: имя точки доступа, имя пользователя и пароль. Подобная схема работает в случае с SIM-картами, купленными у посредников.
Автор: Ken Munro
Прежде чем мы перейдем непосредственно к теме статьи, проясним понятие APN:
APN (Access Point Name; Имя точки доступа), доступ к которому можно получить у большинства мобильных операторов, представляет собой службу, используемую для сбора мобильных данных протоколов 3G/4G, исходящих от устройства, и перенаправления трафика на конечный IP-узел в корпоративной сети (источник - CESG).
Иногда IoT-устройства и транспортные средства, которые мы тестируем, передают только IP-трафик через сотовые сети. Если вы думаете, что использование секретных APN-ключей усиливает безопасность, то спешим вас разочаровать.
Мы обнаружили, что APN-ключи зачастую легко скомпрометировать. Кроме того, можно воспользоваться IoT-устройством и получить доступ к APN без взлома ключа, после чего становится доступной конфиденциальная информация и другие устройства, использующие тот же самый APN. В этот перечень входят другие IoT-устройства того же производителя и другие транспортные средства. Кроме того, мы даже можем скомпрометировать внутренние системы корпоративных сетей.
Подключение к APN
Чтобы подключиться к любой сотовой APN-службе, устройству необходимо иметь следующую информацию: имя точки доступа, имя пользователя и пароль. Подобная схема работает в случае с SIM-картами, купленными у посредников.
Рисунок 1: Перечень SIM-карт
Провайдер может выдать APN-настройки для вашего телефона при подключении к сети. Или, что более вероятно, будет доступна информация для самостоятельной настойки. Провайдеры используют различные APN при предоставлении услуг для планшетов, компьютеров или телефонного трафика. Если погуглить фразу “APN Settings”, то можно получить большой список публичных APN для разных сотовых провайдеров по всему миру. Кроме того, вы можете найти эти настройки в выгруженных прошивках. В любом случае, подключение к APN позволяет сотовому устройству осуществлять коммуникации поверх IP, будь то интернет или частный внутренний диапазон.
Даже несмотря на то, что иногда отсутствие стандартного Ethernet-интерфейса на «умном» устройстве затрудняет тестирование, в то же время сам процесс может быть довольно интересным.
Извлечение учетных APN-записей
Если предположить, что устройство, подключенное к частной APN-службе, защищено физически, возникает закономерный вопрос: «Как извлечь учетные APN-записи?»
Большую часть времени устройство будет подключаться к сотовой сети, к которой сможет. Это не означает, что телефон с SIM-картой от Vodafone будет подключаться к сети O2, но означает, что мы можем заменить заводскую SIM-карту на нашу собственную и телефон будет подключаться к той сети, к которой мы захотим.
В нашем распоряжении есть фемтосота, поддерживающая стандарт 3G, устройство “Network in a Box” и несколько SIM-карт. Мы заказали эти устройства в компании Sysmocom, специалисты которой делают реально полезную работу в плане доступности наработок для стандарта 3G как часть проекта Osmocom.
Рисунок 2: Устройство sysmoNITB 3.5G
Как только фемтосота и сеть приведены в рабочее состояние, мы можем вставить SIM-карту в целевое устройство (будьте аккуратны и не потеряйте заводскую SIM-карту, которая пригодится нам в дальнейшем) и ждем подключения к сети. Таким образом, через обычный Ethernet-интерфейс мы можем видеть, какие операции будет выполнять устройство через сотовое соединение. Например:
Первые два пункта мы рассматривать не будем, поскольку существует достаточно ресурсов, освещающих эту тему.
С другой стороны, про APN-аутентификацию написано достаточно мало. APN-аутентификация через 3G-сеть происходит на базе протокола PPP CHAP. Протокол CHAP, впервые предложенный в 1996 году в качестве предшественника MS-CHAP, использует тройственное «рукопожатие»: вызов, ответ, аутентификация/отказ.
Обход APN-аутентификации
Приложение Osmocom, на базе которого работает наша 3G-сеть, игнорирует запросы APN-аутентификации, и позволяет подключиться любому устройству с любым APN-именем, именем пользователя и паролем. Однако тройственное «рукопожатие» все равно происходит.
Если вы проанализируете процесс аутентификации при помощи tcpdump, то увидите примерно следующее:
Рисунок 3: Пакеты, передаваемые во время APN-аутентификации
На рисунке выше релевантные пакеты выделены в красную рамку. В Wireshark видно, что пакет содержащий информацию об APN-аутентификации называется (RUA) DirectTransfer (DTP) (SM) Activate PDP Context Request.
Рисунок 3: Содержимое пакета (RUA) DirectTransfer (DTP) (SM) Activate PDP Context Request
Но где же пароль?
APN-имя и имя пользователя отображаются в открытом виде. Но не пароль.
За прямым ответом мы должны обратиться к RFC1994. Выясняется, что CHAP Response Value (значение CHAP-ответа) представляет собой немного свернутый хеш.
Рисунок 3: Выдержка из RFC (в красную рамку выделен абзац, описывающий формат значения ответа)
За октетом идентификатора запроса (в данном случае - “0x01”) следует пароль, и далее значение CHAP-аутентификации (в данном случае - “f3bcc7c0d43ff6a7dafcb4a7a388975d”). После объединения вся строка кодируется алгоритмом MD5.
Да, это MD5
По счастливому совпадению в hashcat есть режим, предназначенный для хешей iSCSI CHAP. Номер режима – 4800. В вход подаются хеши в следующем формате:
[ CHAP Response Value ]:[ CHAP Challenge Value ]:[ Response Identifier Octet ]
В нашем случае строка будет выглядеть так:
7e1062f19af0b4ff4611206457de99e4:f3bcc7c0d43ff6a7dafcb4a7a388975d:01
Hashcat легко управляется с MD5. Слабые пароли будут взломаны в 100% случаев. Даже в RFC от августа 1996 года рекомендуется использовать пароль не менее 16 символов.
Рисунок 4: Рекомендации по выбору пароля
Наша установка, состоящая из нескольких GPU, работает со скоростью 10 GH/s при подборе хешей, закодированных по алгоритму MD5. Таким образом, подбор пароля из 9 символов в верхней/нижней раскладке + цифры занимает около 20 минут. Это скорость простого перебора без оптимизаций, которые могли бы сделать процесс взлома еще быстрее.
Рисунок 5: Пример команды для подбора тестового подбора
Кроме того, для алгоритма MD5 существуют радужные таблицы для комбинаций вплоть до 9 символов или до 10 символов в нижней раскладке плюс цифры.
Знаете ли вы насколько сложный и длинный ваш секретный APN-ключ?
Далее мы можем вставить заводскую SIM-карту в сотовый модем и подключиться к APN, используя взломанную учетную запись. Прямо к той среде, которую использует клиент. Таким образом, тестирование аппаратной части превращается в оценку внутренней инфраструктуры через сотовую сеть.
Мы проводили пентесты и скомпрометировали всю внутреннюю сеть организации при помощи IoT-устройств, которые должны были быть изолированным. Мне вспоминается один контроллер доступа, который использовал GSM/LTE через частный APN в удаленном и физически доступном месте, где кража не составила бы особого труда. Мы демонтировали устройство, извлекли SIM-карту, взломали APN-ключ и получили доступ к сети, используемой клиентом. Вектор атаки, связанный со взломом секретного APN-ключа учтен не был.
Еще мы работали с очень большой сетью умной осветительной системы. После компрометирования одного осветительного устройства мы получили доступ ко всей службе APN и затем к другим устройствам этой сети. Затем к сети потребителей и затем к сети производителей осветительных IoT-устройств.
Кому нужна собственная 3G-сеть? Еще один метод
IoT-устройства часто хранят секретные ключи в памяти, которая практически всегда незашифрована.
Если даже нам не удастся выгрузить прошивку, зачастую считать ключи можно прямо из RAM и затем скомпрометировать сеть.
Эксплуатация секретных APN-ключей в транспортных средствах
Большинство современных транспортных средств имеют телематические блоки управления (telematics control unit; TCU), которые содержат SIM-карты для работы с мобильными данными. В Европе из-за системы автоматического оповещения ECall подобные блоки управления используются практически во всех новых автомобилях. Частные APN используются при сотовых коммуникациях с целью повышения безопасности. TCU легко извлечь из транспортного средства и провести исследование.
Рисунок 6: Телематический блок управления
Зачастую существует множество проблем, связанных с TCU, в области безопасности, что делает компрометирование относительно простым. Вам даже могут не потребоваться техники, связанные с исследованием аппаратной части.
Основная проблема в том, что телематические блоки проходят через большую логистическую цепочку: производитель запчастей, производитель блоков, тематический провайдер и провайдер, обслуживающий подключения. В каждом звене цепи могут быть совершены ошибки.
Во время одного из тестов производителя транспортных средств мы исследовали TCU. Поскольку у нас был физический доступ к блоку, то даже не нужно было взламывать секретный APN-ключ, поскольку это устройство было достоверным. При исследовании сети, к которой у TCU был доступ, мы испытывали одновременно и интерес и ужас.
Было очевидно, что к этой сети было подключено огромное количество устройств. У нас не было никаких особых прав доступа на исследовании среды, за пределами сети производителя автомобилей.
И мы просто сделали обратный DNS запрос…
… и получили большой список DNS-записей, имеющих отношение к производителям транспортных средств, которые не были связаны с нашим клиентом. В основном бренды германских автомобилей. И на этом этапе мы остановились.
Было совершенно очевидно, что отсутствовала какая-либо сегрегация между транспортными средствами и брендами. Телематический провайдер даже не реализовал сегрегацию между брендами транспортных средств. А только между самими транспортными средствами.
Потенциал найденной нами возможности был огромен. Одна уязвимость, позволяющая удаленную эксплуатацию в TCU, и вы потенциально можете удаленно скомпрометировать каждый автомобиль бренда и остальные бренды. В прошлом похожая история уже случалась, когда был скомпрометирован процессор Renesas V850 в телематической системе Uconnect. В этой истории не были задействованы секретные APN-ключи, а взлом был основан на отсутствии сегрегации в сети Sprint.
Мы считаем, что у атаки через секретные APN-ключи потенциал и последствия могли бы быть намного серьезнее, если бы были сделаны похожие ошибки.
Я использую APN-ключи в моих продуктах и службах, что мне делать?
Если вы используете APN в подключенных устройствах, убедитесь в том, что и устройство и APN защищены на приемлемом уровне: