恐怖のHTML5 ApplicationCache Poisoning

(HTML5 ApplicationCache Poisoning of horror)

自己紹介 (Self­Introduction)


(ApplicationCachePoisoning is a hot topic these days.)

ApplicationCache Poisoningが話題になっている様子

(Signs that ApplicationCache Poisoning has become the center of attention.)

前提知識 (Background Knowledge)

Introduction

これまでMitMは「安全なネットワークへ移動すれば攻撃は終わる」と言われていました。

(MitM was said "Attacks will finish, if we move to safety network." until now.)

しかしMitM時にApplicationCache等の強力なキャッシュが汚染されることでその前提も崩れてしまいました。

(However, the premise has collapsed due to powerful cache of ApplicationCache being polluted at the time of MitM.)

それでも現状、「ApplicationCache Poisoningの被害は汚染サイトの継続的な監視」というのが一般的な認識です。

(The general recognition is that "The damage of ApplicationCache Poisoning enforces victims to continuous monitoring of the pollution site.")

今日はApplicationCache Poisoningを使った新しい攻撃方法をいくつか紹介したいと思います。

(Today, I will introduce some new attack methods, using ApplicationCache Poisoning.)

突破型ApplicationCache Poisoning

(Breaking type ApplicationCache Poisoning)

攻撃方法

(Methods of Attack)

MitMでLocal IPを汚染することで、ネットワーク機器を攻撃する。

(Attack the network devices by poisoning local IP with MitM.)

ターゲット

(Target)

スマホのネイティブアプリ広告領域(主にAdMob)

(Ad­area of navive application in smartphone (mainly AdMob))

汚染シナリオ

(Poisoning scenario)

汚染シナリオ (Poisoning scenario)

  1. MitMで通信を監視する
    (Monitor the network by MitM.)
  2. 広告用JSの通信を発見したらJSを汚染する
    (Pollute the JS, when the traffic of JS for ad was detected.)

汚染シナリオ (Poisoning scenario)

  1. 汚染したJS上からLocal IPを開く
    (Open the local IP on polluted JS.)
  2. Local IPのリクエストをMitM Proxyで受け取る
    (Receive the request for the local IP by MitM Proxy.)

汚染シナリオ (Poisoning scenario)

  1. MitM ProxyからApplicationCache Poisoningされたhtmlを返す
    (Reply the html which was infected by ApplicationCache Poisoning from MitM Proxy.)

攻撃シナリオ

(Attack scenario)

攻撃シナリオ (Attack scenario)

  1. 広告用WebViewが広告用JSを読み込む
    (A WebView for ad reads the JS for ad.)
  2. 広告用JSからLocal IPを開く
    (Open the local IP on the JS for ad.)

攻撃シナリオ (Attack scenario)

  1. ApplicationCache Poisoningされたhtmlを読み込む
    (Read the html which was infected by ApplicationCache Poisoning.)
  2. 汚染されたhtmlからLocal IP上へXHRでBasic認証をパスワードリストアタック
    (Attack with password list for the local IP Basic authentication by XHR from polluted html.)

攻撃シナリオ (Attack scenario)

  1. 成功したら結果を外部へ送信
    (Send the result to outside, when the attack succeed.)
  2. 結果を解析して攻撃コードを更新
    (Analyse the result, and update the attack code.)

実証

PoC(Proof of Concept)

実証 PoC(Proof of Concept)

実証 PoC(Proof of Concept)

実証 PoC(Proof of Concept)

実証 PoC(Proof of Concept)

実証 PoC(Proof of Concept)

追尾型ApplicationCache Poisoning

(Tracking ApplicationCache Poisoning)

攻撃方法

(Methods of Attack)

MitMでLocal IPを汚染することで、ネットワーク機器を攻撃する。

(Attack the network devices by poisoning local IP with MITM.)

ターゲット

(Target)

管理者権限を持つユーザのPCブラウザ

(Web browsers on user PC with administrative privilege.)

汚染シナリオ

(Poisoning scenario)

汚染シナリオ (Poisoning scenario)

  1. MitMで通信を監視する
    (Monitor the network by MitM.)
  2. 全てのhtml、JSにLocal IPを開くJSを混ぜる
    (Inject the JS, that open the local IP, into all html and JS.)

汚染シナリオ (Poisoning scenario)

  1. 汚染したhtml、JSからLocal IPを開く
    (Open the local IP on the polluted JS.)
  2. Local IPのリクエストをMitM Proxyで受け取る
    (Receive the request for the local IP by MitM Proxy.)

汚染シナリオ (Poisoning scenario)

  1. MitM ProxyからApplicationCache Poisoningされたhtmlを返す
    (Reply the html which was infected by ApplicationCache Poisoning from MitM Proxy.)

攻撃シナリオ

(Attack scenario)

攻撃シナリオ (Attack scenario)

  1. ユーザがLocal IP上の管理画面にアクセスする
    (A user accesses the administrative screen on the local IP.)
  2. 攻撃コードがbasic認証ダイアログ、または認証画面を表示する
    (The attack code displays basic authentication dialog or authentication screen.)

攻撃シナリオ (Attack scenario)

  1. ユーザが認証情報を入力しログインする
    (A user enter the credential, and log in.)
  2. 攻撃コードが通信を中継しつつ設定を書き換える
    (The attack code relays the traffics and falsify the settings.)

実証

PoC(Proof of Concept)

実証 PoC(Proof of Concept)

実証 PoC(Proof of Concept)

コードの焼き付け

(Inject codes)

攻撃方法

(Methods of Attack)

httpサーバに侵入後、レスポンスに永続的ApplicationCacheを加えることで、サーバ復旧後も過去にアクセスしたクライアントを攻撃し続ける。

(After intrusion to the http server, it continues to attack the client, that has been accessed in the past, by adding persistent ApplicationCache to response after the server recovery.)

ターゲット

(Target)

過去にサーバに侵入された状態でアクセスしたことがあるクライアント。

(Clients in intrusion state that has been accessed in the past)

汚染シナリオ

(Poisoning scenario)

汚染シナリオ (Poisoning scenario)

  1. httpサーバに侵入する
    (Intrude to http server)
  2. 全てのhtmlレスポンスに永続的ApplicationCacheを加える
    (Inject Permanent ApplicationCache to all html response)

汚染シナリオ (Poisoning scenario)

  1. 永続的ApplicationCacheで汚染コードをキャッシュさせる
    (Cache Poisoned code by Permanent ApplicationCache)

攻撃シナリオ

(Attack scenario)

攻撃シナリオ (Attack scenario)

  1. ユーザが汚染されたページにアクセスするのを待つ
    (Wait for users who access to poisoned page)
  2. 攻撃コードを空のhtmlとJSで起動
    (Run the Attack code with blank html and JS)

攻撃シナリオ (Attack scenario)

  1. 攻撃コードがlocation.href+'?utm_source=fb'にXHRして最新の情報を取得
    (Get the latest information with the attack code accessing to "location.href+'?utm_source=fb'" by XHR)
  2. 取得した内容を展開しつつ画面遷移系イベントを捕捉
    (Trap the screen transition event while extracts the acquired contents.)

攻撃シナリオ (Attack scenario)

  1. 攻撃コードで画面遷移を偽装しつつ毎回最新情報を取得して展開
    (Get the latest information every time and extract it while screen transition spoofed by attack code)

実証

PoC(Proof of Concept)

実証 PoC(Proof of Concept)

実証 PoC(Proof of Concept)

対処法

(Coping Technique)

クライアント

(Client)

クライアント (Client)

クライアント (Client)

サーバ

(Server)

サーバ (Server)

広告SDKベンダー

(Advertisement SDK vendors)

広告SDKベンダー (Advertisement SDK vendors)

Local IPで運用される機器のメーカ

(Manufacturer of devices which are operated with Local IP)

Local IPで運用される機器のメーカ (Manufacturer of devices which are operated with Local IP)

Local IPで運用される機器のメーカ Manufacturer of devices which are operated with Local IP

FAQ

FAQ

FAQ

FAQ

FAQ

FAQ

FAQ

FAQ

FAQ

検証コードはgithub上で公開しています

(PoC code is published on github.)

kyo-ago/MitMPoC

ご質問は?

(Any Question?)

ご静聴ありがとうございました。

(Thank you for your attention.)