Edited at
ozvisionDay 22

野良wifiの危険性を検証するため、実際に通信を傍受してみる!


野良wifiが気になったきっかけ

たまに外でスマホ使ってる時に見たい動画とかあったとき、みなさんどうしますか?

通信量の上限が数GBに制限されている昨今、普通に見ちゃうとすぐに上限に達しちゃいますよね。


通信量を節約するために、お店が提供しているwifiとかにつなぐこともあると思いますが、危ないっていう噂も聞きます。

いったいどんな危険性があるのか、実際に検証してみました。


作戦

今回、自分は攻撃者になったつもりで、隣の席に座ってるエンジニアのNくんに対して攻撃を仕掛けます。

Nくんのスマホの通信を傍受して、どんなサイトみたりしてるのかとかを覗き見していきます。



攻撃手法

MITM(Man In The Middle attack)「中間者攻撃」というものを使います。


クライアント(PCやスマホ)と通信先のサーバ(各種サイト)の間に入って、通信している内容を読み取る攻撃です。


環境準備

今回は検証なので、野良wifiを設置する部分は省略して、社内のwifiを使います。

通信を傍受するMacとスマホは同じwifiに接続されている状態です。

スマホ側のプロキシ設定を手動で変更して、自分のMacでスマホからの通信を傍受してみますが、

実際に悪意を持った人のwifiに接続した場合は、その時点で傍受されることになります。


Mac(Win)の設定


通信傍受用ソフト(mitmproxy)の導入・起動


  1. 以下のサイトからダウンロード

    https://github.com/mitmproxy/mitmproxy/releases

    ※2017/12/22現在の最新版はmitmproxy-2.0.2-osx.tar.gzでした。


  2. 展開して、「mitmweb」をダブルクリックして実行

    ※ダウンロードしたアプリケーションの実行許可の設定によっては起動できないですので、

    「システム環境設定」の「セキュリティとプライバシー」から実行を許可してください。


  3. MacのIPアドレスの確認

    ターミナルを起動して、ifconfigします(Winの場合はipconfig)。

    192.168.aaa.bbbでした(後で使うのでメモしといてください)。



スマホの設定

隣の席のNくんのスマホをちょっと拝借して、傍受するための設定をします。

私 「ちょっとNくんのiPhoneの機種でテストしたいから、使わせてもらっていい?」

Nくん「おおー、OKっす!ありがとうございます!テストおつかれさまです!」

簡単にゲット出来ました!

スマホの実機を手にしているので、この時点でもはや何でもできる気もしますが、

気を取り直して通信を傍受する設定を入れていきましょう。


  1. 通信がMacを通るようにする

    iPhoneの「設定」アプリを起動

    → Wi-Fi をタップ

     → 接続中のWi-Fiの右側にある i をタップ

      → 「プロキシを構成」をタップ

       → 手動をタップし以下の通り設定する

         サーバ:メモしたMacのIPアドレス

         ポート:8080

          認証:オフ

        → 保存をタップ



  2. ニセのCA証明書をインストール

    
ブラウザで http://mitm.it/ にアクセスする。

    → iPhoneの場合はリンゴマークをクリックして、証明書をインストール。

     → インストールの後、設定 → 一般 → 情報 → 証明書信頼設定 に mitmproxy が追加されているのでオンにします。



 

これで、通信を傍受する環境が整いました!

実際には、通信しているスマホを操作して上記のような設定が出来るわけではないですが、

野良wifiに接続した時点で、このような設定がされてしまうと考えてください。


通信を傍受する

スマホをNくんに返します。

私 「ありがとう、確認終わったから返すわ!」

Nくん「いえいえ大丈夫です〜、僕も今からテストするので助かります〜」

今からテストをするようです。

ちょうどいいので、通信を見守ってみます。

お、ヤフーに通信してますね。技術的な調査するための検索をするのかと思います。

でもまずは、ヤフーニュースですね。ヤフーニュースで日本の情勢を確認してからテスト作業に着手するようです。

みんなやってる、日本人として当たり前の行為だと思います。

あれ、このURLを実際見てみると、芸能・スポーツを中心に確認していますね。

これはさすがに必要ない気もしますが・・・

ああー、いや、これはおそらく、今後のプロモーションについての研究ですね。とても熱心です。

技術面だけではなく、企画面での意識も高い、エンジニアの理想像のような存在です。

・・・なかなかテストを始めないですね。

ちょっと直接聞いてみます。

私 「テストどう?」

Nくん「あー、順調っす!」

ヤフーニュースのテストをしてるということですかね?

自社のサービスだけでなく他社のサービスのテストまで行うとは、意識が高い・・・

(※ネタです。協力してくれたNくん感謝。)


通信を傍受してできること

今回は、どこに通信しているかを見ているだけですが、実際のツール上は、

通信の中でやり取りされているデータが全て見えています。

例えば検索した文字列とか、入力された住所氏名とか、cookieのデータも全部見えます。

cookieからセッション情報を持ってくれば、Nくんになりすまして各種サービスを使うことも可能です。

IDとかパスワードを知らなくても、ログインした状態でサービスを使えたりします。


学び

よく、知らないwifiにはつないじゃダメとか聞きますが、

実際通信を傍受された時に何が起きるのかはよくわかっておらず、

動画見たいし、どうせ大した情報取られないでしょ、みたいに思ってしらないwifiにつなぐこともありました。

今回実際に通信を傍受してみてわかったのは、

通信を盗聴されるというのは、自分がネット上に持っている全ての情報にアクセスされるのと同義だと言うことです。

海外などで知らないwifiに繋いだら、しばらくして各種アカウントが乗っ取られた、って話も聞きますが、こういう手法なんだと思われます。

本当に信頼できるところ以外は繋がない!っていうのが一番でしょうね。

ただ、今回紹介したやり方、実はアプリ開発などを行う際の通信の内容を確認するのにめっちゃ便利なんです。

道具は使い方次第、ということを学びました!

ということで、みなさん気をつけましょう!