Відновлення пароля D-Link DPH-400S або історія невеликого хака

До мене, через двох знайомих, звернувся директор одного таксопарку з проханням скинути пароль від 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 символів, великі/малі літери та цифри і з вигляду — абсолютно випадкові. Схоже той хто його ставив, знав про важливість парольного захисту. Але, схоже, не знав, що оновлювати прошивки пристроїв не менш важливо…
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.