View on GitHub

PCAPdroid

User Guide

Оглавление > Знакомство

1.1 Что такое PCAPdroid

PCAPdroid это инструмент с открытым исходным кодом, предназначенный для захвата и мониторинга собственного трафика без необходимости получения Root-прав на устройстве. Типичные сценарии использования:

PCAPdroid использует системный сервис VPN для получения всего трафика генерируемого Android-приложениями. Никаких серверов за пределами устройства не используется, благодаря механизму VPN приложение пропускает весь трафик через себя (локальная обработка) и благодаря этому позволяет получать данные для анализа.

Если вы планируете использовать PCAPdroid для проведения анализа пакетов, ознакомьтесь c соответствующим разделом ниже.

1.2 Основы использования

Для того чтобы начать пользоваться PCAPdroid, Вам необходимо нажать на кнопку запуска захвата (треугольник слева от кнопки настроек).

При первом запуске будет отображен диалог подтверждения VPN соединения. После его подтверждения PCAPdroid начнет захватывать трафик. Далее вы можете оставить PCAPdroid работать в фоне, пока будете работать с необходимыми приложениями - он продолжит работу в виде сервиса до тех пор, пока Вы не остановите захват трафика. Все время работы PCAPdroid в шторке уведомлений будет отображаться значок ключа (обозначает активное VPN соединение), значок может отличаться в зависимости от системы - чистый Android, кастомные прошивки, оболочки от производителей и т.п. Более того, у вас будет отображаться постоянное уведомление, которое будет содержать некоторые детали о захвате трафика (объем трафика и количество соединений).

По умолчанию захватываемый трафик будет обрабатываться HTTP-сервером, запускающемся на порту 8080. Далее Вы можете посетить указанный URL с другого устройства (например ПК) и начать загрузку PCAP-файла. Вы будете видеть прогресс загрузки как 0% потому, что браузер не знает какого размера целевой файл будет. Данные идут потоком, поэтому загрузка завершится сразу после того как Вы остановите захват трафика в PCAPdroid (т.е. поток прекратится). Так же следует помнить, что дамп полученный таким образом не содержит данных, сгенерированных приложениями до того, как браузер начал загрузку.

Важно: HTTP-сервер отвечает на все запросы со стороны браузеров в локальной сети. Это означает что любой пользователь в вашей локальной сети попав на адрес HTTP-сервера (из PCAPdroid) может загрузить к себе копию вашего дампа! Если Вы хотите избежать этого, нажмите на “HTTP сервер” на главном экране приложения и выберите вариант “Никакой” или же “PCAP файл”.

Весь захваченный трафик так же отображается во вкладке “Соединения”.

Каждая строка представляет исходящее соединение сделанное приложением или системой. Отображаются следующие сведения:

Нажав на строку соединения можно получить больше деталей о нем.

Некоторые детали, а именно IP-адрес, статус и статистика показываются всегда. Другая информация, например URL связанный с соединением отображается только когда это возможно. Так же PCAPdroid по возможности отображает данные переданные в открытом виде в начале соединения. Например в случае HTTP соединений будет так же отображен сам HTTP-запрос.

Во время захвата PCAPdroid держит всю информацию в памяти. По достижению предела, информация о старых соединениях будет удалена для освобождения памяти под новые соединения. Так же будет отображено сообщение о количестве удаленных по данной причине соединений. Общая информация о количестве трафика сгенерированного приложениями можно посмотреть в разделе “Приложения”.

Нажав на строку с приложением, вы увидите окно с информацией, где будут отображены:

Нажав на кнопку “Настройки”, Вы попадете в системные настройки для выбранного приложения. Кнопка “Соединения” в свою очередь покажет все соединения сделанные приложением.

1.3 Фильтры

Перед запуском захвата трафика, во вкладке “Состояние” можно выбрать целевое приложение (трафик которого необходим) посредством опции “Фильтр приложений”. В таком случае лишь трафик выбранного приложения будет проходить через PCAPdroid. В основном это крайне полезно вместе с использованием расшифровки TLS чтобы убедиться, что будет расшифрован только нужный трафик.

После запуска захвата, PCAPdroid предоставляет несколько способов отфильтровать отображаемые соединения:

Фильтр “Скрытые соединения” позволяет создавать правила по которым из общего списка соединений будут скрываться целые группы. Если правильно настроить белый список, то можно скрыть из списка ненужные соединения (прим. проверка обновлений, загрузка профиля и т. д.), оставляя тем самым только нужную часть трафика. Таким образом упрощается обнаружение целевых соединений (отсеяв ненужные) и поиск посторонней активности (нежелательные или даже потенциально опасные соединения). Данный список сохраняется на постоянной основе (не будет утерян после остановки захвата трафика).

Диалог изменения фильтров позволяет указать следующие фильтры для списка соединений:

1.4 Анализ пакетов

Если вам необходимо провести низкоуровневый анализ пакетов (заголовки сетевого (L3) или транспортного (L4) уровня) или их размеры/тайминги, тогда захват в обычном режиме может не подойти для ваших целей. Вместо него необходимо использовать захват траффика в Root-режиме, который предоставляет данные по трафику устройства “как есть” без каких-либо модификаций.

При обычном захвате (без root-прав) несколько изменяет данные, что является необходимым шагом при использовании VpnService. Изменения затрагивают только L3 и L4 уровни, в то время как прикладной (L7) уровень остается нетронутым.

В частности происходят следующие изменения:

Более того, в режиме работы без root, механизм VPNService обрабатывает и захватывает только исходящие соединения (т.е. инициированные вашим устройством).

Для получения объяснения технических деталей о причинах такого поведения, просьба ознакомиться с документом “Как это работает” (на англ. языке).