Интерфейс прикладного программирования для захвата сетевого трафика
В области администрирования компьютерных сетей pcap — это интерфейс прикладного программирования (API) для захвата сетевого трафика . Хотя название является аббревиатурой от packet capture , это не полное название API. Unix-подобные системы реализуют pcap в библиотеке libpcap ; для Windows существует порт libpcap под названием WinPcap , который больше не поддерживается и не разрабатывается, а также порт под названием Npcap для Windows 7 и более поздних версий, который все еще поддерживается.
Программное обеспечение для мониторинга может использовать libpcap, WinPcap или Npcap для захвата сетевых пакетов, проходящих по компьютерной сети , а в более новых версиях — для передачи пакетов по сети на канальном уровне и для получения списка сетевых интерфейсов для возможного использования с libpcap, WinPcap или Npcap.
API pcap написано на языке C , поэтому другие языки, такие как Java , языки .NET и языки сценариев, как правило, используют обертку ; ни libpcap, ни сама WinPcap не предоставляют таких оберток. Программы на C++ могут напрямую ссылаться на API C или использовать объектно-ориентированную обертку.
Функции
libpcap, WinPcap и Npcap предоставляют механизмы захвата и фильтрации пакетов для многих сетевых инструментов с открытым исходным кодом и коммерческих сетевых инструментов, включая анализаторы протоколов ( анализаторы пакетов ), сетевые мониторы , системы обнаружения сетевых вторжений , генераторы трафика и сетевые тестеры.
Большинство современных Unix-подобных систем предоставляют механизм, с помощью которого программа может захватывать сетевой трафик к машине, на которой запущена программа, и с нее, а в некоторых случаях и другой трафик, к которому подключена эта машина. Однако эти механизмы существенно отличаются друг от друга; библиотека libpcap предоставляет общий API для доступа к этим механизмам, что позволяет писать программы для захвата сетевого трафика, не беспокоясь о деталях всех этих механизмов.
libpcap, WinPcap и Npcap также поддерживают сохранение захваченных пакетов в файл и чтение файлов, содержащих сохраненные пакеты; приложения могут быть написаны с использованием libpcap, WinPcap или Npcap, чтобы иметь возможность захватывать сетевой трафик и анализировать его, или читать сохраненный захват и анализировать его, используя тот же код анализа. Файл захвата, сохраненный в формате, который используют libpcap, WinPcap и Npcap, может быть прочитан приложениями, которые понимают этот формат, такими как tcpdump , Wireshark , CA NetMaster или Microsoft Network Monitor 3.x. Формат файла описан в Internet-Draft draft-ietf-opsawg-pcap; [5] также доступна текущая редакционная версия черновика. [6]
Тип MIME для формата файла, созданного и прочитанного libpcap, WinPcap и Npcap, — application/vnd.tcpdump.pcap. Типичное расширение файла — .pcap, хотя .cap и .dmp также широко используются. [7]
История
libpcap изначально была разработана разработчиками tcpdump в Network Research Group в Lawrence Berkeley Laboratory . Низкоуровневый код захвата пакетов, чтения файла захвата и записи файла захвата tcpdump был извлечен и преобразован в библиотеку, с которой был связан tcpdump. [8] В настоящее время он разрабатывается той же группой tcpdump.org, которая разрабатывает tcpdump. [9]
библиотеки pcap для Windows
Хотя libpcap изначально разрабатывался для Unix-подобных операционных систем, был создан успешный порт для Windows под названием WinPcap. Он не поддерживается с 2013 года, [10] и было выпущено несколько конкурирующих форков с новыми функциями и поддержкой новых версий Windows.
WinPcap
WinPcap состоит из: [11]
Программисты Политехнического университета Турина написали оригинальный код. По состоянию на 2008 год CACE Technologies, компания, созданная некоторыми разработчиками WinPcap, разрабатывала и поддерживала продукт. CACE была приобретена Riverbed Technology 21 октября 2010 года. [12]
Поскольку WinPcap использует старые API NDIS 5.x, он не работает на некоторых сборках Windows 10, которые устарели или удалили эти API в пользу новых API NDIS 6.x. Он также накладывает некоторые ограничения, такие как невозможность захвата тегов VLAN 802.1Q в заголовках Ethernet .
Проект WinPcap прекратил разработку, а WinPcap и WinDump больше не поддерживаются. Последний официальный релиз WinPcap был 4.1.3, выпущенный 8 марта 2013 года. [13]
Npcap
Npcap — это библиотека анализа пакетов Nmap Project для Windows. [14] Она основана на WinPcap, но написана для использования сетевых улучшений Windows в NDIS версии 6. Ее авторы переписали драйвер протокола WinPcap NDIS 5 как драйвер облегченного фильтра (LWF), что снижает накладные расходы на обработку. [15]
Техническое обслуживание Npcap обновило версию включенной библиотеки libpcap до последней доступной, что позволило авторам программного обеспечения использовать новые функции API, которые программное обеспечение Linux уже поддерживало. [16] Большинство программного обеспечения, которое использовало WinPcap, можно легко портировать для использования Npcap с минимальными изменениями. [17]
Npcap представил несколько нововведений, которых не было в WinPcap:
- Npcap можно ограничить, чтобы только администраторы могли прослушивать пакеты. [18]
- Npcap способен прослушивать и внедрять пакеты обратной связи (передачи между службами на одной машине) с помощью платформы фильтрации Windows . [19]
- Npcap может захватывать кадры WiFi 802.11 на различных общедоступных сетевых адаптерах. [20]
В отличие от Nmap , Npcap является проприетарным программным обеспечением и требует специальной лицензии для использования и распространения, за исключением некоторых ограниченных случаев внутреннего использования. [21]
Win10Pcap
Реализация Win10Pcap также основана на модели драйвера NDIS 6 и стабильно работает с Windows 10. [ 22] Однако проект неактивен с 2016 года. [23]
Программы, которые используют или использовали libpcap
- Bit-Twist — генератор и редактор пакетов Ethernet на основе libpcap для BSD , Linux и Windows.
- Cain and Abel — устаревший инструмент восстановления пароля для Microsoft Windows
- EtherApe — графический инструмент для мониторинга сетевого трафика и использования полосы пропускания в режиме реального времени.
- Firesheep — устаревшее расширение для веб-браузера Firefox , которое перехватывало пакеты и осуществляло перехват сеанса.
- iftop — инструмент для отображения использования полосы пропускания (аналогично top для сетевого трафика)
- Kismet , для беспроводных локальных сетей 802.11
- L0phtCrack — приложение для аудита и восстановления паролей .
- McAfee ePolicy Orchestrator, функция обнаружения вредоносных систем
- ngrep , также известный как «сетевой grep », изолирует строки в пакетах, отображает данные пакетов в удобном для пользователя виде.
- Nmap — сетевая утилита для сканирования портов и снятия отпечатков пальцев
- Pirni — устаревший инструмент сетевой безопасности для взломанных устройств iOS .
- Scapy — инструмент для манипулирования пакетами в компьютерных сетях, написанный на Python Филиппом Бионди.
- Snort — система обнаружения сетевых вторжений.
- Suricata — платформа для предотвращения и анализа сетевых вторжений.
- Symantec Data Loss Prevention, используется для мониторинга и идентификации конфиденциальных данных, отслеживания их использования и местоположения. Политики потери данных позволяют блокировать передачу конфиденциальных данных из сети или копирование их на другое устройство.
- tcpdump — инструмент для захвата и дампа пакетов для дальнейшего анализа, а также WinDump — порт tcpdump для Windows.
- Zeek — система обнаружения вторжений и платформа мониторинга сети .
- URL Snooper, находит URL-адреса аудио- и видеофайлов, чтобы разрешить их запись.
- WhatPulse — статистическое измерительное приложение (входные данные, сеть, время безотказной работы).
- Wireshark (ранее Ethereal) — графический инструмент для захвата пакетов и анализа протоколов.
- XLink Kai , программное обеспечение, позволяющее играть в различные консольные игры по локальной сети в режиме онлайн
- Xplico — инструмент сетевого криминалистического анализа (NFAT).
Библиотеки-обертки для libpcap
- C++ : Libtins, Libcrafter, PcapPlusPlus
- Perl : Net::Pcap
- Python : python-libpcap, Pcapy, WinPcapy
- Рубин : PacketFu
- Rust : pcap
- Tcl : tclpcap, tcap, pktsrc
- Java : jpcap, jNetPcap, Jpcap, Pcap4j, Jxnet
- .NET : WinPcapNET, SharpPcap, Pcap.Net
- Хаскель : pcap
- OCaml : mlpcap
- Схема курицы : pcap
- Common Lisp : ПЛОКАМИ
- Ракетка : SPeaCAP
- Go : pcap Андреаса Креннмайера, pcap-форк предыдущего pcap Мика Гибена, pcap разработан как часть пакета gopacket
- Эрланг : epcap
- Node.js : node_pcap
Не-pcap библиотеки, которые читают pcap-файлы
Другие приложения или устройства, которые читают или записывают файлы pcap или pcapng
- Apache Drill , SQL-движок с открытым исходным кодом для интерактивного анализа больших наборов данных. [24] [25]
- EndaceProbe от Endace — это масштабная система захвата пакетов, которая непрерывно записывает сетевой трафик за недели или месяцы. [26]
Ссылки
- ^ "tcpdump и libpcap последняя версия". tcpdump.org . Получено 2023-02-08 .
- ^ "лицензия tcpdump и libpcap". tcpdump.org . Получено 2020-05-02 .
- ^ "Журнал изменений WinPcap".
- ^ "npcap/CHANGELOG.md". GitHub .
- ^ Формат файла захвата PCAP. 23 июля 2023 г. Идентификатор draft-ietf-opsawg-pcap.
- ^ «Формат файла захвата PCAP». 1 марта 2024 г.
- ^ Тернер, Глен (2011-03-30). "Запись IANA о заявке на тип MIME application/vnd.tcpdump.pcap". IANA . Получено 2023-02-25 .
- ^ МакКейн, Стив. "libpcap: Архитектура и методология оптимизации для захвата пакетов" (PDF) . Получено 27 декабря 2013 г.
- ^ "TCPDUMP/LIBPCAP public repository" . Получено 27 декабря 2013 г. .
- ^ "WinPcap News" . Получено 6 ноября 2017 г. .
- ^ "WinPcap internals" . Получено 27 декабря 2013 г. .
- ^ "Riverbed расширяет свое присутствие на рынке управления производительностью сетей с учетом приложений, приобретая CACE Technologies" (пресс-релиз). Riverbed Technology . 2010-10-21. Архивировано из оригинала 2013-03-08 . Получено 2010-10-21 .
- ^ "WinPcap · Новости". WinPcap . 2013-03-08.
- ^ "Npcap".
- ^ "Фильтрация драйверов". 15 декабря 2021 г.
- ^ "Выпуск Npcap 1.20". GitHub .
- ^ "Обновление программного обеспечения WinPcap до Npcap". Разработка программного обеспечения с помощью Npcap . Получено 2023-02-25 .
- ^ "Параметры графического установщика". Руководство пользователя Npcap . Получено 25.02.2023 .
- ^ "Для программного обеспечения, использующего функцию обратной связи Npcap". Руководство пользователя Npcap . Получено 25.02.2023 .
- ^ "Для программного обеспечения, использующего функцию Npcap raw 802.11". Руководство пользователя Npcap . Получено 25.02.2023 .
- ^ "Лицензия Npcap". GitHub .
- ^ "Win10Pcap: WinPcap для Windows 10".
- ^ Win10Pcap: WinPcap для Windows 10 (модель драйвера NDIS 6.x): SoftEtherVPN/Win10Pcap, проект SoftEther VPN, 2019-12-31 , получено 2020-01-09
- ↑ Бевенс, Бриджит (31 июля 2017 г.). «Drill 1.11 Released».
- ^ Пакет.java на GitHub
- ^ "Что может читать или сохранять PCAP?". Что такое файл PCAP? . Endace .
Внешние ссылки
- Официальный сайт , libpcap, tcpdump
- Официальный сайт , Npcap
- Официальный сайт , WinPcap, WinDump
- Список общедоступных файлов PCAP