Наконец-то наступил июль, время собираться на DEFCON. Следовать @defconparty в Твиттере и решить, какой штетлы посетить и что отчеты идти.
В этом году будет новый конкурс - SOHO безнадежно сломан , от ISE и EFF. Цель Трек 0 заключается в выявлении ранее неизвестных уязвимостей в домашних беспроводных маршрутизаторах.
Трек 1 будет проходить в режиме CTF прямо во время DEFCON. 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
По правилам конкурса мы должны обнаружить и эксплуатировать уязвимость нулевого дня.
Вы можете соединить несколько разных уязвимостей, чтобы набрать больше очков.
Если производитель исправил уязвимость, не сообщив об этом, и вы смогли ее эксплуатировать, то она все равно будет считаться уязвимостью нулевого дня (не будем обсуждать терминологию).
Теперь, когда у нас есть исходный код, пришло время его распаковать и изучить.
Полевое руководство CTF от Trail of Bits есть хорошие ресурсы по аудит исходного кода .
Вы можете использовать такие утилиты, как Вне всякого сравнения , Араксис Слияние И WinMerge под Windows или Слияние если вы используете Linux. Мы будем работать с каталогом «/asuswrt/release/src/router/».
Давайте сравним две версии через Meld:
Этот роутер уже имеет множество обнаруженных уязвимостей.
Если вы хотите найти 0-день, вам нужно убедиться, что уязвимость не была найдена раньше вас (и поверьте, это самое сложное).
В качестве примера:
- Удаленный рут-доступ ASUS RT-AC66U (Broadcom ACSD)
- Маршрутизатор ASUS RT-N66U — уязвимость обхода каталога HTTPS, полного доступа к файлам и раскрытия учетных данных
- Asus RT56U Удаленное введение команд
- Приобретение ASUS RT-N56U и RT-AC66U
- Уважаемый пользователь роутера Asus! Вас взломали благодаря легко эксплуатируемой уязвимости (Asusgate).
- ОСВДБ
Поэтому, если вы хотите получить высокие баллы, вам следует стремиться к стандартной конфигурации сервисов и процессов.
На вкладке «USB-приложения» в RT-AC66U вы можете настроить некоторые службы, такие как FTP, DLNA, NFS и Samba.
MiniDLNA также является отличной целью.
Вы можете легко найти в нем уязвимости, используя изучать Закари Катлип 'а, потому что он несколько раз ломал эту программу.
Еще один потенциально уязвимый сервис — AiCloud — он соединяет вашу домашнюю сеть с онлайн-хранилищем и обеспечивает доступ с мобильного устройства:
судебно-медицинская экспертиза
Пока часть команды изучает исходный код, специалисты-криминалисты распакуют прошивку с помощью binwalk и fmk:Вы можете помнить бинвалли - утилита, для которой я написал нахождение разницы между двумя двоичными деревьями с использованием нечеткого хеширования .
У Binwalk есть собственная опция для выполнения нечеткого хеширования между файлами и каталогами.
Большинство производителей (например, Asus) не раскрывают весь код. Вам, вероятно, придется перепроектировать драйверы и двоичные файлы, чтобы найти хорошую уязвимость.
Бинарный файл с именем «ACSD» наиболее интересен тем, что он был удален из новых версий прошивки (v3.0.0.4.374.130+) по причине уязвимость , найденный Джейкоб Холкомб .
Двоичные файлы для MIPS Little Endian.
Также важно узнать больше о файловой системе.
В OpenWRT Wiki есть отличная статья.
МТД в Linux дает доступ к флеш-устройствам и позволяет создавать на них полноценные файловые системы.
Вы можете зайти на устройство по ssh и посмотреть разметку:
Раздел NVRAM для нас очень ценен; в нем хранятся все настройки устройства.
Посмотреть его содержимое можно просто выгрузив нужный раздел (mtd1) или выполнив команду NVR шоу :
Pmon — еще один интересный раздел.
Он содержит сжатые данные LZMA, которые загрузчик использует для восстановления прошивки в случае сбоя обновления.
Ломать
Пора начать что-нибудь взламывать.Нам нужны такие утилиты, как gdb, gdbserver и strace, чтобы начать отладку двоичных файлов.
Мы можем либо перекрестно скомпилировать их, либо настроить Optware/Entware и установить скомпилированные пакеты.
Wanduck (GPL_RT_AC66U_VER3004266/asuswrt/release/src/router/rc/wanduck.c) — довольно интересный процесс для анализа.
Он запускается по умолчанию и подключает псевдо-HTTP-сервер через порт 18017. Этот HTTP-сервер перенаправляет каждый запрос на основной интерфейс и по какой-то причине отбрасывает все запросы, оканчивающиеся на «.
ico».
Давайте разберемся, почему он это делает — запустите gdbserver удаленно (gdbserver --multi localhost:12345 &) и подключитесь к любому отладчику по вашему выбору.
Если вы используете IDA Pro, откройте двоичный файл и установите тип процессора «mipsrl».
Найдите функцию handle_http_req и установите точку останова при сравнении dst_url:
Введите хост и порт gdbserver в меню «Отладчик/Параметры процесса» и прикрепите к нужному PID.
Продолжите процесс (F9) и сделайте HTTP-запрос к 192.168.1.1/x.ico .
Отладчик остановится в указанной точке останова, и вы сможете просмотреть регистры и память.
Если вы хотите найти другие цели для изучения, найдите их в «предварительно созданном» каталоге внутри «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
Если вы отмените APK или используете перехватывающий прокси-сервер, вы можете получить первоначальный HTTP-запрос приложения:
Заметили странный параметр ddns_hostname? Проблема криптографии =) (переводчик так не считает).
Криптография
Запрос POST пытается зарегистрировать новый динамический DNS-адрес для устройства с помощью службы asuscomm.com. Если поискать эту строку в исходниках RT-AC66U, то легко можно найти функцию, генерирующую DDNS-адрес:По информации из WikiDev , RT-AC66U использует в MAC-адресах следующие идентификаторы организаций:var isMD5DDNSName = function(){ var macAddr = '<% nvram_get("lan_hwaddr"); %>'.
toUpperCase().
replace(/:/g, ""); return "A"+hexMD5(macAddr).
toUpperCase()+".
asuscomm.com"; }
- 08:60:6В (1 В, 1 З, 2011)
- 10:BF:48 (1 Е, 2 З, 2011)
- 30:85:A9 (3 Е, 3 З, 2011)
- 50:46:5Д (1 Е, 2 З, 2012)
обманывать Мубикс
Если вам лень запускать команду, вы можете поискать «asuscomm.com» на Шодан .
По умолчанию AiCloud работает на портах 8082 и 443. Тот факт, что каждый может легко получить список маршрутизаторов, на которых работает эта служба, должен вызывать беспокойство.
верно? Еще одной интересной криптографической тренировкой может стать анализ алгоритма генерации PIN-кода WPS для устройства.
Вы можете получить текущий PIN-код и секретный_код, запустив nvram show | grep -E secret_code|wps_device_pin».
Ищите эти значения в исходном коде и используйте полученную информацию для написания кейгена (и не забудьте добавить чиптюн с помощью pouet.net ).
Вы также можете проверить энтропию ключей, сгенерированных на устройстве.
Посмотрите на слайды «Быстрое сканирование в Интернете и его приложения для обеспечения безопасности» чтобы получить некоторые идеи.
Интернет
Существует так много методов веб-тестирования на проникновение, что я остановлюсь лишь на паре из них.Интерфейс маршрутизатора не имеет защиты CSRF. Еще есть традиционная инъекция в команду ping и куча XSS-векторов.
Демон HTTP основан на microhttpd. В httpd.c имеется базовая защита от экранирования каталога:
Мы можем беззастенчиво воровать идея хакер фантастический и протестируйте потенциальные обходы безопасности: #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;
}
На веб-сервере есть некоторые обработчики 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 #информационная безопасность
-
Юбилейные Запуски Иранской Космонавтики
19 Oct, 24 -
Конец Работы - Портал 2 Вышел
19 Oct, 24 -
Что Такое «Стабильный»?
19 Oct, 24 -
Выпущен Весенний Аддон Edumandriva 2009.
19 Oct, 24 -
Сумма Прописью В Таблицах Google
19 Oct, 24 -
Полноэкранный Режим Окна Vim В Windows
19 Oct, 24