- Исследование: Перехват трафика мобильного Интернета через GTP и GRX
- Интернет за чужой счет
- Перехват данных
- DNS-туннелирование
- Подмена DNS на GGSN
- Как защититься
- Анализ трафика Android-приложений: обход certificate pinning без реверс-инжиниринга
- Что такое certificate pinning?
- Обход certificate pinning
- Перехват и анализ трафика со смартфона при помощи Wireshark
- Дешифровка зашифрованных пакетов
- Как работает схема
- Что понадобится
- Шаг 1. Загрузка Wireshark и подключение к Wi-Fi сети
- Шаг 2. Настройка перехвата в Wireshark
- Шаг 3. Перехват и сканирование EAPOL пакетов
- Шаг 4. Дешифровка трафика при помощи PSK
- Шаг 5. Сканирование DNS и HTTP пакетов
- 1. DNS запросы
- 2. HTTP пакеты
- Заключение
Исследование: Перехват трафика мобильного Интернета через GTP и GRX
Большинство абонентов считают, что работа через сотовую сеть достаточно безопасна, ведь крупный оператор связи наверняка позаботился о защите. Увы, на практике в мобильном Интернете есть множество лазеек, дающих широкие возможности для злоумышленников.
Исследователи Positive Technologies обнаружили уязвимости в инфраструктуре сетей мобильной связи, которые позволяют перехватывать GPRS-трафик в открытом виде, подменять данные, блокировать доступ к Интернету, определять местоположение абонента. Под угрозой оказываются не только мобильные телефоны, но и специализированные устройства, подключенные к 2G/3G/4G-сетям с помощью модемов: банкоматы и терминалы оплаты, системы удаленного управления транспортом и промышленным оборудованием, средства телеметрии и мониторинга и т.д.
Операторы сотовой связи, как правило, шифруют трафик GPRS между мобильным терминалом (смартфоном, модемом) и узлом обслуживания абонентов (SGSN) алгоритмами GEA-1/2/3, что осложняет перехват и расшифровку информации. Чтобы обойти это ограничение, злоумышленник может проникнуть в опорную сеть оператора, где данные не защищены механизмами аутентификации. Ахиллесовой пятой являются узлы маршрутизации (или шлюзовые узлы), которые называются GGSN. Их легко обнаружить, в частности, с помощью поисковика Shodan. У проблемных узлов открыты GTP-порты, что позволяет атакующему установить соединение, а затем инкапсулировать в созданный туннель управляющие пакеты GTP. При правильном подборе параметров GGSN воспримет их как пакеты от легитимных устройств сети оператора.
Протокол GTP, описанный выше, никаким образом не должен быть «виден» со стороны Интернета. Но на практике это не так: в Интернете имеется более 207 тысяч устройств по всему земному шару с открытыми GTP-портами. Более полутысячи из них являются компонентами сотовой сети и отвечают на запрос об установлении соединения.
Еще одна возможность для атак связана с тем, что GTP — далеко не единственный протокол управления на найденных узлах. Также встречаются Telnet, FTP, SSH, Web и др. Используя уязвимости в этих интерфейсах (например, стандартные пароли), нарушитель может подключиться к узлу оператора мобильной связи.
Экспериментальный поиск по сайту Shodan выдает несколько уязвимых устройств, в том числе с открытым Telnet и отключенным паролем. Достаточно подключиться к данному устройству и произвести в нем необходимые настройки для того, чтобы оказаться внутри сети оператора в Центральноафриканской Республике.
При этом всякий, кто получил доступ к шлюзовому узлу любого оператора, автоматически получает доступ к сети GRX, которая объединяет всех сотовых операторов и используется для предоставления доступа к Интернету абонентам в роуминге. Воспользовавшись единичной ошибкой в конфигурации на одном устройстве, злоумышленник получает возможность проводить различные атаки на абонентов любого оператора в мире.
Среди множества вариантов использования скомпрометированного пограничного узла следует отметить следующие: отключение абонентов от Интернета или блокировка их доступа к нему; подключение к Интернету под видом другого абонента и за чужой счёт; перехват трафика жертвы и фишинг. Злоумышленник также может определить идентификатор абонента (IMSI) и следить за местоположением абонента по всему миру, пока он не сменит SIM-карту.
Опишем некоторые угрозы более подробно.
Интернет за чужой счет
Цель: исчерпание счета абонента, использование подключения в противозаконных целях.
Вектор атаки: злоумышленник действует через сеть GRX или из сети оператора.
Атака заключается в отправке пакетов «Create PDP context request» с IMSI известного заранее абонента, таким образом происходит подключение к сети с его учетными данным. Ничего не подозревающий абонент получит огромные счета.
Возможно подключение с IMSI несуществующего абонента, так как авторизация абонента происходит на этапе подключения к SGSN, а к GGSN доходят уже «проверенные» соединения. Поскольку SGSN в данном случае скомпрометирован, никакой проверки не проводилось.
Результат: подключение к сети Интернет под видом легитимного абонента.
Перехват данных
Цель: подслушивание трафика жертвы, фишинг.
Вектор атаки: злоумышленник действует через сеть GRX или из сети оператора.
Злоумышленник может перехватить данные, передающиеся между абонентским устройством и сетью Интернет, путем отправки на обслуживающий SGSN и GGSN сообщения «Update PDP Context Request» с подмененными адресами GSN. Данная атака представляет собой аналог атаки ARP Spoofing на уровне протокола GTP.
Результат: подслушивание или подмена трафика жертвы, раскрытие конфиденциальной информации.
DNS-туннелирование
Цель: получить нетарифицируемый доступ к Интернету со стороны мобильной станции абонента.
Вектор атаки: злоумышленник — абонент сотовой сети, действует через мобильный телефон.
Давно известная атака, уходящая корнями во времена dial-up, потерявшая смысл при появлении дешевого и быстрого выделенного Интернета. Однако в мобильных сетях находит применение, например, в роуминге, когда цены за мобильный Интернет неоправданно высоки, а скорость передачи данных не так важна (например, для проверки почты).
Суть атаки в том, что некоторые операторы не тарифицируют DNS-трафик, обычно для того, чтобы переадресовать абонента на страницу оператора для пополнения счета. Этим можно воспользоваться — путем отправления специализированных запросов на DNS-сервер; также для этого необходим специализированный узел в интернете, через который будет осуществляться доступ.
Результат: получение нетарифицируемого доступа к сети Интернет за счет оператора сотовой связи.
Подмена DNS на GGSN
Цель: подслушивание трафика жертвы, фишинг.
Вектор атаки: злоумышленник действует через Интернет.
В случае получения доступа к GGSN (что, как мы уже заметили, вполне возможно) можно подменить адрес DNS на свой, перенаправить весь абонентский трафик через свой узел и таким образом осуществить «подслушивание» всего мобильного трафика.
Результат: подслушивание или подмена трафика всех абонентов, сбор конфиденциальных данных, фишинг
Как защититься
Некоторые подобные атаки были бы невозможны при правильной настройке оборудования. Но результаты исследования Positive Technologies говорят о том, что некорректная настройка — отнюдь не редкость в мире телекоммуникационных компаний. Зачастую и производители устройств оставляют включенными некоторые сервисы, которые должны быть отключены на данном оборудовании, что дает нарушителям дополнительные возможности. В связи с большим количество узлов подобный контроль рекомендуется автоматизировать с использованием специализированных средств, таких как MaxPatrol.
В целом, необходимые для защиты от таких атак меры безопасности включают правильную настройку оборудования, использование межсетевых экранов на границах сети GRX и Интернета, использование рекомендаций 3GPP TS 33.210 для настройки безопасности внутри сети PS-Core, мониторинг защищенности периметра, а также выработку безопасных стандартов конфигурации оборудования и периодический контроль соответствия этим стандартам.
Ряд специалистов возлагают надежды на новые стандарты связи, которые включают и новые технологии безопасности. Однако, несмотря на появление таких стандартов (3G, 4G), совсем отказаться от сетей старого поколения (2G) не удастся. Причиной этого являются особенности реализации мобильных сетей, в частности то, что у базовых станций 2G лучше покрытие, а также то, что на их инфраструктуре работают и сети 3G. В стандарте LTE все так же используется протокол GTP, а поэтому необходимые меры по защите будут актуальными в обозримом будущем.
Источник
Анализ трафика Android-приложений: обход certificate pinning без реверс-инжиниринга
Иногда нужно исследовать работу бэкенда мобильного приложения. Хорошо, если создатели приложения не заморачивались и все запросы уходят по «голому» HTTP. А что, если приложение для запросов использует HTTPS, и отказывается принимать сертификат вашего корневого удостоверяющего центра, который вы заботливо внедрили в хранилище операционной системы? Конечно, можно поискать запросы в декомпилированом приложении или с помощью реверс-инжиниринга вообще отключить применение шифрования, но хотелось бы способ попроще.
Что такое certificate pinning?
Даже при использовании HTTPS пользователь не защищен от атак «Человек посередине», потому что при инициализации соединения злоумышленник может подменить сертификат сервера на свой. Трафик при этом будет доступен злоумышленнику.
Справиться с такой атакой поможет certificate pinning. Эта защитная мера заключается в том, что разработчик «зашивает» в приложение доверенный сертификат. При установке защищенного соединения приложение проверяет, что сертификат, посылаемый сервером, совпадает с (или подписан) сертификатом из хранилища приложения.
Обход certificate pinning
В качестве подопытного выберем приложение Uber. Для анализа HTTP-трафика будем использовать Burp Suite. Также нам понадобится JDK и Android SDK (я использую все последней версии). Из Android SDK нам понадобится только утилита zipalign, так что при желании можно не скачивать весь SDK, а найти ее на просторах интернета.
Заранее облегчим себе жизнь, добавив следующие пути к нужным утилитам в переменную окружения PATH:
Открываем Burp, заходим в Proxy – Options – Add и добавляем Proxy Listener на интерфейсе, который будет доступен подопытному Android-устройству (или эмулятору). На устройстве в свою очередь настраиваем используемую Wi-Fi сеть на использование только что включенного прокси.
Скачаем apk-файл через apkpure.com, установим приложение на устройство и попытаемся войти в свой аккаунт – приложение зависнет на этапе аутентификации.
В логах Burp Suite (вкладка Alerts) при этом мы увидим множественные отчеты о неудачных SSL-рукопожатиях. Обратите внимание на первую строчку – именно через сервер cn-geo1.uber.com в моем случае осуществляется аутентификация, поэтому и не удается войти в приложение.
Дело в том, что Burp Suite при перехвате HTTPS-соединений (а мы помним, что все соединения устройства проксируются через него) подменяет сертификат веб-сервера на свой, который, естественно, не входит в список доверенных. Чтобы устройство доверяло сертификату, выполняем следующие действия. В Burp заходим в Proxy – Options и нажимаем Import/export CA certificate. Далее в диалоге выбираем Export Certificate. Копируем сертификат на устройство, переходим в Настройки – Безопасность – Установить сертификаты и устанавливаем наш сертификат в качестве сертификата для VPN и приложений.
Опять пытаемся войти в свой аккаунт. Сейчас приложение Uber сообщит нам только о неудачной попытке аутентификации – значит прогресс есть, осталось только обойти certificate pinning.
Откроем приложение в вашем любимом архиваторе как zip-архив. В папке res/raw можно заметить файл с говорящим названием ssl_pinning_certs_bk146.bks.
По его расширению можно понять, что Uber использует хранилище ключей в формате BouncyCastle (BKS). Из-за этого нельзя просто заменить сертификат в приложении. Сначала нужно сгенерировать BKS-хранилище. Для этого качаем jar для работы с BKS.
Теперь генерируем BKS-хранилище, которое будет содержать наш сертификат:
На вопрос о доверии сертификату отвечаем «yes». Опять открываем apk в архиваторе и заменяем оригинальное хранилище на наше (сохраняем при этом оригинальное название).
Но на этом все не заканчивается. Каждый apk должен быть подписан сертификатом разработчика. К счастью, это делается не для обеспечения безопасности, а для идентификации приложений, поэтому для наших исследовательских целей мы вполне можем использовать и недоверенный сертификат.
Удаляем из apk папку META-INF со старой подписью приложения и приступаем к генерации новой.
Создаем хранилище ключей и генерируем в нем ключ для подписи apk:
Подписываем только что сгенерированным ключом наш APK:
Теперь осталось выровнять данные в архиве по четырехбайтной границе:
Источник
Перехват и анализ трафика со смартфона при помощи Wireshark
Этот вид мониторинга может показаться агрессивным, однако имейте ввиду, что ваш провайдер также хранит эти данные в логах и имеет право продавать информацию на сторону.
Допустим, нужно узнать, какие приложения используются на телефоне. Если вы находитесь в одной Wi-Fi сети с целевым устройством, задача решается очень просто. Достаточно запустить Wireshark и сконфигурировать несколько параметров. Мы будем использовать эту утилиту для расшифровки трафика, зашифрованного при помощи WPA2, и после анализа выясним, какие приложения запущены на телефоне.
Хотя сеть с шифрованием лучше, чем без, разница исчезает, когда злоумышленник и вы находитесь в одной сети. Если кто-то еще знает пароль к Wi-Fi сети, которую вы используете, при помощи WireShark легко выяснить, чем вы занимаетесь сию секунду. Кроме того, злоумышленник может узнать все приложения, запущенные на телефоне, и сосредоточиться на тех, которые потенциально могут быть уязвимыми.
Дешифровка зашифрованных пакетов
Когда в вашей Wi-Fi сети используется шифрование при помощи технологии WPA2, безопасность сессии основана на двух составляющих. Во-первых, пароль, используемый для генерации гораздо более длинного числа (PSK или pre-shared key). Во-вторых, собственно само рукопожатие, происходящее во время установки соединения. Если злоумышленник получает PSK к Wi-Fi и наблюдает, как вы подключаетесь к сети (или на некоторое время сбрасывает ваше соединение), то впоследствии сможет расшифровать ваш Wi-Fi трафик и узнать, чем вы занимаетесь.
Содержимое HTTPS сайтов будет недоступно, однако HTTP сайты и другие небезопасные HTTP запросы приложений на вашем телефоне будут в открытом виде. Вроде на первый взгляд не такая большая удача, однако очень быстро можно узнать многое о типе устройства, и какие приложения запущены. Кроме того, будут видны DNS запросы для резолвинга доменов, что поможет в идентификации активных приложений и сервисов.
Как работает схема
Для реализации атаки необходимо выполнение нескольких условий. Во-первых, нужен пароль. Кроме того, нужно быть рядом с жертвой для перехвата трафика и уметь отключить целевое устройство от сети для повторного подключения. Мы запустим Wireshark, выполним настройки, связанные с дешифровкой Wi-Fi пакетов, добавим PSK и дождемся EAPOL пакетов с целевого устройства, пытающегося подключиться к сети.
Для анализа поведения целевого устройства будем использовать фильтры с целью выделения искомых DNS и HTTP пакетов. Полный список доменов, для которых устройство выполняет резолвинг, также будет доступен после завершения перехвата. Эта информация пригодится для выяснения, какие службы используются даже в фоновом режиме.
Что понадобится
Вам понадобится карта беспроводного сетевого адаптера с режимом мониторинга (беспроводной сети) и смартфон с iOS или Android, подключенный к Wi-Fi, которую вы собираетесь мониторить. Вы можете попрактиковаться на открытой сети, чтобы примерно понимать, какие результаты вы получите, поскольку вначале расшифровка может не сработать. Кроме того, вам нужно знать пароль и имя сети, которую вы хотите мониторить. В этом случае вы сможете вычислить ключ PSK, позволяющий дешифровать трафик в режиме реального времени.
Шаг 1. Загрузка Wireshark и подключение к Wi-Fi сети
Загрузите и установите Wireshark, после чего подключитесь к целевой Wi-Fi сети. Если вы планируете использовать PSK, а не сетевой ключ, нужно сделать вычисления при помощи WPA PSK Generator, поскольку во время перехвата у вас может не быть доступа к интернету (зависит от используемой карты).
После установки откройте Wireshark и взгляните на перечень сетевых интерфейсов. Перед началом перехвата нам понадобится настроить некоторые опции, чтобы карта перехватывала в нужном режиме.
Рисунок 1: Перечень сетевых интерфейсов
Шаг 2. Настройка перехвата в Wireshark
В меню Wireshark кликните иконку в виде шестеренки, чтобы зайти в раздел «Capture options»
Рисунок 2: Интерфейс Wireshark
Появится окно Capture Interfaces (Интерфейсы перехвата), как показано на рисунке ниже.
Рисунок 3: Перечень интерфейсов
Шаг 3. Перехват и сканирование EAPOL пакетов
Если вы не подключены к сети, где находится цель, то не увидите ни одного пакета, поскольку можете оказаться в другом случайном канале. Причина заключается в неспособности Wireshark на переключение канала, в котором находится беспроводной сетевой адаптер.
Рисунок 4: Перехваченные пакеты
Шаг 4. Дешифровка трафика при помощи PSK
Теперь, когда у нас появились рукопожатия, можно приступать к расшифровке трафика. Вначале нужно добавить сетевой пароль или PSK. Зайдите в выпадающее меню «Wireshark» и выберите раздел «Preferences». Затем кликните на «Protocols».
Рисунок 5: Настройки, связанные с протоколами
В разделе Protocols выберите «IEEE 802.11» и кликните на флажок «Enable decryption». Для добавления сетевого ключа кликните на «Edit», рядом с надписью «Decryption keys». В открывшемся окне добавьте пароли и PSK.
Рисунок 6: Активация дешифровки
В меню выберите «wpa-psk» и скопируйте ваш ключ. Нажмите кнопку Tab и сохраните изменения, кликнув на «OK».
Рисунок 7: Добавление ключа
По завершению процедуры кликните на «OK» в разделе Preferences. Теперь Wireshark должен пересканировать и попробовать дешифровать все перехваченные пакеты. По некоторым причинам эта схема может не сработать. У меня практически всегда работало при наличии качественного рукопожатия (EAPOL) и при переключении между сетевым паролем и PSK. В случае успешной расшифровки мы можем перейти к следующему шагу и проанализировать трафик для выяснения, какие приложения работают на устройстве.
Шаг 5. Сканирование DNS и HTTP пакетов
После снятия защиты с трафика, можно приступать к расшифровке пакетов и выяснению, чем занимаются устройства в Wi-Fi сети, по которым получены рукопожатия, в режиме реального времени.
1. DNS запросы
Просмотр интересных пакетов начнем с DNS запросов, используемых приложением для проверки неизменности IP-адресов, к которым происходит подключение. Обычно происходит обращение к именам доменов, содержащих имена приложений, что значительно упрощает идентификацию программы, которая работает на iPhone и Android и выполняет запросы.
Для отображения этих запросов воспользуемся фильтрами dns и http, позволяющих выявить наиболее явные следы, оставляемые приложениями в сети. Вначале в поле фильтра введите dns и нажмите Enter. Если не сработает, попробуйте переключаться между PSK и паролем несколько раз. Иногда помогает.
Рисунок 8: Перечень DNS запросов
Если ваша цель любит бывать на сайтах знакомств, вы можете увидеть ответ ниже. Например, Tinder обращается к домену Tindersparks.com. Этот запрос – один из наиболее очевидных. Кроме того, могут быть подключения ко многим другим похожим сервисам.
Рисунок 9: Пример обращения к домену Tindersparks.com
Использование приложения Signal – хорошая идея, но в связке с VPN еще лучше. Причины? Даже при открытии Signal происходит взаимообмен, показанный ниже, что свидетельствует о коммуникации через мессенджер с шифрованием.
Рисунок 10: Пример запроса мессенджера Signal
Во время прослушивания песен в приложении Shazam создаются следующие запросы:
Рисунок 11: Пример запроса во время прослушивания песен в Shazam
При открытии Uber создаются запросы следующего содержания:
Рисунок 12: Пример запроса при открытии приложения Uber
Ниже виден эффект, возникающий при открытии Venmo (приложение для перевода денежных средств). Удачный момент для перенаправления запроса куда-нибудь в другое место.
Рисунок 13: Пример запроса, отправляемый приложением Venmo
2. HTTP пакеты
Далее мы можем наблюдать несколько небезопасных web-запросов, используя фильтр http, которые содержат параметры навроде useragent, позволяющих опознать тип устройства. Эту информацию можно посмотреть, кликнув на пакете и зайдя во вкладку «Hypertext Transfer Protocol».
Рисунок 14: Пример содержимого раздела Hypertext Transfer Protocol у пакета
В этом примере видны небезопасные HTTP запросы к серверу чата. Что же получается? Простое изучение содержимого пакета и резолвинг имени домена говорит об использовании приложения WeChat, установленного на телефоне. Более того, исходящие сообщения шифруются не полностью.
Рисунок 15: Сайт приложения WeChat
Если мы хотим увидеть всю историю резолвинга, то можем зайти во вкладку «Statistics» и выбрать «Resolved Addresses» для просмотра всех доменов, которые были преобразованы во время перехвата. Здесь должен быть полный список служб, к которым подключалось устройство через запущенные приложения.
Рисунок 16: Список доменов, к которым проходило подключение
Вышеуказанный список позволяет еще быстрее понять, что представляет собой целевое устройство.
Заключение
Этот вид мониторинга может показаться агрессивным, однако имейте ввиду, что ваш провайдер также хранит эти данные в логах и имеет право продавать информацию на сторону. Если вы хотите защититься от слежки подобного рода, начните пользоваться VPN, что позволяет скрыть даже локальный трафик при помощи надежного шифрования. В других местах, где вы, вероятно, можете делать что-то конфиденциальное через ненадежное соединение, используйте сотовую систему передачи данных для предотвращения подобного рода атак.
Надеюсь, это руководство, посвященное перехвату Wi-Fi трафика при помощи Wireshark, вам понравилось.
Источник