
Фреймворк для идентификации и запуска эксплойтов против хостов внутренней сети. Работает через перечисление IP-адресов с помощью WebRTC в сочетании с WebSockets и фингерпринтингом внешних ресурсов.
Фреймворк для идентификации и запуска эксплойтов против хостов внутренней сети. Работает через перечисление IP-адресов через WebRTC, сканирование хостов через WebSocket и фингерпринтинг внешних ресурсов.
После загрузки полезной нагрузки sonar.js в современном веб-браузере происходит следующее:
<img src="https://raw.githubusercontent.com/mandatoryprogrammer/sonar.js/HEAD/x"> и <link rel="stylesheet" type="text/css" href="x"> и перехватывая событие onload. Если ожидаемые ресурсы загружаются успешно, запускается заданный JavaScript-колбэк для выполнения предоставленного пользователем эксплойта.sonar.js работает на основе базы данных фингерпринтов. Фингерпринт — это просто список известных ресурсов на устройстве, к которым можно подключиться и обнаружить через onload. Примеры включают изображения, CSS-стили и даже внешний JavaScript.
Пример базы данных фингерпринтов показан ниже:
var fingerprints = [
{
'name': "ASUS RT-N66U",
'resources': ["/images/New_ui/asustitle.png","/images/loading.gif","/images/alertImg.png","/images/New_ui/networkmap/line_one.png","/images/New_ui/networkmap/lock.png","/images/New_ui/networkmap/line_two.png","/index_style.css","/form_style.css","/NM_style.css","/other.css"],
'callback': function( ip ) {
// Вставить эксплойт сюда
},
},
{
'name': "Linksys WRT54G",
'resources': ["/UILinksys.gif","/UI_10.gif","/UI_07.gif","/UI_06.gif","/UI_03.gif","/UI_02.gif","/UI_Cisco.gif","/style.css"],
'callback': function( ip ) {
// Вставить эксплойт сюда
},
},
]
Приведённая выше база данных содержит фингерпринты для двух устройств: WiFi-роутера ASUS RT-N66U и WiFi-роутера Linksys WRT54G.
Каждая запись базы данных имеет следующее:
name: Поле для идентификации устройства, для которого предназначен фингерпринт. Это может быть что-то вроде принтер HP Officejet 4500 или роутер Linksys WRT54G.resources: Массив относительных ссылок на ресурсы, такие как CSS-стили, изображения или даже JavaScript-файлы. Если ожидается, что эти ресурсы находятся на нестандартном порту, например 8080, укажите ресурс с портом: :8080/unique.css. Имейте в виду, что использование внешних ресурсов с активным содержимым, например JavaScript, опасно, так как может нарушить обычный ход выполнения.callback: Если все эти ресурсы найдены на перечисленном хосте, вызывается функция callback с одним аргументом — IP-адресом устройства.Создавая собственные фингерпринты, вы можете построить пользовательские эксплойты, которые будут запускаться против внутренних устройств после их обнаружения sonar.js. Распространённые эксплойты включают такие вещи, как межсайтовая подделка запроса (CSRF), межсайтовый скриптинг (XSS) и т.д. Идея в том, что вы можете использовать эти уязвимости для изменения конфигураций DNS роутера, выгрузки файлов с внутреннего файлового сервера и многого другого.
Для более простого способа создания фингерпринтов см. следующее расширение Chrome, которое автоматически генерирует код шаблона фингерпринта для текущей страницы:
Нажмите здесь, чтобы установить расширение Chrome

Используя sonar.js, команда пентестеров может создавать веб-эксплойты для таких вещей, как внутренние серверы логирования, роутеры, принтеры, VOIP-телефоны и многое другое. Поскольку внутренние сети часто менее защищены, такие атаки, как CSRF и XSS, могут быть мощными для захвата конфигураций устройств во внутренней сети хоста. Мы уже упоминали, что всё это можно сделать с веб-страницы в Интернете?
Если у вас есть устройство, такое как принтер, роутер или какой-либо другой внутренний сервис, пожалуйста, отправьте нам фингерпринт, чтобы мы могли добавить его в нашу основную базу данных. Со временем мы будем добавлять больше фингерпринтов для других устройств, но мы ограничены теми устройствами, к которым имеем доступ.