dastapov: (Default)
[personal profile] dastapov
Сегодня по пути на работу я посмотрел доклад Karsten Nohl и Sylvain Munaut с 27-го Chaos Communication Congress, также известного как 27C3 (да, я в курсе, что он был чуть ли не год тому назад, но мне было не до грибов :). Видео можно найти тут по словам "wideband GSM sniffing".


Далее - заметки, сделанные в процессе просмотра.

После доклада авторов 26C3 (про который я писал тут) они связывали с операторами, и операторы, помимо прочего говорили - "уязвимости в криптографии - это одно, а вот поди перехвати и запиши все" (я, собственно, писал о том же самом). Тогда, напомню, они собирались показать перехват на практике, но что-то не срослось. Демонстрацию пришлось отложить на год, до 27C3.

Авторы обещают, что, имея только номер телефона, можно узнать местоположение абонента, а затем прослушивать его разговоры. Забегая наперед скажу, что тут есть некоторое художественное преувеличение :)

Для обнаружения местоположения они используют интернет-сервисы, которые дают возможность вбрасывать в сеть SS7 запросы "send routing info". Напомню, что SS7 - это сеть/стек протоколов, которые используются для общения телефонных операторов (GSM и "наземных") друг с другом и для общения компонент сети GSM друг с другом. Тут пока все ОК, сервисы такие натурально есть.

Далее авторы делают интересный финт ушами. Они говорят: а вот в Германии, например, полученное в результате запроса "волшебное число" хорошо коррелирует с area code/zip code. Поэтому мы можем послать такой запрос и понять с точностью до города или даже части города, где в Германии находится этот абонент. Перефразируя классику, надо заметить, что то, что немцу хорошо - русскому смерть :) То есть, никто не обязывает оператора делать именно так, и с Германией им крупно повезло.

Ладно, едем дальше. Они узнали город. Что потом? Потом они берут сниффер (про него отдельно), едут в этот город и начинают "посещать" все его LAC-и (т.е. группы сот, в рамках которых происходит поиск телефона). Приехав на территорию, которая входит в какой-то LAC, они посылают жертве SMS и слушают, идет ли paging телефона жертвы (это происходит по незашифрованному каналу, во всех базовых сразу). Если "клюет" - то они получают сведения о TMSI (temporary IMSI), который был выдан абоненту. Если "не клюет" - едут проверять следующий LAC.

UPD: Совсем забыл рассказать! Поскольку IMSI при пейджинге не передается (и они его не знают), а передается только TMSI (который они и хотят узнать), то производится timing attack. Они посылают несколько SMS-ов с паузами между ними, и смотрят, для каких TMSI производится paging, повторяя процедуру до тех пор, пока в списке "подозрительных" TMSI не останется только один (или ни одного).

Чтобы жертва их "не спалила", SMS посылается не простой, а такой, который не будет показан абоненту (это или специально сделанный flash sms, или кривой-битый SMS, который телефон "прожует и выплюнет", а пользователю не покажет)

Выяснив LAC, они начинают посещать все соты этого LAC, посылать SMS-ы и слушать, отзывается ли кто-то на paging. Если да, то жертва кэмпится вот в этой соте, и можно начинать 1)ломать ее сессионный ключ (Kc) и 2)слушать ее разговоры.

Но для начала поговорим про то, как же записывать происходящее в эфире. Тут было сказано несколько интересных вещей:
1)Существуют делаемые на заказ FPGA-платы, которые способны одновременно писать все каналы либо uplink, либо downlink частот GSM, но стоит такое железо 40-50К, и простому исследователю безопасности недоступно (смех в зале). Карстен упоминает, что не видел готовых устройств, которые используют такое железо, но ведь если его делают - то значит это кому-то же нужно?
2)можно брать менее мощное и более дешевое железо служать часть частот на каждом из них. Можно вписаться в 3.5К EUR с решением на базе USRP2.
3)А можно сначала сломать сессионный ключ, и потом декодировать траффик "на лету" и следовать за frequency hopping-ов при помощи четырех телефонов, в которых вместо родной прошивки - OsmocomBB. Ключевая тема номер один - OsmocomBB допилили до пригодного к использованию состояния как раз за год, прошедший с 26C3 до 27C3, так что я все свои ранние комментарии считаю справедливыми - на тот момент действительно не было практического работающего решения.

Как же они ломают сессионный ключ? Находясь в одной соте с жертвой, они посылают ей SMS, записывают общение жертвы с базовой, и ломают ключ, пользуясь тем, что во время session setup ходит много пакетов полу-пустых или с предсказуемым содержимым. Для ускорения взлома используются rainbow tables. Ключевая тема номер два - на момент 26C3 rainbow tables были не такие модные, и взлом делался отнюдь не за минуты и даже не за десятки минут (авторы, ЕМНИП, упоминают час). То есть, до 27C3 даже у Карстена (основного двигателя прогресса в этой области) не было решения, которое позволяло взломать Kc за приемлемое время (в течении которого, скорее всего, не произойдет rekeying).

Дальше они пользуются тем, что редко кто делает rekeying после каждого звонка или SMS, и сессионный ключ, который они узнали, не будет меняться в течении какого-то времени. Теперь, зная ключ, они могут декодировать зашифрованный траффик к/от жертвы в режиме реального времени, и делать frequency hopping одновременно с жертвой. Для захвата эфира в этом случае реально достаточно четырех перепрошитых телефонов, так как не требуется писать все частоты и даже все таймслоты.

Далее все это было продемонстрировано вживую. Условия, опять же, были слегка тепличные - "жертва" сидела на месте, обслуживалась одной сотой.

Вот теперь я верю, что Карстен Нол действительно может сделать достаточно дешевое/"наколенное" решение для перехвата GSM-разговоров :) (Надо бы пройтись по старым постам, и сделать ссылку сюда).

Традиционно, не обойдется без "но":
1)Эта технология не существует в виде, доступном script kiddies. Есть даже не конструктор, а заготовки для деталей конструктора, которые надо обтачивать и подгонять по месту. В демонстрации неоднократно говорят: "вот это мы еще не зарелизили, и когда зарелизим - непонятно". Т.е. на основании этих наработок китайцы не клепают тысячами устройства за 100 баксов, которые "берут и слушают".
2)OsmocomBB поддерживает только одно семейство чипов. Я не знаю, насколько редки телефоны на этом чипе - похоже, не очень. Но когда-то они кончатся, и придется ждать нового Sylvain Munaut, который расхачит какую-то другую прошивку :)
3)Определение местоположения по запросам к HLR и перебору LAC - это способ, работающий скорее в теории, чем на практике. На практике вы или знаете, где находится жертва физически, или у вас баааальшие проблемы с тем, чтобы попасть в ту же соту, в которой сидит жертва.
3а)Если вы не можете послушать ту же соту, в которой кэмпится жертва - способ не работает.
4)Если жертва перемещается между сотами (кэмпится в разных сотах) - у вас опять проблемы, вам надо быть в той же самой соте
5)Этот способ не подходит для перехвата GPRS
6)Если в сети регулярно происходит rekeying или меняются TMSI (справедливости ради, непохоже, чтобы кто-то всерьез этим занимался), то это способ не работает вообще.
7)Если жертва параноидальна, она может "спалить" процесс ее "нащупывания" и ломания Kc.
8)Слушать кого ни попадя не получится - надо знать номер телефона

С момента окончания 27C3 прошел почти год, и можно бы проверить, зарелизили ли таки весь софт, необходимый для повторения этого эксперимента в домашних условиях кем-то, кто не разбирается в устройстве радиоинтерфейса GSM, но у меня руки не дошли. Никто из читателей не любопытствовал?

Ну, и, как правильно замечают авторы, забороть этот конкретный способ достаточно легко:
1)Вместо константного байта использовать для паддинга пустых GSM-сообщений случайные значения
2)Менять Kc после каждого звонка
3)Менять TMSI как можно чаще

Пунты 2 и 3 должны, по идее, реализовываться простой переконфигурацией элементов сети (не требуют апгрейда прошивок или железа). Было бы желание

На очереди - видео с 28C3 :)
From:
Anonymous
OpenID
Identity URL: 
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

dastapov: (Default)
Dmitry Astapov

April 2017

M T W T F S S
     12
3 45 6789
10111213141516
17181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags