Pcap

Pcap — API для захвата сетевого трафика в сфере администрирования компьютерных сетей. Название происходит от «packet capture» («захват пакетов»), однако формально API так не называется. В Unix-подобных системах стандартная реализация доступна как библиотека libpcap; для Windows существуют адаптации: устаревшая и более не развиваемая WinPcap и поддерживаемая для Windows 7 и новее Npcap.

Любое программное обеспечение для мониторинга может использовать libpcap, WinPcap или Npcap для захвата сетевых пакетов, пересылаемых по компьютерной сети, а также для передачи пакетов (в новых версиях — на канальном уровне) и получения списка доступных сетевых интерфейсов для последующей работы.

API pcap написан на C, поэтому для других языков, таких как Java, .NET, скриптовый язык, обычно применяются обёртки; сами libpcap и WinPcap такие адаптации не предоставляют. Программы на C++ могут работать с C API напрямую либо использовать объектно-ориентированные обёртки.

Что важно знать
libpcap
Тип библиотека для захвата пакетов
Разработчик The Tcpdump team
Написана на C
Операционные системы Linux, Solaris, FreeBSD, NetBSD, OpenBSD, macOS, другие Unix-подобные системы
Последняя версия 1.10.3 (12 января 2023)
Репозиторий github.com/the-tcpdump-g…
Лицензия BSD[1]
Сайт tcpdump.org
WinPcap
Тип библиотека для захвата пакетов
Разработчик Riverbed Technology
Написана на Си
Операционная система Windows
Последняя версия 4.1.3 (8 марта 2013)
Состояние поддержка прекращена
Лицензия бесплатная программа
Сайт winpcap.org
Npcap
Тип библиотека для захвата пакетов
Разработчик проект Nmap
Написана на Си
Операционная система Windows
Последняя версия 1.71 (19 августа 2022)
Лицензия BSD
Сайт npcap.com

Возможности

libpcap, WinPcap и Npcap используются как движки захвата и фильтрации пакетов во множестве открытых и коммерческих сетевых инструментах, среди которых — протокол-анализаторы (снифферы), системы сетевого мониторинга, системы обнаружения вторжений, генераторы трафика и сетевые тестеры.

Библиотеки libpcap, WinPcap и Npcap поддерживают запись перехваченных пакетов в файл и чтение файлов с сохранёнными пакетами. Их формат позволяют разрабатывать приложения для онлайн-анализа сетевого трафика либо для чтения снятых ранее дампов с последующим анализом тем же программным кодом. Дамп-файлы, записанные в формате, поддерживаемом этими библиотеками, можно открыть в таких программах, как tcpdump, Wireshark, CA NetMaster, Microsoft Network Monitor 3.x и других.

Для файлового формата, используемого этими библиотеками, MIME-тип — application/vnd.tcpdump.pcap. Обычно файлы имеют расширение .pcap, также распространены .cap и .dmp.

История

libpcap была изначально разработана группой tcpdump в Сетевой исследовательской группе Лоуренс Беркли Лаборатории. Код низкоуровневого захвата пакетов, чтения и записи файлов был выделен из tcpdump в самостоятельную библиотеку, на которую теперь и опирается сам tcpdump[2]. В настоящее время pcap поддерживается тем же коллективом tcpdump.org, который занимается развитием tcpdump[3].

Платформы и совместимость

pcap-библиотеки для Windows

Хотя изначально libpcap была разработана для Unix-подобных ОС, для Windows создана успешная адаптация под названием WinPcap. С 2013 года проект более не поддерживается[4], а для новых версий Windows появился ряд форков-конкурентов с более широким функционалом.

WinPcap

WinPcap включает в себя:[5]

  • Драйверы для семейства Windows NT (x86 и x86-64) (Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows 8, Windows 10), использующие NDIS 5.x для прямого доступа к сетевым пакетам через контроллер сетевого интерфейса;
  • Библиотеки более низкого уровня для взаимодействия с этими драйверами;
  • Имплементацию API libpcap с использованием соответствующей низкоуровневой библиотеки.

Оригинальный код был написан в Политехническом университете Турина. С 2008 года продукт развивала и поддерживала компания CACE Technologies, основанная частью разработчиков. 21 октября 2010 она была приобретена Riverbed Technology[6].

Поскольку WinPcap использует устаревшие API NDIS 5.x, он не работает или не рекомендуется к использованию на некоторых сборках Windows 10, где поддержка этих API прекращена в пользу NDIS 6.x. Среди ограничений — невозможность захвата 802.1Q VLAN-меток в Ethernet-кадрах.

Разработка WinPcap и WinDump прекращена. Последняя официальная версия WinPcap — 4.1.3, выпущенная 8 марта 2013 года[7].

Npcap

Npcap — библиотека для захвата пакетов под Windows от проекта Nmap[8]. Npcap основан на WinPcap, но реализован с использованием улучшенной сетевой архитектуры NDIS 6, что снижает нагрузку по сравнению с прототипом NDIS 5 (WinPcap)[9]. В обновлениях Npcap версия встроенной libpcap регулярно синхронизируется с последней доступной версией, позволяя разработчикам использовать современные API-функции[10]. Большинство программ, использующих WinPcap, могут быть легко переведены на использование Npcap[11].

Npcap реализует ряд возможностей, отсутствующих в WinPcap:

  • возможность разрешить захват пакетов только администраторам[12];
  • поддержка захвата и инъекции loopback-пакетов между службами на одной машине с использованием Windows Filtering Platform[13];
  • возможность захватывать Wi-Fi-кадры IEEE 802.11 на популярных адаптерах[14].

Win10Pcap

Отдельная реализация Win10Pcap также построена на драйверной модели NDIS 6 и поддерживает работу в Windows 10 без известных сбоев[15], однако с 2016 года проект не развивается[16].

Технические особенности

Программы, использующие или использовавшие libpcap

  • Bit-Twist — генератор и редактор Ethernet-пакетов для BSD, Linux и Windows.
  • Cain and Abel — снятая с разработки программа для восстановления паролей для Microsoft Windows.
  • EtherApe — графическое средство мониторинга сетевого трафика и использования полосы пропускания.
  • Firesheep — прекращённое расширение для Firefox, осуществлявшее захват пакетов и угон сессий.
  • iftop — инструмент отображения использования полосы пропускания (аналог top для сетевого трафика).
  • Kismet — инструмент для беспроводных сетей 802.11.
  • L0phtCrack — средство проверки качества и восстановления паролей.
  • McAfee ePolicy Orchestrator (компонент Rogue System Detection).
  • ngrep — утилита, показывающая искомые строки в пакетах, выводит данные пакетов в человекочитаемой форме.
  • Nmap — утилита для сканирования портов и идентификации стеков.
  • Pirni — сетьвая утилита для взломанных iOS-устройств (не развивается).
  • Scapy — инструмент манипуляции пакетами для Python, автор — Филипп Биони.
  • Snort — система обнаружения вторжений.
  • Suricata — платформа предотвращения атак и анализа сетевого трафика.
  • Symantec Data Loss Prevention — платформа DLP, отслеживает и предотвращает утечку конфиденциальных данных.
  • tcpdump — анализатор пакетов; WinDump — порт для Windows.
  • Zeek — IDS/платформа мониторинга сетей.
  • URL Snooper — средство поиска URL для скачивания медиафайлов.
  • WhatPulse — статистическая утилита (учёт нажатий, сетевого трафика, аптайма).
  • Wireshark (бывш. Ethereal) — графическая программа для перехвата и анализа сетевых пакетов.
  • XLink Kai — эмуляция LAN для сетевых игр на консолях.
  • Xplico — утилита сетевой судебной экспертизы (NFAT).

Обёртки для libpcap

Сторонние Python-библиотеки для работы с pcap

Другие проекты, использующие pcap или pcapng для чтения/записи

  • Apache Drill — открытый SQL-движок для интерактивного анализа больших данных[17].[18]
  • Endace EndaceProbe — система для длительного высоконагруженного захвата сетевого трафика[19].

Примечания

Ссылки