ngrep – Сетевой анализатор пакетов для Linux

Ngrep (network grep) – простой, но мощный сетевой анализатор пакетов.

Это инструмент типа grep, применяемый к сетевому уровню – он соответствует трафику, проходящему через сетевой интерфейс.

Он позволяет указать расширенное регулярное или шестнадцатеричное выражение для сопоставления с полезными данными (фактическая информация или сообщение в переданных данных, но не с автогенерированными метаданными) пакетов.

Пакет ngrep доступен для установки из системных репозиториев по умолчанию в основных дистрибутивах Linux с использованием инструмента управления пакетами, как показано на рисунке.

$ sudo apt install ngrep$ sudo yum install ngrep$ sudo dnf install ngrep

После установки ngrep вы можете начать анализ трафика в своей сети Linux, используя следующие команды.

1. Следующая команда поможет вам сопоставить все запросы ping в рабочем интерфейсе по умолчанию.

Вам нужно открыть другой терминал и попытаться выполнить пинг другой удаленной машины.

Флаг -q сообщает ngrep работать в тихом режиме, чтобы не выводить никакой информации, отличной от заголовков пакетов и их полезных нагрузок.

$ sudo ngrep -q ‘.’ ‘icmp’

interface: enp0s3 (192.168.0.0/255.255.255.0)

filter: ( icmp ) and ((ip || ip6) || (vlan && (ip || ip6)))

match: .I 192.168.0.104 -> 192.168.0.103 8:0]…~oG[….j………………….. !»#$%&'()*+,-./01234567 I 192.168.0.103 -> 192.168.0.104 0:0]…~oG[….j………………….. !»#$%&'()*+,-./01234567 I 192.168.0.104 -> 192.168.0.103 8:0]….oG[………………………. !»#$%&'()*+,-./01234567 I 192.168.0.103 -> 192.168.0.104 0:0]….oG[………………………. !»#$%&'()*+,-./01234567

Вы можете нажать Ctrl + C, чтобы завершить его выполнение

2. Чтобы сопоставить только трафик, идущий на конкретный целевой сайт, например «google.com», выполните следующую команду, затем попробуйте получить к нему доступ из браузера.

$ sudo ngrep -q ‘.’ ‘host google.com’

interface: enp0s3 (192.168.0.0/255.255.255.0)

filter: ( host google.com ) and ((ip || ip6) || (vlan && (ip || ip6)))

match: .T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]………………;.(…RZr..$….s=..l.Q+R.U..4..g.j..I,.l..:{y.a,….C{5>……p..@..EV.. T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]………….l…….!,0hJ….0.%F..!…l|………PL..X…t..T.2DC….. ..y…~Y;.$@Yv.Q6

3. Если вы серфите сайты в Интернете, запустите следующую команду, чтобы контролировать, какие файлы запрашивает ваш браузер :.

$ sudo ngrep -q ‘.’ ‘host google.com’

interface: enp0s3 (192.168.0.0/255.255.255.0)

filter: ( host google.com ) and ((ip || ip6) || (vlan && (ip || ip6)))

match: .T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]………………;.(…RZr..$….s=..l.Q+R.U..4..g.j..I,.l..:{y.a,….C{5>……p..@..EV.. T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]………….l…….!,0hJ….0.%F..!…l|………PL..X…t..T.2DC….. ..y…~Y;.$@Yv.Q6

4. Чтобы увидеть все пересечения источника или порт назначения 25 (SMTP), выполните следующую команду.

$ sudo ngrep port 25

5. Чтобы отслеживать любой сетевой трафик из syslog на появление слова «error», используйте следующую команду.

$ sudo ngrep -d any ‘error’ port 514

Важно отметить, что этот инструмент может преобразовывать имена портов службы, хранящиеся в «/etc/services» (в Unix-подобных системах, таких как Linux), в номера портов.

Эта команда эквивалентна приведенной выше команде.

6. Вы также можете запустить ngrep на HTTP-сервер (порт 80), он будет соответствовать всем запросам хоста назначения, как показано ниже

$ sudo ngrep port 80

interface: eth0 (64.90.164.72/255.255.255.252)

filter: ip and ( port 80 )####T 67.169.59.38:42167 -> 64.90.164.74:80 [AP]GET / HTTP/1.1..User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera 7.21 [en]..Host: www.darkridge.com..Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1..Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1..Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0..Cookie: SQMSESSID=5272f9ae21c07eca4dfd75f9a3cda22e..Cookie2: $Version=1..Connection:Keep-Alive, TE..TE: deflate, gzip, chunked, identity, trailers….##

Как видно из вышесказанного, вся передача HTTP-заголовков отображается в деталях.

Трудно разобрать, так что давайте посмотрим, что произойдет, когда вы примените режим -W byline.

$ sudo ngrep -W byline port 80

interface: eth0 (64.90.164.72/255.255.255.252)

filter: ip and ( port 80 )####T 67.169.59.38:42177 -> 64.90.164.74:80 [AP]GET / HTTP/1.1.User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera …Host: www.darkridge.com.Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9 …Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1.Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0.Cookie: SQMSESSID=5272f9ae21c07eca4dfd75f9a3cda22e.Cookie2: $Version=1.Cache-Control: no-cache.Connection: Keep-Alive, TE.TE: deflate, gzip, chunked, identity, trailers.

7. Чтобы вывести временную метку в формате YYYY / MM / DD HH: MM: SS.UUUUUU каждый раз, когда пакет согласован, используйте флаг -t.

$ sudo ngrep -t -W byline port 80

interface: enp0s3 (192.168.0.0/255.255.255.0)

filter: ( port 80 ) and ((ip || ip6) || (vlan && (ip || ip6)))####T 2018/07/12 16:33:19.348084 192.168.0.104:43048 -> 172.217.160.174:80 [AP]GET / HTTP/1.1.Host: google.com.User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; GNU C 4.8.5; text).Accept: */*.Accept-Language: en,*;q=0.1.Accept-Encoding: gzip, deflate, bzip2.Accept-Charset: us-ascii,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,ISO-8859-5,utf-8.Connection: keep-alive.

8. Чтобы не допустить, чтобы интерфейс контролировался в беспорядочном режиме (где он перехватывает и считывает каждый сетевой пакет, который поступает целиком), добавьте флаг -p.

$ sudo ngrep -p -W byline port 80

9. Другим важным вариантом является -N, который полезен, если вы наблюдаете необработанные или неизвестные протоколы.

Он сообщает ngrep отображать номер подпротокола вместе с односимвольным идентификатором.

$ sudo ngrep -N -W byline

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!