[Из песочницы] Восстановление пароля D-Link DPH-400S или история небольшого хака
Как мне сказал директор, уже пол десятка людей заявили, что без сброса настроек это невозможно. Оказалось всё же возможно. А о том, как получилось восстановить пароль — небольшая история под катом.
Если кто-то попал сюда в поисках способа восстановления пароля, а читать мою историю не хочет, то можно сразу читать отсюда.
Когда я услышал про эту задачу, сразу пришли в голову две стандартных мысли — поискать штатный способ сброса пароля без полного обнуления конфига и, конечно же, пароли по-умолчанию. Ибо, с чем черт не шутит, и кто знает, что за «специалисты» уже приходили смотреть телефон.
Первый вариант быстро отпал — инструкция такого варианта не предлагала, а на официальном форуме D-Link на этот вопрос было предложено одно решение — полный сброс настроек. И этот вариант директор сразу забраковал.
Поэтому оставалось надеяться на удачу — нагуглил несколько вариантов паролей от самого телефона через кнопочный интерфейс и штук 5 паролей от веб-доступа и, вооружившись Kali Linux (на случай, если всё же по-хорошему телефон сдаться не захочет) пошел к «заказчику».
В первую очередь попробовал заготовленные пароли на самом телефоне — мимо. Ну что же, может веб интерфейс меня порадует? Спросил у сотрудников IP-адрес телефона — в ответ получил удивленное лицо и фразу о том, что понятия об этом не имеют. И это вселяло надежду, что он всё же не поменян. Подключившись к коммутатору, который стоял рядышком с телефоном, с помощью nmap-а быстренько нашел нужную мне цель, но и тут меня ждало разочарование — пароли для веб-интерфейса тоже не подошли.
Следующее, и, на тот момент, последнее, что было по плану — надежда на слабый пароль.
Глянув в исходники страницы входа, чтобы зарядить брутфорс формы через гидру (THC-Hydra), немного ужаснулся, обнаружив там экранов 10–15 JavaScript-кода. Оказывается, чтобы не отправлять пароль в открытом виде через HTTP, он, силой программистов D-Link-а, уходит в следующем виде:
+ md5( + ":" + + ":" + )
Реализация 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 символов, большие/маленькие буквы и цифры и с виду — абсолютно случайные. Похоже тот кто его ставил, знал о важности парольной защиты. Но, похоже, не знал, что обновлять прошивки устройств не менее важно…
Комментарии (1)
6 февраля 2017 в 21:32
0↑
↓
Почему то вспомнилось детство, когда лет в 13, ко мне в руки попал первый в моей жизни номер ХАКЕРа. Хоть и ничерта не понимал, но зачитывался покруче любимой фантастики.