З розвитком мобільних мереж розвивається і мобільний інтернет. Всі звикли до звичайного інтернету: кручена пара, Ethernet, TCP / IP. А що ж приховує в собі інтернет мобільний? Спробуємо з'ясувати! У нашому дослідженні ми торкнемося загальних принципів роботи мобільного інтернету, розглянемо ближче GPRS Tunneling Protocol, поговоримо про GRX- мережі і обговоримо деякі практичні підходи до безпеки мобільного пакетної мережі.
Як кожен з нас підключається до мобільного інтернету? В принципі, необхідно знати тільки три параметри. APN, логін і пароль. APN - це точка доступу, через яку абонент може підключитися до необхідної йому послуги (WAP, MMS, Internet); у наших операторів вона зазвичай виглядає як internet.
Тепер, коли ми знаємо необхідні параметри, ми можемо підключатися до мобільного інтернету! Як же відбувається ця загадкова процедура? Відбувається вона в два етапи:
- GPRS Attach,
- PDP Context Activation.
Розглянемо докладніше кожен з них.
- IMSI (International Mobile Subscriber Identity, індивідуальний номер абонента) - для ідентифікації абонента;
- ключі. що зберігає ся на SIM- карті - для аутентифікації абонента;
- перевірка доступних абоненту сервісів (Internet, MMS, WAP) за попереднім записом в базі абонентів.
Може також перевірятися IMEI (International Mobile Equipment Identity - міжнародний ідентифікатор мобільного обладнання). Цей ідентифікатор може використовуватися для перевірки за списками краденого обладнання, і якщо конкретний IMEI знаходиться в списку вкрадених, то в доступі до мережі може бути відмовлено, або навіть повідомлено «куди слід» :)
Після успішного завершення процедури GPRS Attach починається процедура PDP (Packet Data Protocol) Context Activation. Щоб розібратися в цій процедурі, відвернемося і визначимо деякі поняття.
SGSN (Serving GPRS Support Node, вузол обслуговування абонентів GPRS) - пристрій, що реалізує основні функції обробки пакетних даних в мобільній мережі.
GGSN (GPRS Gateway Service Node, шлюзовий вузол GPRS) - пристрій, що забезпечує передачу даних з мережі оператора в зовнішні мережі (наприклад, в інтернет). По суті може бути звичайним маршрутизатором з підтримкою деяких специфічних функцій.
GTP (GPRS Tunneling Protocol) - стек протоколів, який використовується в GPRS-, UMTS- і LTE-мереж.
Отже, PDP Context Activation (схема сильно спрощена).
Що ж відбувається при реалізації цієї схеми?
Негайно виникає питання: як же це все працює в роумінгу? Виявляється, що існує спеціальна система: GRX (Global Roaming Exchange) - мережу для обміну пакетними даними роумінгових абонентів мобільних мереж. Через неї і «бігає» весь наш трафік. Приблизно ось так:
Що ж ми бачимо? Бачимо ми. що пакети з нашим улюбленим серіалом біжать через півсвіту від нашого оператора до оператора в теплій країні. Біжать вони за спеціальною мережі, загорнуті в протокол GTP. І все переговори між спец залізяччям операторів ведуться за тим же GTP.
І тут приходить ідея: а чи не спробувати нам збагнути щось подібне в лабораторних умовах? Побудувати свої SGSN і GGSN. А ну як прийдемо до неймовірних відкриттів?
SGSN + GGSN на коліні
Після тривалих пошуків з'ясувалося наступне.
Існує ПО спеціального призначення, що реалізує деякі функції SGSN. Виглядає воно як скрипт під Linux, який здатний емулювати всі необхідні процедури (GPRS Attach і PDP Context Activation) і видати в результаті готовий інтерфейс для виходу в інтернет, як ніби-то ми встромили 3G- модем. Дізнавшись про це, ми негайно кинулися шукати пристрій, готове взяти на свої плечі функції GGSN. Виявилося, що популярний маршрутизатор Cisco 7200 цілком підходить.
Після недовгих маніпуляцій, налаштувань і тестів нас чекав успіх.
Стенд легко піднімав тунелі, через які був «видно» справжнісінький інтернет.
Ми тут же взялися дивитися, які ж пакети ходять між нашими могутніми SGSN і GGSN. Чи схожі вони на справжні. Із завмиранням серця відкриваємо дамп - і таки да. пакети як справжні.
Аналогічні пакети можуть ходити в GRX- мережі, і їх цілком може підслухати злісний хакер. Що ж він там побачить? Спробуємо дізнатися.
Протокол GTP буває декількох типів: GTP-U використовується для безпосередньої упаковки і передачі призначених для користувача даних, GTP-C для управління сесіями (саме з його допомогою здійснюється процедура PDP Context Activation та інші службові процедури); існує ще GTP '(GTP Prime) - він використовується для передачі білінгової інформації. GTP не підтримує аутентифікацію бенкетів та шифрування. працює поверх UDP. Що у всьому цьому цікавого? Цікаво тут практично все!
Візьмемо GTP-U і подивимося, як виглядає тунель з одними даними. Тунелі розділені параметром TEID (Tunnel Endpoint Identificator).
При подальшому вивченні з'ясувалося, що при бажанні поле з TEID можна підмінити, а відправивши пакет з підміненим ідентифікатором тунелю можна несподівано для себе вломитися в чужу сесію.
А ось GTP-C. З подивом виявивши відсутність будь-якої аутентифікації або натяків на шифрування даних, що передаються, можна спробувати не тільки послухати, а й, вибачте, що-небудь послати. Наприклад «ліві» запити на встановлення або розрив сесії.
Спробуємо таким чином намітити вектори можливих атак і розглянемо їх ближче.
Або зловмисник почне відправляти власноруч сформовані запити на створення PDP- контексту. GGSN, побачивши такий натиск, цілком може і задуматися, а то і зовсім зависнути. Що знову ж приведе до відмови в обслуговуванні абонентів.
А що, якщо спробувати замість запитів на створення відправляти запити на розрив сесії? Наприклад, ось так:
Накидавши кілька векторів, звернемо свій погляд на реальні об'єкти. щоб все це «помацати». Наберемо запит «GGSN» в shodan. Ось шматок виданих результатів.
Все це скидається на реальні GGSN, виставлені в інтернет.
Або спробуємо написати скрипт, який посилає запити GTP-echo. та й пустити його гуляти по інтернету. вдруг кто відгукнеться. І відгукуються знаходяться:
Іноді навіть з відкритим telnet.
У стандарті нового покоління під кодовим ім'ям LTE все так само використовується протокол GTP, а тому все вищеописане актуально і буде актуальним в доступному для огляду майбутньому.
На сьогодні все. До нових зустрічей!