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-адресам и содержимому веб-страниц, просматриваемых в этой сети.
Поддерживаемые протоколы
Примечания
- ↑ Release V1_47
- ↑ ngrep supported platforms (англ.). ngrep.sourceforge.net (23 апреля 2022). Дата обращения: 12 октября 2023. Архивировано 23 апреля 2022 года.
- ↑ ngrep and regular expressions (англ.). stearns.org (3 октября 2022). Дата обращения: 12 октября 2023. Архивировано 3 октября 2022 года.
- ↑ ngrep usage (англ.). ngrep.sourceforge.net (8 июля 2023). Дата обращения: 12 октября 2023. Архивировано 8 июля 2023 года.
Ссылки
- http://ngrep.sourceforge.net/ — официальный сайт ngrep
- http://linux.die.net/man/8/ngrep/ — руководства по ngrep для Linux