Сброс пароля на телефонах Grandstream 16XX
IP-телефоны являются одним из видов терминального оборудования VoIP. Несмотря на то, что основным элементом системы VoIP является сервер, который хранит важную информацию об аккаунтах, данные SIP-провайдеров, IP-телефон также содержит настройки авторизации по крайней мере одного внутреннего пользователя. Потеря этих данных может привести к взлому IP-АТС с целью отправки через нее платного SIP-трафика в экзотические страны и привести к серьезным финансовым последствиям для пользователя.
Для защиты телефона от взлома применяется система мер, главным элементом которой является стойкий пароль. Вопрос обширный и подробно останавливаться на нем в рамках этой статьи мы не будем. Нужно взять за правило ставить стойкие пароли.
Стойкий пароль поставили и ... забыли
Что делать, если пароль утерян? Есть несколько вариантов решения вопроса.
- Сбросить настройки телефона на заводские. В большинстве случаев происходит восстановление пароля суперпользователя на пароль по-умолчанию. Но встречаются исключения. Например, для телефонов Grandstream GXP1610/1615, Grandstream GXP1620/1625, сброс настроек на заводские не приводит к восстановлению заводского пароля. Более того, сделать hard reset на телефонах Grandstream привычным методом из меню телефона не представляется возможным. Пункт меню, отвечающий за это действие, скрыт за тем же паролем администратора, без которого невозможен сброс. Замкнутый круг получается. Но выход есть.
- На помощь приходит Autoprovisioning. Этот способ не описан в инструкции. Метод будет работать при условии активированной автонастройки в меню телефона. Суть его заключается в загрузке части xml параметров, которые содержат новые данные о пользователе. На этапе загрузки телефон отправляет несколько запросов к TFTP серверу, среди которых будет такой cfg123456789abc.xml, где 123456789abc - MAC-адрес телефона. Надо подготовить файл и положить его к корневую директорию TFTP сервера с содержанием:
<?xml version="1.0" encoding="UTF-8" ?>
<gs_provision version="1">
<mac>cfg123456789abc</mac>
<config version="1">
<P2>admin123</P2>
</config>
</gs_provision>
Механизм загрузки этого файла стандартный: телефон получает IP-адрес по DHCP. В опции 66 сервер сообщает телефону адрес TFTP сервера. Далее телефон отправляет запросы уже на сервер и в случае обнаружения запрошенных файлов, загружает их. В конфиге выше указан новый парольadmin123
.
После успешного скачивания и установки конфигурации, вход на web-интерфейс телефона возможен под новым паролем. - Третий способ самый радикальный. Его можно использовать для получения забытого пароля в любых устройствах, имеющих консоль управления ssh, telhet, web-интерфейс (http, https). Суть метода заключается в атаке bruteforce, произведенной по списку популярных паролей или по заданной маске. Для этого можно использовать множество программ для перебора паролей, но мы остановимся на наиболее популярной утилите в Linux, которая называется Hydra. Устанавливается она из репозитория без каких либо трудностей и запускается в консоли:
~$ hydra -l admin -P ~/Загрузки/passwords_lists/top500.txt -o ~/Загрузки/passwords_lists/ouput.log -F -v -t 2 192.168.0.231 ssh<br>
где admin - известный нам логин,
-P - путь к списку известных паролей. В примере список из 500 наиболее популярных.
-o - куда сохранять найденный пароль;
-t 2 - количество сессий для подбора. Зависит от оборудования. Чем их больше, тем быстрее перебирается список паролей.
192.168.0.231 - целевой IP, на которую производим атаку
ssh - подбираем пароль к авторизации в консоли управления ssh. Это быстрее и удобнее. В случае с попыткой перебрать пароль в http, столкнемся с защитой. На ssh такой защиты не установили. Вот что значит не использовать комплексную безопасность и разрешить работу одному и тому же пользователю в разных консолях управления. Но это помогает нам добиться цели и сделать некоторый вывод о подходе производителя к вопросу безопасности.
Если пароль будет найден, вы получите уведомление в консоли и в указанном выше файле:[22][ssh] host: 192.168.0.231 login: admin password: admin123
В целом, нет ничего страшного в забытых паролях от устройства. Страшно ставить нестойкие пароли, которые по известным спискам подбираются за несколько минут.
23 комментария
Долго мучался изучая эти Гидры, автпровизионинг, FireBug, TFTP.
А ларчик просто открывался
Поменять пароль администратора с меню телефона нельзя, нужен старый пароль.
Вариант три с гидрой не сработал, было перебрано 500 паролей, потом 4000 паролей, потом 700 000 паролей, весь перебор занял порядка недели. Какие есть еще варианты сброса пароля? От телефона надо только сброс до заводских настроек или узнать пароль администратора.
Connection received from 192.168.0.12 on port 42963 [22/07 12:02:18.885]
Read request for file <cfg000b82d3b91e.xml>. Mode octet [22/07 12:02:18.886]
OACK: <tsize=165,blksize=512,timeout=4,> [22/07 12:02:18.886]
Using local port 55322 [22/07 12:02:18.886]
<cfg000b82d3b91e.xml>: sent 1 blk, 165 bytes in 0 s. 0 blk resent [22/07 12:02:18.892]
Connection received from 192.168.0.12 on port 42304 [22/07 12:02:20.903]
но пароль не меняется. что не так делаю?
<?xml version="1.0" encoding="UTF-8" ?>
<gs_provision version="1">
<mac>cfg000b82d3b91e</mac>
<config version="1">
<P2>admin1234</P2>
</config>
</gs_provision>
Также сохраните файл через блокнот в кодировке UTF-8.
mac>000b82d3b91e</mac>