"実践サイバーセキュリティモニタリング"を読めば最高になれる!
これはHoneypot Advent Calendar 2017の9日目の記事です.
私はnao_secというチームでDrive-by Download攻撃について調査・解析を行っています.毎日ダラダラと攻撃キャンペーンを追い回し,Exploit Kitを解析し,マルウェアのトラフィックを眺めて…みたいな生活をしています.実際にどんなことやってるのか,詳しいことはブログやTwitterをご覧下さい.
さて,Drive-by Download攻撃はAngler Exploit Kitが消えて以降,下り坂な印象を受けますが,それでも決して無視できるような脅威ではなく,現在でも多くの調査・研究が行われています.Drive-by Download攻撃に関して調査・研究を行う場合,特に大きなハードルとなるのはデータの収集ではないでしょうか?Drive-by Download攻撃は様々な解析妨害・Cloakingによって攻撃の観測範囲が限定されており,攻撃ターゲット以外がその攻撃を観測することは困難です.
例えば,Seamlessと呼ばれる攻撃キャンペーンでは,ユーザのタイムゾーン設定を利用して攻撃するか否かを判断します.また,RIG Exploit Kitは連続的に2度以上同一のIPアドレスでアクセスを行っても攻撃を行いません.他にも,User-Agentを使ってWebブラウザを推定したり,JavaScriptを使ってAdobe Flash Playerのバージョン情報を取得し,攻撃ターゲットであるか判断するような処理は多くの攻撃キャンペーン/Exploit Kitで存在します.正常な悪性トラフィック
を観測するには,それぞれの攻撃キャンペーン/Exploit Kitの仕様を理解し,それに適した環境を用意する必要があります.
こうした攻撃を観測するための基盤として,私は高対話型のクライアントハニーポットを自作して運用しています.
ハニーポットというとサーバ型を想像する人が多いと思いますが,クライアント型も存在します.サーバ型の場合,脆弱(に見えるよう)なサーバ環境を作成し,外部から攻撃者が攻撃する際のデータを収集したりする,基本的に受動的なものです.それに対し,クライアント型はWebクライアントを模しており,脆弱(に見えるよう)なWebクライアント環境を作成し,外部に存在する悪性Webサイト等へアクセスして攻撃を受ける,能動的なものです.
また,ハニーポットには低対話型と高対話型が存在します.低対話型の場合,本物の環境であるようにエミュレーションし,処理速度やスケーラビリティ・安全性が高くなっています.それに対して高対話型の場合,実環境(に限りなく近いもの)を使っており,攻撃者にバレにくく,得られる情報が多いことがメリットとして上げられます.
今回は高対話型のクライアントハニーポットを作成し,実際にDrive-by Download攻撃を観測し,そこから得られた情報を解析してみようと思います.
私が作成した簡易な高対話型クライアントハニーポットStarC
について簡単に説明します.
https://github.com/nao-sec/starc
詳しいことはコードを読めば分かると思うし,本当にお粗末な最低限の機能しか実装していないものですが,簡潔に挙動を説明すると以下のようになります.
ゲストには脆弱な環境を構築します.例えばパッチを当てていないWindowsだとか,古いIEやAdobe Flash Playerを使うなどが挙げられます.場合によってはSuricataやセキュリティ製品をインストールしておくと良いかもしれません.
StarCではOpenVPNを使ってゲストの通信を全てVPNに流します.これによってIPアドレスを柔軟に変更することができ,様々なアクセス制御機構の影響を受けずに観測を行うことができるでしょう.
また,ホストがWindowsだと怖いことがあったりするので,そういうときはテキトーにスクリプトを書くと動きます.
https://gist.github.com/koike/999e0a0ea1a65b2101131a96d66e424a
これを動かすことで,以下のようなデータが得られます.
実際に悪性Webサイトへアクセスを行い,得られたデータを解析してみます.データはマルウェア等を含んでいる可能性があるため一般に公開することはできませんが,来年には某所で入手できるはずです.
さて,sazファイルを開いて余計なデータを削ぎ落とすと,以下のようになりました.
Fiddlerで悪性トラフィックを見るときはEKFiddleをインストールしておくことをオススメします.悪性URLについて知識がなくとも,これがあれば何とかなるでしょう.
https://github.com/malwareinfosec/EKFiddle
1番目のトラフィックを見てみると,以下のようなコードが存在していました.
単純な難読化なので,見やすくしてみると
Google Analyticsっぽいですけど,よく見てみると自分自身にGETリクエストとPOSTリクエストを送っていることが分かります.GETリクエストを送ったときのレスポンスヘッダと,jstimezonedetectで得られたタイムゾーン情報をPOSTで送信しているようです.Fiddlerでは16番と26番がそれに当たります.
POSTリクエストのレスポンスをevalしているので,レスポンスを見てみると
となっており,リダイレクトが行われていることが分かります.ここから2回リダイレクトが行われ,最終的にtest1.phpというファイルを読み込みます.test1.phpは以下のようになっていました.
こうしてRIG Exploit KitのLanding Pageがiframeで読み込まれ,攻撃が行われていることが分かります.
悪性トラフィックを観測するためにクライアントハニーポットを使う例を紹介しました.少しでもDrive-by Download攻撃について知って頂ければ幸いです.