Bài viết cập nhật mới nhất theo link sau
Hệ thống thông tin di động toàn cầu (GSM – Global System for Mobile communications) là một trong những mạng viễn thông phổ biến nhất trên thế giới, hệ thống mạng này là một sự kết hợp của các tiêu chuẩn mạng khác nhau như 2G (GSM), 3G (Universal Mobile Telecommunications Service-UMTS) và 4G (Long Term Evolution-LTE) cho phép người dùng có thể truy xuất trên toàn cầu. GSM có những đặc tích hỗ trợ chuyển vùng (roaming) hoặc kết nối liên mạng (interconnection) với bất kỳ mạng GSM khác trên thế giới cho phép thực hiện các cuộc gọi, nhắn tin mà không bị giới hạn nhà mạng của mỗi quốc gia.
Tiêu chí bảo mật sử dụng trong hệ thống GSM là một vấn đề được nhiều người dùng đặt ra trước các nguy cơ tấn công vào luồng dữ liệu vô tuyến được phát mọi nơi trong đời sống hàng ngày. Trong bài viết, T17Lab thực hiện tổng hợp và thực nghiệm các điểm yếu tồn tại trong tiêu chuẩn mạng GSM tại Việt Nam, thiết bị được sử dụng trong bài viết là phần cứng RTL-SDR (hỗ trợ thu tần số 24 – 1766 MHz)
1. Hệ thống mạng GSM – mô hình và chức năng
GSM được biết đến như một hệ thống sử dụng mô hình mạng tế bào (cellular) phân chia tần số và khu vực phát sóng nhằm tái sử dụng tần số trên các khu vực khác nhau, trong phần này tôi sẽ tiến hành sơ lược các thành phần trong hệ thống mạng GSM và phương thức kết nối liên mạng của hệ thống này. Mô hình kết nối hệ thống mạng GSM bao gồm ba phân hệ cho phép người dùng kết nối và truyền tải dữ liệu. Mobile Station (MS) cũng được xem là một thành phần phụ (subsytem) của mô hình, tuy nhiên cũng có thể xem đây là một thành phần của BSS. Các phân hệ trong mô hình bao gồm:
- Base Station Subsystem (BSS)
- Network and Switching Subsystem (NSS)
- Operation Support Subsystem (OSS)
a) Base Station Subsystem (BSS) – Phân hệ trạm gốc
BSS bao gồm hai thành phần
- Bộ điều khiển trạm gốc BSC (Base Station Center).
- Trạm thu phát gốc BTS (Base Transceiver Station).
Phân hệ trạm gốc BSS cung cấp kết nối vô tuyến giữa trạm thu phát sóng và thiết bị di động, các thực nghiệm bảo mật trong phần sau sẽ tập trung vào phần MS (thiết bị di động) và BSS thu nhận tín hiệu vô tuyến giữa MS – BTS, BTS – BTS. Hệ thống MS bao gồm thiết bị di động và thiết bị SIM giúp định danh nhà mạng, số điện thoại. Trạm BTS thực hiện nhiệm vụ thu/phát sóng tương tác với thiết bị di động, ngoài ra nó còn thực hiện các nhiệm vụ điều chế tín hiệu, điều chỉnh công suất phát, coding/decoding dữ liệu âm thanh và mã hóa tín hiệu. Thành phần điều khiển BSC chịu trách nhiệm quản lý các trạm BTS, kênh phát vô tuyến, nhảy tần số phát và các chức năng điều khiển khác
b) Network and Switching Subsystem (NSS) – Phân hệ chuyển mạch
Thành phần mạng và chuyển mạch (NSS) còn được gọi là hệ thống mạng lõi (core network) chịu trách nhiệm định tuyến liên mạng phục vụ các cuộc gọi và dữ liệu trên nhiều nhà mạng khác nhau. MSC là thành phần chính trong hệ thống NSS, nó đóng vai trò điều khiển các hệ thống BSC khác, đồng thời định tuyến các cuộc gọi vào/ra, phục vụ các chức năng như đăng ký nhà mạng, xác định vùng của thiết bị di động. Thành phần HRL (bộ định vị thường trú) là một cơ sở dữ liệu lưu trữ các thông tin thuê bao như vùng địa lý, phân quyền dịch vụ, mã mạng, số điện thoại,…
VLR là cơ sở dữ liệu lớn thứ hai trong mạng, lưu trữ tạm thời số liệu thuê bao đang nằm trong vùng phục vụ của MSC tương ứng và lưu trữ số liệu về vị trí thuê bao. Khi MS vào một vùng định vị mới, nó phải thực hiện thủ tục đăng ký. MSC quản lý vùng này sẽ tiếp nhận đăng ký của MS và truyền số nhận dạng vùng định vị LAI, nơi có mặt thuê bao với VLR. Một VLR có thể phụ trách một hoặc nhiều vùng MSC.
c) Operation Support Subsystem (OSS) – Hệ thống khai thác và hỗ trợ
OSS thực hiện các chức năng khai thác, bảo dưỡng và quản lý toàn hệ thống. OSS bao gồm AuC (trung tâm xác thực) và EIR (bộ nhận dạng thiết bị). Trong đó, AuC chứa thông tin đăng ký và mã xác thực của toàn bộ SIM thuê bao trên hệ thống nhà mạng; trong đó bao gồm IMSI (International Mobile Subscriber Identity) và một mã khóa được gắn liền vĩnh viễn với SIM là mã Ki.
EIR chứa một hoặc nhiều CSDL lưu trữ các số nhận dạng thiết bị (IMEI) sử dụng trong hệ thống GSM. EIR được nối với MSC qua một đường báo hiệu, EIR có chức năng kiểm tra tính hợp lệ của thiết bị di động (ME – Mobile Equipment) thông qua số liệu nhận dạng di động quốc tế (IMEI – International Mobile Equipment Identity) và chứa các số liệu về phấn cứng của thiết bị. ME thuộc một trong ba danh sách sau:
– Danh sách trắng: tức nó được quyền truy nhập và sử dụng các dịch vụ đã đăng ký.
– Danh sách xám: tức là có nghi vấn và cần kiểm tra.
– Danh sách đen: tức là bị cấm hoặc bị lỗi không cho phép truy nhập vào mạng.
2. Triển khai thực nghiệm
Công cụ thực hiện
- kalibrate-rtl hoặc kalibrate-hackrf: công cụ quét dãy tần số GSM, xác định trạm BTS trong khu vực có tín hiệu mạnh
- gr-gsm: công cụ thu và xử lý tín hiệu GSM
- Wireshark: công cụ thu nhận dữ liệu mạng từ gr-gsm xử lý
- gqrx: công cụ thu tín hiệu từ SDR
- Phần cứng SDR: rtl-sdr hoặc các thiết bị có thể thu tần số 900MHz
Video: Nghe lén dữ liệu GSM 900 sử dụng RTL-SDR
Bước 1: Quét trạm BTS sử dụng kalibrate
kalibrate là công cụ hỗ trợ mặc định trên hệ điều hành Kali Linux, người dùng có thể cài đặt nhanh chóng trên hệ điều hành Ubuntu với nhiều phiên bản hỗ trợ các phần cứng như rtl-sdr, HackRF, USRP. Trong bài viết này, tôi cài đặt kalibrate-rtl hỗ trợ phần cứng rtl-sdr trên hệ điều hành Ubuntu.
# git clone https://github.com/steve-m/kalibrate-rtl
# cd kalibrate-rtl
# ./bootstrap
# ./configure
# make
# sudo make install
Tôi tiến hành thực hiện xác định các dãy tần số khả dụng từ các trạm BTS trong vùng xung quanh như hình dưới:
Để kiểm tra hoạt động của các kênh tần số, người dùng còn có thể sử dụng gqrx để theo dõi những vùng phát sóng mạnh thông qua FFT plot và waterfall. Tuy nhiên bước thực hiện này có thể bỏ qua vì không ảnh hưởng đến kết quả thu thập tín hiệu dữ liệu GSM900.
Bước 2: Thu tín hiệu GSM sử dụng Gr-GSM Livemon & Wireshark
Để bắt đầu thu tín hiệu GSM, người dùng cần cài đặt gr-gsm trên hệ điều hành Ubuntu để thực hiện thu và giải mã tín hiệu. Các lệnh cài đặt được cung cấp tại trang hướng dẫn của tác giả.
CẬP NHẬT: Hướng dẫn cài đặt grgsm trên Ubuntu 18
# sudo apt-get update
# sudo apt-get install git python-pip
# sudo pip install PyBOMBS
# sudo pybombs prefix init /usr/local -a default_prx
# sudo pybombs config default_prefix default_prx
# sudo pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
# sudo pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git
# sudo pybombs install gr-gsm
# sudo ldconfig
Mặc định sau khi cài đặt thành công gr-gsm, người dùng có thể chạy trực tiếp các lệnh grgsm*, tuy nhiên Gr-GSM cung cấp sơ đồ khối GNU Radio tại thư mục apps/grgsm_livemon.grc. Nếu bạn muốn xem sơ đồ này có thể thực hiện lệnh:
# gnuradio-companion airprobe_rtlsdr.grc
Giao diện Gr-GSM Livemon cho phép người dùng điều chỉnh tần số nhằm xác định kênh dữ liệu có tín hiệu mạnh và giải mã các kênh tần số đó, đồng thời Wireshark sẽ thực hiện thu nhận các gói dữ liệu từ gr-gsm tại cổng mạng Loopback (127.0.01).
# grgsm_livemon
# sudo wireshark -k -f udp -Y gsmtap -i lo
Các dữ liệu thu được tại Wireshark chứa thông tin của trạm BTS với tần số quét tương ứng, trong các ảnh dưới là thông tin của ba nhà mạng Viettel, Vinaphone và Mobifone.
3. Các nhóm dữ liệu trong GSM
Trong luồng dữ liệu GSM bao gồm ba nhóm dữ liệu:
- System Information Message
- Paging Request Message
- Immediate Assignment Message
System Information Message
Type 1: Loại kênh truyền = BCCH (Broadcast Control CHannel): Chứa thông tin danh mục các số định danh kênh truyền ARFCN (Absolute Radio Frequency Channel Number) của cell và các thông số điều khiển RACH (Random Access Channel).
Type 2: Loại kênh truyền = BCCH: lưu trữ các thông tin của các ô mạng cạnh bên bao gồm danh mục ARFCN và dãy tần số BCCH.
Type 3: Loại kênh truyền = BCCH: lưu trữ thông tin định danh của ô mạng (cell ID), Location Area Indentity – LAI (trong phần này bao gồm ba thông tin định danh Mobile Country Code (MCC), Mobile Network Code (MNC)
and Location Area Code (LAC)) và một số thông tin về mạng GPRS.
Type 4: Loại kênh truyền = BCCH: lưu trữ thông tin LAI (MCC+MNC+LAC), các thông số Cell Selection Paramters và thông số điều khiển RACH, các thông tin GPRS cũng bao gồm trong gói tin này.
Type 2ter: Loại kênh truyền = BCCH: lưu trữ thông tin của ô mạng cạnh bên và danh mục tần số mở rộng BCCH.
Type 2quater: Loại kênh truyền = BCCH: đây là các thông tin trên mạng 3G, tuy nhiên trong phần bài viết này sẽ không đề cập đến hệ thống mạng này.
Type 13: Loại kênh truyền = BCCH: chứa các thông tin quan trọng về hệ thống GPRS như các thông số công suất phát, các tùy chọn GPRS, …
Paging Request Message
Type 1: Channel type = CCCH
Lưu thông tin: Mobile Identity 1 number (IMSI)
Page Mode = normal paging (P1)
Channel Needed.
Lưu thông tin: Mobile Identity 1 and 2 = TMSI/P-TMSI
Page Mode = normal paging (0)
Channel Needed
Type 2: Channel type = CCCH
Lưu thông tin: Mobile Identity 1, 2 = TMSI/P-TMSI or IMSI
Mobile Identity 3
Page Mode = normal paging (0)
Channel Needed
Type 3: Channel type = CCCH
Lưu thông tin: Mobile Identity 1, 2, 3 và 4 = TMSI/P-TMSI
(Not decoded)
Page Mode = normal paging (0)
Channel Needed
Immediate Assignment Message
Channel type = CCCH
Lưu thông tin: Time Advance Value
Packet Channel Description (Time Slot)
Page Mode = Extended Paging (1)