Как взломать секретные APN-ключи при помощи hashcat

Как взломать секретные APN-ключи при помощи hashcat

Большую часть времени встроенное устройство будет подключаться к сотовой сети, к которой сможет. Сей факт не означает, что телефон с SIM картой оператора Vodafone будет подключается к сети O2, но означает, что если мы удалим встроенную SIM-карту, то можем вставить новую, и устройство будет подключаться к той сети, к которой мы пожелаем.

Автор: Ken Munro

В статье Взлом IoT-производителей и умных автомобилей через APN рассматривался весь сценарий атаки, связанный с APN-ключами. Эта заметка, где основное внимание фокусируется на взломе APN-ключей, является квинтэссенцией той статьи.

Шаг 1. Извлечение учетных APN-записей

Большую часть времени встроенное устройство будет подключаться к сотовой сети, к которой сможет. Сей факт не означает, что телефон с SIM картой оператора Vodafone будет подключается к сети O2, но означает, что если мы удалим встроенную SIM-карту, то можем вставить новую, и устройство будет подключаться к той сети, к которой мы пожелаем.

Вам понадобится фемтосота на базе технологии 3G и система «Network in a Box». Мы заказываем в компании Sysmocom.


Рисунок 1: Фемтосота на базе технологии 3G

Как только фемтосота и сеть заработали, вставляем сим-карту в целевое устройство (и при этом сохраняем встроенную сим-карту, которая пригодится в дальнейшем) и дожидаемся подключения к нашей сети. Во время подключения, мы можем проанализировать информацию, проходящую через Ethernet-интерфейс, и выяснить много интересного. Например:

  1. Формат трафика, создаваемого устройством при подключении. Зашифрован ли этот трафик или нет.
  2. Есть ли открытые порты. Разработчики могут предполагать, что использование интерфейса на базе секретных APN-ключей достаточно для безопасности. Возможно, мы сможем обнаружить пароли суперпользователя или пароли, используемые при подключении по telnet.
  3. Информацию, связанную с APN-аутентификацией.

Первые два пункта не будут рассматриваться в данной статье. В сети достаточно ресурсов, освещающих эту тему.

С другой стороны, об APN-аутентификации написано довольно мало. APN-аутентификация через 3G-сети происходит на базе протокола PPP CHAP. Протокол CHAP, впервые представленный в 1996 году в качестве предшественника MS-CHAP, использует тройственное «рукопожатие»: вызов, ответ, аутентификация/отказ.

Шаг 2. Обход APN-аутентификации

Приложение Osmocom, на базе которого работает наша 3G-сеть, на данный момент игнорирует запросы APN-аутентификации, и разрешает подключение любому устройству с любым APN-именем, именем пользователя и паролем. Однако тройственное «рукопожатие» все равно происходит.

Если вы при помощи tcpdump посмотрите, что происходит во время аутентификации, то увидите следующее:


Рисунок 2: Пакеты, отсылаемые во время аутентификации

На рисунке выше отмечены релевантные пакеты. Используя Wireshark видим, что пакет с актуальным содержимым называется (RUA) DirectTransfer (DTP) (SM) Activate PDP Context Request.

Рисунок 3: Просмотр содержимого пакетов при помощи Wireshark

Шаг 3. Получение пароля: использование hashcat для расшифровки хеша MD5

APN-имя и имя пользователя можно найти в незашифрованном виде. Но не пароль.
Если глянуть в RFC1994, описывающего протокол CHAP, выясняется, что ответ представлен в виде хеша.

Рисунок 4: Формат ответа, используемого в протоколе CHAP

Октет идентификатора запроса (в данном случае - «0x01»), за которым идет пароль, за которым идет аутентификационое значение протокола CHAP (в данном случае – «f3bcc7c0d43ff6a7dafcb4a7a388975d») соединены вместе и зашифрованы алгоритмом MD5.

Поскольку мы имеем дело с MD5, то можем воспользоваться соответствующим режимом, предусмотренным в hashcat, который предназначен для iSCSI CHAP-хешей. Номер режима – 4800. На входе ожидаются хеши в следующем формате:

[ CHAP-ответ ]:[ CHAP-запрос ]:[ Октет идентификатора запроса ]

В нашем случае содержимое будет следующим:

7e1062f19af0b4ff4611206457de99e4:f3bcc7c0d43ff6a7dafcb4a7a388975d:01

Hashcat легко управляется с хешами MD5. Слабые пароли неминуемо будут расшифрованы. Даже в RFC от августа 1996 года рекомендуется использовать пароли длиной не менее 16 символов.

Рисунок 5: Рекомендации по поводу выбора пароля

Наша машинка с несколькими GPU перебирает хеши MD5 со скоростью 10 GH/s, и на 9 символьный пароль, содержащий символы в верхнем/нижнем регистре плюс цифры, уходит около 20 минут. Следует учитывать, что мы использовали просто перебор без оптимизаций.


Рисунок 6: Результаты подбора пароля

Кроме того, для хешей MD5 для всех паролей до 9 символов или 10 символьных паролей, содержащих буквы в нижнем регистре и цифры, доступны радужные таблицы.

Где кванты и ИИ становятся искусством?

На перекрестке науки и фантазии — наш канал

Подписаться