Конкурс MiTM Mobile як ламали мобільний зв’язок на PHDays V

Умови та технології конкурсу
Через DarkNet ви отримали інформацію, яка може бути корисною:
1. Коди для отримання публів періодично надсилаються на номер головного бухгалтера корпорації - 10000.
Приблизно така вступна була представлена учасникам CTF у рамках конкурсу MiTM Mobile, що відбувся на PHDays V.
Отже, із зовнішніми атрибутами стільникового оператора все ясно, тепер розглянемо реалізацію мережі. Як «залізне» рішення виступав девайс з нескладною назвою UmTRX (сайт виробника: umtrx.org/hardware), на його основі будувалася бездротова частина мережі. Безпосередньо GSM-функціональність та функціональність базової станції, а саме софтверна частина, була реалізована стеком програм Osmocom/OpenBTS.

«Серце» MiTM Mobile - UmTRX

Насамперед — трохи теорії:
IMSI – International Mobile Subscriber Identity stored in SIM-card.
MSISDN— Mobile subscriber ISDN number number phone, assigned to IMSI in operator's infrastructure
TMSI — Temporary Mobile Subscriber Identity randomly asigned by the network to every mobile in the area, the moment it is switched on.

У нашому випадку з SIM-картою sysmocom 901 – код країни, 70 – код оператора, 0000005625 – ID абонента всередині мережі оператора (див. малюнок).
Друге, що потрібно пам'ятати: MSISDN, номер вашого мобільного (наприклад, +79171234567) – НЕ зберігається на SIM-карті. Він зберігається у базі оператора. Під час дзвінка базова станція підставляє цей номер згідно з таблицею відповідності IMSI MSISDN (в реальній мережі це функція MSC/VLR). Або не підставляє (анонімний дзвінок).
Озброїлисязнаннями, продовжуємо.
Відкриваємо дві консолі. У першій запускаємо команду:
/osmocom-bb-master/src/host/osmocon/osmocon -p /dev/ttyUSB0 -m c123xor -c

У другій консолі запускаємо команду:
/osmocom-bb-sylvain/src/host/layer23/src/misc/ccch_scan -a 774 -i 127.0.0.1
Ця команда реалізує layer 2-3 моделі OSI. А саме прослуховування ефіру у пошуках пакетів загального управління СССH (Common Control Channel).
-a 774 - позначає ARFCN, на якому ми говоримо. Так, нікому не потрібно шукати канал, на якому працює наш оператор. Все для вас, дорогі учасники:)
-i 127.0.0.1 - інтерфейс, на який ми надішлемо наші пакети.

І запускаємо Wireshark. Він все зробить за нас, а саме збере необхідні пакети в SMS, розпарсує TPDU/PDU-формат і покаже нам все у легкочитаному вигляді.

Бачимо SMS, які відбуваються тим часом в ефірі. Щиро вітаємо, ви виконали перше завдання! І якби зараз ви були на PHDays V, то в ефірі ви могли б побачити SMS із кодом для отримання публів. Трансляція коду відбувалася протягом двох днів постійно, кожні 5 хвилин, навіть уночі.
Длядругого завданнятакож необхідно запустити layer1 (а можна і не вимикати його після минулого разу).
У другій консолі як layer2-3 запускаємо
/osmocom-bb-master/src/host/layer23/src/mobile/mobile -i 127.0.0.1
$ telnet 127.0.0.1 4247
У консолі відкриється Cisco-подібний інтерфейс. Включаємо розширений режим:
Далі виводимо список доступних команд:
Протягом усієї конференції ми намагалися надіслати SMS на номер, якого не було у мережі. І якби учасник здогадався підставити TMSI, який запитує базова станція, як параметр команди clone, то вінотримав би наступний прапор із кодом для валюти!
OsmocomBB# clone 1 5cce0f7f
А побачити запит базової станції до абонента було дуже просто. Можна було переглянути у Wireshark пакети gsmtap із запитом Paging Requests Type 1 (запит базової станції під час здійснення дзвінка).

Або у другій консолі, де запущено mobile:

Прописуємо TMSI і приходить SMS, призначена вихідному абоненту.
OsmocomBB# call 1 2000
Тепер беремо до рук Motorola і слухаємо код. Якщо учасники все зробили правильно, вони почують код. Інакше почують анекдот :)

Крім безлічі додатків, які розголошують інформацію, якої достатньо для брутфорсу ключів, нам дбайливо виділили червоним кольором додаток, який не вимагає доступу жодних секретних ключів. Проаналізуємо його окремо:

Останні два байти відповіді SIM-картки - це байти статусу, де, наприклад, 0x9000 означає, що команда завершилася успішно. В даному випадку ми отримуємо 0x9124, що означає наявність 36 байт, які хоче нам повернути картку. Змінимо трохи код програми та подивимося, що це за дані:
Декодуємо та отримуємо:
>>> 'D0228103012100820281028D1704596F752061726520636C6F73652C2062616420434C419000'.decode('hex') 'xx0'2 x81x02x8dx17x04You are close, bad CLAx90x00'
Перебираємо всі можливі CLA та INS для інструкцій, що відправляються у бінарній SMS, і отримуємо наш прапор:

>>> 'D0378103012100820281028D2C04596F757220666C61673A2035306634323 8656237626231633132343232313633333 00'.decode('hex') '\xd07x81x03x01!x00x82x02x81x02x8d,x04 Your flag:50f428eb7bb1c1242218336d50a37b9e\x90\x00'
Ось і все щодо завдань.
Переможці та сюрпризи конкурсу.
Спробувати свої сили у конкурсі MiTM Mobile могли не тільки команди CTF, але й усі відвідувачі PHDays: охочим видавалося все необхідне обладнання та віртуальна машина. У підсумку в конкурсі брало участь понад десять осіб, за винятком команд CTF.
Однак єдиним, кому вдалося перехопити SMS вже до середини першого дня, виявивсяГліб Чербов, який і став переможцем конкурсу.
Три завдання виконала лише командаMore Smoked Leet Chickenна початок другого дня. Четверте завдання було доступне лише для учасників CTF, але виконати його не вдалося нікому.
Відвідувачі форуму могли помітити періодичне пропадання LTE, 3G, а іноді взагалі втрачалася мережа при наближенні до зони роботи GSM-глушилок, які виглядали так:

Деякі отримували повідомлення з номера 74957440144 або від «Аноніма» з текстом SMS_from_bank або інший «нешкідливий спам». Це було пов'язано з роботою мережі MiTM Mobile.
А ще до кінця другого дня деякі «везунчики» отримали таке повідомлення:


PS Для тих, хто захоче влаштувати конкурс, аналогічний нашому MiTM Mobile – трохи докладніше про компоненти мережі.
Сам UmTRX - це SDR (Software Defined Radio), тобто "просто радіо". Усі інструкції з налаштування можна знайти на umtrx.org або osmocom.org. Можна згадати і про готове «коробкове» рішення від UmTRX — UmDESK, у ньому вже все встановлено. Достатньо по керівництву заповнити конфіги - і почати мовити.
І так, PL2303, FT232 можна знайти практично скрізь. Розпаяти mini-jack 2,5 мм - легше легені.

Сімки та кабель можна замовити тут:shop.sysmocom.de
Телефони можна знайти на Авіто, у підземному переході або замовити у Китаї: ціна питання приблизно 300 руб./шт.

Хлопцям із Fairwaves (саме вони роблять UmTRX, UmDESK, UmROCKET та ін.) особлива подяка за консультації та за надане для тестування обладнання; вони роблять ВЕЛИКЕ діло! Окреме спасибі Іванові.