
Goで書かれた便利なDNSサービスで、いくつかのタイプのブラインド脆弱性の検出を支援します。ペネトレーションテスターのサーバーを監視してアウトオブバンドDNSインタラクションを検出し、Slack経由でルックアップ通知を送信します。
Goで書かれた便利なDNSサービスで、いくつかの種類のブラインド脆弱性の検出を支援します。ペンテスターのサーバーを監視してアウトオブバンドDNSインタラクションを検出し、受信したリクエストの詳細をSlack経由で通知します。DNSObserverは、ブラインドOSコマンドインジェクション、ブラインドSQLi、ブラインドXXEなどのバグを見つけるのに役立ちます!

詳細な概要とセットアップ手順については、以下を参照してください:
https://www.allysonomalley.com/2020/05/22/dnsobserver/
必要なもの:
まだ使用可能なVPSを持っていない場合は、任意のプロバイダで新しいLinux VPSを作成してください。そのパブリックIPアドレスをメモしておきます。
任意のレジストラで新しいドメイン名を登録します。カスタムネームサーバーとグルーレコードの設定が許可されていれば、どのレジストラでも問題ありません。
新しいドメインのDNS設定に移動し、「グルーレコード」セクションを見つけます。ここに2つのエントリを追加します。1つは新しいネームサーバーごとに、それぞれにVPSのパブリックIPアドレスを指定します。
次に、デフォルトのネームサーバーを次のように変更します:
ns1.<YOUR-DOMAIN>
ns2.<YOUR-DOMAIN>
VPSにSSHで接続し、次の手順を実行します:
Goがまだインストールされていない場合はインストールします。インストール手順はこちらにあります。
デフォルトのDNSポートが開いていることを確認します - 53/UDPと53/TCPです。次のコマンドを実行します:
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
DNSObserverとその依存関係を取得します:
go get github.com/allyomalley/dnsobserver/...
必須引数が2つ、オプション引数が2つあります:
domain [必須]
新しいドメイン名。
ip [必須]
VPSのパブリックIPアドレス。
webhook [オプション]
通知を受け取りたい場合は、SlackのウェブフックURLを指定します。ドメイン名またはそのサブドメインに対するすべてのルックアップが通知されます(他の頂点ドメインやカスタムネームサーバーへのクエリについては、過剰またはランダムな通知を避けるために通知を除外しています)。ウェブフックを指定しない場合、インタラクションは標準出力にログ出力されます。ウェブフックのセットアップ手順はこちらにあります。
recordsFile [オプション]
デフォルトでは、DNSObserverはドメイン名またはそのネームサーバーのいずれかに対するクエリにのみ回答を返します。他のホストに対しては、インタラクションを通知しますが(ドメインまたはサブドメインである限り)、空のレスポンスを返します。特定のホストのAルックアップに対してアドレスで応答させたい場合は、このプロジェクトに含まれているconfig.ymlファイルを編集するか、以下のテンプレートに基づいて独自のファイルを作成できます:
a_records:
- hostname: ""
ip: ""
- hostname: ""
ip: ""
現在、このツールはAレコードのみを使用しています - 将来的にはCNAME、AAAAなどを追加するかもしれません。以下は完全なカスタムレコードファイルの例です:
a_records:
- hostname: "google.com"
ip: "1.2.3.4"
- hostname: "github.com"
ip: "5.6.7.8"
これらの設定は、'google.com'へのクエリには'1.2.3.4'で応答し、'github.com'へのクエリには'5.6.7.8'で応答することを意味します。
これで、リスニングを開始する準備が整いました!DNSObserverの実行中にVPSで他の作業を行いたい場合は、最初に新しいtmuxセッションを起動してください。
標準セットアップの場合、必須引数とウェブフックを指定します:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX
上記に加え、カスタムAルックアップ応答を含める場合は、レコードファイルの引数を追加します:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX --recordsFile my_records.yml
すべて正しく設定されていれば、DNSObserverが実行されているはずです。動作を確認するために、デスクトップでターミナルを開き、新しいドメイン(このデモでは'example.com')のルックアップを実行します:
dig example.com
これで、リクエストの詳細を含むSlack通知が届くはずです!