Знакомство с OsmocomBB. Часть 1: Введение
OsmocomBB — это проект, целью которого является свободная (Open Source) имплементация стека протоколов GSM. OsmocomBB предоставляет исходный код прошивок для совместимых телефонов, а также программное обеспечение для их взаимодействия с компьютером. В этом цикле статей я постараюсь описать наиболее интересные возможности, тонкости и ошибки, которые могут возникнуть при работе с данным ПО. Заинтересованных приглашаю под кат! Не смотря на то, что сегодня лидером рынка мобильных операционных сетей является открытая и свободная система Android, драйвера для взаимодействия с DSP являются пропиетарными. Вместо того, чтобы говорить, чем это хорошо или плохо, расскажу, какие возможности открываются при использовании свободного программного обеспечения в данной области: Образование GSM является открытым стандартом, разрабатываемым сообществом ETSI, однако лишь немногие, кроме разработчиков оборудования сотовой связи, детально понимают принципы взаимодействия телефона и сотовой сети. Разработка и внедрение програмного обеспечения, работающего на стороне сотового телефона, требует знания материала, который довольно трудно найти в книгах или описании стандарта. Одной из таких тем является реализация синхронизации телефона и базовой станции методом TDMA (Time Division Multiple Access). Еще одной «проблемной» темой является оптимизация потребления энергии в целях экономии заряда батареи. Исследования Любые исследования в области сотовой связи, особенно исследования безопасности, требуют как теоретических знаний, так и свободной, достаточно документированной реализации базового стека протоколов. Вполне возможно, что производители оборудования сотовой связи никак не заинтересованы в каких-либо исследованиях, которые в добавок могут негативно повлиять на их позицию на рынке. Поэтому, они делают все возможное, чтобы скрыть подробности работы их оборудования от любопытных исследователей. Опираясь на знания протоколов GSM и свободно доступное ПО, все больше и больше людей могут проводить исследования, которые не требуют тесных связей с индустрией сотовой связи. Безопасность и конфиденциальность Большинство людей имеют представление о возможных угрозах при подключении к сети Интернет и используют антивирусные программы, брандмауэры и файерволы для защиты своих компьютеров. Но что насчет мобильных телефонов? Почти постоянно, Ваш телефон, DSP модуль которого управляется каким-нибудь ПО с закрытым исходным кодом, подключен к общедоступной беспроводной GSM сети, создаваемой ближайшей базовой станцией. Любое достаточно сложное ПО может содержать ошибки, либо специально оставленные бэкдоры, которыми может воспользоваться кто-угодно. В отличие и закрытого ПО, свободное предоставляет более высокий уровень безопасности, так как исходный код доступен для чтения любому заинтересованному в этом человеку. На помощь приходит проект OsmocomBB.Сообщество OsmocomСообщество Osmocom занимается разработкой сразу нескольких Open Source проектов, таких как: OpenBSC — реализация стека протоколов и элементов стандартов GSM/3GPP, с помощью которой можно организовать свою сотовую сеть; OsmocomDECT — свободная реализация стека протоколов стандарта DECT, на базе которого работает большинство стационарных беспроводных телефонов; SIMTrace — оборудование и программное обеспечение для пассивного мониторинга трафика между SIM-картой и телефоном; OsmoSDR — дешевый SDR-приемник, способный принимать сигналы GSM, TETRA, GMR-1 и аналогичные. Также сообщество занимается исследованием безопасности беспроводных сетей. Подробную информацию можно найти на их сайте: osmocom.org. К сожалению, информация на сайте плохо структурирована, а местами вообще на стадии TODO. Очень много информации о проекте и полезных вещей можно узнать, если посмотреть их выступления на различных конференциях.Проект OsmocomBB Сразу после завершения работы над основной частью проекта OpenBSC в 2010 году, возникла необходимость в реализации клиентской части протоколов стандарта GSM. Разработчики выбрали чипсет Calypso, благодаря доступности его спецификаций. Проект был неоднократно представлен на нескольких конференциях, где докладчиков сопровождали бурными аплодисментами.Проект разрабатывается на базе системы контроля версий Git и состоит нескольких веток, в которых делается упор на определенные возможности.Итак, по порядку, что понадобится для запуска OsmocomBB?
Совместимый телефон на базе чипсета Calypso или MediaTek Список поддерживаемых моделей можно найти тут. Основной упор делается на Motorola C123/C121/C118 (E88) и Motorola C155 (E99), поэтому рекомендуется приобретать именно их. Также поддерживаются Open Source телефоны Neo 1973 (GTA01) и Neo Freerunner (GTA02). Подробнее о том, где приобрести совместимый телефон и как убедиться, что это именно то, что нужно, я расскажу во второй части. Замена фильтров и антена (опционально) Если Вы планируете использовать телефон в качестве пассивного сниффера GSM трафика или хотите запустить небольшую базовую станцию на его основе, Вам придется заказать дополнительные детали и проявить мастерство аккуратной пайки. Дело в том, что входящий трафик (downlink), не предназначенный для данного телефона, отбрасывается специальными фильтрами. Для того, чтобы это обойти, требуется небольшое хирургическое вмешательство, которое описано тут: Filter Replacement. Однако, данные действия требуют ответственности и понимания происходящего со стороны читателя, так как вещание на частотах GSM требует лицензии, а нарушение конфиденциальности трафика абонентов преследуется законодательством Российский Федерации. :(Подробнее об этом так же постараюсь рассказать в следующих частях данного цикла. Кабель и преобразователь USB-TTL Связь телефона с компьютером осуществляется посредством последовательного порта и USB-TTL преобразователя. В совместимых телефонах Motorola для этих целей используется порт гарнитуры стандарта 2.5 mm jack. Тут у Вас два варианта: либо заказать уже готовый кабель на сайте sysmocom.de (10–15 евро) или где-ниубдь еще, либо сделать самому, потратившись только на джек, провода и преобразователь (около 200 рублей с aliexpress). Подробнее о том, как спаять кабель, о тонкостях выбора конвертора и граблях, на которые можно наступить, расскажу во второй части. Компьютер под управлением Unix-like ОС Предполагается, что читатель хотя бы на базовом уровне знаком с Unix-подобными операционными системами. Процесс сборки исходников будет описан на примере дистрибутива Ubuntu Linux 14.04 LTS. Также желательно наличие стабильного канала доступа к сети Интернет. Терпение, скилл, умение искать информацию в Интернете Есть большая вероятность того, что во время сборки исходников или при соединении телефона у вас возникнут ошибки. Это нормальное явление. Следует внимательно вчитываться в сообщения об ошибках, и чаще пользоваться поиском: возможно, у кого-нибудь уже возникали такие проблемы. Также очень пригодится знание английского языка на базовом уровне. В каждой из следующих частей я опишу возможные ошибки и способы их устранения. Что можно сделать с помощью OsmocomBB? Сниффинг GSM трафика Пакеты, передаваемые в эфире GSM сетей, можно захватывать, анализировать (например, с помощью Wireshark), и даже расшифровывать. Телефон будет передавать весь захватываемый трафик на ваш компьютер. Перед Вами один из самых дешевых снифферов GSM, позволяющий выполнять исследования и тестирование безопасности. Запуск небольшой базовой станции Если Вы когда либо слышали об SDR-девайсах, типа USRP, то Вы наверняка слышали и об их цене. OsmocomBB совместимый телефон с перепаянными фильтрами является дешевой альтернативой, позволяющей запустить свою сотовую сеть в пределах комнаты. RSSI (Индикация уровня принимаемого сигнала) Есть возможность мониторить уровень сигнала на разных каналах сотовой сети. Для этого используется специальная одноименная прошивка. Стресс-тестинг беспроводного оборудования (EMI) Звучит внушительно. Специальная прошивка EMI позволяет генерировать программно определяемые помехи в целях тестирования стабильности различного беспроводного оборудования, вроде усилителей и раций. подробнее об этом написано тут. SIM Reader Используя специальные библиотеки, Вы можете взаимодействовать с SIM-картой через все тот-же телефон. Как известно, SIM-карта — это довольно сложное устройство, которое может содержать изъяны в плане безопасности. Существует даже проект по тестированию безопасности сим-карт SIMtester. Запуск небольшой операционной системы NutteX Сообществу Osmocom удалось портировать RTOS систему Nuttx для запуска на совместимых с OsmocomBB телефонах. В одной из следующих статей я расскажу об этом подробнее. Звонки и SMS-ки Не смотря на перечисленный выше список возможностей, телефон остается телефоном, и под управлением программы mobile из пакета OsmocomBB может совершать/принимать голосовые вызовы, принимать и отправлять SMS-сообщения и выполнять DTMF команды. Что посмотреть, почитать? Во первых, основы стандарта GSM, а именно процесс разделения доступа между абонентами, инфраструктура сотовой сети, стандарты шифрования… В общем, чем больше, тем лучше. :)Заварив кастрюльку чая и кружечку пельменей, можно посмотреть интересные выступления разработчиков проекта:
Заключение В качестве заключения, предоставляю примерный план того, что будет в следующих частях данного цикла:0×02 Выбор и подготовка оборудования 0×03 Сборка програмного обеспечения 0×04 RSSI, звонки и SMS 0×05 Замена фильтров, запуск OpenBTS на телефоне 0×06 Сниффинг и расшифровка GSM-трафика 0×07 Запуск RTOS NutteX P.S. Очень интересны мнения читателей, пожелания и замечания.