5.1 Chrome Extension を用いた実装
5.1.6 Chrome Extension 実装におけるタイミング対策
通信タイミングの制御にはonBeforeRequest()を利用して通信の識別が終了す るまで戻り値を返さない手法やウェブページのリロードを使用した通信を制御する 方法を実装した。しかし、onBeforeRequest()にはタイムアウトが存在しており、
一定の時間内に処理を行って通信の当否を判断する必要があった。そのため、攻撃 検知に必要なスクリプト情報を取得するまで通信を停止することが不可能なため、
今回の実装では1度目のウェブページリクエストはmain_frameを許可し、その 他の通信に関しては全てのリクエストを拒否した。main_frameを取得後に関連す るスクリプトファイルの取得が終了するとContent Scriptsからスクリプト情報が 送信されるため、スクリプト情報を受信することを利用し、スクリプト情報を受信 した際にウェブページを再度読み込むことで、攻撃検知の判定を行う実装をした。
図5.6が情報取得のためのページ再読み込みを実装したシーケンス図となる。
Content Scripts Background Pages WebPage
Script Inject() script data
send to Script data
main_frame
beforeRequest Event Connection Accept
Save Script Data
beforeRequest Event Connection Accept
Benign Contents
beforeRequest Event Reject Connection
Malicious (Obfuscation)
Contents
DomainCheck()
DomainCheck()
DomainCheck()
Event Notification
main_frame
Page reload
beforeRequest Event Connection Accept DomainCheck()
図5.6 タイミング対応 Chrome Extension シーケンス図
5.1.7 ホワイトリストによる誤検知対策
正規のウェブサイトではGoogleやFacebook、Twitterといった外部のウェブサ イトと連携や情報取得を行っている。そのため、外部のウェブサイトへ通信が発生 した際にスクリプト情報にドメイン名が記載されていない場合が多く、誤検知を防 ぐために特定のウェブサイトに関連するドメイン名で通信が発生した際にはホワイ トリストを用いて誤検知を回避する手法を実装した。ホワイトリストを用いたこと で誤検知の数は減ったが、ホワイトリストのデータ量が増加することで処理速度が 低下するため、通信制御におけるタイムアウト問題が重要となっている。
5.1.8 攻撃検知の視覚化
攻撃を検知した際に視覚で攻撃されたことの確認を可能にするためにブラウザ上 に犬の画像が出力されるようにコードの追加を行った。図5.7は仮想環境上に作成 した悪性のウェブサイトへアクセスした際の警告画面である。悪性のウェブサイト へアクセスすることで、ウェブブラウザ上に犬の画像が挿入され、難読化されたド メイン名による通信が発生したことを知らせることが可能となる。
5.1.9 クローラの構築
本研究では誤検知評価のため、正規のウェブサイトを巡回するクローラをChrome
Extensionを用いて作成した。実装では巡回対象である URLのリストを用意し、
Chrome Extensionの処理が終了した後に次のウェブサイトへアクセスする実装を
行った。
図5.7 Chrome Extension 攻撃検知時の視覚化