Этот вид мониторинга может показаться агрессивным, однако имейте ввиду, что ваш провайдер также хранит эти данные в логах и имеет право продавать информацию на сторону.
Допустим, нужно узнать, какие приложения используются на телефоне. Если вы находитесь в одной Wi-Fi сети с целевым устройством, задача решается очень просто. Достаточно запустить Wireshark и сконфигурировать несколько параметров. Мы будем использовать эту утилиту для расшифровки трафика, зашифрованного при помощи WPA2, и после анализа выясним, какие приложения запущены на телефоне.
Хотя сеть с шифрованием лучше, чем без, разница исчезает, когда злоумышленник и вы находитесь в одной сети. Если кто-то еще знает пароль к Wi-Fi сети, которую вы используете, при помощи WireShark легко выяснить, чем вы занимаетесь сию секунду. Кроме того, злоумышленник может узнать все приложения, запущенные на телефоне, и сосредоточиться на тех, которые потенциально могут быть уязвимыми.
Дешифровка зашифрованных пакетов
Когда в вашей Wi-Fi сети используется шифрование при помощи технологии WPA2, безопасность сессии основана на двух составляющих. Во-первых, пароль, используемый для генерации гораздо более длинного числа (PSK или pre-shared key). Во-вторых, собственно само рукопожатие, происходящее во время установки соединения.
Перехват WiFi трафика с Android с помощью Charles Proxy
Если злоумышленник получает PSK к Wi-Fi и наблюдает, как вы подключаетесь к сети (или на некоторое время сбрасывает ваше соединение), то впоследствии сможет расшифровать ваш Wi-Fi трафик и узнать, чем вы занимаетесь. Содержимое HTTPS сайтов будет недоступно, однако HTTP сайты и другие небезопасные HTTP запросы приложений на вашем телефоне будут в открытом виде. Вроде на первый взгляд не такая большая удача, однако очень быстро можно узнать многое о типе устройства, и какие приложения запущены. Кроме того, будут видны DNS запросы для резолвинга доменов, что поможет в идентификации активных приложений и сервисов.
Как работает схема
Для реализации атаки необходимо выполнение нескольких условий. Во-первых, нужен пароль. Кроме того, нужно быть рядом с жертвой для перехвата трафика и уметь отключить целевое устройство от сети для повторного подключения.
Мы запустим Wireshark, выполним настройки, связанные с дешифровкой Wi-Fi пакетов, добавим PSK и дождемся EAPOL пакетов с целевого устройства, пытающегося подключиться к сети. Для анализа поведения целевого устройства будем использовать фильтры с целью выделения искомых DNS и HTTP пакетов. Полный список доменов, для которых устройство выполняет резолвинг, также будет доступен после завершения перехвата. Эта информация пригодится для выяснения, какие службы используются даже в фоновом режиме.
Что понадобится
Вам понадобится карта беспроводного сетевого адаптера с режимом мониторинга (беспроводной сети) и смартфон с iOS или Android, подключенный к Wi-Fi, которую вы собираетесь мониторить. Вы можете попрактиковаться на открытой сети, чтобы примерно понимать, какие результаты вы получите, поскольку вначале расшифровка может не сработать. Кроме того, вам нужно знать пароль и имя сети, которую вы хотите мониторить. В этом случае вы сможете вычислить ключ PSK, позволяющий дешифровать трафик в режиме реального времени.
04. Продвинутые инструменты IDA и Ghidra. Перехват сетевых пакетов изнутри игры
Шаг 1. Загрузка Wireshark и подключение к Wi-Fi сети
Загрузите и установите Wireshark, после чего подключитесь к целевой Wi-Fi сети. Если вы планируете использовать PSK, а не сетевой ключ, нужно сделать вычисления при помощи WPA PSK Generator, поскольку во время перехвата у вас может не быть доступа к интернету (зависит от используемой карты). После установки откройте Wireshark и взгляните на перечень сетевых интерфейсов. Перед началом перехвата нам понадобится настроить некоторые опции, чтобы карта перехватывала в нужном режиме. Рисунок 1: Перечень сетевых интерфейсов
Шаг 2. Настройка перехвата в Wireshark
В меню Wireshark кликните иконку в виде шестеренки, чтобы зайти в раздел «Capture options» Рисунок 2: Интерфейс Wireshark Появится окно Capture Interfaces (Интерфейсы перехвата), как показано на рисунке ниже.
Шаг 3. Перехват и сканирование EAPOL пакетов
Если вы не подключены к сети, где находится цель, то не увидите ни одного пакета, поскольку можете оказаться в другом случайном канале. Причина заключается в неспособности Wireshark на переключение канала, в котором находится беспроводной сетевой адаптер.
Рисунок 4: Перехваченные пакеты
Шаг 4. Дешифровка трафика при помощи PSK
Теперь, когда у нас появились рукопожатия, можно приступать к расшифровке трафика. Вначале нужно добавить сетевой пароль или PSK. Зайдите в выпадающее меню «Wireshark» и выберите раздел «Preferences». Затем кликните на «Protocols».
Для добавления сетевого ключа кликните на «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 происходит взаимообмен, показанный ниже, что свидетельствует о коммуникации через мессенджер с шифрованием.



2. HTTP пакеты
Далее мы можем наблюдать несколько небезопасных web-запросов, используя фильтр http, которые содержат параметры навроде useragent, позволяющих опознать тип устройства. Эту информацию можно посмотреть, кликнув на пакете и зайдя во вкладку «Hypertext Transfer Protocol».
Рисунок 14: Пример содержимого раздела Hypertext Transfer Protocol у пакета В этом примере видны небезопасные HTTP запросы к серверу чата. Что же получается? Простое изучение содержимого пакета и резолвинг имени домена говорит об использовании приложения WeChat, установленного на телефоне. Более того, исходящие сообщения шифруются не полностью.
Рисунок 15: Сайт приложения WeChat Если мы хотим увидеть всю историю резолвинга, то можем зайти во вкладку «Statistics» и выбрать «Resolved Addresses» для просмотра всех доменов, которые были преобразованы во время перехвата. Здесь должен быть полный список служб, к которым подключалось устройство через запущенные приложения.
Рисунок 16: Список доменов, к которым проходило подключение Вышеуказанный список позволяет еще быстрее понять, что представляет собой целевое устройство.
Заключение
Этот вид мониторинга может показаться агрессивным, однако имейте ввиду, что ваш провайдер также хранит эти данные в логах и имеет право продавать информацию на сторону. Если вы хотите защититься от слежки подобного рода, начните пользоваться VPN, что позволяет скрыть даже локальный трафик при помощи надежного шифрования. В других местах, где вы, вероятно, можете делать что-то конфиденциальное через ненадежное соединение, используйте сотовую систему передачи данных для предотвращения подобного рода атак. Надеюсь, это руководство, посвященное перехвату Wi-Fi трафика при помощи Wireshark, вам понравилось.
Что, если ваша защита — это главная СЛАБОСТЬ? Подпишитесь на наш канал и стань супергероем цифрового мира .
Источник: www.securitylab.ru
Fiddler-инструмент для анализа трафика мобильных приложений. Выявляем уязвимости
Согласно статистике — в 2020 году мобильные приложения были загружены пользователями более 240 млн раз, и это число продолжает расти.
16 359 просмотров
Разработчики большое внимание уделяют удобству и внешнему виду, однако вопросам безопасности не всегда уделяется должное внимание. Недостаточная защищенность приложения увеличивает репутационные риски для компании-разработчика, а утечка конфиденциальных пользовательских данных негативно сказывается на его деловой репутации.
Большинство современных мобильных приложений построены на клиент-серверной архитектуре. Как правило, клиент функционирует под управлением одной из популярных мобильных ОС – 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.
Перехват HTTPS-трафика
С этими настройками возможен перехват только незащищенного HTTP-трафика. Для работы с защищенным HTTPS-трафиком потребуется установка корневого сертификата на устройствах, а также дополнительная настройка Fiddler.
- Перейдите по ссылке на устройстве: http://ipv4.fiddler:8888
- Установите сертификат:
Для Android: скачайте FiddlerRoot certificate, откройте его, установите и задайте имя. Для iOS: скачайте FiddlerRoot certificate, откройте его, нажмите «разрешить», после чего перейдите в Настройки → Профиль загружен → Установить. Далее в Настройках → Основные → Об этом устройстве → Доверие сертификатам → найдите сертификат и сделайте его доверенным. - В настройках Fiddler (Options→ HTTPS) установите флажок «Decrypt HTTPS traffic», после чего разрешите установку сертификата.
После этого вы сможете работать и анализировать защищенный HTTPS-трафик в Fiddler.
Источник: vc.ru
Битва снифферов: Charles vs Proxyman
Привет, меня зовут Даша, я работаю тестировщицей клиентского мобильного приложения в Ozon.
Сегодня поговорим о снифферах в тестировании мобильных приложений –– программах для перехвата, анализа и модификации трафика. Пожалуй, самый популярный сниффер, о котором я слышала, — Charles. Про него уже не раз писали на Хабре, есть довольно детальные разборы. Но не Charles-ом единым!
Например, у нас в Ozon команда разработчиков в основном пользуется Proxyman, а тестировщики (в том числе и я) — Charles.
Не так давно у нас в команде разработки мобильного приложения случился холивар на тему “Charles vs Proxyman”. Я попыталась выяснить, почему некоторые люди пользуются Proxyman, а другие — Charles. Из разговоров с коллегами мне было не до конца понятно, какой из снифферов лучше (и чем именно). Поэтому я решила попользоваться Proxyman и разобраться самостоятельно. Давайте вместе посмотрим, какой из инструментов — Charles или Proxyman — выйдет победителем в битве снифферов.
Готовим поле для битвы снифферов: ключевое о тулинге
Снифферы позволяют видеть, что приходит с бэка, изменять или перезаписывать этот ответ; то же самое можно сделать с запросами на бэк. Это даёт нам отличные возможности для тестирования клиент-сервисного взаимодействия (особенно если основная логика зашита на сервере).
Например, сегодня с бэка приходит заголовок страницы, состоящий из одного слова, и всё выглядит красиво и соответствует макетам. Но завтра бэк решает написать в заголовке пару предложений вместо одного (условно) — и то, как это будет выглядеть, как раз и помогает узнать сниффер.
В своей работе я чаще всего использую следующие функции: Rewrite, Map Local, Breakpoints и Throttling.
Rewrite:
- для замены URL — чтобы перенаправить трафик с тестовой среды на продакшен или наоборот (например, если фича готова только для тестовой среды);
- для подмены статус-кода, который приходит с бэка, — чтобы посмотреть, корректно ли будет вести себя приложение при ошибке сервера;
- для добавления или изменения заголовка в запросе — если фичу необходимо протестировать с определёнными хедерами.
Map Local — для полной замены ответа страницы с бэка на локальный файл.
Этой фичей удобно пользоваться для тестирования различных состояний элементов: открываешь файл, на который был заменён ответ страницы, меняешь в нём значение, сохраняешь и обновляешь страницу на устройстве. Как шутят наши разработчики, если у тебя достаточно сохранённых ответов с разных страниц, то из них можно построить приложение.
Breakpoints — с помощью этой функции можно поставить точку останова на любой URL; когда устройство будет его запрашивать, запрос к серверу откроется в формате редактирования.
Запрос можно будет изменить или прервать; то же самое произойдёт с ответом от сервера. По сути, Breakpoints может заменить Rewrite и Map Local, но всё же эта фича больше подходит для единоразового использования. Постоянно выискивать ту самую строчку, которую необходимо изменить, довольно затратно по времени, да и запрос за это время может отвалиться по тайм-ауту.
Throttling — отличная фича для подмены скорости интернета. Можно увидеть, как поведёт себя приложение на медленной скорости, как при этом будут загружаться картинки, видео или карта.
Давайте сравнивать Charles и Proxyman на примере этих функций.
Начинаем битву снифферов: установка и настройка
Для начала давайте разберёмся, как установить наши снифферы.
Charles: можно бесплатно скачать с официального сайта.
После инсталляции приложения устанавливаем сертификат на железо: Help -> SSL Proxying -> Install Root Certificate. Сниффер готов к работе.
Install and trust. Сниффер готов к работе.
Сравнение основных фич Charles и Proxyman
Начнём с простого.
Установка сертификата и подключение мобильного устройства к снифферу
Charles:
- Убедиться, что телефон и ноутбук подключены к одной сети.
- На мобильном устройстве: Настройки Wi-Fi -> Настройка прокси -> Вручную -> Сервер: ввести IP из Charles (Help -> Local IP Address) -> Порт: по умолчанию вводится 8888.
- Открыть браузер и перейти по ссылке chls.pro/ssl.
- Для Android: после загрузки сертификата необходимо его открыть и задать имя; после этого устройство будет готово к работе со сниффером.
- Для iOS: Настройки -> Основные -> Профили: установить только что скачанный сертификат.
- Для iOS: Настройки -> Основные -> Об этом устройстве -> Доверие сертификатам: включить для сертификата из п. 3.
Всё, вы великолепны! Можете запускать приложение и работать с трафиком.
Proxyman: процесс подключения реального устройства такой же, как в случае с Charles. Отличаются только место, где можно узнать IP, и адрес для скачивания сертификата.
Чтобы узнать IP, переходим в Certificate -> Install Certificate on iOS (Android) -> Physical Devices. Здесь можно найти IP-адрес, который необходимо вводить в настройках, а также адрес, по которому можно скачать сертификат и подробную инструкцию по его установке.
В этом раунде победителем для меня стал Proxyman. В нём есть подробное описание процесса установки сертификата на мобильное устройство. В случае с iOS многие забывают о том, что необходимо включить опцию «Доверие сертификатам», а подробная инструкция Proxyman позволяет избежать этой ошибки.
Подключение симулятора к снифферу
Подключение симулятора происходит немного по-другому по сравнению с подключением реального устройства. Я пишу тут именно про симулятор, потому что подключение эмулятора ничем не отличается от подключения реального устройства.
Charles:
- Сделать ресет симулятора: Device -> Erase All Contents and Settings.
- Help -> SSL Proxying -> Install Charles Root Certificate in iOS Simulators.
- Сделать рестарт симулятора: Device -> Restart.
- Убедиться, что вы слушаете трафик вашего компьютера: Proxy -> MacOS Proxy (должна стоять соответствующая галочка).
Proxyman:
1. Открыть Certificate -> Install Certificate on iOS -> Simulators.
2. Поставить последовательно галочки в каждом пункте.
Готово, вы великолепны!
В этом раунде тоже выигрывает Proxyman — это видно даже по количеству пунктов в списке. Несколько кликов — и всё готово, в отличие от замороченной настройки Charles.
Функции снифферов: Rewrite
Charles:
- Tools -> Rewrite -> поставить чекбокс Enable Rewrite.
- Нажать на Add для создания правила для Rewrite.
- В окне Location с помощью кнопки Add можно добавить один или несколько URL, для которых будет работать это правило.
- В окне под Location с помощью кнопки Add можно задать правило, по которому будет работать Rewrite.
Есть большой выбор типов Rewrite, которые можно задать в выпадающем меню Type. Например, можно добавить, изменить или удалить Header в Request, изменить Response Code или подменить URL запросов.
Например, вот так будет выглядеть правило для добавления Header в Request:
Proxyman:
- Scripting -> Script List (⌥⌘I).
- Нажать + в левом нижнем углу и задать правила, по которым будет работать скриптинг.
- В поле Name внести название шаблона.
- Указать URL, для которого будут работать эти правила.
Всё, после этого можно выбирать и заменять значения Request и Response.
Вот так будет выглядеть скрипт для добавления параметров Header и Query в Request:
В этом раунде для меня однозначно выигрывает Charles. Возможно, потому что я не фанат замороченных настроек и писать срипт для подмены хедера для меня слишком сложно по сравнению с нажатием нескольких кнопок.
Функции снифферов: Map Local
Следующая по порядку, но не менее важная функция — Map Local. С её помощью можно полностью подменить ResponseBody.
Charles:
- Запустить приложение, чтобы трафик пошёл через Charles.
- Щёлкнуть правой кнопкой по URL, ответ от которого необходимо изменить, и выбрать Map Local.
- В окне Edit Mapping нажать на кнопку Choose и выбрать файл, содержимое которого должно отображаться в ответе.
Proxyman:
- Tools -> Map Local.
- Нажать + в левом нижнем углу и заполнить поля Name (название правила) и URL (адрес, для которого будет выполняться правило).
- Нажать Select Local File и выбрать JSON-файл, которым будет подменяться ответ (запрос).
В этом раунде для меня нет победителя, но фича, с помощью которой в Proxyman можно открывать файл сразу в текстовом редакторе, мне очень понравилась.
Функции снифферов: Breakpoints
Функция Breakpoints предназначена для изменения и прерывания запросов и ответов непосредственно в сниффере.
Charles:
- Нажать на кнопку Enable Breakpoints на верхней панели.
- Щёлкнуть правой кнопкой по URL, для которого необходимо использовать Breakpoints, и нажать на Breakpoints.
Также можно задать правила Breakpoints в пункте меню Proxy -> Breakpoints Settings.
После перехода по указанному URL сработает Breakpoints — и запрос с ответом станут редактируемыми; по нажатию на кнопку Abort их можно будет прервать.
Proxyman:
- Щёлкнуть правой кнопкой по URL, для которого необходимо использовать Breakpoints, и нажать на Breakpoints.
- В открывшемся окне можно задать правила, по которым будет работать Breakpoints.
При желании можно изменить URL, а также использовать Breakpoints для чего-то одного: только для запроса или только для ответа.
В этом раунде силы снифферов равны.
Функции снифферов: Throttling
Последняя функция из основного незаменимого арсенала снифферов — Throttling.
Charles:
- Proxy -> Throttle Settings.
- Выбрать опцию Enable Throttling. Если поставить чекбокс Only for selected hosts, кнопка Add станет активной и по нажатию на неё можно будет добавить те URL, для которых сработает изменение скорости интернета.
- Скорость интернета, которую будет симулировать Charles, можно выбрать из выпадающего списка или задать в соответствующих полях:
Proxyman:
- Tools -> Network Conditions.
- Выбрать опцию Enable Network Conditions.
- По нажатию на + откроется окно, в котором можно настроить правила симуляции скорости интернета. В этом раунде соперники равны.