Ко мне, через двух знакомых, обратился директор одного таксопарка с просьбой сбросить пароль от IP-телефона D-Link DPH-400S. Историю телефона я не знаю и интересоваться не стал, но, как я понял, есть работающее и настроенное оборудование (в том числе и этот многоканальный телефон), которое никто не обслуживает. Пароли тоже никто не знает. А есть желание настроить интеграцию с компьютером, которую определенные люди сделать могут, но для этого нужен пароль от телефона.

Как мне сказал директор, уже полдесятка людей заявили, что без сброса настроек это невозможно. Оказалось всё же возможно. А о том, как получилось восстановить пароль — небольшая история под катом.

Если кто-то попал сюда в поисках способа восстановления пароля, а читать мою историю не хочет, то можно сразу читать с жирного заголовка ниже.

Когда я услышал про эту задачу, сразу пришли в голову две стандартных мысли — поискать штатный способ сброса пароля без полного обнуления конфига и, конечно же, пароли по-умолчанию. Ибо, с чем черт не шутит, и кто знает, что за «специалисты» уже приходили смотреть телефон.

Первый вариант быстро отпал — инструкция такого варианта не предлагала, а на официальном форуме D-Link на этот вопрос было предложено одно решение — полный сброс настроек. И этот вариант директор сразу забраковал.

Поэтому оставалось надеяться на удачу — нагуглил несколько вариантов паролей от самого телефона через кнопочный интерфейс и штук 5 паролей от веб-доступа и, вооружившись Kali Linux (на случай, если всё же по-хорошему телефон сдаться не захочет) пошел к «заказчику».

В первую очередь попробовал заготовленные пароли на самом телефоне — мимо. Ну что же, может веб интерфейс меня порадует? Спросил у сотрудников IP-адрес телефона — в ответ получил удивленное лицо и фразу о том, что понятия об этом не имеют. И это вселяло надежду, что он всё же не поменян. Подключившись к коммутатору, который стоял рядышком с телефоном, с помощью nmap-а быстренько нашел нужную мне цель, но и тут меня ждало разочарование — пароли для веб-интерфейса тоже не подошли.

Следующее, и, на тот момент, последнее, что было по плану — надежда на слабый пароль.

Глянув в исходники страницы входа, чтобы зарядить брутфорс формы через гидру (THC-Hydra), немного ужаснулся, обнаружив там экранов 10-15 JavaScript-кода. Оказывается, чтобы не отправлять пароль в открытом виде через HTTP, он, силой программистов D-Link-а, уходит в следующем виде:

<username> + md5(<username> + ":" + <password> + ":" + <salt>)

Реализация md5 на JavaScript тоже прилагалась. По всей видимости, дешевая замена HTTPS. Не стал даже проверять, каждый ли раз выдается новая соль (а это, скажу немного забегая вперед, в данном случае возможно — пароль-то хранится в открытом виде) или replay-атакам могут стать серьезной угрозой для «HTTPS от D-Link», т.к. решил пока больше не мучить web-сервис, ибо не было никакого желания готовить специальный словарь для брутфорса.

Куда больше было желания побрутфорсить telnet, который тоже шел в стандартной комплектации и отключен не был. Однако скорость брутфорса в 20-30 паролей в секунду немного расстроила. Запустил словарик топ-500 паролей и решил подождать, снова понадеявшись на удачу.

Заскучав минуты через 3 после начала брута, решил пройтись по телефону Nessus-ом. Однако в результатах скана были только открытые порты, что сразу показалось странным, так как, как минимум на использование telnet-а он должен был выругаться. Оказывается, по умолчанию Nessus не сканирует сетевые принтеры, телефоны и прочие дохлые устройства, чтобы они не умерли под его напором. Поставив нужную галочку снова запустил скан и тут же увидел ожидаемое желтое сообщение о том, что используется небезопасный протокол telnet. Потом ещё одно, весьма предсказуемое «IP Forwarding Enabled» — логично, через него ведь можно подключать компьютер, если не хватает портов в коммутаторе. А после я увидел уже что-то интересное:



Описание уязвимости говорило о том, что на порту 17185/udp висит сервис отладки VxWorks, через который есть возможность читать память устройства. Да, это действительно может быть полезно. И модуль для Metasploit-а, как оказалось, есть в наличии.

Кому нужно сбросить пароль, могут начинать читать отсюда:

Остается дело за малым, слить дамп памяти и надеяться на то, что пароль лежит там в открытом виде.
Запускаем Metasploit:
msfconsole

Выбираем нужный модуль:
use auxiliary/admin/vxworks/wdbrpc_memory_dump

Настроек у модуля весьма мало:



Достаточно указать только IP-адрес жертвы телефона, из которого нужно выковырять пароль. Пусть будет 192.168.1.177:
set rhost 192.168.1.177

Далее запускаем модуль командой run и видим, как начинает загружаться дамп памяти:


Поиск пароля в дампе решил начать конечно же со strings. Предполагая, что логин «admin» бывшие владельцы данного устройства менять не стали, сразу решил грепнуть по предполагаемому логину, выводя по 5 строчек до и после слова «admin». В итоге получилась команда
strings vxworks_memory.dmp | grep -A 5 -B 5 admin

Которая, о чудо, сразу дала нужный результат:



При этом, несмотря на то, что текста вывелось достаточно много, нужный мне результат был почти в самом низу, даже полоску прокрутки не пришлось трогать. И в открытом виде… Победа!

P.S. Кстати, пароль-то был не плох — 12 символов, большие/маленькие буквы и цифры и с виду — абсолютно случайные. Похоже тот кто его ставил, знал о важности парольной защиты. Но, похоже, не знал, что обновлять прошивки устройств не менее важно…
Поделиться с друзьями
-->

Комментарии (18)


  1. Melonom
    06.02.2017 21:32
    +1

    Почему то вспомнилось детство, когда лет в 13, ко мне в руки попал первый в моей жизни номер ХАКЕРа. Хоть и ничерта не понимал, но зачитывался покруче любимой фантастики.


  1. electronus
    07.02.2017 02:02

    Когда-то стала задача ломануть циско АТА. Стандартный набор: wireshark, dhcp, dns, http и короткий конфиг с желаемым логином и паролем и они ваша…


    1. eyt5297
      07.02.2017 08:22

      Согласен, после проверки стандартных паролей стоило проверить как устанавливается IP. И если динамически то установить свой пароль дело техники.


      1. Fess_blaga
        07.02.2017 09:49

        А можно поподробнее?


        1. KorDen32
          07.02.2017 10:56

          У многих подобных устройств есть функция запроса своего конфига через Provision-сервер из DHCP Option 66/67, или из забитого в существующем конфиге адреса. Конфиг часто можно передавать кусками, не затирая остальное.


          1. Fess_blaga
            07.02.2017 11:04

            Спасибо.


  1. gclub-casino
    07.02.2017 08:22

    Thank for sharing :p


  1. kirillaristov
    07.02.2017 10:32
    -1

    Почему вариант сбросить на дефолтные настройки не подошел?
    Какая польза от такой уязвимости? Можно ли в дампе подсмотреть логин/пароль для доступа к виртуальной ip-телефонии, например? Или это чисто игрушка "хакнуть телефон секретарши и поменять мелодию звонка"?


    1. ShroedingersCat
      07.02.2017 10:37

      В первом абзаце всё описано — это работающая система, при том работающая 24/7, т.к. это такси. Текущих его настроек никто из существующих работников не знает и быстро настроить не сможет. Однако нужно его доконфигурировать и для этого, как мне сказали, есть люди, которые смогут это сделать.

      Уверен, что в дампе можно всё что угодно найти, но в этом не было необходимости — нашел ровно то, что искал.


      1. kirillaristov
        07.02.2017 16:49

        обратился директор одного таксопарка с просьбой сбросить пароль от IP-телефона D-Link DPH-400S

        Это вся инфа, которая имелась.
        У них всего один телефон? Можно дождаться минимума звонков и сбросить проблемный аппарат. Настройки взять с соседнего или у провайдера ip-телефонии.


  1. roginvs
    07.02.2017 11:12

    Удивляет менеджмент. А что будет когда этот телефон сломается?


    1. ShroedingersCat
      07.02.2017 11:36
      +3

      На самом деле, к сожалению, весьма обычная ситуация для конторы с небольшой ИТ-инфраструктурой, которая более-менее исправно работает в определенный момент времени…

      А если сломается, то, скорее всего, будет как-то так:


  1. mihmig
    07.02.2017 14:45

    Хм, а Вы, после того как получили оплату за свой труд:
    1. Сделали распечатки (именно распечатки) всех страниц настроек телефона?
    2. Передали эти листочки (положив их в красную папочку) директору.
    3. Сфотографировав на смартфон факт передачи?


    1. ShroedingersCat
      07.02.2017 15:49

      Тон Вашего комментария наводит на мысль, что Вы много обо мне знаете, в том числе и то, что я получил оплату. Так вот — сразу мимо. Почему именно (нет, меня не кинули), не относится к техническим аспектам*.
      По настройкам — до маразма, с фотографированием факта передачи, не доводил, но копию конфига сделал.

      * «Когда-нибудь, может быть такой день никогда и не настанет, я попрошу тебя о какой-нибудь услуге, но, до этого дня, прими это в подарок...» (с).


      1. mihmig
        07.02.2017 17:44

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

        Я намекаю на то, что не получилось бы так, что если в следующий раз Вы будете недоступны (отпуск!) и владелец бизнеса/главбух пригласит «племянничка со второго курса» то он сбросит все настройки, а потом скажет что «предыдущий настройщик сделал так, что всё сбрасывается при попытке просмотреть». И потом Вы уже будете доказывать, что не верблюд…


        1. ShroedingersCat
          07.02.2017 19:33

          В этом, конечно есть какая-то истина, но в данном случае им придется доказывать сначала, что я верблюд, ибо я им ничего не должен и ни чем не обязан.
          Ну а поверить племяннику можно и при любых контраргументах — ИТ технологии они такие… по факту ничего не будет являться 100% доказательством.


          1. dibmaks
            12.02.2017 00:14

            вероятнее всего, предыдущему коллеге не заплатили…
            и «о удача», сейчас тоже вышло «не дорого»…

            из плюсов — ваш приобретенный опыт…
            из минусов, тот директор в следующий раз тоже будет искать «не дорого»


    1. KorDen32
      10.02.2017 15:39

      Практика показывает, что это зачастую бесполезно… Настраивал как-то по знакомству в небольшой организации (четыре кабинета в одном бизнес-центре плюс два "филиала" в других районах в виде одного кабинета в БЦ) сеть из состояния полного бардака ("инет работает — и ладно"). После настройки напечатал все что может понадобиться в двух экземплярах, скинул на email..


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


      Почему-то, когда дело касается листочков с кучей непонятных слов и нумерологией, оные умудряются очень быстро исчезать — такое ощущение, что конкуренты крадут, поражает как остальные договора и документы в таких организациях не теряются. Это ведь далеко не единственный подобный пример...