Исследование устройства Meraki. Часть 1

Исследование устройства Meraki. Часть 1

Перед тем как я присоединился к компании Salesforce и вплотную  занялся исследованием уязвимостей, я работал в группе Red Team. Нашей задачей было поиск слабостей в системе безопасности  Salesforce, когда мы выступали в роли сторонних злоумышленников.

Автор: Alberto García Illera

Перед тем как я присоединился к компании Salesforce и вплотную занялся исследованием уязвимостей, я работал в группе Red Team. Нашей задачей было поиск слабостей в системе безопасности  Salesforce, когда мы выступали в роли сторонних злоумышленников.

Во время одного из подходов, я установил устройство Pwn Plug R3 внутри переговорной комнаты. К сожалению, когда я вернулся в офис и проверил командную оболочку, выяснилось, что устройству удалость подключиться к сети VoIP VLAN. С точки зрения злоумышленника не сильно богатый улов, но, тем не менее, я решил копнуть глубже и выяснить, что можно извлечь из этой возможности.

Первоначальное исследование

При помощи Pwn Plug R3 мне удалось добраться до свитча марки Meraki. Подобные устройства подсоединены к облачному сервису, чтобы сисадмины могли удаленно управлять сетевым оборудованием через веб-интерфейс.  Интерфейс управления показан на рисунке ниже:

https://research.trust.salesforce.com/assets/meraki-1/image00.png
Рисунок 1: Интерфейс управления устройством Meraki

Я не смог найти ни одного публичного эксплоита для компрометирования устройств Meraki за исключением шелла для доступа к другим сетям VLAN. Более того, даже авторизированные сисадмины не имеют прямого SSH-доступа, а для управления используют веб-интерфейс. Оставалось только два варианта: заняться поиском другого способа проникновения или попытаться найти эксплоит для удаленного выполнения кода. Я пошел по второму пути. Вначале я решил провести более глубокое исследование веб-портала, связанного со свитчем в надежде собрать больше информации (и, возможно, найти лазейки для выполнения кода). Здесь возможности очень ограничены, поскольку практически везде требуется аутентификация.

https://research.trust.salesforce.com/assets/meraki-1/image01.png
Рисунок 2: Для доступа к одной из областей требуются учетные данные

Я стал думать над другим подходом.

Исследование аппаратной части

Мне всегда нравилось досконально разбираться в каком-либо вопросе, и обычно каждый раз происходит нечто экстраординарное: каким-то образом появляются новые болты и гайки, когда я собираю устройство заново. Схожая магия произошла и в этот раз. Совершенно случайно для исследования мне попалось устройство Meraki MX80 Security Appliance, и я решил выполнить пентест аппаратной части, а конкретно извлечь прошивку с целью ознакомления с CGI и бинарные файлами, «висящие» на каких-либо портах. После открытия устройства, я сразу же обратил внимание на жесткий диск емкостью 1 Тб. После подключения диска выяснилось, что там нет файловой системы, а само дисковое пространство использовалось для хранения кэша.

https://research.trust.salesforce.com/assets/meraki-1/image02.png
Рисунок 3: Содержимое жесткого диска устройства MerakiMX80

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

https://research.trust.salesforce.com/assets/meraki-1/image03.png
Рисунок 4: Логический анализатор

Скорость последовательного соединения – 57600. Для подключения к последовательному интерфейсу я использовал устройство Raspberry Pi.

https://research.trust.salesforce.com/assets/meraki-1/image04.jpg
https://research.trust.salesforce.com/assets/meraki-1/image05.jpg
Рисунок 5: Схема подсоединения к устройству

После получения полного доступа я извлек все конфигурационные файлы: конфигурационные файлы к webUI, /etc/passwd и так далее. В качестве веб-сервера на портале использовался Lighttpd. Учетные записи к защищенным областям хранятся в файле /tmp/lighttpd-htpasswd.conf со следующим содержимым:

m00180A07A354:/# cat /tmp/lighttpd-htpasswd.*
mf_test:$1$$ZbKKXKQQpKjTbTPeMZwk..
admin:$1$$G7.z4WDwEF7FvCK4H6cah/
Q2DN-GY83-EZBU:$1$$qRPK7m23GJusamGpoGLby/
q2dn-gy83-ezbu:$1$$qRPK7m23GJusamGpoGLby/

Последние две записи связаны уникальным серийным номером устройства, но также можно заметить, что есть два пользователя: mf_test и admin, которые обычно включаются в каждую версию прошивки. Учетные записи зашифрованы алгоритмом MD5, но после перебора при помощи специального оборудования от компании Salesforce, мне удалось подобрать один из паролей:

mf_test:mf_test

Эти учетные записи можно использовать для доступа к любой защищенной области на веб-сервере и модифицировать конфигурационные файлы и другие интересные страницы (подробнее об этом позже). Системные пароли хранятся в файле /etc/password:

m00180A07A354:/etc# cat passwd
root:!:0:0:root:/tmp:/bin/ash
nobody:*:65534:65534:nobody:/var:/bin/false
meraki:MvCWFGH8/CrXM:0:0:meraki:/tmp:/usr/bin/logincheck
mf:$1$$CgXoxAaejQmJWRkDiclb6/:0:0:meraki:/tmp:/usr/bin/mf_logincheck

Я попытался взломать некоторые из этих учетных записей, но успеха не добился. Скорее всего, SSH-соединение запрещено, и пароли не пригодны к использованию.

В следующей части я расскажу, как не только полностью скомпрометировать устройство и получить доступ к оболочке с правами суперпользователя, но и добиться частичной работы устройства модели Meraki на виртуальной машине с Ubuntu. Это исследование чрезвычайно важно для достижения целей, преследуемых группой Red Team.

Примечание: компания Salesforce в курсе о выявленной уязвимости. Обо всех брешах, описанных в этой статье, сообщено компании Cisco. Исправления внесены. Во второй части будут раскрыты другие подробности, включая уникальный номер CVE, где описываются данные проблемы.

Цифровые следы - ваша слабость, и хакеры это знают.

Подпишитесь и узнайте, как их замести!