9月 6

SMBログインパスワードのクラックツールを比較検証してみました



※本投稿に記載の内容を自身の管理下にないネットワーク・コンピュータに行った場合は、攻撃行為と判断され、最悪の場合、法的措置を取られる可能性もあります。同内容の調査を行われる場合には、必ず自身の管理下にあるネットワークやサーバーに対してのみ実施してください。


 

【検証概要】
SSHログインパスワードクラックの検証時に使用したものと同じ、下記4ツールについてSMBパスワードのクラッキング速度を比較検証をしました。

  • Metasploit(smb_loginモジュール)
  • hydra
  • medusa
  • ncrack

 

【検証環境】
1台の物理PCに、攻撃用サーバ(KaliLinux)および被攻撃用サーバ(Windows7)を仮想マシンとして構築し、同サーバ間で検証を行いました。

攻撃は1つのユーザに対し、多数のパスワードを試行する手法を採用しました。試行するパスワードには1000個のユニークなパスワードが記載されたファイルを使用し、被攻撃用サーバのSMBログインパスワードは同パスワードファイルの一番最後に記載されているパスワードを設定しました。

また、クラッキングツールのオプション値および被攻撃用サーバのSMBサーバに関する設定値を適時変更し、各設定値毎に速度を測定しました。

なお、本検証では以下バージョンのクラッキングツールを使用しました。
「Metasploit(smb_loginモジュール)」:Version 4.11.5-2016010401-0kali1

「hydra」:Version 8.1-1+b1

「medusa」:Version 2.2-0kali2

「ncrack」:Version 0.5-0kali1

 

【検証結果】
検証結果は下表のとおりです。
表の列はツールおよびツールのオプション値を、表の行はSMBサーバの設定値を示しています。(設定値の詳細については次々項に記載しています。)

SMBパスワードクラックツール検証結果

SMBサーバにてアカウントロックのしきい値を設けることにより、ほぼ全てのツールで“Crack不可”となりました。今回の検証のように、1つのユーザに対して、多数のパスワードを試行するクラック手法への対策としては、同値を0以外の値に設定することが非常に有用である言えます。

ただし、アカウントロックのしきい値を設けていない場合には、マルチコネクションのオプションを設定した「medusa」、次いで「hydra」が素晴らしいスピードでクラックに成功することが分かりました。

「Metasploit(ssh_loginモジュール)」および「ncrack」についても、「medusa」・「hydra」と比較すると、クラックスピードが非常に遅い印象を受けますが、問題なくクラックに成功しました。

 

【総評】
検証結果より、有用と判断できるツールを以下に示します。

■有用ツール
「medusa」
唯一マルチコネクションに対応しており、かつクラッキング速度が非常に早いため、クラックするにあたっての条件が特にない場合には、同ツールの使用が最も汎用的であると考えられます。

「hydra」
シングルコネクションのみの対応ですが、本ツールもクラッキング速度が非常に早いため、充分有用であると判断できます。

■非有用ツール
「Metasploit(ssh_loginモジュール)」
クラッキング速度が上記有用ツールに比べて非常に遅く、またアカウントがロックアウトされた状態でもパスワードを試行し続ける動作を鑑みて、あまり有用ではないと考えます。

「ncrack」
クラッキング速度が上記有用ツールに比べて非常に遅く、またアカウントがロックアウトされた状態でもパスワードを試行し続ける動作を鑑みて、あまり有用ではないと考えます。

 

SMBログインパスワードのクラッキングを行うにあたり、1つのユーザに対し多数のパスワードを試行するという手法は、前項にも記載したとおり、アカウントロックのしきい値を設けることにより成功率が著しく下がります。そのため、SMBログインパスワードのクラッキングには本検証の手法よりも、多数のユーザに対し1つのパスワードを試行するという手法が有用であると考えられます。

 

【設定値の詳細(下線は検証より判明した事項です。)】
※本項のコマンド実行例は、以下の環境を前提に記載しております。
被攻撃用サーバのIPアドレス:192.168.110.129
クラッキング対象のユーザ名:kuno
クラッキングに使用するパスワードファイル:/root/Desktop/passwords.1000

  • SMBサーバの設定
設定項目 デフォルト値 説明
アカウントの
ロックアウトの
しきい値
0

ユーザアカウントがロックアウトされる原因となるログオン失敗回数を決定します。ロックアウトされたアカウントは、管理者がリセットするか、そのアカウントのロックアウト期間が過ぎるまで使用できません。0 に設定すると、アカウントがロックアウトされることはありません。

設定手順)
1. コントロールパネルより、[管理ツール]選択し、[ローカル セキュリティ ポリシー]をクリックします。

2. [セキュリティの設定] > [アカウント ポリシー] > [アカウント ロックアウトのポリシー]を順に選択します。

3. [アカウントのロックアウトのしきい値]を右クリックし、[プロパティ]を選択します。設定値を入力し、[OK]ボタンをクリックします。
アカウントのロックアウトのしきい値

 

設定項目 デフォルト値 説明
ロックカウンターの
リセット
なし ログオン失敗後、ログオン失敗のカウンターが 0 (不良ログオン試行) にリセットされるまでに必要な時間を分単位で指定します

設定手順)
1. コントロールパネルより、[管理ツール]選択し、[ローカル セキュリティ ポリシー]をクリックします。

2. [セキュリティの設定] > [アカウント ポリシー] > [アカウント ロックアウトのポリシー]を順に選択します。

3. [ロックアウト カウンターのリセット]を右クリックし、[プロパティ]を選択します。設定値を入力し、[OK]ボタンをクリックします。
ロックアウト カウンターのリセット

 

設定項目 デフォルト値 説明
ロックアウト期間  なし ロックアウトされたアカウントが自動的にロック解除されるまでのロックアウト期間を分単位で指定します。ロックアウト期間を 0 に設定すると、管理者が明示的にロックを解除するまでアカウントはロックアウトされます。

設定手順)
1. コントロールパネルより、[管理ツール]選択し、[ローカル セキュリティ ポリシー]をクリックします。

2. [セキュリティの設定] > [アカウント ポリシー] > [アカウント ロックアウトのポリシー]を順に選択します。

3. [ロックアウト期間]を右クリックし、[プロパティ]を選択します。設定値を入力し、[OK]ボタンをクリックします。
ロックアウト期間

 

設定項目 デフォルト値 説明
 共有フォルダに同時に接続できるユーザ数  20

共有フォルダへ同時に接続できるユーザの数を指定します。

⇒同値を1に設定したケースにおいても、「medusa」にてマルチコネクションでの試行が可能であったため、SMBの認証には関係性がない設定と考えられます。

設定手順)
1. 共有フォルダを右クリックし、[プロパティ]を選択します。

2. [共有]タブを選択し、[詳細な共有]ボタンをクリックします。

3. [設定]項目の[同時に共有できるユーザー数]に設定値を入力し、[OK]ボタンをクリックします。
同時に共有できるユーザー数

 

  • Metasploit(SMB_loginモジュール)の設定
設定項目 デフォルト値 説明
BrutForceSpeed 5 ログイン試行するスピードを指定します。0~5が選択でき、5が一番早い設定となります。

⇒上記説明通り、ログイン試行のスピードを調整することが可能でした。

コマンド実行例) BrutForceSpeed = 4 の場合

msf auxiliary(smb_login) > set bruteforce_speed 4
bruteforce_speed => 4

 

設定項目 デフォルト値 説明
Thread 1 同時実行するスレッド数を指定します。

⇒設定を変更しても、ツールの動作に変化はなく、すべてシングルコネクションで実行されました。

コマンド実行例) Thread = 5 の場合

msf auxiliary(smb_login) > set threads 5
threads => 5

 

◆その他、Metasploit(SMB_loginモジュール)の検証で判明した事項

・デフォルトの設定では、下図のパケットキャプチャデータのとおり、試行する1パスワード毎に、SMBプロトコルのネゴシエーションを行い、セッション・セットアップ(パスワード試行)を実施するという動きをしました。(シングルコネクション)

SMB認証パケット(Metasploit)

・下図、ツール実行時の出力結果のとおり、アカウントロックアウトのしきい値に達しても、全てのパスワードを試行するまでは終了しませんでした。
※アカウントロックのしきい値を設けた状態で唯一クラックに成功したケースでは、設定したアカウントのロックアウト期間が過ぎ、ロックアウトが解除されたタイミングで偶然、正解のパスワードを試行し、クラックが成功しました。

アカウントロック時の動作(Metasploit)

 

  • hydraの設定
設定項目 デフォルト値 説明
Task 1 同時実行するコネクションの数を指定します。

⇒設定を変更しても、ツールの動作に変化はなく、すべてシングルコネクションで実行されました。

コマンド実行例) Task = 4 の場合

hydra -l kuno -P /root/Desktop/passwords1000.txt -t 4 192.168.110.129 smb

 

◆その他、hydraの検証で判明した事項

・デフォルトの設定では、下図のパケットキャプチャデータのとおり、試行する1パスワード毎に、SMBプロトコルのネゴシエーションを行い、セッション・セットアップ(パスワード試行)を実施するという動きをしました。(シングルコネクション)

SMB認証パケット(Hydra)

・下図のパケットキャプチャデータのとおり、アカウントロックアウトのしきい値に達した場合には即座にツールが終了しました。

アカウントロック時の動作(hydra)

  • medusaの設定
設定項目 デフォルト値 説明
-g[NUM] 3 ギブアップする前に再試行を実施する数。試行の合計数はNUM+1。

⇒設定を変更しても、ツールの動作に変化はありませんでした。

コマンド実行例) g = 1 の場合

medusa -h 192.168.110.129 -u kuno -P /root/Desktop/passwords1000.txt -M smbnt -g 1

 

設定項目 デフォルト値 説明
-r[NUM] 3 再試行までのスリープ時間(秒)。

⇒設定を変更しても、ツールの動作に変化はありませんでした。

コマンド実行例) r = 1 の場合

medusa -h 192.168.110.129 -u kuno -P /root/Desktop/passwords1000.txt -M smbnt -r 1

 

設定項目 デフォルト値 説明
-t[NUM] 1 同時実行するコネクションの数を指定。

⇒上記説明通り、指定したコネクション数、同時実行します。

コマンド実行例) t = 10 の場合

medusa -h 192.168.110.129 -u kuno -P /root/Desktop/passwords1000.txt -M smbnt -t 10

 

◆その他、medusaの検証で判明した事項

・デフォルトの設定では、下図のパケットキャプチャデータのとおり、ツール実行時の最初1回のみSMBプロトコルのネゴシエーションを行い、その後は連続してセッション・セットアップ(パスワード試行)を実施するという動きをしました。(シングルコネクション)

SMB認証パケット(medusa)

・下図、ツール実行時の出力結果のとおり、アカウントロックアウトのしきい値に達した場合には即座にツールが終了しました。

アカウントロック時の動作(medusa)

 

  • ncrackの設定
設定項目 デフォルト値 説明
cl=<time> 自動計算で一番早い数値。 並行するコネクションの最小値。

⇒設定を変更しても、ツールの動作に変化はなく、すべてシングルコネクションで実行されました。

コマンド実行例) cl = 5 の場合

ncrack –user kuno -P /root/Desktop/passwords1000.txt 192.168.110.129:445,cl=5

 

設定項目 デフォルト値 説明
CL=<time> 自動計算で一番早い数値。 並行するコネクションの最大値。

⇒設定を変更しても、ツールの動作に変化はなく、すべてシングルコネクションで実行されました。

コマンド実行例) CL = 10 の場合

ncrack –user kuno -P /root/Desktop/passwords1000.txt 192.168.110.129:445,CL=10

 

設定項目 デフォルト値 説明
cd=<time> 自動計算で一番早い数値。 新しい接続を行う際の遅延時間。

⇒設定を変更しても、ツールの動作に変化はありませんでした。

コマンド実行例) cd = 3 の場合

ncrack –user kuno -P /root/Desktop/passwords1000.txt 192.168.110.129:445,cd=3

 

◆その他、ncrackの検証で判明した事項

・デフォルトの設定では、下図のパケットキャプチャデータのとおり、ツール実行時の最初1回のみSMBプロトコルのネゴシエーションを行い、その後は連続してセッション・セットアップ(パスワード試行)を実施するという動きをしました。(シングルコネクション)
SMB認証パケット(ncrack)

・下図のパケットキャプチャデータのとおり、アカウントロックアウトのしきい値に達しても、全てのパスワードを試行するまでは終了しませんでした。

アカウントロック時の動作(ncrack)

 

以上です。

 

reported by ntsuji, kuno

Category: tool | SMBログインパスワードのクラックツールを比較検証してみました はコメントを受け付けていません。