Обнаружение P2P трафика - Идентификация P2P приложений

ОГЛАВЛЕНИЕ

Идентификация P2P приложений

До этого момента мы пытались обнаружить P2P пользователей на основании логов сетевых соединений. Теперь продвинемся на шаг дальше, попробовав точно идентифицировать используемое хостом P2P приложение, не имея доступа к информации прикладного уровня.

Более тщательно анализируя UDP трафик различных P2P приложений можно обнаружить интересные закономерности. Выше было упомянуто, что P2P приложению с децентрализованной структурой необходимо периодически отправлять большое количество командных пакетов разного типа. Пакеты одного типа часто имеют одинаковый размер. Поэтому, анализируя UDP пакеты, даже при отсутствии информации прикладного уровня, можно точно определить, какое P2P приложение используется.

У большинства P2P приложений не документированы все детали реализации, некоторые поставляются с закрытыми исходными кодами, поэтому структура UDP пакетов большинства UDP приложений может быть нам точно не известна. Автор этой статьи выбрал семь популярных децентрализованных P2P приложений и провел такие наблюдения. Результаты подтвердили гипотезу о том, что все эти приложения для взаимодействия с внешним миром используют пакеты фиксированной длинны.

Edonkey2000

Edonkey2000 использует большое количество 6 байтовых UDP пакетов для запроса ‘server status request’. Этот тип пакетов можно наблюдать в основном во время запуска Edonkey. В дополнение, пакеты, содержащие запрос поиска, почти всегда имеют размер 25 байт.

BearShare

Во время запуска BearShare отсылает 28 байтовые UDP пакеты на несколько целевых адресов. Каждый раз, когда BearShare начинает загрузку файла, происходит отправка большого количества 23 байтовых UDP пакетов хостам-владельцам файла.

Limewire

При старте Limewire отправляет много UDP пакетов, размером в 23 и 35 байт. В начале операции загрузки файла этот P2P клиент отсылает большое количество 23 байтовых UDP пакетов.

Skype

При запуске Skype отправляет много 18 байтовых UDP пакетов.

Kazaa

С началом работы Kazaa отправляет 12 байтовые UDP пакеты на различные хосты.

EMule

Когда вы запустите EMule и начнете соединение с сервером, данное приложение оправит большое количество 6 байтовых UDP пакетов с запросами ‘server status request’ и ‘get server info’. Если вы захотите подключиться к сети Kad, Emule в процессе соединения будет отправлять UDP пакеты, размером 27 и 35 байт.

Shareaza

На протяжении всей работы Shareaza периодически отправляет 19 байтовые UDP пакеты.

Результаты этих простых тестов весьма интересны. Мы может использовать этот метод для идентификации P2P приложения, используемого пользователем. Однако, данная технология все еще находится на начальном этапе развития и многое еще предстоит сделать. Для точного результата требуется подробное изучение каждого приложения.

Кроме того, существуют также и другие методы, которые можно применять и комбинировать с техниками, описанными в этой статье, для более эффективного обнаружения P2P пользователей и идентификации P2P приложений. Некоторые P2P приложения подключаются к фиксированным внешним IP адресам для выполнения ряда функций, таких как проверка на наличие обновлений, аутентификация, загрузка рекламы и др. Например, Kazaa во время работы подключается к ssa.Kazaa.com, desktop.Kazaa.com и некоторым другим сайтам. Skype при каждом запуске создает TCP соединение с ui.skype.com.

Также присутствуют другие характеристики, по которым можно производить анализ поведения трафика, например тип переданных данных. Продолжительность соединения также может использоваться для обнаружения P2P трафика, но это добавит дополнительный уровень сложности.

Заключение

Универсального решения для обнаружения работающего P2P приложения не существует. На сегодняшний день самые распространенные методы, проверка открытых портов и анализ трафика, не являются лучшими. Разрабатывайте собственные методы, и, может быть, некоторые из них значительно поднимут планку в эффективности обнаружения P2P трафика и идентификации P2P приложений.

Йеминг Гонг, перевод Владимир Куксенок