サイバー攻撃手法2
第10講では、ブルートフォース攻撃からレインボー攻撃までをご紹介しました。
引き続き、第11講ではさらに深い攻撃手法を見ていきましょう。これらの攻撃手法を理解することで、セキュリティ対策の重要性をより深く認識できるようになります。
- バッファオーバーフロー攻撃
- SQLインジェクション
- クロスサイトスクリプティング
- ディレクトリトラバーサル
- セッションハイジャック
- OSコマンドインジェクション
- クリックジャッキング
- ドライブバイダウンロード攻撃
眺めるように、リラックスしながら学習してくださいね!
第11講
第11講では、バッファオーバーフロー攻撃から再開します。第10講の後半です。
- ブルートフォース攻撃
- リバースブルートフォース攻撃
- パスワードスプレー攻撃
- 辞書攻撃
- スニッフィング
- リプレイ攻撃
- パスワードリスト攻撃
- レインボー攻撃
- バッファオーバーフロー攻撃(ここから)
- SQLインジェクション
- クロスサイトスクリプティング
- ディレクトリトラバーサル
- セッションハイジャック
- OSコマンドインジェクション
- クリックジャッキング
- ドライブバイダウンロード攻撃
どひゃー!(2回目)
用語のひとつひとつはそんなに難しくないけど、情報セキュリティの学習は量で攻めてきますw
バッファオーバーフロー攻撃
システムが割り当てられたメモリ領域(バッファ)を超えてデータを入力された場合に発生します。この攻撃により、攻撃者は、システムに不正なコードを実行させることが可能になります。
対策
プログラムの入力チェックを徹底し、入力データのサイズを制限すること。セキュリティ向けのコンパイラオプション(例:Stack Canaries)を使用することなどが挙げられます。
また、C言語がバッファオーバーフローを狙われやすいとも言われているので、コーディングの際には、セキュアにコーディングする必要があります。
メモリの構造がわからないと、バッファの理解が難しいのですが、イメージとして、一時保存領域用のバケツがバッファとしてください。これに毒の混じった水をわざと溢れさせて、その毒をバケツのまわりに広げてしまう攻撃です
SQLインジェクション
攻撃者がWebアプリケーションに対して、不正なSQLクエリを注入することで、データベースから情報を盗んだり、データを操作したりする攻撃手法です。
例えば、検索ボックスでワイルドカード「*」が使えるような設計だと、SQLインジェクションのリスクが高くなります。この「*」を単なる文字として変換させる必要があります。
対策
所定の記号で誤作動が起きないように、特殊な文字列はエスケープ(特殊文字を無害化すること)として入力値が扱われるように設計します。
これもSQL文を理解していないと難しいのですが、アスタリスク「*」は、前方一致・後方一致・含む、といった条件で使うことができるため、それを悪用して攻撃する、といったイメージです
特にパスワードで使われてしまったら、どんなに難しいパスワードを作成したとしても、すべてを意味する「*」が許可されてしまったら、誰でもログインできてしまいますよね
クロスサイトスクリプティング(XSS)
攻撃者が悪意のあるスクリプトをWebページに埋め込み、他のユーザーに実行させる攻撃です。クッキー情報の盗難や、ユーザーの操作が乗っ取られる可能性があります。
対策
すべてのユーザー入力を制御し、スクリプトを実行できないようにする。または、コードを送信できないように送信ボタン後の処理を設計します。
セキュリティの低い掲示板の投稿フォームに、悪意のあるコードを書いてアップロードをします。すると、その掲示板のページは、悪意あるコードに侵されたページへと変化します。
もし、そのコードが「このページを見に来た人は、情報収集用の偽ページに飛ばす」というプログラムであった場合、そこにきたユーザーは偽ページに自動画面推移して、書き込みをしてしまうというものです。
これが水飲み場攻撃のケースですね
ディレクトリトラバーサル
攻撃者がWebサーバーのディレクトリ構造を不正に操作することで、通常アクセスできないファイルにアクセスする攻撃手法です。
対策
サーバー側で、ユーザーがアクセスできるディレクトリを明確に制限し、ファイルパスの入力に対して厳格な検証を行うことで、意図しないファイルへのアクセスを防ぎます。
攻撃者がURLの末尾に「../」という文字列を追加して、サーバー内の別のファイルにアクセスしようとすることがあります。このような行為を防ぐためには、アクセスできるファイルパスをしっかり制限しておくことが重要です
セッションハイジャック
攻撃者がユーザーのセッションIDを盗み取ることで、そのユーザーになりすまし、不正アクセスを行う攻撃です。
セッションIDがちょっとわからないかな…
セッションIDを「入場パス」に例えるとわかりやすいかな。さえちゃんがテーマパークに入るとき、チケットを買うよね。
そのチケットには、テーマパークに入る権利を持っていることを示す番号が記されていて、その番号がセッションIDに相当するの。
テーマパーク内でアトラクションを利用するときや、食べ物を買うとき、この入場パスを見せることで、スタッフはさえちゃんが入場済みであることを確認できるのね。この入場パスがなければ、誰なのかを識別できないため、途中で利用を拒否されちゃいます。
同じように、WebサイトでもセッションIDを持っていることで、さえちゃんがログイン済みのユーザーであることが確認されて、サイト内のさまざまな機能を利用できるイメージだよ
なるほど! だからその入場パスの番号が盗まれたりしたら、私の知らないところでログインされるかも、ってことなのか
対策
サーバー側で、IPアドレスやユーザーエージェント情報を監視し、通常とは異なるアクセスが検出された場合、自動的にセッションを無効化します。また、セッションIDを定期的に更新し、HTTPS通信を使用してセッションIDの盗難を防ぐことができます。
セッションIDを盗まれると、攻撃者がそのセッションを乗っ取り、ユーザーになりすまして不正な操作ができてしまいます。
まずはhttps通信を絶対条件として、セッションIDが盗まれないように注意しましょう
OSコマンドインジェクション
攻撃者がコンピューターシステムに不適切な指示を送り込んで、勝手に操作しようとする攻撃です。これも日常の例で考えてみましょう。
レストランで注文票に「ステーキ」と書く代わりに「ステーキ、それと金庫も開けて」と書いて、店員がその通りに動いてしまうようなものです。
Webサイトの検索ボックスに、検索ワードではなくコンピューターへの命令を入力することで、システムの情報を盗んだり、勝手に操作したりすることができてしまいます。
対策
入力データを適切にサニタイズし、ユーザー入力がOSコマンドとして直接実行されないようにする。または、アプリケーションに必要最低限の権限だけを付与し、攻撃者が不正な操作を行えないようにします。
サニタイズというのは、データや入力値を安全な形式に変換することです。悪意がないかチェックするようなイメージですね。
ユーザーが悪意のあるコードを入力し、それがそのままシステムのコマンドとして実行されると、システム全体が乗っ取られてしまう危険があります。だから、入力データをしっかりと検証して、安全な形式に変換することが必要なんです
クリックジャッキング
ユーザーが知らないうちに、攻撃者の意図する操作を行ってしまう攻撃手法です。
攻撃者は、ユーザーに表示されたリンクやボタンの上に、透明なレイヤーを重ねてリンク操作を誘導します。
対策
クリックジャッキングを防ぐためには、Webページが他のサイトでフレームに表示されないようにする「X-Frame-Optionsヘッダー」を設定することが重要です。
これにより、透明なフィルムを利用したトラップを防ぐことができます。
X-Frame-Optionsヘッダーというものがある、という認識で問題ありません。知らないうちに別のリンク先に飛ばされてしまうトラップ、これがクリックジャッキングです。必ずリンク先もURLを適宜確認することをおすすめします
ドライブバイダウンロード攻撃
ドライブバイダウンロード攻撃は、ユーザーが悪意のあるWebサイトにアクセスした際に、ユーザーの意図しない形で、マルウェアが自動的にダウンロードされる攻撃です。
対策
ブラウザやプラグインを最新の状態に保ち、脆弱性を利用されないようにする。または、信頼できないサイトにはアクセスしないよう、フィルタリングソフトウェアを導入します。
ブラウザに脆弱性があると、ドライブバイダウンロード攻撃の対象となりうるので、使用するブラウザは常に最新の状態にしておきましょうね
ゆみちゃん、もう苦しいよ、おなかがはちきれそうだよ!
第11講のまとめ
バッファオーバーフロー攻撃からドライブバイダウンロード攻撃まで、さまざまな攻撃手法について学びました。
これらの攻撃を理解することで、情報セキュリティの知識が一層深まり、具体的な対策を講じることが可能になります。
さえちゃんも、おなかいっぱいもうダメ! って嘆いています。ネットワークのお話になったら、また繰り返し出てくる攻撃もあるので、言葉だけでこの講座で抑えておいてくださいね!