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 | LEAVE A COMMENT
5月 9

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



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


 

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

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

 

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

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

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

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

「hydra」:Version 8.1-1+b1

「medusa」:Version 2.2-0kali1

「ncrack」:Version 0.4-alpha-1kali2

 

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

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

純粋なクラッキング速度としては「ncrack」が圧倒的に早いことが分かります。
「Metasploit(ssh_loginモジュール)」については、ツールのオプション値およびSSHサーバの設定値にはあまり影響されず、ほぼ一定の速度でした。
「hydra」については、一部のケースを除いてパスワードクラック自体が不可でした。
「medusa」については、マルチコネクションのオプションを設定することにより、速度を改善することは可能でしたが、「ncrack」には敵わず、またSSHサーバの設定によってはマルチコネクションのオプションを設定しないケースより時間がかかってしまうケースもありました。

SSHサーバの設定については、パスワードがクラックされるまでの時間稼ぎには、「MaxStartups」をなるべく小さい値に設定することが最も有用であると考えられます。

 

【総評】
検証結果より、最も有用と考えられるツールおよび条件付きで有用と判断できるツールを以下に示します。

■有用ツール
「ncrack」
被攻撃サーバのSSH設定がいかなる場合であっても、クラッキング速度がその他ツールに比べ圧倒的に早いため、クラックするにあたっての条件が特にない場合には、同ツールの使用が最も汎用的であると考えられます。

■条件付き有用ツール
「medusa」
クラッキング速度については「ncrack」に劣りますが、同時実行するコネクション数の指定が柔軟なため、例えば複数台の攻撃サーバを用意して1台のサーバを攻撃する場合などには、攻撃サーバ間でコネクションの取り合いにならないよう、1台の攻撃サーバで使用するコネクション数を指定できる同ツールを使用するのがよいかと考えます。

「Metasploit(ssh_loginモジュール)」
クラッキング速度は他ツールに比べ劣っていますが、1コネクションにつき1パスワードしか試行しないという動作をするため(他ツールではコネクションあたりの最大認証試行回数、パスワードを試行します。次項参照。)、被攻撃サーバで「最大認証試行回数パスワード認証に失敗しました」というログ出力させるのを防ぎたい場合には、同ツールを使用するメリットがあると考えられます。

■非有用ツール
「hydra」
試行したいパスワードの数が少ない場合(被攻撃サーバがCentOS7でSSHサーバの設定がデフォルトであれば「96個以下」)には正常に動作しますが、それ以上のパスワードを試行したい場合にはクラックツールとして正常に動作しないため、あまり有用ではないと判断できます。

 

【設定値の詳細(下線は検証より判明した事項です。)】

  • SSHサーバの設定
設定項目 デフォルト値 説明
MaxtAuthTries 6回 最大認証試行回数。SSHコネクション1つあたりの認証を最大で何回まで試みることができるかを指定します。
LoginGraceTime 2分 ログインの猶予時間。ユーザがこの時間内にログインしないとマシンは接続を切ります。なお、0は無制限を意味します。
MaxSessions 10 ネットワークコネクション1つあたりに許される最大のセッション数を指定します。
MaxStartups 10:30:100 認証されていない段階の接続をSSHデーモンが受け付ける確率を指定できます。書式は、「開始数:確率:最大数」で、すべて半角数字で指定します。SSHの接続が開始数を超えた場合には、指定した確率で接続を拒否し始め、最大数になったらそれ以降の接続を拒否します。

⇒確率を0にすると、開始数の数に関わらずSSHコネクションが張れなくなりました。確率を100にすると、当然ですが開始数を超えるコネクションはすべて拒否しました。

 

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

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

Thread 1 同時実行するスレッド数を指定します。

⇒同時実行するような動作は行わず、すべてシングルコネクションで実行されました。

 

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

  1. デフォルトの動作は、試行するパスワード1つにつき、SSH認証のコネクションを張り、パスワードを試して認証失敗であればコネクションを閉じるという動きをしました。(シングルコネクション)
  2. コネクションタイムアウトなどで、3回連続接続に失敗するとモジュールが終了しました。

 

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

⇒Taskの設定値が「MaxStartups」の開始値<Taskの設定値<「MaxStartups」の最大値であれば、設定したTask数でアタックしました。(「MaxStartups」の確率は影響しませんでした。)Taskの設定値>「MaxStartups」の最大値の場合は、「MaxStartups」の最大値でアタックしました。

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

  1. デフォルトの動作は、SSH認証コネクションを同時に16コネクション張り、各コネクションで試行可能な最大回数、パスワードを試し、試行可能な最大回数、認証失敗となりSSHサーバにコネクションを切断された場合、新たなコネクションを張ることなくクラック不可というステータスで終了、という動きをしました。
  2. 上記のとおり、あるSSHコネクションにおいて、パスワード試行の最大回数を超え、SSHサーバにコネクションを切断された場合には新たなコネクションを張りませんが、「LoginGraceTime」の猶予時間オーバーによりSSHサーバにコネクションを切断された場合には、再度SSHサーバへ新たなコネクションを張りにいきました。

 

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

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

-r[NUM] 3 再試行までのスリープ時間(秒)。

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

-t[NUM] 1 同時実行するコネクションの数を指定。

⇒上記説明通り、同時実行します。ただし「MaxStartups」の確率に引っかかり、コネクションが拒否された場合には、同時実行するコネクション数を動的に減らしました。(「MaxStartups」の開始数の値より小さくなることもあります。逆に「MaxStartups」の開始数以下の値であれば、そのコネクション数を維持しました。

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

  1. デフォルトの動作は、シングルコネクションでSSH認証コネクションを張り、試行可能な最大回数パスワードを試し、試行可能な最大回数、認証失敗となりSSHサーバにコネクションを切断されると、新たにコネクションを張りに行き、同じように試行可能な最大回数パスワードを試します。これを繰り返すという動作をしました。

 

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

⇒SSHのサーバおよびncrackの設定がデフォルトの場合は本検証環境では10~12コネクションからスタートしました。それより小さい値を指定した場合は無視され、10コネクションでスタートしました。clの値>「MaxStartups」の最大数の場合は、「MaxStartups」の最大数のコネクションを張りました。

CL=<time> 自動計算で一番早い数値。 並行するコネクションの最大値。

⇒SSHのサーバおよびncrackの設定がデフォルトの場合は12~13コネクションを維持しました。CLの値を指定した場合はその値以上のコネクションは張りませんでした。

cd=<time> 自動計算で一番早い数値。 新しい接続を行う際の遅延時間。

⇒マルチコネクションで接続する際、1コネクション毎に上記の設定時間待機してから接続しました。

 

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

  1. デフォルトの動作は、ツール実行直後はシングルコネクションで接続し、SSH認証の試行最大回数失敗しSSHサーバにコネクションを切断されると、その後は、マルチコネクション(検証環境では12~13コネクション程度)で接続するという動作をしました(cl/CLの設定値を変えてもこの動作は変わりませんでした。)。SSHサーバの「MaxtAuthTries」が100など非常に大きい値の場合には、ツール実行直後のシングルコネクションでの試行は60回程度で終了し、マルチコネクションに移行しました。
  2. ncrackはmedusaのように、「MaxStartups」の確率に引っかかってコネクションが拒否されても、動的にコネクション数を減らすような動作はせず、コネクション数を維持しました。(概ね「MaxtAuthTries」の開始数以上、「MaxtAuthTries」の最大数未満でコネクションを張りました。)

 

以上です。

 

reported by ntsuji, kuno

Category: tool | LEAVE A COMMENT
1月 3

「五輪サイバー対策本格化=「ホワイトハッカー」確保へ-攻撃の高度化に備え・政府」を読んで思ったこと

 

「五輪サイバー対策本格化=「ホワイトハッカー」確保へ-攻撃の高度化に備え・政府」というタイトルの記事魚拓)を読みました。

最近では「東京五輪」「サイバー」という言葉が合わさると必ずと言って良いくらい出てくる言葉があります。
この記事でいうと下記の2つでしょうか。

① 大会公式サイトは2週間の開催期間中に2億2100万回ものサイバー攻撃を受けた。

② 人材育成も急務だ。

 
Continue reading

12月 30

1人CSIRTはじめました。

色々と思うところがありまして、ボクが調べたことがどこかの誰かの役に立てばいいなと思い
1人CSIRTサイトを始めることにしました。このブログにあるコンテンツの一部は移行済みです。
1人CSIRTのサイト名前は(n)inja csirtです。

基本的にボクが何かしら調べたことを共有するためのサイトですので、それ以外のコンテンツはこちらのサイトに掲載していこうと思っています。
2つのサイトともども今後もよろしくお願いいたします。

(n)inja csirtはこちらから。

6月 26

佐川急便が行った迷惑メールに関する注意喚起について

先日、佐川急便から下記のようなメールが来ました。
sagawaspam

WEBトータルサポート会員様へ

いつも佐川急便をご利用いただきましてありがとうございます。

最近、佐川急便を装った迷惑メールが届くというお問い合わせが増えております。

このような迷惑メールに記載されているアドレスにアクセスされますと、
意図しないサイトへアクセスしてしまう場合がありますのでご注意ください。

不審なメールを受信された場合は本文中のURLへのアクセスや返信をなさらないようご注意をいただき、
ご不明な点がございましたら担当営業所または「ご意見・お問い合わせ」までお問い合わせください。

■担当営業所の検索はこちら
http://www.sagawa-exp.co.jp/send/branch_search/tanto/

■ご意見・お問い合わせはこちら
https://www2.sagawa-exp.co.jp/contact/communication/

ご注意

本メールアドレスは配信専用となっております。
本メールへの返信は受付できませんのでご了承ください。

————————————————————
佐川急便株式会社
http://www.sagawa-exp.co.jp/
————————————————————

折角なのにもったいないと思いました。

不審なメールを受信された場合は本文中のURLへのアクセスや返信をなさらないようご注意をいただき


とありますが、そのメール内でURLへのアクセスを促してしまっています。
これそのものが迷惑メールやフィッシングメールではないか?と思わせてしまいますし、このメールをベースに少し細工をした迷惑メールやフィッシングメールが送られてしまうかもしれません。(なんとなく引っかかりやすそうですよね)メールで受信したURLは基本開かないという癖をつけてもらうために、例えば、ブックマークなどから佐川急便のサイトにアクセスしてからログインを行うことを促すなどしていただければよかったなと思いました。

佐川急便のサイトでは「佐川急便を装った迷惑メールにご注意ください」というコンテンツがあり過去に報告を受けた迷惑メールやフィッシングメールを思われるメールの本文を公開してくださっています。
こういう風に可能な限り情報を公開してくださることはとても素晴らしいことだと思います。

と思っていただけに今回の注意喚起のメールが気になりましたよ。

Category: memo | LEAVE A COMMENT
6月 23

ビックカメラがログインIDをメールアドレスへ変更したことについて

先日、ビックカメラは同社の通販サイトである「ビックカメラ.com」のログインIDを会員を自由に設定できていたものからメールアドレスに統一するという変更を行いました。
00

以下の記事で取り上げられボクも求められたことについてコメントしました。
もう少し言いたいことがあったのでこのブログに書いておこうと思います。

ITpro ビックカメラ、通販のなりすまし対策で会員IDのメアドへの変更を強制

まず、今回の「ビックカメラ.com」の変更点は下記の通りとなります。

① ID設定のルールから自由なものからメールアドレスのみに変更
② 設定できるパスワードの縛りが6文字以上から8文字以上に変更
(厳密には6文字以上から12文字以下から8文字以上12文字以下に変更)
③ パスワードリセットにおいて秘密の質問を追加

③についての挙動についてチェックしましたが、パスワードリセットを行う際に必要な情報としてメールアドレス + 電話番号(会員登録時に必要)の組み合わせを入力すると事前に設定したメールアドレスにパスワードリセットのためのリンクが送られてきます。
01
そこに記載されているURLにアクセスすると質問が表示され(自身で過去に設定したものが自動で表示されています)、そこに答えを入力し、正しければ新しいパスワードを設定することができる画面へと遷移するというものです。
メールアドレスと電話番号くらいは知人であれば知ることが容易な情報であると考えられますが設定されたメールアカウントが乗っ取られていない限り新しいパスワードを設定することができません。

①と②についてですが
②に関してはパスワードの最低限の長さの強制が6文字以上から8文字以上へと長くなっていますので総当りへの耐性は強固になったと言えるかと思います。(アカウントのロックアウト機能があるかどうかは検証しておりません。)
ただ、利用できる文字種が半角英数字ですので、できれば記号を使えるようにし、12文字の文字長の上限をもう少し長いものにしてほしかったとは思います。こちらは今後に期待することにします。

しかし、①には、条件付きではありますが、この変更によって改悪となってしまうケースがあるのではないかと思っています。

それは、元々、8文字以上のパスワードで他のサイトと同一のパスワードを設定してしまっているユーザと8文字未満から8文字以上のパスワードに設定しなおしたユーザが他のサイトと同一のパスワードを設定しまうというケースです。
このケースに当てはまってしまうと、今回の変更で自由な文字列であったログインIDをメールアドレスに変更することで過去にどこかから漏洩したログインID(メールアドレスの場合が多い)、パスワードを用いた俗に言うリスト型攻撃の被害を受ける可能性が高まってしまう。ということになるかと思います。

Category: memo | LEAVE A COMMENT
5月 22

WinRARの自己解凍ウインドウに表示するテキストのXSS

圧縮・解凍ユーティリティ「WinRAR」のすべてのバージョンにXSSがあるとのことなので試してみました。

試した環境は
Windows 8.1上にインストールした
日本語版の最新版である[5.01]
英語版の最新版である[5.21]
です。

以下は再現の手順です。
(日本語版、英語版の併記をしています。)

1. 適当なファイルを右クリックして[書庫に圧縮][Add to archive]を選択。
1

2. 開いたウインドウで[自己解凍書庫を作成][Create SFX archive]にチェック
2

3. [高度][Advanced]タブを開き[自己解凍オプション][SFX options]をクリック
3

4. [テキストとアイコン][Text and icon]タブを開き
[自己解凍ウインドウに表示するテキスト][Text to display in SFX windows]内に任意のXSS文字列を記入。
4

これで出来上がったファイルを開いたタイミングでスクリプトを実行させることができました。

以下は開いた結果です。

・ <script&gtalert(‘hello!!!’);</script>の場合
5

・ <script>document.location.href=”http://n.pentest.ninja/”</script>の場合
6

Category: exploit | LEAVE A COMMENT
2月 23

NSEarchをインストールして使ってみましたよ

nsearch03
ポートスキャナ「Nmap」には、NSE(Nmap Scripting Engine)http://nmap.org/book/man-nse.htmlというものが付属しています。NSEは様々な処理を自動化したスクリプトでサービスの設定を確認するものや脆弱性が存在するかどうかをチェックするようなものなど多種多様で、自分自身で記述することも可能です。
今回はこのNSEを検索するためのツール「NSEarch」をKali Linux 1.1.0にインストールして使ってみました。

【NSEarchをダウンロード】

git clone https://github.com/JKO/nsearch.git

【設定に必要なNSEが保存されているPathを取得】

find /usr -type f -name “script.db” 2>/dev/null | awk ‘gsub(“script.db”,””)’
/usr/share/nmap/scripts/

【設定ファイルの編集】

cd nsearch
cp config.yaml.example config.yaml
vi config.yaml

(設定ファイル編集前)

#Configuration File

config:
scriptsPath: “/usr/local/share/nmap/scripts/”
filePath: “/usr/local/share/nmap/scripts/script.db”
fileBackup: ‘scriptbk.db’
scriptdb: “nmap_scripts.sqlite3”
categories: [“auth”,”broadcast”,”brute”,”default”,”discovery”,”dos”,”exploit”,”external”,”fuzzer”,”intrusive”,”malware”,”safe”,”version”,”vuln”]

(設定ファイル編集後)

#Configuration File

config:
scriptsPath: “/usr/share/nmap/scripts/”
filePath: “/usr/share/nmap/scripts/script.db”
fileBackup: ‘scriptbk.db’
scriptdb: “nmap_scripts.sqlite3”
categories: [“auth”,”broadcast”,”brute”,”default”,”discovery”,”dos”,”exploit”,”external”,”fuzzer”,”intrusive”,”malware”,”safe”,”version”,”vuln”]

【NSEarchを実行】

python nsearch.py

================================================
_ _ _____ _____ _
| \ | |/ ___|| ___| | |
| \| |\ `–. | |__ __ _ _ __ ___ | |__
| . ` | `–. \| __| / _` || ‘__| / __|| ‘_ \
| |\ |/\__/ /| |___ | (_| || | | (__ | | | |
\_| \_/\____/ \____/ \__,_||_| \___||_| |_|
================================================
Version 0.3 | @jjtibaquira
================================================

Creating Database :nmap_scripts.sqlite3
Creating Table For Script ….
Creating Table for Categories ….
Creating Table for Scripts per Category ….
Upload Categories to Categories Table …

================================================
_ _ _____ _____ _
| \ | |/ ___|| ___| | |
| \| |\ `–. | |__ __ _ _ __ ___ | |__
| . ` | `–. \| __| / _` || ‘__| / __|| ‘_ |
| |\ |/\__/ /| |___ | (_| || | | (__ | | | |
\_| \_/\____/ \____/ \__,_||_| \___||_| |_|
================================================
Version 0.3 | @jjtibaquira
================================================

nsearch>

【helpを表示】

nsearch> help

Nsearch Commands
================
clear doc exit help history last search

【各コマンドのhelpを表示】

nsearch> help clear
Clear the shell

nsearch> help doc
Usage:
doc

nsearch> help exit
Exits from the console

nsearch> help history
Print a list of commands that have been entered

nsearch> help last
Print the last Result of the Query

nsearch> help search

name : Search by script’s name
category : Search by category
Usage:
search name:http
search category:exploit

【基本的な使い方】
基本的には[search]コマンドを用いてNSEを探すことになるかと思います。
Version 0.3での検索の方法は[name]と[category]が用意されています。
[name]では指定した文字列を含んでいるNSEが列挙されます。
また、[category]では「NSEarch」の設定ファイルに定義されているカテゴリーにマッチするものを列挙されます。
Version 0.3 では「auth」「broadcast」「brute”」「default」「discovery」「dos」「exploit”」「external」「fuzzer」「intrusive」「malware」「safe」「version」「vuln」が定義されています。

以下は[name]で[ntp]、[category]で[auth]で[search]コマンドを実行したログです。

nsearch> search name:ntp
1.http-frontpage-login.nse
2.ntp-info.nse
3.ntp-monlist.nse

nsearch> search category:auth
1.ajp-auth.nse
2.creds-summary.nse
3.domcon-cmd.nse
4.domino-enum-users.nse
5.ftp-anon.nse
6.http-auth.nse
——– SNIP ——–
29.sip-enum-users.nse
30.smb-enum-users.nse
31.smtp-enum-users.nse
32.snmp-win32-users.nse
33.x11-access.nse

また、[doc]コマンドを用いることで指定したNSEを見ることができます。

nsearch> doc ntp-info.nse
local bin = require “bin”
local comm = require “comm”
local nmap = require “nmap”
local shortport = require “shortport”
local stdnse = require “stdnse”
local string = require “string”
local table = require “table”

description = [[
Gets the time and configuration variables from an NTP server. We send two
requests: a time request and a “read variables” (opcode 2) control message.
Without verbosity, the script shows the time and the value of the
—- SNIP —-
author = “Richard Sammet”

誤った文字列を指定するとエラーメッセージではなく終了してしまったり、NSEによっては[doc]コマンドの結果が正しく表示されなかったりという荒削り感はありますがその辺りは今後のバージョンアップに期待です。

Category: memo | LEAVE A COMMENT
2月 10

Kali Linux NetHunter “Bad USB” MITM Attack + sslstripメモ

Nexus5にインストールした「Kali Linux NetHunter」のココにある「”Bad USB” MITM Attack」を実行した上で「sslstrip」を実行しSSL通信を覗き見るということをしてみたのでそのときのメモです。

実施内容は下図の通りです。
fig01
通常では水色の経路で通信しているコンピュータにBadUSB機能を有効にした状態のNethunterをUSB接続することでそれ以後は黒色の経路の通信を行うように設定を変更してしまいます。これにより通信内容を覗き見たり、干渉したりすることが可能になります。

まず、NethunterのBadUSB機能をONにします。
下図のNethunterのメニューからの実行はうまく動作しなかったため起動スクリプトを編集した上でターミナルからスクリプトを実行しました。
menubadusb

【/sdcard/files/startbadusb.shの編集】

#dnsmasq -H /data/local/tmp/hosts -i $INTERFACE -R -S 8.8.8.8 -F 10.0.0.100,10.0..0.200 -x $TMPDIR/dnsmasq.pid
dnsmasq -C /sdcard/files/dnsmasq.conf -x $TMPDIR/dnsmasq.pid -i $INTERFACE

dnsmasq -H /data/local/tmp/hosts -i $INTERFACE -R -S 8.8.8.8 -F 10.0.0.100,10.0..0.200 -x $TMPDIR/dnsmasq.pid
#dnsmasq -C /sdcard/files/dnsmasq.conf -x $TMPDIR/dnsmasq.pid -i $INTERFACE

【/sdcard/files/startbadusb.shの実行】

/sdcard/files# ./startbadusb.sh
iptables v1.4.14
rndis,hid
1

これで準備は完了ですのでコンピュータにNexus5をUSBで接続します。
しばらくするとネットワークの設定が変更され、それ以降Nexus5を経由しての通信を行うようになります。
下図は設定を変更し、通信がNexus5を経由していることを確認するためwww.google.comにpingを送信しその内容をNexus5で表示しているものです。その左横にあるコマンドプロンプトを見ても分かる通りデフォルトゲートウェイが変更されています。また、その次に実行しているPingの内容がNexus5の画面に同様のものが表示されていることからNexus5経由の通信に変更されたことが分かるかと思います。
badusb_cap

これでMan In The Middle状態になりました。
しかし、SSL通信は暗号化されて覗き見ることができないため「sslstrip」を利用します。
「sslstrip」を実行した際に行われることは下図の通りです。
fig02

【IPTABLESのリダイレクト設定】

iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT
–to-port 8080

【sslstripの起動】

sslstrip -l 8080

この状態でYahooのログイン画面にアクセスしてみます。
sslstrip01
URLがhttpsになっていないことが分かります。この状態でログイン処理を行います。
入力、送信した情報は存在しないアカウントのもので
ユーザ名「test@pentest.ninja」
パスワード「MIMTtest」
です。

送信後、ログファイル「/sdcard/files/sslstrip」の内容を確認したものが下図です。
sslstrip02
送信した認証情報が表示されているのが分かるかと思います。

同じ内容をNexus5上で確認したものは下図の通りです。
sslstrip03

以上です。

Category: memo | LEAVE A COMMENT
12月 26

ドメインに対する永続的な管理者権限での侵入の検証レポート

【概要】
WindowsのKerberos認証の脆弱性により、権限昇格が行える脆弱性(CVE-2014-6324)に関する検証レポート」で紹介した、MS14-068の修正プログラムにより修正される脆弱性は、ドメインに参加が許可されているユーザーがドメインの管理者権限を奪取することが可能な問題です。この脆弱性を利用した後の攻撃者による更なるシナリオとしては、

  • ドメインユーザー名とそのパスワードハッシュのリストを取得する
  • バックドア用のユーザーを作成する
  • マルウェアをインストールする
  • 侵入範囲を拡大するための情報(ホスト名、IPアドレス)を収集する
  • 侵入範囲を拡大する

などといった行動が考えられます。
他には、永続的な侵入を可能にするためにKerberosチケットの有効期限を変更するというものも挙げられます。

以下の図はチケットの有効期限を10年間に変更したものです。チケットの有効期限内であれば、チケットのユーザーのパスワードを変更したとしても、攻撃者はログオンすることが可能となります。すなわち、チケットの有効期限を変更することで攻撃者は永続的な攻撃が可能となります。
下図はチケットの有効期限を10年に変更したものの確認結果です。
P11_golden

このような状態のチケットは「Golden Ticket」と呼ばれています。
Golden Ticketは、任意のユーザー、または、任意の有効期限が設定された状態のチケットです。Windowsのドメインコントローラーはデフォルトで10時間のチケット有効期限が設定されていますが、Golden Ticketを利用することにより、この制限を回避してドメインのリソースへアクセスし続けることが可能となります。

また、以下の図は、Golden Ticketを利用してドメインコントローラーへアクセスした後、バックドア用のユーザー「golden」を作成し、ユーザー「golden」を「Domain Admins」権限へ追加するまでを示しています。

P11_golden2
このように攻撃者が任意のユーザ名、パスワードを設定した管理者ユーザアカウントを追加し、本来の管理者に気付かれぬよう永続的な侵入を行うといった攻撃が行われることもあります。

このGoldenチケットによるリソースへのアクセスを防ぐためには、krbtgtアカウントのパスワードを二回変更する必要があります。ただし、krbtgtアカウントのパスワードを変更することにより、現在ログオン中のセッション全てに影響を及ぼす可能性があるため、実行する際には運用中のシステムに影響を及ぼさないことを検証環境にて十分に確認を行ってから実施することを推奨します。

MS14-068の修正プログラムにより修正される脆弱性と併せて対策を実施する場合、

  1. MS14-068の修正プログラムを適用する
  2. krbtgtアカウントのパスワードを二回変更する

というステップを踏んでいただくことが挙げられます。

reported by y.izumita, ntsuji