# 高対話型クライアントハニーポットとログ解析 ## はじめに ["実践サイバーセキュリティモニタリング"](http://www.coronasha.co.jp/np/isbn/9784339028539/)を読めば最高になれる! --- これは[Honeypot Advent Calendar 2017](https://adventar.org/calendars/2263)の9日目の記事です. 私は[nao_sec](http://nao-sec.org)というチームでDrive-by Download攻撃について調査・解析を行っています.毎日ダラダラと攻撃キャンペーンを追い回し,Exploit Kitを解析し,マルウェアのトラフィックを眺めて…みたいな生活をしています.実際にどんなことやってるのか,詳しいことは[ブログ](http://www.nao-sec.org)や[Twitter](https://twitter.com/nao_sec)をご覧下さい. さて,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 私が作成した簡易な高対話型クライアントハニーポット`StarC`について簡単に説明します. [https://github.com/nao-sec/starc](https://github.com/nao-sec/starc) 詳しいことはコードを読めば分かると思うし,本当にお粗末な最低限の機能しか実装していないものですが,簡潔に挙動を説明すると以下のようになります. ``` [Host] 1. データ共有のためのディレクトリを作成 2. 共有ディレクトリをVMに設定 3. 共有ディレクトリへVPNのconfigをコピー 4. 共有ディレクトリへURLを書き込み 5. VMを起動 6. VMが終了するのを待機 7. VMを復元 ``` ``` [Guest] 1. 共有ディレクトリのconfigを使ってVPN接続 2. FiddlerとWiresharkを起動 3. IEを使ってURLにアクセス 4. 数分間,待機 5. スクリーンショットを共有ディレクトリへ保存 6. FiddlerとWiresharkを停止 7. データを共有ディレクトリへコピー 8. VMを終了 ``` ゲストには脆弱な環境を構築します.例えばパッチを当てていないWindowsだとか,古いIEやAdobe Flash Playerを使うなどが挙げられます.場合によってはSuricataやセキュリティ製品をインストールしておくと良いかもしれません. StarCではOpenVPNを使ってゲストの通信を全てVPNに流します.これによってIPアドレスを柔軟に変更することができ,様々なアクセス制御機構の影響を受けずに観測を行うことができるでしょう. また,ホストがWindowsだと怖いことがあったりするので,そういうときはテキトーにスクリプトを書くと動きます. [https://gist.github.com/koike/999e0a0ea1a65b2101131a96d66e424a](https://gist.github.com/koike/999e0a0ea1a65b2101131a96d66e424a) これを動かすことで,以下のようなデータが得られます. ``` downloads fiddler.saz screenshot.png temp traffic.pcap url.txt ``` ## データ解析 実際に悪性Webサイトへアクセスを行い,得られたデータを解析してみます.データはマルウェア等を含んでいる可能性があるため一般に公開することはできませんが,来年には某所で入手できるはずです. さて,sazファイルを開いて余計なデータを削ぎ落とすと,以下のようになりました. ![](https://i.imgur.com/3DQriTD.png) Fiddlerで悪性トラフィックを見るときはEKFiddleをインストールしておくことをオススメします.悪性URLについて知識がなくとも,これがあれば何とかなるでしょう. [https://github.com/malwareinfosec/EKFiddle](https://github.com/malwareinfosec/EKFiddle) 1番目のトラフィックを見てみると,以下のようなコードが存在していました. ![](https://i.imgur.com/o7HpWCF.png) 単純な難読化なので,見やすくしてみると ![](https://i.imgur.com/2vfo96V.png) Google Analyticsっぽいですけど,よく見てみると自分自身にGETリクエストとPOSTリクエストを送っていることが分かります.GETリクエストを送ったときのレスポンスヘッダと,jstimezonedetectで得られたタイムゾーン情報をPOSTで送信しているようです.Fiddlerでは16番と26番がそれに当たります. POSTリクエストのレスポンスをevalしているので,レスポンスを見てみると ![](https://i.imgur.com/OaCuTxW.png) となっており,リダイレクトが行われていることが分かります.ここから2回リダイレクトが行われ,最終的にtest1.phpというファイルを読み込みます.test1.phpは以下のようになっていました. ![](https://i.imgur.com/HZoPa9o.png) こうしてRIG Exploit KitのLanding Pageがiframeで読み込まれ,攻撃が行われていることが分かります. ## 最後に 悪性トラフィックを観測するためにクライアントハニーポットを使う例を紹介しました.少しでもDrive-by Download攻撃について知って頂ければ幸いです.