Ngrep

ngrep — сетевой пакетный анализатор, написанный Джорданом Риттером. Имеет интерфейс командной строки, основан на библиотеке pcap и использует GNU-реализацию регулярных выражений.

ngrep поддерживает синтаксис Berkeley Packet Filter (BPF) для выбора источников, назначений или протоколов сетевого трафика, а также предоставляет возможность поиска паттернов или регулярных выражений в полезной нагрузке пакетов с помощью синтаксиса, аналогичного утилите grep, отображая данные пакетов в удобном для пользователя формате.

ngrep является приложением с открытым исходным кодом, исходные тексты и бинарные файлы доступны на сайте проекта в GitHub. Программа компилируется и работает на множестве UNIX-подобных операционных систем: Linux, Solaris, illumos, BSD, AIX, а также на Microsoft Windows[2].

Общие сведения
ngrep
Тип Пакетный анализатор
Разработчик Джордан Риттер
Написана на C
Операционные системы Linux, Solaris, illumos, FreeBSD, NetBSD, OpenBSD, Mac OS X, а также другие UNIX-подобные системы, Windows
Последняя версия
Репозиторий github.com/jpr5/ngrep
Лицензия BSD-подобная лицензия
Сайт ngrep.sourceforge.net

Возможности

ngrep аналогичен tcpdump, но дополнительно позволяет искать заданное регулярное выражение (regex) по содержимому пакетов и отображать совпадающие пакеты в терминале или консоли. Программа позволяет переводить сетевой интерфейс в promiscuous-режим, чтобы видеть весь незашифрованный трафик, проходящий по сети.

С помощью подходящего синтаксиса BPF-фильтра ngrep может использоваться для отладки работы текстовых протоколов, таких как HTTP, SMTP, FTP, DNS, а также для поиска определённых строк или шаблонов с помощью регулярных выражений, аналогичных grep[3][4].

ngrep также позволяет захватывать сетевой трафик на кабеле, сохранять дампы файлов в формате pcap, а также читать файлы, созданные другими анализаторами, такими как tcpdump или Wireshark.

У ngrep имеется широкий набор опций и аргументов командной строки. Справочная страница (man page) доступна в UNIX-подобных операционных системах и содержит перечень доступных параметров.

Примеры использования ngrep

В приведённых примерах предполагается, что используется сетевой интерфейс eth0.

  • Захват входящего и исходящего сетевого трафика на интерфейсе eth0 с выводом параметров методов HTTP (TCP/80) GET и POST:
$ ngrep -l -q -d eth0 -i "^GET |^POST " tcp and port 80
  • Захват входящего и исходящего трафика на интерфейсе eth0 с отображением строки User-Agent (HTTP, TCP/80):
$ ngrep -l -q -d eth0 -i "User-Agent: " tcp and port 80
  • Захват входящего и исходящего трафика на интерфейсе eth0 с отображением всех запросов и ответов DNS (UDP/53):
$ ngrep -l -q -d eth0 -i "" udp and port 53

Безопасность

Захват сетевого трафика на уровне интерфейса требует специальных прав на некоторых платформах, особенно в UNIX-подобных системах — обычно нужны права суперпользователя. Поведение ngrep по умолчанию — сбрасывать привилегии и работать под непривилегированным пользователем.

Как и tcpdump, ngrep может быть использован для перехвата и анализа сетевого трафика других пользователей, компьютеров или даже целых сетей.

На сервере или рабочей станции, подключённой к устройству с включённым порт-микрированием на коммутаторе, маршрутизаторе или шлюзе, либо на другом устройстве в LAN, MAN или WAN, привилегированный пользователь, запустивший ngrep, может получить доступ к незашифрованной информации: логинам, паролям, URL-адресам и содержимому веб-страниц, просматриваемых в этой сети.

Поддерживаемые протоколы

Примечания

  1. Release V1_47
  2. ngrep supported platforms (англ.). ngrep.sourceforge.net (23 апреля 2022). Дата обращения: 12 октября 2023. Архивировано 23 апреля 2022 года.
  3. ngrep and regular expressions (англ.). stearns.org (3 октября 2022). Дата обращения: 12 октября 2023. Архивировано 3 октября 2022 года.
  4. ngrep usage (англ.). ngrep.sourceforge.net (8 июля 2023). Дата обращения: 12 октября 2023. Архивировано 8 июля 2023 года.

Ссылки