パスワードスプレー攻撃
IDとパスワードを盗むときの手法だよ
「いくつかのIDに対してパスワードを1つ決めて片っ端から試す→ダメだったらパスワードを変えて試す(のを何回かやる)→それでもダメだったらIDの候補を変えて試す」やり方だよ
リバースブルートフォースアタックと同じだと言う人もいるし、違うと言う人もいるよ
簡単に書くよ
パスワードスプレー攻撃(読:パスワードスプレーコウゲキ 英:password spraying)とは
IDとパスワードの組み合わせを盗み出すときの やり方のひとつ
であり
例えば、ID「1」と「2」と「3」にパスワード「p1」を試す、ダメだったらパスワードを変えてID「1」と「2」と「3」にパスワード「p2」を試す、ダメだったらIDを変えてID「4」と「5」と「6」にパスワード「p1」を試す、ダメだったらID「4」と「5」と「6」にパスワード「p2」を試す……のように、いくつかのIDに対して同じパスワードを試し、ダメだったらパスワードを変えて同じことをやり、何回か試してダメだったらIDの候補を変えて試す やり方
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ブルートフォースアタック(総当たり攻撃)」と「リバースブルートフォースアタック(逆総当たり攻撃)」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ブルートフォースアタック(総当たり攻撃)は「総当たりで試していくぜ!」なパスワードや暗号の解読方法です。
悪い人がパスワードとかを解析するときに(専用のソフトを使って)やります。
「オラオラオラオラ!」な心意気で片っ端から全部 試していく やり方です。
例えば、そうですね。
4桁の暗証番号が付いている鍵が あったとしましょう。
それぞれ0から9までの数字が選べます。
暗証番号として設定される可能性があるのは「0000」から「9999」までの どれかです。
それ以外の可能性は ありません。
それなら「0000」「0001」「0002」……「9997」「9998」「9999」と地道に全部 試していけば、どこかで当たります。
それを実際にやるのがブルートフォースアタックです。
「力技、ここに極まれり!」って感じですね。
IDとパスワードの組み合わせであれば、IDを1つ決めて、可能性のあるパスワードを片っ端から試していきます。
例えば、ID「1」に対してパスワードを「0000」「0001」「0002」……「9997」「9998」「9999」と試すような やり方です。
リバースブルートフォースアタック(逆総当たり攻撃)は「ブルートフォースアタック(総当たり攻撃)の逆」です。
ブルートフォースアタックでは
1つの「ID」に対して、すべての「パスワード」を片っ端から試す
やり方をします。
それに対して、リバースブルートフォースアタックでは
1つの「パスワード」に対して、すべての「ID」を片っ端から試す
やり方をします。
例えば、パスワード「0000」に対してIDを「1」「2」「3」……と試すようなやり方がリバースブルートフォースアタックです。
リバースブルートフォースアタックのメリット……と書いて良いのか分かりませんが、ブルートフォースアタックより優れている点は「おまえ、何回も間違ったから使えなくするよ!」にやられないことです。
パスワードの入力に対しては「3回連続で間違ったら使えなくするよ。また使えるようにしてほしかったら直接 電話してこいよ」みたいな制約が付いていることも多々あります。
この場合、ブルートフォースアタックは使えません。
パスワードの全部の組み合わせを試す前に使えなくされてしまうからです。
リバースブルートフォースアタックでは、この制約を突破できてしまいます。
1つのIDに対するパスワードの入力は1回だからです。
試すのが1回なので「3回連続で間違ったら使えなくするよ」の制約に引っかかりません。
これがリバースブルートフォースアタックがブルートフォースアタックより優れている点です。
以上を踏まえて
1.IDをいくつか決めて、それぞれのIDに同じパスワードを試す
2.ダメだったらパスワードを変えて同じことをする
3.何回かやってダメだったらIDの候補を変えて同じことをする
パスワードの破り方が「パスワードスプレー攻撃」です。
……と、言葉で説明されても分かりにくいですよね。
実際の例を見てみましょう。
例えば、IDを「1」「2」「3」と決めたとします。
このID「1」「2」「3」に対して、パスワード「0000」を試します。
どれも一致しませんでした。
次は、ID「1」「2」「3」に対して、パスワード「0001」を試します。
どれも一致しませんでした。
次は、ID「1」「2」「3」に対して……ちょっと待ってください。
同じIDに対して3回間違えたら、使えなくなるかもしれません。
IDを変えましょう。
次はID「4」「5」「6」に対して、パスワード「0000」を試します。
どれも一致しませんでした。
次は、ID「4」「5」「6」に対して、パスワード「0001」を試します。
どれも一致しませんでした。
次は、ID「4」「5」「6」に対して……ちょっと待ってください。
同じIDに対して3回間違えたら、使えなくなるかもしれません。
IDを変えましょう。
次はID「7」「8」「9」に対して、パスワード「0000」を試します。
……というのを繰り返していく やり方がパスワードスプレー攻撃です。
よく分からない人はIDが並んだキャンバスにパスワードをプシューとスプレーしていくイメージを持つと良いと思います。
まずは、ID「1」「2」「3」のあたりにパスワード「0000」をプシューとスプレーします。
次に、ID「1」「2」「3」のあたりにパスワード「0001」をプシューとスプレーします。
次に、ID「4」「5」「6」のあたりにパスワード「0000」をプシューとスプレーします。
次に、ID「4」「5」「6」のあたりにパスワード「0001」をプシューとスプレーします。
そんな感じのイメージです。
取り上げておいて なんですが、パスワードスプレー攻撃の定義は結構あいまいです。
人によっては「リバースブルートフォースアタックと同じだよ」と説明しています。
確かに「複数のIDに対して同じパスワードを試す」という点に着目すれば、パスワードスプレー攻撃とリバースブルートフォースアタックは同じように見えます。
パスワードスプレー攻撃の説明で
1.ID「1」「2」「3」にパスワード「0000」を試す
2.ID「1」「2」「3」にパスワード「0001」を試す
3.ID「4」「5」「6」にパスワード「0000」を試す
4.ID「4」「5」「6」にパスワード「0001」を試す
5.ID「7」「8」「9」にパスワード「0000」を試す
6.ID「7」「8」「9」にパスワード「0001」を試す
のような例を挙げました。
これは、見方によっては
リバースブルートフォースアタックを6回やっているだけ
と解釈できます。
一方で、単純にリバースブルートフォースアタックをやるのであれば
1.ID「1」「2」「3」「4」「5」「6」「7」「8」「9」にパスワード「0000」を試す
2.ID「1」「2」「3」「4」「5」「6」「7」「8」「9」にパスワード「0001」を試す
と試す方が効率的です。
わざわざチマチマ分ける必要が ありません。
この「チマチマ分ける」がポイントだと考える人もいるでしょう。
チマチマ分けることで、攻撃間隔を空けたり、攻撃元を変えるのが(リバースブルートフォースアタックと違う)パスワードスプレー攻撃の醍醐味だ!
という解釈です。
あるいは
リバースブルートフォースアタックを(パスワードを変えて)複数回やるのがパスワードスプレー攻撃
と解釈する人もいるようです。
あるいは、そうですね。
私は最初パスワードスプレー攻撃について調べたとき
ブルートフォースアタックとリバースブルートフォースアタックの複合技
っぽい印象を受けました。
パスワードスプレー攻撃でやっていることは
複数のIDに複数のパスワードを試す(のをIDの候補を変えて何回もやる)
です。
これは「複数のIDに1つのパスワードを試す」リバースブルートフォースアタックっぽい攻撃です。
一方で「1つのIDに複数のパスワードを試す」ブルートフォースアタックっぽい攻撃でもあります。
そんな感じで、どこに注目するかによって、定義付けが変わったり、説明の内容が変わったりする用語です。
混乱しないように頑張ってください。
一言でまとめるよ
まぁ「パスワードスプレー攻撃」って単語が出てきたら「いくつかのIDに対して同じパスワードを試し、ダメだったらパスワードを変えて試し、ダメだったら候補のIDを変えて試す、パスワードの破り方なんだな~」と お考えください。
おまけ
■訳してみるよ
「password(パスワード)」は「pass(パス)」+「word(ワード)」です。
「pass(パス)」の意味は「通る」とか「通過する」とか「合格する」とかです。
「word(ワード)」の意味は「語」とか「単語」とかです。
「spray(スプレー)」の意味は「噴霧」とか「噴出」とか「スプレー」とかです。
「攻撃」は日本語ですね。
何となく くっつけると
通るための単語を噴出する攻撃
となります。
■検索してみる?






