Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

У цьому документі представлено опис всіх знайдених і використаних вразливостей в 8 популярних моделях 3G- і 4G-модемів, доступних в Росії і по всьому світу.

устаткування


Було розглянуто 8 модемів наступних виробників:

  • Huawei (2 різних модему і 1 роутер),
  • Gemtek (1 модем і 1 роутер),
  • Quanta (2 модему),
  • ZTE (1 модем).

Очевидно, що не всі модеми поставлялися з уразливими прошивками: частина вразливостей в прошивках були допущені при кастомізації прошивки стільниковим оператором. Хоча такі підписи наводять на деякі думки:

Далі для зручності все мережеве обладнання - і модеми, і роутери - будуть називатися «модеми».

Статистика по вразливих модемів

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

знайдені уразливості


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

1. Віддалене виконання коду в веб-сценаріях, 5 пристроїв (RCE)


Всі розглянуті веб-сервери на модемах працюють на базі простих CGI-скриптів, які практично ніде не проходили належну фільтрацію (крім модемів Huawei, і то через кілька оновлень після оголошення вразливостей).

Поєднання цих трьох чинників дає невтішний результат: понад 60% модемів уразливі до віддаленого виконання коду. Причому оновлену прошивку без цієї уразливості можна отримати тільки для модемів Huawei (є публічні опису вразливостей): інші уразливості поки вважаються 0-days.

2. Довільна модифікація прошивки, 6 пристроїв (Integrity attacks)


Тільки три модему мали криптографічний захист прошивок від модифікації. Два модема працювали за однаковим алгоритмом за допомогою асиметрично зашифрованого RSA в режимі digital signature контрольної суми SHA1, третій модем шифрував вміст прошивки за допомогою потокового шифру RC4.

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

Ще три модему не мали захисту від модифікації прошивок, проте для оновлення прошивки необхідний локальний доступ до інтерфейсів COM.

В останніх двох модемах передбачалася можливість поновлення тільки через мережу оператора c допомогою технології FOTA (Firmware Over-The-Air).

3. міжсайтовий підробка запитів, 5 пристроїв (CSRF)


Атаки CSRF можна використовувати для різних завдань, але в першу чергу - для віддаленого завантаження модифікованої прошивки і впровадження довільного коду. Ефективним захистом від цієї атаки є використання унікальних токенов для кожного запиту.

4. міжсайтовий виконання сценаріїв, 4 пристрої (XSS)


Поверхня застосування даних атак також досить широка - від інфікування вузла до перехоплення чужих СМС, проте в нашому дослідженні основна їх застосування - це також завантаження модифікованих прошивок в обхід перевірок antiCSRF і Same-Origin Policy.

вектори атак

1. Ідентифікація
2. Впровадження коду


Даний етап вже докладно описаний в попередньому розділі, в пунктах 1 і 2. Впровадити код можна або через уразливість виконання довільного коду в веб-сценаріях, або через оновлення на заражену прошивку. Першим способом ми змогли проникнути на 5 модемів.

Опишемо детально вектори для реалізації другого способу.

У двох модемах використовувався однаковий алгоритм забезпечення цілісності прошивки: шифрування асиметричним ключем RSA хеш-суми SHA1 здійснювалося за допомогою бібліотеки openssl. Перевірка проводилася некоректно: завантаживши прошивку, яка є по суті архівом, веб-сервер видобував із неї два основних файлу - файл, який вказує на розмір перевіряються даних, і файл з підписаною хеш-сумою цих даних. Далі, взявши з файлової системи публічний ключ, сценарій перевірки звертався до функцій бібліотеки openssl для дешифрування підписи і надалі порівнював хеш-суми, і в разі збігу прошивка встановлювалася. Алгоритм стиснення прошивки мав особливістю: до існуючого архіву можливо було додати додаткові файли з тими ж іменами, при цьому ніяк не змінилися б початкові байти архіву, а при розпакуванні прошивки відбулася заміна більш пізнім файлом більш раннього. Завдяки цьому можна дуже просто змінити вміст прошивки, ніяк не змінивши цілісність перевіряються даних.

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

У третьому модемі прошивки були зашифровані за алгоритмом RC4 c константної гамою. Так як в інтернеті було доступно три різних версії цієї прошивки, можна отримати кілька байт plain-text - в тих місцях, де в одному з файлів незашифрованной прошивки розташовуються байти 0x00.

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Підтримку і допомогу в атаках на криптопротоколів забезпечував Дмитро Скляров, заслужений криптоаналитик і reverse engineer компанії Positive Technologies
Надалі для віддаленого завантаження можна використовувати атаку CSRF і функцій HTML5 для передачі multipart / form-data або атаку XSS, якщо додаток захищено від CSRF (для модему Huawei). Від CSRF були захищені тільки три модему Huawei, і саме в них можна було експлуатувати XSS для обходу цього захисту. У всіх інших випадках завантаження можна було здійснити за допомогою HTML5-коду, розміщеного на спеціальній сторінці.

У модемах Gemtek використовувався алгоритм оновлення прошивки через спеціальну утиліту, що встановлюється на комп'ютер. В цьому випадку прошивки завантажувалися через інтернет-з'єднання на хості по протоколу HTTP. Але далі використовувався механізм контролю цілісності завантаженої прошивки за допомогою контрольних сум, також завантажуються з сервера. Перевірити коректність роботи даного сценарію не вдалося.

Однак сподіватися, що той же виробник, який некоректно перевіряє цілісність при завантаженні на модеми, добре захищає цілісність прошивок - не варто.

3. Перехоплення даних


Тепер у нас є можливість виконувати на модемі довільний код. Далі необхідно зробити три речі: визначити місце розташування модему (пізніше буде ясно, навіщо), отримати можливість перехоплювати СМС і HTTP-трафік.

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Найпростіший спосіб визначити місце розташування - дізнатися ідентифікатор базової станції (CellID). Тоді, знаючи MCC і MNC оператора, можна досить точно визначити положення атакується за допомогою публічних баз даних на зразок opencellid.org. Інший спосіб - використовувати вбудовану в модем Wi-Fi-карту, щоб, скануючи прилеглі мережі, також визначити місце розташування жертви (або визначити зону його можливого знаходження - адже одна базова станція може працювати на досить великому радіусі покриття). CellID нам вдалося «дістати» в 6 модемах, Wi-Fi був доступний в двох модемах. Для одного з модемів довелося переконфігурувати і завантажувати нові драйвери для мережевої карти: поточні дозволяли йому працювати тільки в режимі ad hoc, а в цьому режимі неможливо сканувати прилеглі точки доступу.

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Перехоплення трафіку - більш цікава річ. Її можна реалізувати декількома шляхами: через зміну налаштувань DNS-сервера на модемі, а також через зміну шлюзу на модемі на Wi-Fi-інтерфейс і підключення до заздалегідь включеної точки доступу. Перший шлях, звичайно, простіше, поміняти настройки цю справу на 10 секунд: вони, як правило, теж знаходяться на файлової системи; всюди, крім одного модему, це вдалося. Другий варіант розглядався чисто теоретично: завдання було змінити режим мережевої карти з ad hoc на активну, підключиться до сторонньої точки доступу, а також поміняти маршрутизацію на модемі.

Перехоплювати ми можемо не тільки HTTP-трафік. Простим запровадженням та виконанням VBS-коду в HTML-сторінку можна додати свій сертифікат в довірені кореневі центри сертифікації і успішно проводити MITM:

4. Підробка SIM-карти і перехоплення 2G-трафіку


Детально про атаки на додатки на SIM-карті розповідається в роботах Карстена Нуля (Karsten Nohl), а також в дослідженні «#root via SMS». Нам як і раніше необхідно відправляти бінарні СМС на сім-карти, так як навчити модем посилати команди по протоколу APDU на додатки на SIM-карті так і не вдалося.

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Переводимо модем в діагностичний режим

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Сценарій PowerShell для відправки бінарної СМС

Наступний вектор атаки, який може бути використаний в поєднанні з точною геолокації атакується, - використання FakeBTS. Якщо ми знаємо досить точно місце розташування жертви, а також його IMSI, ми можемо використовувати підроблену базову станцію в безпосередній близькості і чекати, поки він підключиться до нас, або, якщо ми можемо, примусово задати базову станцію (така можливість доступна для 5 пристроїв). У разі успіху відправляти бінарні СМС можна на атакується сім-карту без обмежень з боку оператора.

5. Зараження робочих станцій


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

  • Virtual CD-ROM. Практично всі модеми мають образ віртуального диска, який підключається на першому етапі для установки драйверів. Необхідно підмінити цей образ і змусити його змонтується примусово.
  • VBS, drive-by-download. Впровадження виконуваного коду в тіло HTML-сторінки або примусова завантаження виконуваних файлів під виглядом «оновлень» або діагностичних утиліт.
  • Browser 0-days. Як приклад використовувався Adobe Flash 0-day, знайдений в архівах Hacking Team.
  • Вразливе клієнтське ПЗ. Один з операторів поставляв разом з модемом вразливе діагностичне ПЗ, що дозволяє виконувати довільний код на комп'ютері під керуванням OS X і Windows. Reference: за перебування цієї уразливості окреме спасибі Михайлу Фірстова з HeadLight Security.

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Виконання довільного коду на клієнтському ПО модему

6. Цільові атаки (APT)


Інфікувавши модем і хост, необхідно якось закріпитися в системах. У модемі необхідно зберегтися в автозавантаженні навіть після вимкнення модему і запобігати подальшому оновлення прошивок. У зараженому комп'ютері корисно будемо визначати і заражати інші вразливі модеми, як тільки вони будуть підключені до комп'ютера. Крім усього іншого, заразити більшість пристроїв можна прямо в салоні зв'язку, в процесі «перевірки» пристрою.

7. Додатково


Розглядалося також вектор отримання доступу до особистого кабінету оператора через відправку запиту по USSD і скидання пароля по СМС.
Даний вектор був показаний на презентації «#root via SMS». Для експлуатації використовувалася атака XSS, яку можна було реалізувати за допомогою відправки СМС. Однак, це можливо і в тих модемах, де є читання СМС за допомогою RCE.

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Результат експлуатації XSS

Що порадити клієнтам, які постійно працюють з такими пристроями? Найзахищенішими на сьогоднішній день є модеми Huawei, за умови що ви використовуєте останню версію прошивки. Це єдина компанія, яка сама постачає прошивки (операторам дається можливість тільки додавати візуальні елементи і відключати той чи інший набір функцій). Крім того, на відміну від інших, компанія Huawei регулярно виправляє уразливості, які знаходять в її ПО.

модеми:

Критично небезпечні уразливості в популярних 3g- і 4g-модеми або як побудувати великого брата

Розкриття інформації


Хоча 90 днів з моменту повідомлення телеком-операторів уже давно пройшли, безліч вразливостей так і залишилися незакритими.

Подяки за допомогу та участь в дослідженні: Олексій Осипов, Дмитро Скляров, Кирило Нестеров, Михайло Фирстов, SCADA Strangelove team