Как мне сказал директор, уже полдесятка людей заявили, что без сброса настроек это невозможно. Оказалось всё же возможно. А о том, как получилось восстановить пароль — небольшая история под катом.
Если кто-то попал сюда в поисках способа восстановления пароля, а читать мою историю не хочет, то можно сразу читать с жирного заголовка ниже.
Когда я услышал про эту задачу, сразу пришли в голову две стандартных мысли — поискать штатный способ сброса пароля без полного обнуления конфига и, конечно же, пароли по-умолчанию. Ибо, с чем черт не шутит, и кто знает, что за «специалисты» уже приходили смотреть телефон.
Первый вариант быстро отпал — инструкция такого варианта не предлагала, а на официальном форуме 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-адрес
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)
electronus
07.02.2017 02:02Когда-то стала задача ломануть циско АТА. Стандартный набор: wireshark, dhcp, dns, http и короткий конфиг с желаемым логином и паролем и они ваша…
eyt5297
07.02.2017 08:22Согласен, после проверки стандартных паролей стоило проверить как устанавливается IP. И если динамически то установить свой пароль дело техники.
Fess_blaga
07.02.2017 09:49А можно поподробнее?
KorDen32
07.02.2017 10:56У многих подобных устройств есть функция запроса своего конфига через Provision-сервер из DHCP Option 66/67, или из забитого в существующем конфиге адреса. Конфиг часто можно передавать кусками, не затирая остальное.
kirillaristov
07.02.2017 10:32-1Почему вариант сбросить на дефолтные настройки не подошел?
Какая польза от такой уязвимости? Можно ли в дампе подсмотреть логин/пароль для доступа к виртуальной ip-телефонии, например? Или это чисто игрушка "хакнуть телефон секретарши и поменять мелодию звонка"?ShroedingersCat
07.02.2017 10:37В первом абзаце всё описано — это работающая система, при том работающая 24/7, т.к. это такси. Текущих его настроек никто из существующих работников не знает и быстро настроить не сможет. Однако нужно его доконфигурировать и для этого, как мне сказали, есть люди, которые смогут это сделать.
Уверен, что в дампе можно всё что угодно найти, но в этом не было необходимости — нашел ровно то, что искал.kirillaristov
07.02.2017 16:49обратился директор одного таксопарка с просьбой сбросить пароль от IP-телефона D-Link DPH-400S
Это вся инфа, которая имелась.
У них всего один телефон? Можно дождаться минимума звонков и сбросить проблемный аппарат. Настройки взять с соседнего или у провайдера ip-телефонии.
roginvs
07.02.2017 11:12Удивляет менеджмент. А что будет когда этот телефон сломается?
ShroedingersCat
07.02.2017 11:36+3На самом деле, к сожалению, весьма обычная ситуация для конторы с небольшой ИТ-инфраструктурой, которая более-менее исправно работает в определенный момент времени…
А если сломается, то, скорее всего, будет как-то так:
mihmig
07.02.2017 14:45Хм, а Вы, после того как получили оплату за свой труд:
1. Сделали распечатки (именно распечатки) всех страниц настроек телефона?
2. Передали эти листочки (положив их в красную папочку) директору.
3. Сфотографировав на смартфон факт передачи?ShroedingersCat
07.02.2017 15:49Тон Вашего комментария наводит на мысль, что Вы много обо мне знаете, в том числе и то, что я получил оплату. Так вот — сразу мимо. Почему именно (нет, меня не кинули), не относится к техническим аспектам*.
По настройкам — до маразма, с фотографированием факта передачи, не доводил, но копию конфига сделал.
* «Когда-нибудь, может быть такой день никогда и не настанет, я попрошу тебя о какой-нибудь услуге, но, до этого дня, прими это в подарок...» (с).mihmig
07.02.2017 17:44Нет, у меня не было желания упрекнуть Вас в чём-либо, особенно в оплате. Которую Вам необходимо было всё-таки взять — ибо труд за который не заплачено — не ценится. Скорее всего Вы помогали другу/хорошему знакомому.
Я намекаю на то, что не получилось бы так, что если в следующий раз Вы будете недоступны (отпуск!) и владелец бизнеса/главбух пригласит «племянничка со второго курса» то он сбросит все настройки, а потом скажет что «предыдущий настройщик сделал так, что всё сбрасывается при попытке просмотреть». И потом Вы уже будете доказывать, что не верблюд…ShroedingersCat
07.02.2017 19:33В этом, конечно есть какая-то истина, но в данном случае им придется доказывать сначала, что я верблюд, ибо я им ничего не должен и ни чем не обязан.
Ну а поверить племяннику можно и при любых контраргументах — ИТ технологии они такие… по факту ничего не будет являться 100% доказательством.dibmaks
12.02.2017 00:14вероятнее всего, предыдущему коллеге не заплатили…
и «о удача», сейчас тоже вышло «не дорого»…
из плюсов — ваш приобретенный опыт…
из минусов, тот директор в следующий раз тоже будет искать «не дорого»
KorDen32
10.02.2017 15:39Практика показывает, что это зачастую бесполезно… Настраивал как-то по знакомству в небольшой организации (четыре кабинета в одном бизнес-центре плюс два "филиала" в других районах в виде одного кабинета в БЦ) сеть из состояния полного бардака ("инет работает — и ладно"). После настройки напечатал все что может понадобиться в двух экземплярах, скинул на email..
Спустя пару лет позвали донастроить с учетом нынешних требований. Пришел, спросил про бумажки, чтобы самому вспомнить что там было. Все помнили, что я давал бумажки — вот только найти их не смогли, не было и письма в почте. Пришлось вытаскивать мне свою копию из своих бэкапов...
Почему-то, когда дело касается листочков с кучей непонятных слов и нумерологией, оные умудряются очень быстро исчезать — такое ощущение, что конкуренты крадут, поражает как остальные договора и документы в таких организациях не теряются. Это ведь далеко не единственный подобный пример...
Melonom
Почему то вспомнилось детство, когда лет в 13, ко мне в руки попал первый в моей жизни номер ХАКЕРа. Хоть и ничерта не понимал, но зачитывался покруче любимой фантастики.