dnsenum で DNS 列挙を行う

Beginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、DNS 列挙に dnsenum ツールを使用して、ターゲットドメインのインフラストラクチャに関する重要な情報を発見する方法を学びます。ツールのインストール、適切なターゲットの選択、スキャンの実行、サブドメインや DNS レコードなどの結果の解釈を練習します。

この実験では、ツールのセットアップ、ターゲットの検証、コマンドの実行を含む、体系的な DNS 調査の実践的な経験を提供します。DNS データ分析を通じてセキュリティ脆弱性を特定するための重要なスキルを身につけます。


Skills Graph

dnsenum のインストール

このステップでは、ドメインの DNS インフラストラクチャに関する情報を収集するために使用される DNS 列挙ユーティリティである dnsenum ツールをインストールします。DNS 列挙は、潜在的な攻撃対象を特定するのに役立つサイバーセキュリティにおける基本的な調査手法です。dnsenum ツールは、サブドメイン、DNS レコード(A、MX、NS レコードなど)、およびターゲットドメインのネットワーク構成に関するその他の貴重な情報を発見するプロセスを自動化します。

始める前に、なぜこの特定のディレクトリ構造を使用するのかを理解しましょう。~/project ディレクトリは、ツールを整理するために用意したクリーンな作業スペースです。これは、実際のセキュリティ評価においても良い習慣です。

  1. まず、デフォルトの作業ディレクトリにいることを確認します。

    cd ~/project

次のコマンドは、dnsenum が適切に機能するために依存している Perl といくつかの Perl モジュールをインストールします。Perl は dnsenum が記述されているスクリプト言語であり、他のモジュールはネットワーキングと DNS 機能を提供します。

  1. dnsenum に必要な依存関係をインストールします。

    sudo apt-get update && sudo apt-get install -y perl libnet-dns-perl libnet-netmask-perl libnet-ip-perl

ここで、公式の GitHub リポジトリから実際の dnsenum ツールをダウンロードします。GitHub は、開発者がこのようなオープンソースプロジェクトを共有する場所です。

  1. 公式リポジトリから dnsenum をダウンロードします。

    git clone https://github.com/fwaeytens/dnsenum.git

ダウンロード後、ツールのファイルにアクセスするために dnsenum ディレクトリに移動する必要があります。ここにはメインスクリプト dnsenum.pl があります。

  1. dnsenum ディレクトリに移動します。

    cd dnsenum

最後に、ヘルプメニューを確認することでインストールが成功したことを検証します。これは、新しいツールを使用する際の重要なステップです。実際のターゲットに対して実行する前に、そのオプションを理解することが重要です。

  1. ヘルプメニューを確認してインストールを検証します。
    perl dnsenum.pl --help
    ツールの使用方法と利用可能なオプションが表示されるはずです。この出力には、さまざまな種類の DNS 列挙タスクで dnsenum を使用する際に利用できるすべてのコマンドとスイッチが示されています。

ターゲットドメインの選択

このステップでは、DNS 列挙のための適切なターゲットドメインを選択します。DNS 列挙は、ドメインに関連付けられたすべての DNS レコードを発見するプロセスであり、セキュリティ専門家がウェブサイトのインフラストラクチャを理解するのに役立ちます。適切なターゲットを選ぶことは、倫理的なセキュリティテストにおいて重要です。常に許可を得たドメイン、または example.com のような特別なテスト用ドメインを使用します。

  1. まず、正しい作業ディレクトリにいることを確認します。ここにはすべての DNS 列挙ファイルを保存します。

    cd ~/project/dnsenum
  2. この実験では、ターゲットドメインとして example.com を使用します。このドメインは、IANA(Internet Assigned Numbers Authority)によってドキュメント作成とテスト用に特別に予約されているため、DNS 列挙技術を学ぶのに最適です。覚えておいてください。実際のセキュリティ評価では、いかなるドメインをスキャンする前にも、常に適切な許可を得る必要があります。

  3. 基本的な DNS ルックアップでドメインが到達可能かどうかを確認しましょう。このコマンドは、ドメイン名が IP アドレスに解決できるかどうかをチェックします。

    nslookup example.com

    ドメインの IP アドレスを示す DNS 解決情報が表示されるはずです。エラーが表示された場合は、インターネット接続を確認してください。

  4. ターゲットドメインを保存するテキストファイルを作成します。このファイルは後で dnsenum で使用されます。

    echo "example.com" > target_domain.txt
  5. ターゲットファイルの内容を表示して、正しく作成されたことを確認します。

    cat target_domain.txt

    出力には example.com が表示されるはずです。この簡単な確認ステップは、列挙プロセスの後段でのエラーを防ぐのに役立ちます。

DNS 列挙の実行

このステップでは、先ほどインストールした dnsenum ツールを使用して、ターゲットドメインに対して DNS 列挙を実行します。DNS 列挙は、サブドメイン、DNS レコード、その他のネットワーク情報を発見することで、セキュリティ専門家がドメインのデジタルインフラストラクチャを把握するための基本的な調査手法です。

  1. まず、ツールがある dnsenum ディレクトリに移動します。これにより、必要なすべてのファイルがある正しい場所で作業できるようになります。

    cd ~/project/dnsenum
  2. 基本的な列挙を行って、ターゲットドメイン(example.com)に対して dnsenum を実行します。--enum フラグは、ツールに標準的な DNS 列挙を実行するよう指示します。

    perl dnsenum.pl --enum example.com

    この基本的なスキャンでは、以下を含む重要な DNS 情報が明らかになります。

    • ホストアドレス(ドメインを IP にマッピングする A レコード)
    • ネームサーバー(権威ある DNS サーバーを示す NS レコード)
    • メールサーバー(メールインフラストラクチャの MX レコード)
    • ブルートフォース推測による一般的なサブドメイン
  3. より包括的な結果を得るために、追加のパラメータを使用してスキャンを強化します。このより深いスキャンは、ターゲットに関する詳細な情報が必要な場合に役立ちます。

    perl dnsenum.pl --enum -f dns.txt --threads 5 example.com

    この高度なコマンドは以下のことを行います。

    • サブドメインのワードリスト(dns.txt)を使用して、一般的な命名パターンをテストします。
    • 5 つの並列スレッドで実行して、スキャンプロセスを高速化します。
    • 逆引きルックアップやゾーン転送の試行を含む徹底的なチェックを実行します。
  4. 出力を注意深く調べます。出力には以下が表示されます。

    • 発見されたサブドメイン(ターゲットシステムへの潜在的な侵入ポイント)
    • IP アドレス(サービスがホストされている場所を示す)
    • さまざまな DNS レコードタイプ(A、MX、NS など、サービスの構成を明らかにする)
    • ゾーン転送の試行(誤設定された DNS サーバーをテストする)

サブドメインとレコードのレビュー

このステップでは、DNS 列挙の結果を分析して、サブドメインとさまざまな DNS レコードを特定します。DNS 列挙は、ドメインのネットワーク構造を明らかにする重要な調査手法です。これらの結果を調べることで、ターゲットドメインがサービスをどのように組織しているかを理解し、さらなる調査のための潜在的な侵入ポイントを特定することができます。

  1. まず、スキャンデータが保存されている dnsenum 結果ディレクトリに移動します。

    cd ~/project/dnsenum

    このディレクトリには、先ほどの DNS 列挙スキャンの出力ファイルが含まれています。ドメインに関する構造化データを含む XML 形式の出力を使用します。

  2. 前回のスキャンの XML 出力ファイルを表示します。

    cat dnsenum_example.com.xml

    このコマンドは、収集されたすべての DNS 情報を含む生の XML データを表示します。このファイルにはいくつかの重要な DNS レコードタイプが含まれています。

    • ホストアドレス(A レコード) - これらはドメイン名を IP アドレスにマッピングします。
    • ネームサーバー(NS レコード) - ドメインの権威ある DNS サーバー。
    • メールサーバー(MX レコード) - メール配信を担当するサーバー。
    • 発見されたサブドメイン - メインドメインの下にある追加のドメイン。
  3. 大規模な結果セットを扱う際に、読みやすさを向上させるために、特定のレコードタイプをフィルタリングすることができます。

    grep -E "<host>|<a>" dnsenum_example.com.xml

    この grep コマンドは、ホストエントリとそれに対応する IP アドレスのみを抽出し、どのドメイン名がどの IP に解決されるかをより簡単に確認できるようにします。

  4. 列挙中に見つかったサブドメインのみを表示するには、次のコマンドを実行します。

    grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1

    このパイプラインはまずすべてのホストエントリを見つけ、次に cut を使用して XML タグの間のドメイン名のみを抽出します。サブドメインは、追加のサービスまたは潜在的に脆弱なシステムを明らかにすることができます。

  5. ドメインの DNS インフラストラクチャにとって重要なネームサーバーを調べます。

    grep -A1 "<nameserver>" dnsenum_example.com.xml

    -A1 フラグは、各ネームサーバーエントリとその後の 1 行を表示し、タグと実際のサーバー名の両方を表示します。

  6. ドメインのメール配信を処理するメールサーバーを確認します。

    grep -A1 "<mx>" dnsenum_example.com.xml

    MX レコードは、メールサーバーの優先度とホスト名を示します。これらは、機密通信を処理するため、セキュリティ評価でよくターゲットにされます。

列挙データの保存

このステップでは、DNS 列挙の結果を適切に保存し、整理して、将来の参照やレポート作成に備えます。適切なドキュメント化はサイバーセキュリティ評価において不可欠です。記録の維持、調査結果の追跡、チームメンバーとの結果共有に役立ちます。

  1. まず、dnsenum の出力ファイルがある正しいディレクトリにいることを確認します。これは、以降のすべてのコマンドがこのディレクトリ内のファイルを対象に動作するため重要です。

    cd ~/project/dnsenum
  2. 結果を保存するためのタイムスタンプ付きのディレクトリを作成します。ディレクトリ名に日付を使用することで、複数のスキャンを時系列で整理することができます。-p フラグは、親ディレクトリが存在しない場合に作成します。

    mkdir -p results/$(date +%Y-%m-%d)
  3. すべての関連ファイルを結果ディレクトリにコピーします。ここでは、具体的に dnsenum の XML 出力ファイルを整理された保存場所に移動します。

    cp dnsenum_example.com.xml results/$(date +%Y-%m-%d)/
  4. 人間が読みやすい要約レポートを作成します。このスクリプトは、XML ファイルから重要な情報を抽出し、シンプルなテキストレポートに整形します。grep コマンドは特定のデータをフィルタリングし、cut コマンドは XML タグの間の関連部分のみを抽出します。

    {
      echo "DNS Enumeration Report - $(date)"
      echo "=============================="
      echo -e "\nSubdomains Found:"
      grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1
      echo -e "\nName Servers:"
      grep -A1 "<nameserver>" dnsenum_example.com.xml | grep "<host>" | cut -d'>' -f2 | cut -d'<' -f1
    } > results/$(date +%Y-%m-%d)/report.txt
  5. 保存したファイルを確認して、すべてが正しくコピーされたことを確認します。ls -l コマンドは、パーミッションやタイムスタンプを含む詳細なファイル情報を表示します。

    ls -l results/$(date +%Y-%m-%d)/
  6. 結果を圧縮して、簡単に共有できるようにします。tar コマンドはファイルを束ね、gzip 圧縮(z オプション)は転送用にファイルサイズを縮小します。

    tar -czvf example.com_enum_results.tar.gz results/$(date +%Y-%m-%d)/

まとめ

この実験では、サイバーセキュリティの目的で dnsenum ツールを使用して DNS 列挙を行う方法を学びました。このプロセスでは、ツールのインストール、ドメインの到達可能性の確認、基本的な DNS ルックアップの実行を行い、倫理的な配慮も強調しました。

リポジトリのクローン作成、ディレクトリの移動、ヘルプメニューを通じたインストールの確認などの重要な手順を練習しました。この実験では、安全な練習用ドメインとして example.com を使用して、適切なツールのセットアップとターゲットの検証手法を実証しました。