[CODE BLUE 2018] 4G基地局からのスマートフォンのファジング ソジェン・リウ [レポート] #codeblue_jp
こんにちは、臼田です。
『世界トップクラスのセキュリティ専門家による日本発の情報セキュリティ国際会議』でありますCODE BLUE 2018に参加していますのでレポートします。
このブログは下記セッションについてのレポートです。
4G基地局からのスマートフォンのファジング ソジェン・リウ
ファジングは脆弱性を見つける効果的な方法である。HTTPサーバーやSSL/TLS、FTPサーバー、DNSサーバーなど既知のレイヤー7プロトコルに対するファジングツールがすでに多数存在する。
これからのIoTの世界では、Wi-Fi、Bluetooth、ZigBee、Z-Waveやセルラーネットワーク(2G/3G/4G)などより多くの無線伝送技術がIoTデバイスのために利用される。ワイヤレス伝送技術に対してもファジングが可能で、ツールも少ないながら、特にセルラーネットワークに対してのファジングツールが稀有だが存在している。セルラーネットワークに対してのファジングでもっとも難しいことは、ファザーを適合させることではなく、セルラーネットワーク環境を構築することである。 我々の講演では、限られた予算で4G LTE環境を構築する方法を紹介する。ネットワークの構築後、我々は4G LTE基地局を書き換え、不正な形式のLTEメッセージをファジングのためにスマートフォンに送信する。
ファジングの結果、特定のQualcomm CPUに影響を与え、スマートフォンが正常に動作しなくなる可能性のある脆弱性が発見された。
レポート
- オンワードセキュリティでは2012年から200以上のコネクテッドデバイスを検査している
- Protocol Fuzz Testingを行っている
- HTTP, SSL/TLS, FTP, SSH, DNS...等々
- それぞれ適切な動作をするか細かく確認する
- 上手く動かなければ脆弱性を疑う
- プロトコルファジングに必用なもの
- 環境作成
- HTTPサーバやBluetoothデバイスなど、デバイスに合わせて用意
- パケットキャプチャ
- 独自仕様のプロトコルであれば特に重要
- RFC等と突き合わせる
- Fuzzing patternの作成
- Mutation-based
- 知っているナレッジをベースに実施する
- Generation-based
- データモデルを定義して実行する
- HTTPのファジングパターン例
- Hostの後ろに
\xFF
を入れる - Content-Lengthを
999,999,999,999
にする- ルータにはこれをベースにメモリを確保するものもある
- この変更でルータが止まったりする
- Hostの後ろに
- Mutation-based
- Send
- ターゲットに対して送る
- Pythonスクリプトを書いてsocket通信する
- もしくはbashで送る
- Monitor
- ターゲットの挙動を確認する
- Remote
- 様々なプラットフォーム
- ping, SNMP, syslog, ssh custom等で確認
- Local
- Windowsなど、ローカルでモニタリングすることが多い
- プロセス、サービス、イベント、ログ、エージェント等で確認
- Analyze
- 間違いがあった場合、クラッシュした場合などに原因を分析
- 保護が甘い、過剰な保護などがある
- Exploit
- エクスプロイトする
- 環境作成
- LTEのファジングには3つの課題がある
- 環境
- RF環境の構築は難しい
- WiFiやBluetoothはOSSの利用が可能でデバイスもAmazonで購入できる
- Generate
- LTEはセルラーのネットワークで情報が限定的
- Monitor
- LTEは複雑でどの機能がどのチャネルで利用できるかも見なければ行けない
- 環境
- 解決方法
- LTEの環境を持っていないことはあまり問題ではない
- LTEのネットワークを実際に構築した
- UE(User Equipment)
- eNode B
- EPC(Evolved Packet Core)
- これらの機能を利用できる機器は1500万円くらいかかる
- 流石にファジングで利用するには最適ではない
- 基地局をこれで作るのは現実的ではない
- DIYしよう
- UE
- hard
- LTE電話
- Blank SIM
- Card Reader
- soft
- pyscard, pysim
- QXDM
- phone driver
- hard
- eNode
- hard
- USRP B201
- Omni antenna
- soft
- Open Air interface
- hard
- EPC
- soft
- EPC VM Image
- soft
- 高いものでも$300程度で全体的にかなり安い
- UE
- LTEのアーキテクチャを分析していく
- LTEは様々なチャネルがある
- BCCH
- CCCH
- DCCH
- 等々
- QXDMは一部のチャネルのみ利用可能
- ファジングデータの生成
- eNBとMMEに対して行う
- 殆どの機能がこれらの中にあるため
- オープンソースの中身のソースを読み、書き換えてファジングしたいデータを生成
- ファジング
- SIMのデータを書き換え
- ICCID
- MCC/MNC
- IMSI
- Ki
- OPC
- QXDMでモニター
- USRP B210
- USBにOSを載せておく
- eNodeとVMでEPC
- UEはQualcommのもの
- QXDM Logでどのようなやり取りを行っているか確認できる
- SIMのデータを書き換え
- ファジング結果
07 54
が先頭にあるリクエストに問題がありそう- これは認証リクエスト
- 携帯がEmergency call onlyとなり正常に利用できなくなる
- デモ
- スマホを自分たちの基地局に接続
- ファジングデータを送る
- 認証リクエストを送る
- Emergency call onlyになる
- 再起動しないと正常に利用できない状態になった
- LTEは様々なチャネルがある
- Attackingシナリオ
- Real LTE基地局のエリアで偽装したLTE基地局を立てる
- 出力が高い場合、つながってくるデバイスもある
- 偽装した基地局から
07 54
を送ってデバイスを使えないようにする
- Qualcommにこの内容を連絡した
- 最初は脆弱性ではない、研究が必用であるというレスポンス
- しばらくしたら、新しいプロセッサでは解決していると言った
- しかしながら、すべてのメーカがパッチを適用しているわけではない
- Root Cause Analysis
- 3GPPではintegrity checkedをしなければならないとしていた
- これがされていなかった
- integrity checkedされていない場合にはパケットを破棄する必要がある
感想
LTEは他のネットワークと違ってファジングは大変だと思いますが、ソフトウェア等でかなり現実的になることにびっくりしました。
LETネットワークは普段はセルラーがしっかり守っているものだと思いますが、この領域のセキュリティも気にしていきたいですね。