Testing security of my router

Попытка компиляции неудачна…

Вступление #

Мой роутер - NetGear WNR512v3, дешевая модель начала 2010-х годов; я беспокоился о его безопасности в течение 5 лет, пока в 2022 году у меня не появилось время и опыт, чтобы взломать его.

Начало #

Я начал с исследований и нашел на GitHub репозитории с прошивкой и приложенным README-файлом, который объясняет, как подключиться к роутеру. План был прост:

  1. Подключиться через telnet
  2. Выполнять программы
  3. Получить прибыль

Но что если возникнет… Препятствие

Подключение и проверка спецификаций #

Это было легко. Просто telnet 192.168.1.1 с вводом имени пользователя и пароля, которые используют одно и то же слово “root”. После проверки всех директорий я нашел очень интересную вещь - мой роутер использует UClibC в качестве стандартной системной библиотеки языка C. Это и многие другие вещи усложнили поиск информации и компиляторов, а архитектура MIPS тоже не помогла.

Передача данных на роутер #

К счастью, в версии роутера есть утилита tftp из Busybox, что делает процесс простым. Чтобы передавать данные с моего ПК и на роутер, мне просто нужен работающий на ПК сервер tftp.

Выполнение некоторых программ #

Поиск рабочих бинарных файлов #

Я очень старался и нашел на GitHub репозитории с MIPS бинарными файлами. Результат запуска этих файлов сводится к одному - segmentation fault или SIGSEGV (коротко, ошибка сегментации), что означает, что они пытались получить доступ к памяти, которая им не принадлежала.

Поиск рабочих компиляторов #

<> Я нашел список компиляторов, собранных для Linux и Windows. Сначала я попробовал компилятор Green Hills MIPS, потратив 12 минут на распаковку 3ГБ архива, а затем на компиляцию простой программы. Я понял - он не работает для MIPS v1 (программа падает с ошибкой недопустимой инструкции). Затем я попробовал старый компилятор Phillips, он тоже не сработал. Ни один из компиляторов из этого списка не работает.

Итоговый результат #

Я поискал на сайте UClibC и нашел… Полностью рабочий компилятор MIPS v1 UClibC! Я подумал “Наконец-то!”, но затем возникла ошибка сегментации при запуске скомпилированного Lua. Я был так измотан и выгорел к концу, что не смог закончить свой план.

Заключение #

Я потратил больше 14 дней на поиск рабочего компилятора… Мой роутер не позволяет получить внешний доступ к панели администратора, а мой провайдер не перенаправляет порты telnet протокола.