Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
dnscat2 — DNSプロトコルを利用した暗号化されたコマンド&コントロールトンネル。ファイル転送、シェルアクセス、ポートフォワーディング機能をDNSクエリを通じて提供し、ペネトレーションテスト用のステルスC&Cチャネルを作成します。 | Kitploit
ツール/GitHubGitHub/iagox86/dnscat2
暗号化/復号化ツールIDS/IPS回避データ流出ペネトレーションテストコマンド&コントロールレッドチーミングリモートアクセスツールDNS分析コマンド&コントロール 第16位データ流出 第1位
4.0k652534年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
IDS/IPS回避 第12位
リモートアクセスツール 第20位
GitHubiagox86/dnscat2

dnscat2

DNSプロトコルを利用した暗号化されたコマンド&コントロールトンネル。ファイル転送、シェルアクセス、ポートフォワーディング機能をDNSクエリを通じて提供し、ペネトレーションテスト用のステルスC&Cチャネルを作成します。

リポジトリを見る

***** 注: .zip ダウンロードのパスワードはすべて "password" です!*****

はじめに

dnscat2 へようこそ。これはあなたを気分不良にさせず、殺さない DNS トンネルです!

このツールは、DNS プロトコル上に暗号化されたコマンド&コントロール (C&C) チャネルを作成するために設計されています。これは、ほぼすべてのネットワークから抜け出す効果的なトンネルです。

この README ファイルには、実行を開始するために必要なすべての情報が含まれているはずです! プロトコルの詳細、コード構造、将来の計画、その他のマニアックなことにもっと深く掘り下げたい場合は、doc/ フォルダを参照してください。

ライセンス

これは BSD ライセンスの下でリリースされています。詳細については LICENSE.md を参照してください。

概要

dnscat2 はクライアントとサーバーの 2 つの部分で構成されています。

クライアントは、侵害されたマシン上で実行されるように設計されています。C で書かれており、依存関係は最小限です。ほぼどこでも動作するはずです (コンパイルまたは実行できないシステムを見つけた場合は、特にそのシステムへのアクセスを提供できる場合には、チケットを提出してください)。

クライアントを実行するときは、通常、ドメイン名を指定します。すべてのリクエストはローカル DNS サーバーに送信され、そのドメインの権威 DNS サーバー (おそらくあなたが制御しているサーバー) にリダイレクトされます。

権威 DNS サーバーがない場合は、UDP/53 (または任意のポート) での直接接続も使用できます。より高速で、一見したところ DNS トラフィックのように見えますが、パケットログでははるかに明白です (ソースをハッキングしない限り、すべてのドメインは "dnscat." で始まります)。このモードはファイアウォールによって頻繁にブロックされます。

サーバーは 権威 DNS サーバー 上で実行されるように設計されています。Ruby で書かれており、いくつかの異なる gem に依存しています。実行時には、クライアントと同様に、リッスンするドメインを指定し、さらに UDP/53 で直接自分に送信されたメッセージもリッスンします。それらのドメインのいずれかに対するトラフィックを受信すると、論理接続の確立を試みます。他のトラフィックを受信した場合は、デフォルトで無視しますが、上流に転送することもできます。

両方の部分の詳細な手順を以下に示します。

これは ..... とどう違うのか

dnscat2 は、特別な目的、つまりコマンド&コントロールのために設計されている点で、他の DNS トンネリングプロトコルとは一線を画すことを目指しています。

これは、ホテルのネットワークから抜け出したり、飛行機で無料インターネットを利用するためのものではありません。また、単に TCP をトンネリングするだけではありません。

任意のデータを、プロトコルを付けずにトンネリングできます。つまり、ファイルのアップロード/ダウンロード、シェルの実行、そしてそれらをうまく実行できます。TCP をトンネリングすることも可能ですが、それはペネトレーションテストツールのコンテキストでのみ追加される予定です (つまり、ネットワークへの TCP トンネリング)。汎用トンネリングツールとしては追加されません。それはすでに実現されており、私にとっては興味深いものではありません。

また、デフォルトで暗号化されています。他の公開 DNS トンネルがすべてのトラフィックを暗号化しているとは思いません!

入手方法

以下にいくつかの重要なリンクを示します。

  • Github 上のソースコード
  • ダウンロード (署名付きの Linux 32-bit、Linux 64-bit、Win32、およびクライアントのソースコードバージョンに加えて、サーバーのアーカイブがあります – 署名ファイルはファイルと同じサーバー上にホストされていることに注意してください。そのため、心配な場合は、私の PGP キーを確認してください :) )
  • ユーザードキュメント エンドユーザー向け (例: 変更履歴) と開発者向け (例: 貢献 ドキュメント) の両方のファイルのコレクション
  • Issue トラッカー (問題をメールで送ることもできます。私のファーストネーム (ron) をドメイン名 (skullsecurity.net) の前に置いてください)

使い方

dnscat2 の背後にある理論は単純です。DNS プロトコル上にトンネルを作成します。

なぜでしょうか? なぜなら、DNS には素晴らしい特性があるからです。サーバーからサーバーへと、行き先がわかるまで伝わっていきます。

つまり、dnscat がセキュアなネットワークからトラフィックを送り出すには、単に DNS サーバーにメッセージを送信すればよく、DNS サーバーはそれを DNS ネットワークを通じてあなたの DNS サーバーに転送してくれます。

もちろん、これは権威 DNS サーバーにアクセスできることを前提としています。dnscat2 は「直接」接続もサポートしています。つまり、dnscat クライアントを実行し、あなたの ip アドレスと UDP ポート 53 (デフォルト) で実行されている dnscat に直接接続します。トラフィックは依然として DNS トラフィックのように見え、より愚かな IDS/IPS システムをすり抜ける可能性がありますが、ファイアウォールによって停止される可能性が高いです。

権威 DNS サーバーの設定方法が不明な場合は、ドメインプロバイダーと設定する必要があります。izhan が親切にも その方法を書いてくれました。

コンパイル

クライアント

クライアントのコンパイルは非常に簡単です。必要なのは make/gcc (Linux の場合) または Cygwin もしくは Microsoft Visual Studio (Windows の場合) だけです。Linux でのコマンドは次のとおりです。

$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/client/
$ make

Windows では、Visual Studio に client/win32/dnscat2.vcproj をロードし、「ビルド」を押してください。私は Visual Studio 2008 で作成しテストしています – 新しいバージョンの正規コピーを無料で入手するまでは、これを使い続けるつもりです。 :)

コンパイルに失敗した場合は、私の github ページ にバグを報告してください! システムに関する詳細を送ってください。

フラグなしで実行することで、dnscat2 が正常にコンパイルされたことを確認できます。設定された DNS サーバーを使用して DNS トンネルを開始しようとします (これは失敗します)。

$ ./dnscat
Starting DNS driver without a domain! This will only work if you
are directly connecting to the dnscat2 server.

You'll need to use --dns server=<server> if you aren't.

** WARNING!
*
* It looks like you're running dnscat2 with the system DNS server,
* and no domain name!*
* That's cool, I'm not going to stop you, but the odds are really,
* really high that this won't work. You either need to provide a
* domain to use DNS resolution (requires an authoritative server):
*
*     dnscat mydomain.com
*
* Or you have to provide a server to connect directly to:
*
*     dnscat --dns=server=1.2.3.4,port=53
*
* I'm going to let this keep running, but once again, this likely
* isn't what you want!
*
** WARNING!

Creating DNS driver:
 domain = (null)
 host   = 0.0.0.0
 port   = 53
 type   = TXT,CNAME,MX
 server = 4.2.2.1
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: The server hasn't returned a valid response in the last 10 attempts.. closing session.
[[ FATAL ]] :: There are no active sessions left! Goodbye!
[[ WARNING ]] :: Terminating

サーバー

サーバーは「コンパイル」されませんが、いくつかの Ruby 依存関係が必要です。残念ながら、Ruby の依存関係は動作させるのが面倒な場合があるので、頑張ってください! このセクションを改善するのを手伝ってくれる Ruby の専門家がいたら、感謝します!

Ruby と Gem がインストールされており、正常に動作していることを前提としています。そうでない場合は、apt-get、emerge、rvm、またはお使いのオペレーティングシステムで通常の方法でインストールしてください。

Ruby/Gem が整ったら、次のコマンドを実行します (注意: すでにクライアントをインストールしている場合は git clone コマンドを、すでに bundler をインストールしている場合は gem install bundler をスキップできます)。

$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/server/
$ gem install bundler
$ bundle install

gem install bundler または bundler install で権限エラーが発生した場合は、root として実行する必要があるかもしれません。多くの問題が発生する場合は、Ruby/Gem をアンインストールし、rvm を使用して root なしですべてをインストールしてください。

次のようなエラーが発生した場合:

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)

これは Ruby の -dev バージョンをインストールする必要があることを意味します:

$ sudo apt-get install ruby-dev

sudo だけではすべてが正しく動作するとは限らず、時には root に切り替えて直接そのアカウントで作業する必要があります。rvmsudo は役に立ちません。なぜなら ctrl-z が使えなくなるからです。

サーバーが動作していることを確認するには、フラグなしで実行し、dnscat2> プロンプトが表示されるかどうかを確認します。

# ruby ./dnscat2.rb

New window created: 0
Welcome to dnscat2! Some documentation may be out of date.

passthrough => disabled
auto_attach => false
auto_command =>
process =>
history_size (for new windows) => 1000
New window created: dns1
Starting Dnscat2 DNS server on 0.0.0.0:53
[domains = n/a]...

It looks like you didn't give me any domains to recognize!
That's cool, though, you can still use direct queries,
although those are less stealthy.

To talk directly to the server without a domain name, run:
  ./dnscat2 --dns server=x.x.x.x,port=53

Of course, you have to figure out <server> yourself! Clients
will connect directly on UDP port 53.

dnscat2>

root として実行しない場合、UDP/53 でのリッスンに問題が発生する可能性があります (その場合は --dnsport を使用して変更できます)。その場合はエラーメッセージが表示されます。

Ruby を root として実行

Ruby を root として実行するのに問題がある場合、初回実行時には次のようにしています:

$ cd dnscat2/server
$ su
# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# \curl -sSL https://get.rvm.io | bash
# source /etc/profile.d/rvm.sh
# rvm install 1.9
# rvm use 1.9
# bundle install
# ruby ./dnscat2.rb

そして、以降の実行時:

$ cd dnscat2/server
$ su
# source /etc/profile.d/rvm.sh
# ruby ./dnscat2.rb

rvmsudo を使えば簡単になるはずですが、dnscat2 は残念ながら rvmsudo と相性が良くありません。

使用方法

クライアント + サーバー

ツールの具体的な使用方法について説明する前に、dnscat の構造について説明しましょう。dnscat ツールはクライアントとサーバーの 2 つの部分に分かれています。コンパイルの手順で気づいたかもしれませんが、クライアントは C で書かれており、サーバーは Ruby です。

通常、サーバーが最初に実行されます。サーバーは長期間実行でき、好きなだけ多くのクライアントを処理できます。前述したように、基本的には C&C サービスです。

ツールをダウンロード