Как перехватить трафик с мобильного приложения
Большинство абонентов считают, что работа через сотовую сеть достаточно безопасна, ведь крупный оператор связи наверняка позаботился о защите. Увы, на практике в мобильном Интернете есть множество лазеек, дающих широкие возможности для злоумышленников.
Исследователи 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 или из сети оператора.
Результат: подслушивание или подмена трафика жертвы, раскрытие конфиденциальной информации.
DNS-туннелирование
Цель: получить нетарифицируемый доступ к Интернету со стороны мобильной станции абонента.
Вектор атаки: злоумышленник — абонент сотовой сети, действует через мобильный телефон.
Давно известная атака, уходящая корнями во времена dial-up, потерявшая смысл при появлении дешевого и быстрого выделенного Интернета. Однако в мобильных сетях находит применение, например, в роуминге, когда цены за мобильный Интернет неоправданно высоки, а скорость передачи данных не так важна (например, для проверки почты).
Суть атаки в том, что некоторые операторы не тарифицируют DNS-трафик, обычно для того, чтобы переадресовать абонента на страницу оператора для пополнения счета. Этим можно воспользоваться — путем отправления специализированных запросов на DNS-сервер; также для этого необходим специализированный узел в интернете, через который будет осуществляться доступ.
Результат: получение нетарифицируемого доступа к сети Интернет за счет оператора сотовой связи.
Подмена DNS на GGSN
Цель: подслушивание трафика жертвы, фишинг.
Вектор атаки: злоумышленник действует через Интернет.
Результат: подслушивание или подмена трафика всех абонентов, сбор конфиденциальных данных, фишинг
Как защититься
Некоторые подобные атаки были бы невозможны при правильной настройке оборудования. Но результаты исследования Positive Technologies говорят о том, что некорректная настройка — отнюдь не редкость в мире телекоммуникационных компаний. Зачастую и производители устройств оставляют включенными некоторые сервисы, которые должны быть отключены на данном оборудовании, что дает нарушителям дополнительные возможности. В связи с большим количество узлов подобный контроль рекомендуется автоматизировать с использованием специализированных средств, таких как MaxPatrol.
В целом, необходимые для защиты от таких атак меры безопасности включают правильную настройку оборудования, использование межсетевых экранов на границах сети GRX и Интернета, использование рекомендаций 3GPP TS 33.210 для настройки безопасности внутри сети PS-Core, мониторинг защищенности периметра, а также выработку безопасных стандартов конфигурации оборудования и периодический контроль соответствия этим стандартам.
Ряд специалистов возлагают надежды на новые стандарты связи, которые включают и новые технологии безопасности. Однако, несмотря на появление таких стандартов (3G, 4G), совсем отказаться от сетей старого поколения (2G) не удастся. Причиной этого являются особенности реализации мобильных сетей, в частности то, что у базовых станций 2G лучше покрытие, а также то, что на их инфраструктуре работают и сети 3G. В стандарте LTE все так же используется протокол GTP, а поэтому необходимые меры по защите будут актуальными в обозримом будущем.
Согласно статистике - в 2020 году мобильные приложения были загружены пользователями более 240 млн раз, и это число продолжает расти.
Разработчики большое внимание уделяют удобству и внешнему виду, однако вопросам безопасности не всегда уделяется должное внимание. Недостаточная защищенность приложения увеличивает репутационные риски для компании-разработчика, а утечка конфиденциальных пользовательских данных негативно сказывается на его деловой репутации.
Большинство современных мобильных приложений построены на клиент-серверной архитектуре. Как правило, клиент функционирует под управлением одной из популярных мобильных ОС – Android или iOS, и обменивается данными с сервером. Использование открытых незащищенных протоколов передачи данных многократно увеличивают риски компрометации передаваемого трафика. Но даже защищенные соединения не всегда дают 100% гарантию надежности сохранности данных.
В данной статье мы познакомимся с инструментом Fiddler, позволяющим перехватывать и анализировать весь трафик между клиентом и сервером. Данный инструмент может помочь выявить уязвимости в процессе клиент-серверного взаимодействия мобильного приложения.
(Если вы уже работали с этим инструментом, делитесь опытом в комментариях)
Подготовительные шаги
Для начала установите Fiddler на ПК или ноутбук. Убедитесь, что ПК/ноутбук и смартфон находятся в одной сети (например, подключив устройства к одному wifi-роутеру). Это условие является обязательным, т.к. устройства не увидят друг друга. Проверить связь между устройствами можно через команду ping.
Настройка Fiddler
Далее, убедитесь, что Fiddler может принимать входящие соединения:
- Откройте Fiddler, далее: Tools → Options, вкладка «Connections»;
- Поставьте флажок «Allow remote computers to connect»;
- Перезапустите Fiddler, чтобы изменения в настройках вступили в силу.
Настройка устройства на базе Android
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на Android-устройстве выполните шаги:
- Откройте настройки, далее выберите Wi-Fi, затем нажмите на имя подключенной сети и удерживайте, пока не появится всплывающее окно;
- Нажмите «изменить сеть», далее в всплывающем окне разверните пункт «расширенные настройки»;
- Выберите «Вручную» в поле со списком «Прокси-сервер»;
- В поле «Имя хоста прокси-сервера» введите IP-адрес вашего ПК/ноутбука;
- В поле «порт прокси-сервера» введите порт (по умолчанию 8888).
После нажатия на кнопку «Сохранить» весь трафик смартфона должен быть виден в окне Fiddler.
Настройка устройств на базе iOS
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на iOS-устройстве выполните шаги:
- Откройте Настройки → Wi-Fi;
- Найдите сеть, к которой подключен смартфон, и нажмите на значок «i»;
- Пролистайте вниз, найдите «настройка прокси», далее выберите «Вручную»;
- В поле «Сервер» введите IP-адрес вашего ПК/ноутбука;
- В поле «Порт» введите значение по умолчанию: 8888.
После нажатия на кнопку «Сохранить» весь трафик смартфона должен быть виден в окне Fiddler.
Для Android: скачайте FiddlerRoot certificate, откройте его, установите и задайте имя.
Для iOS: скачайте FiddlerRoot certificate, откройте его, нажмите «разрешить», после чего перейдите в Настройки → Профиль загружен → Установить. Далее в Настройках → Основные → Об этом устройстве → Доверие сертификатам → найдите сертификат и сделайте его доверенным.
Руководство по настройке захвата пакетов мобильного телефона с помощью Fiddler, Charles и mitmproxy
При написании поискового робота некоторые данные на стороне ПК не могут предоставить нужные нам данные, например Douyin, поэтому нам необходимо ввести данные на мобильном телефоне. Line Grabbing, в настоящее время наиболее часто используемое программное обеспечение для захвата приложений: Fiddler, mitmproxy, Charles, это программное обеспечение должно выполнить соответствующую конфигурацию прокси-сервера перед захватом пакета данных: загрузите, убедитесь, что ПК-терминал и мобильный терминал находятся в одной локальной сети, Загрузка сертификата, настройка порта и т. Д.
Используйте метод настройки прокси-сервера Fiddler
Fiddler захватывает пакеты данных Android / Iphone, Первый шаг - убедиться, что компьютерный терминал, мобильный терминал Fiddler и компьютерный терминал находятся в одной и той же локальной сети. В этом случае Fiddler может захватывать данные мобильного терминала; Локальная сеть - это сеть, к которой подключено два или более устройств и которая имеет один и тот же сегмент IP-сети. Например, ПК и мобильный телефон подключены к одному и тому же Wi-Fi, или компьютер открывает точку доступа и подключение мобильного телефона.
Второй шаг - настроить Fiddler: откройте [Fiddler -> Tools -> options]; затем выберите опцию [Connections]. На рисунке установите порт сервера, который требуется мобильному телефону для подключения к Fiddler (обычно по умолчанию) Следующие параметры [[Разрешить удаленным компьютерам подключаться] (Разрешить удаленным компьютерам подключаться) для проверки.
Следующим шагом является изменение настроек прокси для Wi-Fi на мобильном телефоне; откройте Wi-Fi в соединении, нажмите переключатель прокси ниже, чтобы переключиться в ручной режим, введите ip на стороне компьютера как имя хоста и порт как порт, установленный Fiddler, а затем нажмите OK.
Результат успешной настройки выглядит следующим образом:
Использование метода настройки прокси Charles
Как и в Fiddle, вам необходимо настроить компьютер и мобильный телефон в одной локальной сети; после получения порта Charles вам также необходимо получить IP-адрес компьютера. Метод запроса IP-адреса компьютера: windows + R Введите cmd-карту чтобы открыть командную строку, а затем введите ipconfig, IPv4 - это IP-адрес этого компьютера.
Измените прокси и порт WiFi на мобильном телефоне:
Обратите внимание на друзей, которые используют win10. Лучше всего отключить брандмауэр перед настройкой. После успешной настройки страница Charles будет выглядеть, как показано ниже:
Установите сертификат на компьютер, откройте клиент Charles и выберите меню [«Справка» -> «SSL-прокси» -> «Установить корневой сертификат Charles»]
Следуйте инструкциям по установке;
Выбирая место хранения сертификата, просто выберите [Личное]. Вообще говоря, выбирается второй вариант.
Затем настройте SSL для получения доменного имени: Выберите [«Прокси» -> «Настройки проксирования SSL»], включите опцию [Включить проксирование SSL], выберите опцию добавления, конфигурация местоположения Чарльза поддерживает подстановочные знаки, поэтому установка «*» в Хосте может использоваться для представления всех доменные имена, порт писать не нужно.
Позже, если вы настроите указанное доменное имя, порт здесь может быть установлен на 443, чтобы вы могли захватывать данные указанного доменного имени;
Чтобы установить сертификат SSL на мобильный телефон, откройте клиент Charles и нажмите [«Справка» -> «Прокси SSL» -> «Установить корневой сертификат Charles на мобильное устройство или удаленный браузер»],
Появится следующая страница, что означает, что вы можете настроить прокси на своем мобильном телефоне: 192.168.2.173:1111, что означает, что мобильный терминал и ПК-терминал находятся в одной локальной сети, а затем использовать мобильный браузер. для доступа к chls.pro/ssl:
После успешной загрузки его необходимо установить локально на мобильный телефон. Вот как пример Redmi. При установке сертификата безопасности на мобильный телефон Xiaomi необходимо заранее установить пароль разблокировки, иначе установка не будет Работа.
Соответствующая конфигурация перехвата принимающего пакета mitmproxy
mitmproxy также имеет два связанных компонента. Один из них - mitmdump, интерфейс командной строки mitmproxy. С его помощью мы можем подключаться к скриптам Python и реализовывать пост-мониторинг в Python. Другой - mitmweb, веб-программа, открывающая веб-страницу мониторинга.Мы можем четко наблюдать запросы, захваченные mitmproxy. Вот демонстрация с окнами в качестве примера.
Здесь вы можете напрямую получить порт mitmproxy как 8080. Второй шаг такой же, как у Charles. Убедитесь, что мобильный телефон и компьютер находятся в одной локальной сети. IP-адрес компьютера получается таким же образом. как у Чарльза. После успешной настройки mitmdump выглядит следующим образом:
Согласно статистике, в 2020 году мобильные приложения были загружены пользователями более 240 млн раз, и это число продолжает расти.
Разработчики большое внимание уделяют удобству и внешнему виду, однако вопросам безопасности не всегда уделяется должное внимание. Недостаточная защищенность приложения увеличивает репутационные риски для компании-разработчика, а утечка конфиденциальных пользовательских данных негативно сказывается на его деловой репутации.
Большинство современных мобильных приложений построены на клиент-серверной архитектуре. Как правило, клиент функционирует под управлением одной из популярных мобильных ОС – Android или iOS, и обменивается данными с сервером. Использование открытых незащищенных протоколов передачи данных многократно увеличивают риски компрометации передаваемого трафика. Но даже защищенные соединения не всегда дают 100% гарантию надежности сохранности данных.
В данной статье мы познакомимся с инструментом Fiddler, позволяющим перехватывать и анализировать весь трафик между клиентом и сервером. Данный инструмент поможет аудитору выявить уязвимости в процессе клиент-серверного взаимодействия мобильного приложения.
Подготовительные шаги
Для начала установите Fiddler на ПК или ноутбук. Убедитесь, что ПК/ноутбук и смартфон находятся в одной сети (например, подключив устройства к одному wifi-роутеру). Это условие является обязательным, т.к. устройства не увидят друг друга. Проверить связь между устройствами можно через команду ping.
Настройка Fiddler
Далее, убедитесь, что Fiddler может принимать входящие соединения:
- Откройте Fiddler, далее: Tools → Options, вкладка «Connections»;
- Поставьте флажок «Allow remote computers to connect»;
- Перезапустите Fiddler, чтобы изменения в настройках вступили в силу.
Настройка устройства на базе Android
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на Android-устройстве выполните шаги:
- Откройте настройки, далее выберите Wi-fi, затем нажмите на имя подключенной сети и удерживайте, пока не появится всплывающее окно;
- Нажмите «изменить сеть», далее в всплывающем окне разверните пункт «расширенные настройки»;
- Выберите «Вручную» в поле со списком «Прокси-сервер»;
- В поле «Имя хоста прокси-сервера» введите IP-адрес вашего ПК/ноутбука;
- В поле «порт прокси-сервера» введите порт (по умолчанию 8888).
После нажатия на кнопку «Сохранить» весь трафик смартфона должен быть виден в окне Fiddler.
Настройка устройств на базе iOS
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на iOS-устройстве выполните шаги:
- Откройте Настройки → Wi-fi;
- Найдите сеть, к которой подключен смартфон, и нажмите на значок «i»;
- Пролистайте вниз, найдите «настройка прокси», далее выберите «Вручную»;
- В поле «Сервер» введите IP-адрес вашего ПК/ноутбука;
- В поле «Порт» введите значение по умолчанию: 8888.
После нажатия на кнопку «Сохранить» весь трафик смартфона должен быть виден в окне Fiddler.
Для Android: скачайте FiddlerRoot certificate, откройте его, установите и задайте имя.
Для iOS: скачайте FiddlerRoot certificate, откройте его, нажмите «разрешить», после чего перейдите в Настройки → Профиль загружен → Установить. Далее в Настройках → Основные → Об этом устройстве → Доверие сертификатам → найдите сертификат и сделайте его доверенным.
В данной статье я познакомил вас с инструментом Fiddler для анализа трафика мобильных приложений на базе Android/iOS. Аудиторам он может быть полезен для поиска уязвимостей.
Читайте также: