Hydra を用いた IPv6 ターゲット攻撃

HydraBeginner
オンラインで実践に進む

はじめに

この実験では、Hydra を使用して IPv6 ターゲットを攻撃する方法を学習します。この実験では、IPv6 アドレスを持つサーバーを構成し、Hydra を使用してその SSH サービスを攻撃することに焦点を当てています。

実験は、ip コマンドを使用して eth0 インターフェースに IPv6 アドレス 2001:db8:1::1/64 を設定することから始まります。次に、インターフェースを有効化し、設定を確認します。最後に、-6 オプションを使用して Hydra を IPv6 SSH サービスにターゲットを合わせ、攻撃結果を確認します。

IPv6 アドレス付きサーバーの設定

このステップでは、LabEx VM に IPv6 アドレスを設定します。これは、IPv6 通信を有効化し、続く IPv6 SSH サービス攻撃の準備をするために重要なステップです。

まず、IPv6 アドレスの基本について理解しましょう。IPv6 アドレスは 128 ビットのアドレスで、通常は 16 進表記で表されます。一般的な IPv6 アドレスは次のようになります:2001:0db8:85a3:0000:0000:8a2e:0370:7334

設定を簡略化するために、eth0 インターフェースにアドレス 2001:db8:1::1/64 を割り当てます。eth0 インターフェースは Linux システムにおける一般的なネットワークインターフェース名です。

それでは、IPv6 アドレスを設定しましょう。ip コマンドを使用します。これはネットワークインターフェースを管理するための強力なツールです。

  1. eth0 インターフェースに IPv6 アドレスを追加:

    LabEx VM のターミナルを開きます。以下のコマンドを実行します。

    sudo ip addr add 2001:db8:1::1/64 dev eth0

    このコマンドは、eth0 インターフェースに IPv6 アドレス 2001:db8:1::1/64 を追加します。/64 はネットワークプレフィックス長を指定し、IPv6 サブネットのサイズを決定します。

  2. eth0 インターフェースを有効化:

    sudo ip link set dev eth0 up

    このコマンドは、eth0 インターフェースを起動し、ネットワークトラフィックの送受信を有効にします。

  3. IPv6 アドレス設定の確認:

    IPv6 アドレスが正しく設定されていることを確認するために、ip addr コマンドを再度使用します。

    ip addr show eth0

    出力には、inet6 セクションに IPv6 アドレス 2001:db8:1::1/64 が含まれるはずです。以下の様な出力になります。

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:08:6d:7a brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.50.97/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159937sec preferred_lft 1892159937sec
        inet6 2001:db8:1::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe08:6d7a/64 scope link
           valid_lft forever preferred_lft forever

    inet6 2001:db8:1::1/64 scope global の行は、IPv6 アドレスが正常に設定されたことを確認します。

IPv6 SSH 攻撃の準備

このステップでは、ネットワークツールに -6 オプションを使用し、IPv6 SSH サービス攻撃の準備を行います。-6 オプションは、ネットワークサービスとやり取りする際に IPv6 を優先的に使用するよう指示するために一般的に使用されます。これは、IPv4 と IPv6 の両方のアドレスが利用可能な場合、デフォルトで一部のツールが IPv4 を優先する可能性があるため重要です。

前のステップで設定した IPv6 アドレスをターゲットにするために、-6 オプション付きの ping コマンドを使用します。これにより、IPv6 アドレスを使用してサーバーに到達できることを確認します。

  1. IPv6 アドレスへの ping:

    LabEx VM のターミナルを開きます。以下のコマンドを実行します。

    ping -6 2001:db8:1::1

    このコマンドは、IPv6 アドレス 2001:db8:1::1 に ICMP エコー要求パケットを送信します。サーバーが IPv6 を介して到達可能であれば、サーバーからの応答が表示されます。出力は次のようになります。

    PING 2001:db8:1::1(2001:db8:1::1) 56 data bytes
    64 bytes from 2001:db8:1::1: icmp_seq=1 ttl=64 time=0.026 ms
    64 bytes from 2001:db8:1::1: icmp_seq=2 ttl=64 time=0.041 ms
    64 bytes from 2001:db8:1::1: icmp_seq=3 ttl=64 time=0.035 ms
    64 bytes from 2001:db8:1::1: icmp_seq=4 ttl=64 time=0.032 ms
    ^C
    --- 2001:db8:1::1 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3078ms
    rtt min/avg/max/mdev = 0.026/0.033/0.041/0.005 ms

    数個のパケット後、Ctrl+C を押して ping コマンドを停止します。

  2. -6 オプションについて:

    -6 オプションは、ping コマンドに IPv6 を使用するよう指示します。sshcurlwget などの他の多くのネットワークツールも -6 オプションをサポートしています。このオプションを使用することで、ツールは IPv6 を使用してターゲットホストに接続しようとします。

    次のステップでは、Hydra を使用して SSH サービスを攻撃します。SSH サーバーの IPv6 アドレスをターゲットにするために、Hydra に -6 オプションを使用します。これにより、IPv6 SSH 設定のセキュリティをテストします。

IPv6 SSH サービスへの攻撃手順

このステップでは、以前に設定した IPv6 アドレス上で動作する SSH サービスに対して、Hydra を使用してブルートフォース攻撃を実行します。Hydra は、SSH を含むさまざまなプロトコルをサポートする強力なパスワードクラッキングツールです。

開始する前に、シンプルなパスワードリストを作成します。このリストには、Hydra が SSH サービスへの認証に使用しようと試すパスワードが含まれます。

  1. SSH サービスの起動:

    まず、システム上で SSH サービスが実行されていることを確認する必要があります。以下のコマンドを実行して SSH サービスを起動します。

    sudo systemctl start ssh

    SSH サービスが実行されていることを確認するには、そのステータスをチェックします。

    sudo systemctl status ssh

    出力は、サービスがアクティブで実行中であることを示すはずです。

  2. SSH を IPv6 でリスニングするように設定:

    デフォルトでは、SSH は IPv4 アドレスでのみリスニングする場合があります。IPv6 でもリスニングするように設定する必要があります。まず、現在 SSH がリスニングしているアドレスを確認します。

    ss -tlnp | grep :22

    出力は LISTEN 0 128 0.0.0.0:22 0.0.0.0:* のようなものになり、SSH は IPv4 でのみリスニングしていることを示します。

    次に、SSH 設定ファイル (sshd_config) を編集して IPv6 リスニングを有効にします。

    sudo nano /etc/ssh/sshd_config

    #AddressFamily any または AddressFamily inet を含む行を探し、次のように変更します。

    AddressFamily any

    行が存在しない場合は、追加します。これにより、SSH は IPv4 と IPv6 の両方のアドレスでリスニングするように指示されます。

    Ctrl + XYEnter キーを押してファイルを保存します。

    変更を適用するために SSH サービスを再起動します。

    sudo systemctl restart ssh

    SSH が現在 IPv4 (0.0.0.0:22) と IPv6 ([::]:22) の両方でリスニングしていることを確認します。

    ss -tlnp | grep :22
  3. パスワードリストの作成:

    LabEx VM のターミナルを開きます。現在 ~/project ディレクトリにあります。nano エディタを使用して、このディレクトリに passwords.txt という名前のファイルを作成します。

    nano passwords.txt

    ファイルに、各行に 1 つのパスワードを追加します。

    password
    123456
    qwerty
    admin
    labex

    Ctrl + XYEnter キーを押してファイルを保存します。

  4. Hydra を使用して IPv6 SSH サービスを攻撃:

    次に、Hydra を使用して SSH サービスを攻撃します。IPv6 アドレスをターゲットにすることを指定するために -6 オプションを使用します。攻撃するユーザー名 (例:labex)、作成したパスワードリスト (passwords.txt)、SSH サーバーの IPv6 アドレス (2001:db8:1::1) を指定します。

    以下のコマンドを実行します。

    hydra -6 -l labex -P passwords.txt ssh://[2001:db8:1::1]

    このコマンドを分解します。

    • hydra: Hydra ツールを実行するコマンド。
    • -6: Hydra が IPv6 を使用する必要があることを指定します。
    • -l labex: 攻撃するユーザー名を指定します。この場合は、labex ユーザーを攻撃します。
    • -P passwords.txt: 使用するパスワードリストを指定します。この場合は、現在の ~/project ディレクトリに作成した passwords.txt ファイルを使用します。
    • ssh://[2001:db8:1::1]: ターゲットの SSH サービスを指定します。ssh:// プレフィックスは SSH サービスを攻撃することを示し、[2001:db8:1::1] はサーバーの IPv6 アドレスです(Hydra で IPv6 アドレスを使用する場合、角括弧が必要です)。

    Hydra は、passwords.txt ファイルのパスワードを SSH サービスに対して試すようになります。Hydra が有効なパスワードを見つけると、資格情報が表示されます。パスワードが見つからない場合は、出力は次のようになります。

    //省略

    パスワードが見つからない場合は、passwords.txt ファイルにさらに一般的なパスワードを追加してみてください。また、各試行を表示する詳細な出力を確認するために -V オプションを使用することもできます。

    hydra -6 -V -l labex -P passwords.txt ssh://[2001:db8:1::1]

    Hydra がパスワードを見つけた場合、出力は次のようになります。

    //省略

    この出力は、Hydra が labex ユーザーのパスワードをクラッキングしたことを示します。

    重要な注意事項: 許可なくシステムに対してパスワードのブルートフォース攻撃を行うことは違法かつ不適切です。この実験は教育目的でのみ使用し、テストするシステムを所有しているか、明示的なテスト許可がある場合にのみこれらのテクニックを使用してください。

IPv6 攻撃結果の検証

このステップでは、IPv6 SSH サービスに対する Hydra 攻撃の結果を検証します。Hydra がパスワードを成功裏に解読したかどうかを確認し、もし解読できた場合は、解読した資格情報を使用して SSH サービスにログインを試みます。

  1. Hydra 出力の確認:

    前のステップで実行した Hydra コマンドの出力を注意深く確認します。パスワード解読に成功したことを示す行を探します。出力は次のようになります。

    [22][ssh] host: 2001:db8:1::1   login: labex   password: [found_password]

    この行が表示された場合、Hydra は labex ユーザーのパスワードを成功裏に解読したことを意味します。パスワードが見つからなかった場合、現在のパスワードリストに正しいパスワードが含まれていないことを示しており、これは実際には良いセキュリティの兆候です。

  2. SSH サービスへのログイン試行 (パスワードが見つかった場合):

    Hydra がパスワードを成功裏に解読した場合、ssh コマンドを使用して SSH サービスにログインを試行できます。IPv6 アドレスに接続することを指定するために -6 オプションを使用します。

    Hydra が発見したパスワードを使用して、以下のコマンドを実行します。

    ssh -6 labex@2001:db8:1::1

    パスワードを求められたら、解読したパスワードを入力します。ログインに成功すると、SSH サーバーにログインします。

    Hydra がパスワードを見つけなかった場合でも、SSH IPv6 接続をテストするために接続を試行できます(パスワードを求められますが、Ctrl+C を押してキャンセルできます)。

    ssh -6 labex@2001:db8:1::1

    パスワードの入力を求められることで、SSH が IPv6 に対して正しく設定されており、Hydra がサービスに接続できたことが確認できます。

  3. セキュリティに関する推奨事項:

    この実験では、強力なパスワードの使用と、SSH サービスを保護するためのセキュリティのベストプラクティスを実装することの重要性を示しました。以下にいくつかの推奨事項を示します。

    • 強力なパスワードの使用: 大文字、小文字、数字、記号の組み合わせを含む、少なくとも 12 文字以上のパスワードを使用します。
    • パスワード認証の無効化: パスワード認証を無効にし、代わりに SSH キーを使用することを検討します。SSH キーはパスワードよりもはるかに解読が困難であるため、より安全です。
    • レート制限の実装: fail2ban などのツールを使用して、SSH ログイン試行のレート制限を実装します。これにより、攻撃者が短期間に多くのパスワードを試行することを防ぎます。
    • ソフトウェアの最新の状態の維持: SSH サーバーソフトウェアが最新のセキュリティパッチで最新の状態であることを確認します。

まとめ

この実験では、IPv6 通信を有効にするための重要なステップとして、IPv6 アドレスを持つサーバーを設定しました。これは、IPv6 アドレスの基本的な理解と、ip コマンドを使用して eth0 インターフェースにアドレス 2001:db8:1::1/64 を割り当てることを含みます。

次に、インターフェースを有効にし、ip addr show eth0 を使用して設定を検証し、IPv6 アドレスが正しく割り当てられていることを確認しました。また、SSH 設定ファイルの変更とサービスの再起動により、SSH を IPv6 アドレスでリスニングするように設定しました。

最後に、-6 オプションを使用して Hydra を使用し、IPv6 SSH サービスをターゲットにして、ブルートフォース攻撃を成功裏に実行しました。その後、解読した資格情報を使用して SSH サービスにログインすることで、攻撃結果を検証しました。この実験では、Hydra が IPv6 ターゲットを攻撃できる能力を示し、SSH サービスの強力なパスワードとセキュリティのベストプラクティスが重要であることを強調しました。