Добро пожаловать обратно, мои начинающие RF-хакеры!
Среди множества радиосигналов, ежедневно окружающих нас, есть и сигналы мобильных телефонов, от которых мы все так зависим. Мобильные сети используют различные технологии, включая GSM, CDMA, TDMA, 4G, LTE, 5G и многие другие.
Уже почти два десятилетия правоохранительные органы по всему миру используют IMSI-перехватчики (они же «Stingray») для прослушивания и отслеживания подозреваемых. Эти IMSI-перехватчики работают как мобильные вышки сотовой связи и анализируют трафик сотовой связи, определяют IMSI, отслеживают его географически, перехватывают и считывают метаданные/интернет-трафик, а также прослушивают голосовые разговоры.
Коммерческие устройства для перехвата IMSI известны под названием «Stingray» и другими названиями. Эти устройства должны быть доступны только правоохранительным органам, но они попали в руки и других. Многие жаловались на то, что правоохранительные органы и репрессивные правительства используют эти устройства для отслеживания и прослушивания целей, что нарушает гражданские свободы, но это не остановило их использование. Фонд Electronic Frontier Foundation назвал эти устройства «неконституционным, бесконтрольным доступом к данным».
Как правило, стоимость этих устройств у таких производителей электроники, как Harris, оценивается в 50–200 тысяч долларов. Я предполагаю, что если бы цена упала до 2000 долларов и стала доступна любому человеку с минимальными техническими знаниями, они бы быстро вышли из-под контроля. Именно в этом и заключается наша цель в этой серии статей: разработать недорогой Stingray.
Технически Stingray — это, по сути, перехватчик IMSI с использованием базовой станции сотовой связи. В нашем руководстве мы реализуем первый этап атаки «man-in-the-middle» (человек посередине) — перехват IMSI. В данном случае мы сможем перехватывать IMSI только для сотовых телефонов 2G и 3G. Это может показаться ограничением для жителей США или Западной Европы, но, согласно последним данным, около 46% современных телефонов по всему миру используют эти две устаревшие технологии. В следующих руководствах мы рассмотрим технологии 4G, LTE и 5G.
Получив IMSI, мы приступили к созданию Stingray. Следующий шаг — создание базовой станции сотовой связи. Базовые станции сотовой связи стоят непомерно дорого, но проект с открытым исходным кодом OpenBTS разработал базовую станцию менее чем за 1000 долларов.
Сети GSM и номера IMSI
GSM — стандарт, разработанный Европейским институтом стандартов в области телекоммуникаций (ETSI) и впервые внедренный в Финляндии (родине Nokia и Линуса Торвальдса) в декабре 1991 года. Он быстро стал европейским стандартом передачи данных по сотовой связи и к XXI веку достиг 90% проникновения в глобальную мобильную сеть.
Одной из уязвимостей безопасности сетей GSM является отсутствие взаимной аутентификации. GSM-телефон не аутентифицирует базовую станцию перед подключением к сети. В этом руководстве мы воспользуемся этой уязвимостью для перехвата и получения IMSI-номера телефона.
Номер IMSI — это уникальный глобальный номер, идентифицирующий пользователя. Он может содержать до 15 цифр и включает в себя:
MCC – мобильный код страны. Три знака после запятой, идентифицирует страну владельца мобильного устройства.
MNC – код мобильной сети. Два десятичных знака, идентифицирует сеть оператора.
MSIN – номер мобильного абонента. 10 знаков после запятой, идентифицирует абонента.
Номер IMSI хранится на SIM-карте мобильного телефона и идентифицирует страну, оператора и пользователя. Обладая этой информацией, человек, прослушивающий трафик, может как минимум идентифицировать и определить местоположение пользователя телефона, а также потенциально перехватывать и подделывать его трафик.
Давайте посмотрим, как можно собрать эту информацию из мобильных сетей 2G и 3G с помощью нашего RTL-SDR-ключа и нескольких программных обеспечений.
Шаг №1: Установка нового программного обеспечения в Kali
В этом руководстве мы будем использовать Kali и несколько новых программ. Начнём с gr-gsm. Gr-gsm — это набор инструментов для приёма GSM-сигналов, работающий с любым программным радиооборудованием (SDR), способным принимать GSM-сигнал.
Хотя gr-gsm доступен в репозитории Kali, я обнаружил, что сборка из исходного кода работает лучше. Чтобы установить gr-gsm, сначала установите зависимости;
kali > sudo apt-get install -y cmake autoconf libtool pkg-config build-essential python-docutils libcppunit-dev swig doxygen liblog4cpp5-dev gnuradio-dev gr-osmosdr libosmocore-dev liborc-0.4-dev swig
Затем клонируйте gr-gsm из репозитория github.
kali > sudo git clone https://git.osmocom.org/gr-gsm
Затем выполните следующие несколько шагов для создания приложения.
cd gr-gsm mkdir build cd build cmake .. make -j 4 sudo make install sudo ldconfig
Наконец, нам нужно изменить переменную среды PYTHONPATH.
kali > sudo echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages/:$PYTHONPATH' >> ~/.bashrc
Теперь вы готовы установить kalibrate-rtl из репозитория Kali.
Кали > sudo apt install kalibrate-rtl
Далее клонируем IMSI-перехватчик с github.
Шаг №2: Найдите частоты, на которых работают базовые станции
Следующий шаг — найти базовые станции в вашем районе и частоту, на которой они работают. Для этого можно использовать функцию «калибровка».
Начнем с изучения экрана справки по калибровке.
кали > кал -х
Как видите выше, kal просто нужно указать -s для сканирования, а затем технологию, например, GSM850, GSM-R, GSM900, EGSM, DCS или PCS. Кроме того, можно указать усиление с помощью опции -g. Поскольку GSM850 распространён в Северной и Южной Америке, я буду сканировать с усилением 45 дБ.
кали > sudo кал -s GSM850 -g 45
Как вы видите выше, в зоне действия находились две базовые станции на частотах 889,0 МГц и 890,0 МГц. Они попадают в диапазон приёма моего RTL-SDR-модема (24–1766 МГц).
Шаг №3: Настройте grgsm на частоту базовой станции
Теперь нам нужно настроить grgsm на частоту ближайшей базовой станции. Перейдите в папку gr-gsm и введите:
kali > grgsm_livemon -f 889.0M -g 45
Откроется графический интерфейс gr-gsm. При необходимости частоту можно настроить с помощью ползунка.
Где 889.0M — это частота, которую мы хотим «прослушивать» (обязательно замените частоту, найденную в вашем регионе, с помощью kalibrate), а -g 45 — это коэффициент усиления.
Шаг №4: Запуск IMSI Catcher
Наконец, давайте запустим перехватчик IMSI.
Перейдите в каталог IMSI-catcher, а затем запустите перехватчик с опцией -s (сканирование).
kali > cd IMSI-catcher
Кали > sudo python simple_IMSI-catcher.py -s
Поскольку я живу в отдалённом районе Скалистых гор в США, где мало кто ещё пользуется телефонами GSM 2G и 3G, мой IMSI-перехватчик не ловит ни один IMSI. Кроме того, наше оборудование — недорогой RTL-SDR — ограничено верхней границей диапазона 1766 МГц, а некоторые технологии GSM-телефонии работают за его пределами, на более высоких частотах.
С другой стороны, другой пользователь в Европе, где GSM является стандартом и по-прежнему имеется множество телефонов 2G и 3G, записал многочисленные IMSI вместе с идентификатором оператора и соты, как показано ниже.
Краткое содержание
Даже с недорогим RTL-SDR мы можем перехватывать и анализировать сотовый трафик 2G и 3G вместе с IMSI. Поскольку IMSI встроен в SD-карту, вероятность подмены IMSI без более дорогостоящего оборудования крайне мала. С другой стороны, IMSI собирают ряд мобильных приложений, и эти IMSI могут быть использованы для сопоставления с этими данными для идентификации пользователя. Конечно, правоохранительные органы могут получить повестку с требованием предоставить IMSI пользователя и идентифицировать его с помощью этих данных.
По мере продвижения по этой серии мы будем добавлять более сложное программное обеспечение и оборудование, разрабатывая недорогой Stingray для перехвата мобильных сообщений.
Среди множества радиосигналов, ежедневно окружающих нас, есть и сигналы мобильных телефонов, от которых мы все так зависим. Мобильные сети используют различные технологии, включая GSM, CDMA, TDMA, 4G, LTE, 5G и многие другие.
Уже почти два десятилетия правоохранительные органы по всему миру используют IMSI-перехватчики (они же «Stingray») для прослушивания и отслеживания подозреваемых. Эти IMSI-перехватчики работают как мобильные вышки сотовой связи и анализируют трафик сотовой связи, определяют IMSI, отслеживают его географически, перехватывают и считывают метаданные/интернет-трафик, а также прослушивают голосовые разговоры.
Коммерческие устройства для перехвата IMSI известны под названием «Stingray» и другими названиями. Эти устройства должны быть доступны только правоохранительным органам, но они попали в руки и других. Многие жаловались на то, что правоохранительные органы и репрессивные правительства используют эти устройства для отслеживания и прослушивания целей, что нарушает гражданские свободы, но это не остановило их использование. Фонд Electronic Frontier Foundation назвал эти устройства «неконституционным, бесконтрольным доступом к данным».
Как правило, стоимость этих устройств у таких производителей электроники, как Harris, оценивается в 50–200 тысяч долларов. Я предполагаю, что если бы цена упала до 2000 долларов и стала доступна любому человеку с минимальными техническими знаниями, они бы быстро вышли из-под контроля. Именно в этом и заключается наша цель в этой серии статей: разработать недорогой Stingray.
Технически Stingray — это, по сути, перехватчик IMSI с использованием базовой станции сотовой связи. В нашем руководстве мы реализуем первый этап атаки «man-in-the-middle» (человек посередине) — перехват IMSI. В данном случае мы сможем перехватывать IMSI только для сотовых телефонов 2G и 3G. Это может показаться ограничением для жителей США или Западной Европы, но, согласно последним данным, около 46% современных телефонов по всему миру используют эти две устаревшие технологии. В следующих руководствах мы рассмотрим технологии 4G, LTE и 5G.
Получив IMSI, мы приступили к созданию Stingray. Следующий шаг — создание базовой станции сотовой связи. Базовые станции сотовой связи стоят непомерно дорого, но проект с открытым исходным кодом OpenBTS разработал базовую станцию менее чем за 1000 долларов.
Сети GSM и номера IMSI
GSM — стандарт, разработанный Европейским институтом стандартов в области телекоммуникаций (ETSI) и впервые внедренный в Финляндии (родине Nokia и Линуса Торвальдса) в декабре 1991 года. Он быстро стал европейским стандартом передачи данных по сотовой связи и к XXI веку достиг 90% проникновения в глобальную мобильную сеть.
Одной из уязвимостей безопасности сетей GSM является отсутствие взаимной аутентификации. GSM-телефон не аутентифицирует базовую станцию перед подключением к сети. В этом руководстве мы воспользуемся этой уязвимостью для перехвата и получения IMSI-номера телефона.
Номер IMSI — это уникальный глобальный номер, идентифицирующий пользователя. Он может содержать до 15 цифр и включает в себя:
MCC – мобильный код страны. Три знака после запятой, идентифицирует страну владельца мобильного устройства.
MNC – код мобильной сети. Два десятичных знака, идентифицирует сеть оператора.
MSIN – номер мобильного абонента. 10 знаков после запятой, идентифицирует абонента.
Номер IMSI хранится на SIM-карте мобильного телефона и идентифицирует страну, оператора и пользователя. Обладая этой информацией, человек, прослушивающий трафик, может как минимум идентифицировать и определить местоположение пользователя телефона, а также потенциально перехватывать и подделывать его трафик.
Давайте посмотрим, как можно собрать эту информацию из мобильных сетей 2G и 3G с помощью нашего RTL-SDR-ключа и нескольких программных обеспечений.
Шаг №1: Установка нового программного обеспечения в Kali
В этом руководстве мы будем использовать Kali и несколько новых программ. Начнём с gr-gsm. Gr-gsm — это набор инструментов для приёма GSM-сигналов, работающий с любым программным радиооборудованием (SDR), способным принимать GSM-сигнал.
Хотя gr-gsm доступен в репозитории Kali, я обнаружил, что сборка из исходного кода работает лучше. Чтобы установить gr-gsm, сначала установите зависимости;
kali > sudo apt-get install -y cmake autoconf libtool pkg-config build-essential python-docutils libcppunit-dev swig doxygen liblog4cpp5-dev gnuradio-dev gr-osmosdr libosmocore-dev liborc-0.4-dev swig
Затем клонируйте gr-gsm из репозитория github.
kali > sudo git clone https://git.osmocom.org/gr-gsm
Затем выполните следующие несколько шагов для создания приложения.
cd gr-gsm mkdir build cd build cmake .. make -j 4 sudo make install sudo ldconfig
Наконец, нам нужно изменить переменную среды PYTHONPATH.
kali > sudo echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages/:$PYTHONPATH' >> ~/.bashrc
Теперь вы готовы установить kalibrate-rtl из репозитория Kali.
Кали > sudo apt install kalibrate-rtl
Далее клонируем IMSI-перехватчик с github.
Шаг №2: Найдите частоты, на которых работают базовые станции
Следующий шаг — найти базовые станции в вашем районе и частоту, на которой они работают. Для этого можно использовать функцию «калибровка».
Начнем с изучения экрана справки по калибровке.
кали > кал -х
Как видите выше, kal просто нужно указать -s для сканирования, а затем технологию, например, GSM850, GSM-R, GSM900, EGSM, DCS или PCS. Кроме того, можно указать усиление с помощью опции -g. Поскольку GSM850 распространён в Северной и Южной Америке, я буду сканировать с усилением 45 дБ.
кали > sudo кал -s GSM850 -g 45
Как вы видите выше, в зоне действия находились две базовые станции на частотах 889,0 МГц и 890,0 МГц. Они попадают в диапазон приёма моего RTL-SDR-модема (24–1766 МГц).
Шаг №3: Настройте grgsm на частоту базовой станции
Теперь нам нужно настроить grgsm на частоту ближайшей базовой станции. Перейдите в папку gr-gsm и введите:
kali > grgsm_livemon -f 889.0M -g 45
Откроется графический интерфейс gr-gsm. При необходимости частоту можно настроить с помощью ползунка.
Где 889.0M — это частота, которую мы хотим «прослушивать» (обязательно замените частоту, найденную в вашем регионе, с помощью kalibrate), а -g 45 — это коэффициент усиления.
Шаг №4: Запуск IMSI Catcher
Наконец, давайте запустим перехватчик IMSI.
Перейдите в каталог IMSI-catcher, а затем запустите перехватчик с опцией -s (сканирование).
kali > cd IMSI-catcher
Кали > sudo python simple_IMSI-catcher.py -s
Поскольку я живу в отдалённом районе Скалистых гор в США, где мало кто ещё пользуется телефонами GSM 2G и 3G, мой IMSI-перехватчик не ловит ни один IMSI. Кроме того, наше оборудование — недорогой RTL-SDR — ограничено верхней границей диапазона 1766 МГц, а некоторые технологии GSM-телефонии работают за его пределами, на более высоких частотах.
С другой стороны, другой пользователь в Европе, где GSM является стандартом и по-прежнему имеется множество телефонов 2G и 3G, записал многочисленные IMSI вместе с идентификатором оператора и соты, как показано ниже.
Краткое содержание
Даже с недорогим RTL-SDR мы можем перехватывать и анализировать сотовый трафик 2G и 3G вместе с IMSI. Поскольку IMSI встроен в SD-карту, вероятность подмены IMSI без более дорогостоящего оборудования крайне мала. С другой стороны, IMSI собирают ряд мобильных приложений, и эти IMSI могут быть использованы для сопоставления с этими данными для идентификации пользователя. Конечно, правоохранительные органы могут получить повестку с требованием предоставить IMSI пользователя и идентифицировать его с помощью этих данных.
По мере продвижения по этой серии мы будем добавлять более сложное программное обеспечение и оборудование, разрабатывая недорогой Stingray для перехвата мобильных сообщений.