こちらの記事ではサイバー攻撃のうちの一つ、ブルートフォース(brute-force)攻撃について解説します。
ブルートフォース攻撃とは?
ブルートフォース攻撃とは、別名、総当たり攻撃とも呼ばれ、aaaaaやbbbbbなどの文字列の組み合わせをすべて試し、総当たりで攻撃対象の暗号解読や認証情報を特定する手法で、主にパスワードを特定する際に用いられるサイバー攻撃のことです。
一つ一つの文字列の組み合わせを試していくため、短いパスワードを利用していた場合、パスワードを簡単に特定されていしまいます。
ブルートフォース攻撃の手口
ブルートフォース攻撃を行う場合、攻撃者は手入力で総当たりをするなどはせず、攻撃を自動化するためのツールを使用し攻撃を仕掛けます。
代表的なツールとしてHydraやJohn The Ripperなどがあります。このようなツールがあれば、専門的な知識がある程度ない状態でも攻撃ができてしまうため、比較的難易度が低いとされています。
ブルートフォース攻撃では、ユーザーIDとパスワードの組み合わせでの認証機能が存在した場合、ユーザーIDを固定してパスワードを1文字ずつ順番に変更しながら、何十億もの文字や数字、記号の組み合わせを作成しパスワードの特定を行います。
仮に4桁で0000~9999までの数字のみのパスワードだった場合、1万通りの組み合わせを試せば特定できる計算になります。
以下、12桁の英大文字小文字、数字でのパスワード組み合わせ数の参考図です。
参考:中村行宏 若尾靖和 林静香 「情報セキュリティの技術と対策がしっかりわかる教科書」、株式会社技術評論社
図のように、文字の種類と桁数が増加すると、組み合わせ数が膨大な数になっているのが分かります。
ブルートフォース攻撃ではIDを固定してパスワードを順番に変更しながらパスワードの特定を行いますが、その他にもパスワードに使われやすい単語をリスト化したファイルを使用して攻撃を行う辞書攻撃や、パスワードを固定してIDを順番に変更しながら攻撃を行うリバースブルートフォース攻撃なども存在します。
ブルートフォース攻撃による被害
ブルートフォース攻撃の被害によりパスワードを特定されてしまった場合には、以下のような被害が発生する恐れがあります。
-
不正出金や送金など金銭的な被害の発生
-
Webサイトのシステムへの不正アクセスによるWebサイトの改ざん
-
パスワードの使い回しによる他のサイトのアカウント乗っ取り
金融機関などのシステムを利用していた場合、身に覚えのない出金や送金などの被害を受けてしまう場合も考えられます。また、Webサイトを運営している管理システムのパスワードが特定されてしまえば、不正にログインされてしまい、Webサイトの内容の改ざんなどが行われてしまうでしょう。
そして、様々なアプリケーションを利用する際に、 同じパスワードを他のアプリケーションでも使い回していないか? という点には注意が必要です。特にGoogleやAmazonといった非常に大きな影響力があるアカウントのパスワードを他のアプリケーションでも使い回していた場合、他のアプリケーションのパスワードが特定されてしまえばGoogleやAmazonのパスワードが特定されてしまうことに繋がり、その影響は非常に大きなものになってしまうことが考えられます。
ブルートフォース攻撃を体験してみる
インフラ学習サイトのEnvaderでは、Liuxの基礎やデータベースの基礎を学ぶだけではなく、ブルートフォース攻撃を行うためのツールの一つとしてご紹介したHydraを用いて、ブルートフォース攻撃や辞書攻撃などを疑似的に体験することができる環境をご提供しています。
https://envader.plus/course/3/scenario/1040
ブルートフォース攻撃への対策
ブルートフォース攻撃への対策は、ユーザー側と、サービスを提供するシステム側でそれぞれ対策します。
ユーザー側の対策
-
パスフレーズを使用し、複雑でも覚えやすいパスワードを作成する(123456など単純なパスワードを設定しない)
NISC(内閣サイバーセキュリティセンター)が作成したインターネットの安全・安心ハンドブックでは、安全なパスワードの作成には複雑さと長さが大切とされており、具体的には英大文字小文字+数字+記号で10桁以上が複雑で長いパスワードとされています。
ただ、この条件で10桁以上のパスワードを様々なアプリケーションで実現させるのは、考えるのも覚えるのにも負担がかかることは否定できません。そこで紹介されているのがパスフレーズの利用です。パスフレーズとは、文字列を使ったパスワードのことで、以下のような形で作成します。
Watashi_no_syumi_wa-guitar@1231
このように、自分の私生活で行っていることなどを言語化しパスフレーズ化することで、自分だけしか知り得ない情報で、覚えやすく長いパスワードを作成することが可能になります。
ただし、有名な歌詞や映画、本のフレーズは推測されやすいため、パスフレーズとして使用するのは控える必要があります。
-
同じパスワードは使いまわさない
ブルートフォース攻撃の被害の項でもご紹介しましたが、一度使用したパスワードを使いまわさないこともユーザーにとって重要になります。GoogleやAmazonなどで使用したパスワードを、万が一脆弱性のあるアプリケーションでも使用してしまい、そのパスワードが特定されてしまった場合、その被害は大変大きなものになる可能性があります。
-
パスワード管理アプリなどを使用する
1Passwordなどのパスワード管理アプリを利用することも、ユーザー側のパスワード管理を簡単かつ安全に行うことができるようになる方法の一つです。
インストールするだけで使える無料のもの、月額、年額料金が発生するものがあり、それぞれで登録できるパスワードの数の上限が違っていたり、対応するOS、デバイスに違いがあるため利用する際には良く検討する必要がありますが、アプリケーションにパスワードの管理を任せることでユーザーである私たちの負担を減らすことが可能になります。
システム側の対策
-
一定回数以上のパスワード認証失敗時のアカウントロック
キャッシュカードの暗証番号は3回間違えると使えなくなってしまいます。アプリケーションを開発する際にもこの仕組みを利用し、ある一定回数パスワードによる認証が失敗するとアカウントをロックすることで、総当たりによる攻撃を回避することができます。
-
多要素認証(MFA)の導入
多要素認証(Multi-Fuctor Authentication)とは、ログインする際に、認証の3要素である知識情報、生体情報、所持情報のうち、いずれか2つ以上の要素を使用して行う認証のことを指します。
認証についてはこちらの 【わかりやすく解説】認証と認可の違いとは?セキュリティの考え方 をご覧ください。
-
パスワード入力に対するシステムでのチェック(単純なパスワードの場合はシステム側で警告を表示する)
ユーザーの入力したパスワードをシステム側でバリデーションチェックを行い、以下のような条件を設定し、未達成であれば入力欄に警告を表示するようにすることで、単純なパスワードの入力を防ぎます。
- 文字の桁数に関して(例 8桁以上入力しているか)
- 使用している文字の種類は適切か?(英大文字小文字+数字+記号を使用しているか?)
- ユーザーIDと同じパスワード(ジョーアカウント)を使用していないか?など
-
エラーメッセージに具体的な内容は含まない
ログイン機能では、ユーザーID、パスワードで認証を行っていた場合、どちらかが間違っていた場合にエラーメッセージを表示する場合があります。その際に表示するメッセージに、
指定したユーザーは存在しません
入力したパスワードが間違っています
などの表示はしないようにシステムを実装することが大切です。一見ユーザーにとって親切なように見えますが、このようにメッセージを表示してしまった場合、ユーザーIDが間違っているのか、パスワードが間違っているのかを攻撃者へ特定させる原因になってしまいます。そのため、
IDまたはパスワードが違います
のようにメッセージを表示することで、どちらが間違っているのかを特定されるのを防ぐことができます。
まとめ
ブルートフォース攻撃とは、ツールなどを利用し、入力する文字を総当たりで試してパスワードなどの特定を行うサイバー攻撃です。Envaderのセキュリティ基礎コースで実際に体験していただくと分かりますが、ブルートフォース攻撃はツールさえあれば専門的な知識がなくても実行できてしまいます。
今後新たにパスワードを設定する際やアプリケーションを開発する時には、ブルートフォース攻撃に遭う可能性があることをよく理解し、ユーザー側、開発者側それぞれの立場でしっかりと対策を行っていきましょう。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.07.23
セキュリティエンジニアのお仕事 必須スキルは?どんな業務をするの?
今回は、セキュリティエンジニアのお仕事について詳しく解説します。「セキュリティエンジニアの基本」や「必要なスキル」「日々の業務」までわかりやすく紹介しています。
- サイバーセキュリティ
2024.09.26
Trivyでコンテナセキュリティを強化する方法
コンテナセキュリティとは、コンテナ化されたアプリケーションやそのインフラを保護するための対策です。具体的には、次のような要素が含まれます。
- サイバーセキュリティ
2024.09.26
Trivyを使ったセキュリティスキャンの基本と導入方法
Trivyは、コンテナイメージ、ファイルシステム、リポジトリ、Kubernetesクラスターの脆弱性スキャンに対応しているツールです。
- サイバーセキュリティ