
オープンソースのLTEダウンリンク/アップリンク盗聴ツール
LTESnifferは、オープンソースのLTEダウンリンク/アップリンク盗聴ツールです。
まず、物理ダウンリンク制御チャネル(PDCCH)を復号し、すべてのアクティブユーザーのダウンリンク制御情報(DCI)と無線ネットワーク一時識別子(RNTI)を取得します。復号したDCIとRNTIを使用して、LTESnifferはさらに物理ダウンリンク共有チャネル(PDSCH)と物理アップリンク共有チャネル(PUSCH)を復号し、アップリンクおよびダウンリンクのデータトラフィックを取得します。
LTESnifferは、セキュリティアプリケーションや研究のための3つの機能を持つAPIをサポートしています。多くのLTEセキュリティ研究では、プライバシー関連のパケットをエア上でキャプチャできるパッシブスニファを想定しています。しかし、現在のオープンソーススニファのいずれも、PDSCHおよびPUSCH内のプロトコルパケットを復号できないため、その要件を満たしていません。私たちは、以前の研究で提案された3つのタスクをサポートする概念実証用セキュリティAPIを開発しました:1) アイデンティティマッピング、2) IMSI収集、3) 能力プロファイリング。
詳細については、論文を参照してください。
LTESnifferは、セルタワーとそれに接続されたスマートフォン間で送信されるLTE無線メッセージをキャプチャできるツールです。LTESnifferは、タワーからスマートフォンへの方向と、スマートフォンからセルタワーへの戻りの両方向のメッセージのキャプチャをサポートしています。
LTESnifferは、セルタワーとスマートフォン間の暗号化されたメッセージを復号できません。セルタワーとスマートフォン間の通信の暗号化されていない部分を分析するために使用できます。例えば、暗号化されたメッセージの場合でも、MAC層や物理層のヘッダーなど、暗号化されていない部分をユーザーが分析できます。ただし、平文で送信されるメッセージは完全に分析可能です。例えば、セルタワーが送信するブロードキャストメッセージや、接続の開始時点のメッセージは完全に可視です。
LTESnifferの主な目的は、セルラーネットワークに関するセキュリティおよび分析研究をサポートすることです。アップリンク・ダウンリンクのユーザーデータを収集する性質上、LTESnifferの使用はすべて、LTEトラフィックのスニッフィングに関する現地の規制に従う必要があります。ユーザーのプライバシー関連情報を意図的に収集するなど、違法な目的については一切責任を負いません。
LTESniffer-record-subframeブランチとそのREADMEを参照してください。LTESniffer-multi-usrpブランチとそのREADMEを参照してください。LTESnifferは、FALCONをベースにsrsRANライブラリを利用して実装されています。LTESnifferがサポートする機能:
現在、LTESnifferはUbuntu 18.04/20.04/22.04上で安定して動作します。
LTEトラフィックのリアルタイム復号を実現するには、複数の物理コアを備えた高性能CPUが必要です。特に、基地局に多くのアクティブユーザーがいるピーク時間帯には重要です。LTESnifferはIntel i7-9700K PCに展開した場合、150のアクティブユーザーがいる基地局からのトラフィックをリアルタイムで復号することに成功しました。
以下のハードウェアを推奨します
LTESnifferは、アップリンクおよびダウンリンクのスニッフィングモードで異なるSDRを必要とします。
基地局からのダウンリンクトラフィックのみをスニッフィングする場合、LTESnifferはsrsRANライブラリでサポートされているほとんどのSDR(例:USRPやBladeRF)と互換性があります。 SDRはUSB 3.0ポートを介してPCに接続する必要があります。また、送信モード3および4でダウンリンクメッセージを復号するには、2つのRXアンテナを備えている必要があります。 SDRにRXアンテナが1つしかない場合、LTESnifferは送信モード1でのみダウンリンクメッセージを復号します。GPSDOはダウンリンクスニッフィングではオプションです。同期の改善に役立ちますが、必須ではありません。
一方、スマートフォンから基地局へのアップリンクトラフィックをスニッフィングする場合、LTESnifferは2つの異なる周波数(アップリンクとダウンリンク)を同時に受信する必要があります。この問題を解決するために、LTESnifferは2つのオプションをサポートしています:
mainブランチを参照してください。LTESniffer-multi-usrpブランチとそのREADMEを参照してください。重要:予期しないエラーを避けるため、以下の手順はUbuntu 18.04/20.04/22.04上で実行してください。
依存関係
UHDの依存関係:
sudo apt update
sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool \
g++ git inetutils-tools libboost-all-dev libncurses5 libncurses5-dev libusb-1.0-0 libusb-1.0-0-dev \
libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools \
python3-ruamel.yaml
ソースからUHDをクローンしてビルド(現在のブランチが4.0以上であることを確認):
git clone https://github.com/EttusResearch/uhd.git
cd <uhd-repo-path>/host
mkdir build
cd build
cmake ../
make -j 4
make test
sudo make install
sudo ldconfig
USRP用のファームウェアをダウンロード:
sudo uhd_images_downloader
USRP X310をPCに接続するために10Gbカードを使用します。UHDマニュアル[1]、[2]を参照して、USRP X310と10Gbカードインターフェースを設定してください。USRP B210の場合は、USB 3.0ポートを介してPCに接続する必要があります。
接続とファームウェアのテスト(USRP X310のみ):
sudo sysctl -w net.core.rmem_max=33554432
sudo sysctl -w net.core.wmem_max=33554432
sudo ifconfig <10Gbカードインターフェース> mtu 9000
sudo uhd_usrp_probe
sudo apt-get install build-essential git cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
sudo apt-get install libglib2.0-dev libudev-dev libcurl4-gnutls-dev libboost-all-dev qtdeclarative5-dev libqt5charts5-dev
ソースからLTESnifferをビルド:
git clone https://github.com/SysSec-KAIST/LTESniffer.git
cd LTESniffer
mkdir build
cd build
cmake ../
make -j 4(4スレッドを使用)
LTESnifferには3つの主要機能があります:
ソースからビルドした後、LTESnifferは<build-dir>/src/LTESnifferにあります。
商用ネットワークでLTESnifferを使用する前に、倫理的配慮で説明したように、LTEトラフィックのスニッフィングに関する現地の規制を確認する必要があります。
テスト用スマートフォンが接続している基地局とアップリンク・ダウンリンクバンドを調べるには、テスト用スマートフォンにCellular-Zアプリをインストールします(Androidのみ対応)。接続先のセルIDとアップリンク・ダウンリンクのバンド/周波数が表示されます。LTESnifferが同じセルと周波数に接続していることを確認してください。
sudo ./<build-dir>/src/LTESniffer -A 2 -W <スレッド数> -f <DL周波数> -C -m 0
例:sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -C -m 0
-A:アンテナ数
-W:スレッド数
-f:ダウンリンク周波数
-C:セルサーチをオン
-m:スニファモード、0はダウンリンクスニッフィング、1はアップリンクスニッフィング
注意:ダウンリンクモードでUSRP B210でLTESnifferを実行するには、コマンドラインにオプション-a "num_recv_frames=512"を追加します。
このオプションはUSRP B210の受信バッファを拡張し、より良い同期を実現します。
sudo ./<build-dir>/src/LTESniffer -A 2 -W <スレッド数> -f <DL周波数> -C -m 0 -a "num_recv_frames=512"
例:sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -C -m 0 -a "num_recv_frames=512"
注意:アップリンクスニッフィングモードでは、UEからのアップリンク信号電力は基地局からのダウンリンク信号よりも大幅に弱いため、テスト用スマートフォンはスニファの近くに配置する必要があります。
sudo ./<build-dir>/src/LTESniffer -A 2 -W <スレッド数> -f <DL周波数> -u <UL周波数> -C -m 1
例:sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -C -m 1
-u:アップリンク周波数
sudo ./<build-dir>/src/LTESniffer -A 2 -W <スレッド数> -f <DL周波数> -u <UL周波数> -C -m 1 -z 3
例:sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -C -m 1 -z 3
-z:3はスニファの3つの機能(アイデンティティマッピング、IMSI収集、UECapabilityプロファイリング)を有効化。
2はUECapabilityプロファイリング
1はIMSI収集
0はアイデンティティマッピング
LTESnifferは、オプション-I <物理セルID (PCI)> -p <物理リソースブロック数 (PRB)>を使用して、特定の基地局をスニッフィングできます。この場合、LTESnifferはセルサーチを行わず、指定されたセルに直接接続します。
sudo ./<build-dir>/src/LTESniffer -A 2 -W <スレッド数> -f <DL周波数> -I <PCI> -p <PRB> -m 0
sudo ./<build-dir>/src/LTESniffer -A 2 -W <スレッド数> -f <DL周波数> -u <UL周波数> -I <PCI> -p <PRB> -m 1
例:sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -I 379 -p 100 -m 1
デバッグモードはオプション-dで有効にできます。この場合、デバッグメッセージが端末に出力されます。
LTESnifferは出力としてpcapファイルを提供します。pcapファイルはWireSharkで開いて、さらなる分析やパケットトレースが可能です。
ダウンリンクpcapファイル名:sniffer_dl_mode.pcap、アップリンクpcapファイル名:sniffer_ul_mode.pcap、API pcapファイル名:api_collector.pcap。
pcapファイルはLTESnifferを実行したディレクトリと同じ場所にあります。
WireSharkで復号されたパケットを正しく解析できるようにするには、こちらのWireShark設定ガイドを参照してください。リンク先にはpcapファイルの例もあります。
注意: アップリンクpcapファイルには、アップリンクとダウンリンクの両方のメッセージが含まれています。WireSharkでアップリンクメッセージのみを監視するには、フィルタmac-lte.direction == 0を使用します。ダウンリンクメッセージのみを監視するには、フィルタmac-lte.direction == 1を使用します。
アップリンクスニッフィングの有効範囲は、ハードウェア(SDR)のRFフロントエンドの能力に制限されます。UEからのアップリンク信号電力は、UEがバッテリー消費を最適化するハンドヘルドデバイスであるのに対し、eNBは広いエリアをカバーするために十分な電力を使用するため、ダウンリンク信号よりも大幅に弱くなります。アップリンクトラフィックを正常にキャプチャするには、LTESnifferはi) UEに物理的に近づく、またはii) 指向性アンテナ、専用RFフロントエンド、信号増幅器などの専用ハードウェアで信号受信能力を向上させることにより、信号電力を強化できます。
ダウンリンクスニッフィングモード
Processed 1000/1000 subframes:過去1秒間にLTESnifferが処理したサブフレーム数。設計上、1秒間に1000のLTEサブフレームがあります。
RNTI:UEの無線ネットワーク一時識別子。
Table:ダウンリンクでスマートフォンが使用する最大変調方式。LTESnifferはダウンリンクで最大256QAMをサポートしています。詳細は論文を参照してください。
Active:検出されたRNTIメッセージの数。
Success:検出されたメッセージ数(Active)に対する正常に復号されたメッセージの数。
New TX, ReTX, HARQ, Normal:新規メッセージと再送メッセージの統計。この機能は開発中です。
W_MIMO, W_pinfor, Other:無線設定が誤っているメッセージの数。デバッグ専用です。
アップリンクスニッフィングモード
Max Mod:アップリンクでスマートフォンが使用する最大変調方式。スマートフォンのサポートとネットワークの設定に応じて、16/64/256QAMになります。詳細は論文を参照してください。
SNR:信号対雑音比(dB)。SNRが低いと、スマートフォンからのアップリンク信号品質が悪いことを意味します。考えられる理由の1つは、スマートフォンがスニファから遠いことです。
DL-UL_delay:基地局からのダウンリンク信号とスマートフォンからのアップリンク信号の間の平均時間遅延。
Other Info:デバッグ専用の情報です。
APIモード
Detected Identity:検出されたアイデンティティの名前。
Value:検出されたアイデンティティの値。
From Message:検出されたアイデンティティを含むメッセージの名前。
FALCONとSRSチームが素晴らしいソフトウェアを公開してくれたことに心から感謝します。
バグを修正し、LTESnifferを改善するのに協力してくださったすべてのコントリビューターに特別な感謝を捧げます
詳細については論文を参照してください。
@inproceedings{hoang:ltesniffer,
title = {{LTESniffer: An Open-source LTE Downlink/Uplink Eavesdropper}},
author = {Hoang, Dinh Tuan and Park, CheolJun and Son, Mincheol and Oh, Taekkyung and Bae, Sangwook and Ahn, Junho and Oh, BeomSeok and Kim, Yongdae},
booktitle = {16th ACM Conference on Security and Privacy in Wireless and Mobile Networks (WiSec '23)},
year = {2023}
}
Q: LTESnifferを実行するためにUSRPと一緒にGPSDOを使用する必要がありますか?
A: GPSDOはより安定した同期に役立ちます。ただし、ダウンリンクスニッフィングモードでは、LTESnifferはGPSDOなしでもLTE信号と同期してパケットを復号できます。アップリンクスニッフィングモードでは、GPSDOは2台のUSRP Bシリーズを使用する場合にのみ必要です。これは、アップリンクチャネルとダウンリンクチャネル間の同期のための時間およびクロックリファレンスソースとして機能するためです。もう1つのアップリンクSDRオプションである単一のUSRP X310を使用する場合、GPSDOは必要ありません。
Q: ダウンリンクトラフィックに、より安価なSDRを使用できますか?
A: 技術的には、Blade RFなどsrsRANライブラリでサポートされている任意のSDRを、ダウンリンクスニッフィングモードでLTESnifferを実行するために使用できます。ただし、LTESnifferのダウンリンクスニッフィング機能はUSRP B210およびX310でのみテストしました。
Q: LTESnifferを使用してLTEトラフィックをスニッフィングすることは違法ですか?
A: (暗号化されていない)LTEトラフィックのスニッフィングに関する現地の規制を確認する必要があります。LTESnifferをテストする別の方法として、ファラデーケージ内でオープンソースのLTE実装であるsrsRANを使用して個人用LTEネットワークを構築する方法があります。
Q: LTESnifferを使用して、2人のユーザー間のメッセージの内容を見ることはできますか?
A: メッセージの「暗号化されていない」部分のみを見ることができます。基地局とユーザー間のエアトラフィックはほとんどが暗号化されていることに注意してください。
Q: LTEネットワークで平文で公開されているデバイスアイデンティティはありますか?
A: はい、研究文献によると、TMSI、GUTI、IMSI、RNTIなど、複数のアイデンティティが公開されています。詳細については、学術文献を参照してください。例:Watching the Watchers: Practical Video Identification Attack in LTE Networks