Сброс пароля на телефонах Grandstream 16XX

21 октября 2016

IP-телефоны являются одним из видов терминального оборудования VoIP. Несмотря на то, что основным элементом системы VoIP является сервер, который хранит важную информацию об аккаунтах, данные SIP-провайдеров, IP-телефон также содержит настройки авторизации по крайней мере одного внутреннего пользователя. Потеря этих данных может привести к взлому IP-АТС с целью отправки через нее платного SIP-трафика в экзотические страны и привести к серьезным финансовым последствиям для пользователя.

Для защиты телефона от взлома применяется система мер, главным элементом которой является стойкий пароль. Вопрос обширный и подробно останавливаться на нем в рамках этой статьи мы не будем. Нужно взять за правило ставить стойкие пароли.

Стойкий пароль поставили и ... забыли

Что делать, если пароль утерян? Есть несколько вариантов решения вопроса.

  1. Сбросить настройки телефона на заводские. В большинстве случаев происходит восстановление пароля суперпользователя на пароль по-умолчанию. Но встречаются исключения. Например, для телефонов Grandstream GXP1610/1615, Grandstream GXP1620/1625, сброс настроек на заводские не приводит к восстановлению заводского пароля. Более того, сделать hard reset на телефонах Grandstream привычным методом из меню телефона не представляется возможным. Пункт меню, отвечающий за это действие, скрыт за тем же паролем администратора, без которого невозможен сброс. Замкнутый круг получается. Но выход есть.
  2. На помощь приходит 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-интерфейс телефона возможен под новым паролем.
  3. Третий способ самый радикальный. Его можно использовать для получения забытого пароля в любых устройствах, имеющих консоль управления 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

В целом, нет ничего страшного в забытых паролях от устройства. Страшно ставить нестойкие пароли, которые по известным спискам подбираются за несколько минут.