Взламываем Asus Rt-Ac66U И Готовимся К Sohopeilybroken Ctf

Наконец-то наступил июль, время собираться на DEFCON. Следовать @defconparty в Твиттере и решить, какой штетлы посетить и что отчеты идти.

В этом году будет новый конкурс - SOHO безнадежно сломан , от ISE и EFF. Цель Трек 0 заключается в выявлении ранее неизвестных уязвимостей в домашних беспроводных маршрутизаторах.

Трек 1 будет проходить в режиме CTF прямо во время DEFCON. CTF — это всегда очень весело, а именно этот предполагает взлом реального оборудования, что вдвойне весело!

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Да, это мое рабочее место =P Я очень заинтересован Открытый беспроводной маршрутизатор EFF (переводчик тоже, кстати), но об устройстве пока ничего не говорят. В правила соревнований появляется ASUS RT-AC66U (HW Ver. A2) [Версия 3.0.0.4.266] как возможное устройство взлома.

У меня дома есть лишний RT-AC66U, поэтому я решил написать небольшой туториал для всех участников конкурса CTF.



Разведка
Прежде всего вам необходимо найти прошивку и ее исходный код. К счастью, Asus RT-AC66U распространяется под лицензией GPL, и исходный код прошивки найти в Интернете не составляет труда.

Версия, используемая в CTF, старая, 2012 года.

Для лучшего анализа прошивки мы возьмем прошивку и исходники версий от v3.0.0.4.266 до v3.0.0.4.376.1123 (последняя версия на момент написания статьи) : Asus RT-AC66u v3.0.0.4.266 - прошивка Asus RT-AC66u v3.0.0.4.266 - исходный код Asus RT-AC66u v3.0.0.4.376.1123 - прошивка Asus RT-AC66u v3.0.0.4.376.1123 - исходный код Между этими двумя версиями вышло множество обновлений прошивки, поэтому посмотрим на их историю изменений: www.asus.com/Networking/RTAC66U/HelpDesk_Download

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

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

Вы можете соединить несколько разных уязвимостей, чтобы набрать больше очков.

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

Теперь, когда у нас есть исходный код, пришло время его распаковать и изучить.

Полевое руководство CTF от Trail of Bits есть хорошие ресурсы по аудит исходного кода .

Вы можете использовать такие утилиты, как Вне всякого сравнения , Араксис Слияние И WinMerge под Windows или Слияние если вы используете Linux. Мы будем работать с каталогом «/asuswrt/release/src/router/».

Давайте сравним две версии через Meld:

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Этот роутер уже имеет множество обнаруженных уязвимостей.

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

В качестве примера:

С вас снимут несколько баллов, если ваши эксплойты требуют специальной конфигурации системы или специальной информации.

Поэтому, если вы хотите получить высокие баллы, вам следует стремиться к стандартной конфигурации сервисов и процессов.



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

На вкладке «USB-приложения» в RT-AC66U вы можете настроить некоторые службы, такие как FTP, DLNA, NFS и Samba.

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

MiniDLNA также является отличной целью.

Вы можете легко найти в нем уязвимости, используя изучать Закари Катлип 'а, потому что он несколько раз ломал эту программу.



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Еще один потенциально уязвимый сервис — AiCloud — он соединяет вашу домашнюю сеть с онлайн-хранилищем и обеспечивает доступ с мобильного устройства:

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



судебно-медицинская экспертиза
Пока часть команды изучает исходный код, специалисты-криминалисты распакуют прошивку с помощью binwalk и fmk:

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

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

У Binwalk есть собственная опция для выполнения нечеткого хеширования между файлами и каталогами.



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

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

Бинарный файл с именем «ACSD» наиболее интересен тем, что он был удален из новых версий прошивки (v3.0.0.4.374.130+) по причине уязвимость , найденный Джейкоб Холкомб .



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Двоичные файлы для MIPS Little Endian.

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Также важно узнать больше о файловой системе.

В OpenWRT Wiki есть отличная статья.

о расположении флеш-памяти .

МТД в Linux дает доступ к флеш-устройствам и позволяет создавать на них полноценные файловые системы.

Вы можете зайти на устройство по ssh и посмотреть разметку:

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Раздел NVRAM для нас очень ценен; в нем хранятся все настройки устройства.

Посмотреть его содержимое можно просто выгрузив нужный раздел (mtd1) или выполнив команду NVR шоу :

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Pmon — еще один интересный раздел.

Он содержит сжатые данные LZMA, которые загрузчик использует для восстановления прошивки в случае сбоя обновления.



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Ломать
Пора начать что-нибудь взламывать.

Нам нужны такие утилиты, как gdb, gdbserver и strace, чтобы начать отладку двоичных файлов.

Мы можем либо перекрестно скомпилировать их, либо настроить Optware/Entware и установить скомпилированные пакеты.



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Wanduck (GPL_RT_AC66U_VER3004266/asuswrt/release/src/router/rc/wanduck.c) — довольно интересный процесс для анализа.

Он запускается по умолчанию и подключает псевдо-HTTP-сервер через порт 18017. Этот HTTP-сервер перенаправляет каждый запрос на основной интерфейс и по какой-то причине отбрасывает все запросы, оканчивающиеся на «.

ico».



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Давайте разберемся, почему он это делает — запустите gdbserver удаленно (gdbserver --multi localhost:12345 &) и подключитесь к любому отладчику по вашему выбору.

Если вы используете IDA Pro, откройте двоичный файл и установите тип процессора «mipsrl».



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Найдите функцию handle_http_req и установите точку останова при сравнении dst_url:

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Введите хост и порт gdbserver в меню «Отладчик/Параметры процесса» и прикрепите к нужному PID.

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Продолжите процесс (F9) и сделайте HTTP-запрос к 192.168.1.1/x.ico .

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



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Если вы хотите найти другие цели для изучения, найдите их в «предварительно созданном» каталоге внутри «GPL_RT_AC66U_VER3004266/asuswrt/release/src/router/».

Несколько интересных двоичных файлов:

  • /acsd/prebuilt/acsd
  • /webdav_client/prebuilt/webdav_client
  • /asuswebstorage/prebuilt/asuswebstorage
  • /eapd/linux/prebuilt/eapd
  • /NAS/NAS/prebuilt/NAS
  • /flash/предустановленный/flash
  • /et/prebuilt/et
  • /wps/prebuilt/wps_monitor
  • /устаревший/предварительно построенный/устаревший
  • /wlconf/prebuilt/wlconf
Мобильное приложение AiCloud может раскрыть больше интересной информации о работе устройства.

Если вы отмените APK или используете перехватывающий прокси-сервер, вы можете получить первоначальный HTTP-запрос приложения:

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Заметили странный параметр ddns_hostname? Проблема криптографии =) (переводчик так не считает).



Криптография
Запрос POST пытается зарегистрировать новый динамический DNS-адрес для устройства с помощью службы asuscomm.com. Если поискать эту строку в исходниках RT-AC66U, то легко можно найти функцию, генерирующую DDNS-адрес:
  
  
   

var isMD5DDNSName = function(){ var macAddr = '<% nvram_get("lan_hwaddr"); %>'.

toUpperCase().

replace(/:/g, ""); return "A"+hexMD5(macAddr).

toUpperCase()+".

asuscomm.com"; }

По информации из WikiDev , RT-AC66U использует в MAC-адресах следующие идентификаторы организаций:
  • 08:60:6В (1 В, 1 З, 2011)
  • 10:BF:48 (1 Е, 2 З, 2011)
  • 30:85:A9 (3 Е, 3 З, 2011)
  • 50:46:5Д (1 Е, 2 З, 2012)
Используя эту информацию, мы можем сопоставить IP-адрес каждого маршрутизатора с помощью AiCloud. Давайте просто сгенерируем список всех возможных MAC-адресов и попробуем DNS-имена.

обманывать Мубикс

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Если вам лень запускать команду, вы можете поискать «asuscomm.com» на Шодан .



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

По умолчанию AiCloud работает на портах 8082 и 443. Тот факт, что каждый может легко получить список маршрутизаторов, на которых работает эта служба, должен вызывать беспокойство.

верно? Еще одной интересной криптографической тренировкой может стать анализ алгоритма генерации PIN-кода WPS для устройства.

Вы можете получить текущий PIN-код и секретный_код, запустив nvram show | grep -E secret_code|wps_device_pin».

Ищите эти значения в исходном коде и используйте полученную информацию для написания кейгена (и не забудьте добавить чиптюн с помощью pouet.net ).



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

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

Посмотрите на слайды «Быстрое сканирование в Интернете и его приложения для обеспечения безопасности» чтобы получить некоторые идеи.



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF



Интернет
Существует так много методов веб-тестирования на проникновение, что я остановлюсь лишь на паре из них.

Интерфейс маршрутизатора не имеет защиты CSRF. Еще есть традиционная инъекция в команду ping и куча XSS-векторов.

Демон HTTP основан на microhttpd. В httpd.c имеется базовая защита от экранирования каталога:

Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

Мы можем беззастенчиво воровать идея хакер фантастический и протестируйте потенциальные обходы безопасности:

#include <stdio.h> #include <string.h> int main(int argc, char *argv[]){ char *file; int len; file = argv[1]; len = strlen(file); if ( file[0] == '/' || strcmp( file, ".

" ) == 0 || strncmp( file, ".

/", 3 ) == 0 || strstr( file, "/.

/" ) != (char*) 0 || strcmp( &(file[len-3]), "/.

" ) == 0 ) { printf ("Illegal filename: %s\n", file); } else { printf ("Accepted filename: %s\n", file); } return 0; }



Взламываем Asus RT-AC66U и готовимся к SOHOpeilyBroken CTF

На веб-сервере есть некоторые обработчики MIME, которые «следовало удалить».



// some should be removed struct except_mime_handler except_mime_handlers[] = { { "QIS_*", MIME_EXCEPTION_NOAUTH_FIRST|MIME_EXCEPTION_NORESETTIME},

Теги: #defcon #RT-AC66U #ctf #exploit #информационная безопасность

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.