Фреймворк для атаки DNS rebinding: Singularity

Фреймворк для атаки DNS rebinding: Singularity

DARKNIM


Singularity of Origin - инструмент для осуществления атак перепривязки DNS (DNS rebinding). Включает в себя необходимые компоненты для перепривязки IP адреса DNS-имени атакующего сервера на IP адрес целевого компьютера и для обеспечения атаки с целью использования в своих интересах уязвимого ПО целевой машины.

Инструмент также предоставляет пробные полезные нагрузки (payloads) для взлома различных версий уязвимого ПО, от простого захвата домашней страницы, до дистанционного выполнения задач. Помогает обеспечить условия для эксплуатации ПО, уязвимого для атак DNS rebinding, и повысить осведомленность о том как они работают и как защититься от них.

Как работает DNS rebinding?

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

Ответы DNS-сервера Singularity содержат очень короткое время жизни (TTL) записей,таким образом минимизируя время кэширования ответа. Когда жертва просматривает интерфейс Singularity, DNS-сервер Singularity возвращает сначала собственный IP адрес, содержащий код на стороне клиента (payload).

Когда запись в DNS устаревает, DNS-сервер Singularity отвечает IP адресом целевого хоста (н-р: 127.0.0.1) и браузер жертвы получает доступ к целевому приложению, в обход политики одинакового источника браузера.

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

Функции

  1. Singularity обеспечивает полный стек для атаки DNS rebinding:

· Использует собственный DNS-сервер для перепривязки DNS-имени и IP адреса, перенаправляющий адрес веб-сервера взломщика на адрес целевой машины.

· HTTP-сервер для обслуживания HTML страниц и JavaScript код для целевых объектов и для управления атаками

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

2. Поддерживает сопользователей

3. Обеспечивает несколько стратегий перепривязки DNS, включая непрерывное отображение IP адреса взломщика и целевого IP адреса и случайное отображение, для минимизации воздействия IDS/IPS, препятствующих атаке

4. Содержит набор технических средств для максимальной надежности и скорости атак:

· Обеспечивает работу заблокированного HTTP, кэширование, предварительную выборку DNS (prefetch)

· Агрессивные значения TTL для ответов DNS

· Опция для использования CNAME вместо А-данных для обхода нескольких средств фильтрации DNS

· Почти мгновенная перепривязка для нескольких комбинаций браузера и ОС, при помощи многократных DNS-ответов и динамической блокировки HTTP порта.

5. Возможность размещать HTTP-серверы при запуске или сразу после запуска

· Удобная функция, помогающая избежать перезапуск Singularity в ожидании ответа другого HTTP-порта.

· Обеспечивает условия для атаки уязвимых портов, обнаруженных после сканирования.

Технические требования

· Имя домена DNS из регистратора доменов, таких как gandi или namecheap. Вам необходимо иметь возможность добавлять и редактировать Ваши собственные DNS-записи для вашего домена.

· Пивязка к серверу Linux от таких хостинг-провайдеров как LinodeAmazon AWSGoogle CloudMicrosoft Azure, и т.д.

Описание полезной нагрузки

Singularity поддерживает следующие полезные нагрузки атаки:

· Базовый fetch-запрос (payload-simple-fetch-get.html): данная пробная полезная нагрузка осуществляет GET-запрос в корневой каталог ('/') и показывает ответ сервера при помощи метода выборки fetch API. Данная нагрузка функционирует как образец запроса с целью максимального облегчения дополнительных контрибуций.

· Базовый XHR-запрос (payload-simple-xhr-get.html): еще одна пробная полезная нагрузка, осуществляет GET-запрос в корневой каталог ('/') и показывает ответ сервера при помощи метода выборки XMLHttpRequest (XHR).

· Chrome DevTools (payload-exposed-chrome-devtools.html): данная полезная нагрузка демонстрирует уязвимость удаленного выполнения кода (RCE) в редакторе Microsoft VS Code версии 1.19.3. Данная полезная нагрузка может быть адаптирована для атак любого ПО, содержащего ChromeDevTools на локальном хосте (localhost).

· etcd (payload-etcd.html): данная полезная нагрузка извлекает ключи и значения из etcd хранилищ ключей и значений.

· pyethapp (payload-pyethapp.html): атакует Pyethapp клиент Эфириума в иполнении Python для получения списка частных eth-адресов и извлекает баланс первого eth-адреса.

· Rails Web Console (payload-rails-webconsole.html): выполняет атаку удаленного выполнения кода (RCE) на Rails Web Console.

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

Для создания собственных полезных нагрузок просто копируем HTML-файл пробной полезной нагрузки и модифицируем его под свои нужды. Пробная полезная нагрузка осуществляет единичный GET-запрос и отображает ответ. Скопируйте содержимое этого файла в новый .html файл и добавьте его имя в список attackPayloads в файле manager-config.json. Затем модифицируйте новый HTML-файл, например, на изменение запроса URL.

Противодействие атакам DNS rebinding

Предотвратить атаки перепривязки DNS можно при помощи проверки достоверности в заголовке "Host" на стороне сервера, следует принимать значения только белых списков. Для сервисов, слушающих loopback интерфейс, набор значений белых списков хостов должен содержать localhost и все, зарезервированные для loopback интерфейса числовые адреса, включая 127.0.0.1.

Например, предположим, что сервис слушает адрес 127.0.0.1, TCP порт 3000. Далее, сервис должен убедиться, что все значения HTTP запроса заголовка Host строго содержат "127.0.0.1:3000" и/или "localhost:3000". Если заголовок хоста содержит что-то еще, запрос должен быть отклонен.

В зависимости от способа применения приложения, может понадобиться добавить в белые списки другие или дополнительные адреса, такие как 127.0.0.2, еще один зарезервированный числовой адрес для интерфейса loopback.

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

Фильтрация DNS-ответов, содержащих частные, link-local или loopback адреса, как для IPv4, так и для IPv6, нельзя рассматривать как основной механизм защиты от атак перепривязки DNS. Singularity может обходить некоторые фильтры при определенных условиях например, при ответе записью локального хоста CName при таргетировании приложения через браузер Google Chrome.


Больше на нашем телеграм канале @darknim


Report Page