Browser Exploitation とか MITB とかに関しての雑な記事
目次
前書き
実は最近ブラウザハックという書籍を読み進めています。
なので、今回はそれに関連して Browser Exploitation や MITB 攻撃などに関して少し書いてみようかと思います。
しかし、まだ学習中の身なのでこの記事の内容のすべてが正しいとは限りません。
そのため記事の内容は鵜呑みにせず、信頼できる他のソースも探して参照していただけると幸いです。
※注意
許可の無い環境に対する攻撃は犯罪です。絶対に許可の無い環境に対して攻撃を行わないでください。
今回行った攻撃の流れや環境
今回は Web サーバ、被害者のマシン、そして攻撃者のマシンである3つの仮想マシンを作成して色々と試してみました。
それぞれ以下のようなものになっています。
またWeb サーバには以下の2つのサイトを用意しました。
今回行った攻撃の流れとしては以下のようになります。
- 攻撃者が Stored-XSS のある Web サーバに被害者のブラウザを hook (被害者のブラウザを制御下に置くといった意味?)するためのコードを挿入する。
- 被害者が脆弱なサイトにアクセすることで被害者のブラウザが hook される(攻撃者の制御下に置かれるといった意味?)。
- 攻撃者が被害者のブラウザに対して攻撃コードを送信。
- 被害者のブラウザで攻撃コードが実行される。
図で表すと図1のようになります。
実際に行った攻撃
それでは実際に攻撃を行ってみます。
悪意あるコードの挿入
まず初めに被害者のブラウザを hook するための悪意のあるコードを show.php に挿入しましょう。
図1 だと 2 列目に悪意のあるコードが挿入されています。
BeEF というツールを使用すると攻撃者のマシンの 3000 番ポートに BeEF のサーバが立ちます。
そのため、被害者のブラウザをhook する際は BeEF のサーバにある hook.js にアクセスさせればよいです。
被害者のブラウザを hook する
次に被害者のブラウザにに先ほど挿入したコードを実行させましょう。
そのために被害者に shop.php に訪れてもらいました。
すると攻撃者のマシンで BeEF を用いて被害者のブラウザが hook されたことが確認できます。
悪意あるコードの送信と実行
それでは悪意のある攻撃コードを被害者のブラウザで実行させましょう。
今回はBeEFというツールを使用して Petty Theft という攻撃を行いました。
今回は facebook のログイン画面を表示し、ユーザ名とパスワードを被害者に入力させます。
BeEF の Pretty Theft モジュールを実行すると被害者にユーザ名とパスワードの入力を促す画面が表示されます。
今回はユーザ名とパスワードの両方に test という値を入力して Log In をクリックしました。
すると攻撃者の BeEF 上で入力された値を確認することが出来ました。
結局 Browser Exploitation とかって何?
今回行った Pretty Theft 攻撃を見ても一体 Browser Exploitation の何が危険なのかわかりにくいですよね。
XSS と何が違うのかといった疑問をもった方もいるのではないでしょうか?
私もそこが気になったため色々と調べてみました。
そもそも Browser Exploitation や MITB はアプリケーション層において不正なマルウェアや拡張機能などによって引き起こされます。
つまり、これらの攻撃は XSS などの脆弱性がなくとも悪意のある拡張機能やマルウェアを用いることで攻撃が可能となってしまうと考えられます。
また、今回はログイン画面を表示すると言ったような JavaScript を実行させる攻撃でしたが MITB 攻撃ではユーザが POST したデータの内容を改ざんするといったような攻撃も存在します。
雰囲気としては Burp Suite や OWASP ZAP を用いて通信をインターセプトし内容を改ざんするといった処理に近いのではないかと感じました。
対策は?
先ほどあげたようにマルウェアや悪意のある拡張機能をダウンロードしないようにするのが有効な対策なのではないかと思います。
また、最新のセキュリティソフトを用いることで BeEF による攻撃を防ぐことが出来るようです。
参考:Harshil Sawant, Samuel Agaga."Web Browser Attack Using BeEF Framework". (researchgate.net)
感想
JavaScript って思ったよりも多くのことが出来るのですね。
MITM の攻撃で有名なマルウェアは JavaScript ではありませんでしたが、拡張機能を用いた攻撃などは JavaScript で書かれているはずなので中々恐ろしいと感じました。
時間が出来たらもう少ししっかりと調べて補足したいと思います。
それでは、今回は少し短めですがこのあたりで記事を終了としたいと思います。
最後まで読んでくださりありがとうございました。