tcpdump

TCPDUMP Руководство для начинающих

TCPDUMP Руководство для начинающих
Tcpdump - это бесплатный анализатор пакетов беспроводной сети с открытым исходным кодом, работающий в интерфейсе командной строки. Это наиболее часто используемый инструмент командной строки для анализа сетевого трафика. Tcpdump позволяет пользователям видеть, читать или захватывать сетевой трафик, передаваемый по сети, подключенной к компьютеру. Это полезно в системном администрировании, мониторинге сетевого трафика (для проблем или иным образом).

Первоначально он был написан в 1988 году четырьмя сотрудниками группы сетевых исследований в лаборатории Лоуренса Беркли в Калифорнии. Он был организован одиннадцатью годами позже Майклом Ричардсоном и Биллом Феннером в 1999 году, которые создали сайт tcpdump. Tcpdump работает во всех Unix-подобных операционных системах. Версия Tcpdump для Windows называется WinDump и использует WinPcap, альтернативу libpcap для Windows.

Используйте оснастку для установки tcpdump:

$ sudo snap установить tcpdump

Используйте свой менеджер пакетов для установки tcpdump:

$ sudo apt-get install tcpdump (Debian / Ubuntu)
$ sudo dnf install tcpdump (CentOS / RHEL 6 и 7)
$ sudo yum install tcpdump (Fedora / CentOS / RHEL 8)

Давайте посмотрим на различные варианты использования и результаты, когда мы исследуем tcpdump!

UDP

Tcpdump также может сбрасывать UDP-пакеты. Мы будем использовать инструмент netcat (nc), чтобы отправить UDP-пакет, а затем сбросить его.

$ echo -n "tcpdumper" | nc -w 1 -u локальный хост 1337

В приведенной выше команде мы отправляем UDP-пакет, состоящий из строки «Tcpdumper» в порт UDP 1337 через localhost. Tcpdump захватывает пакет, отправляемый через порт UDP 1337, и отображает его.

Теперь мы сбросим этот пакет с помощью tcpdump.

$ sudo tcpdump -i lo порт udp 1337 -vvv -X

Эта команда захватит и покажет захваченные данные из пакетов в ASCII, а также в шестнадцатеричной форме.

tcpdump: прослушивание lo, тип канала EN10MB (Ethernet), длина снимка 262144 байта
04:39:39.072802 IP (tos 0x0, ttl 64, id 32650, смещение 0, флаги [DF], протокол протокола UDP (17), длина 37)
localhost.54574> локальный.1337: [плохой udp cksum 0xfe24 -> 0xeac6!] UDP, длина 9
0x0000: 4500 0025 7f8a 4000 4011 bd3b 7f00 0001 E…%… @.@…;…
0x0010: 7f00 0001 d52e 0539 0011 fe24 7463 7064… 9… $ tcpd
0x0020: 756d 7065 72 мкм

Как мы видим, пакет был отправлен на порт 1337, а длина была равна 9, так как строка tcpdumper составляет 9 байтов. Мы также можем видеть, что пакет был отображен в шестнадцатеричном формате.

DHCP

Tcpdump также может проводить исследования пакетов DHCP по сети. DHCP использует порт UDP 67 или 68, поэтому мы определим и ограничим tcpdump только для пакетов DHCP. Предположим, мы используем сетевой интерфейс Wi-Fi.
Здесь используется следующая команда:

$ sudo tcpdump -i wlan0 порт 67 или порт 68 -e -n -vvv
tcpdump: прослушивание wlan0, тип канала EN10MB (Ethernet), длина снимка 262144 байта
03:52:04.004356 00: 11: 22: 33: 44: 55> 00: 11: 22: 33: 44: 66, ethertype IPv4 (0x0800), длина 342: (tos 0x0, ttl 64, id 39781, смещение 0, флаги [DF ], протокол UDP (17), длина 328)
192.168.10.21 год.68> 192.168.10.1.67: [udp sum ok] BOOTP / DHCP, запрос от 00: 11: 22: 33: 44: 55, длина 300, xid 0xfeab2d67, флаги [none] (0x0000)
Клиент-IP 192.168.10.16
Клиент-Ethernet-адрес 00: 11: 22: 33: 44: 55
Vendor-rfc1048 Расширения
Волшебное печенье 0x63825363
DHCP-сообщение (53), длина 1: выпуск
Server-ID (54), длина 4: 192.168.10.1
Имя хоста (12), длина 6: "попугай"
КОНЕЦ (255), длина 0
PAD (0), длина 0, встречается 42

DNS

DNS, также известная как система доменных имен, подтверждает, что предоставляет вам то, что вы ищете, сопоставляя доменное имя с адресом домена. Чтобы проверить связь на уровне DNS вашего устройства через Интернет, вы можете использовать tcpdump следующим образом. DNS использует UDP-порт 53 для связи.

$ sudo tcpdump -i wlan0 udp порт 53
tcpdump: прослушивание wlan0, линк-тип EN10MB (Ethernet), длина снимка 262144 байта
04:23:48.516616 IP (tos 0x0, ttl 64, id 31445, смещение 0, флаги [DF], протокол протокола UDP (17), длина 72)
192.168.10.16.45899> один.один.один.один.домен: [udp sum ok] 20852+ A? мозилла.Cloudflare-DNS.ком. (44)
04:23:48.551556 IP (tos 0x0, ttl 60, id 56385, смещение 0, флаги [DF], протокол протокола UDP (17), длина 104)
один.один.один.один.домен> 192.168.10.16.45899: [udp sum ok] 20852 q: A? мозилла.Cloudflare-DNS.ком. 2/0/0 Mozilla.Cloudflare-DNS.ком. [24сек] A 104.16.249.249, Mozilla.Cloudflare-DNS.ком. [24сек] A 104.16.248.249 (76)
04:23:48.648477 IP (tos 0x0, ttl 64, id 31446, смещение 0, флаги [DF], протокол UDP (17), длина 66)
192.168.10.16.34043> один.один.один.один.домен: [udp sum ok] 40757+ PTR? 1.1.1.1.in-addr.арпа. (38)
04:23:48.688731 IP (tos 0x0, ttl 60, id 56387, смещение 0, флаги [DF], протокол протокола UDP (17), длина 95)
один.один.один.один.домен> 192.168.10.16.34043: [udp sum ok] 40757 q: PTR? 1.1.1.1.in-addr.арпа. 1/0/0 1.1.1.1.in-addr.арпа. [26m53s] PTR one.один.один.один. (67)

ARP

Протокол разрешения адресов используется для обнаружения адреса канального уровня, такого как MAC-адрес. Он связан с заданным адресом интернет-уровня, обычно с адресом IPv4.

Мы используем tcpdump для захвата и чтения данных, передаваемых в пакетах arp. Команда очень проста:

$ sudo tcpdump -i wlan0 arp -vvv
tcpdump: прослушивание wlan0, тип канала EN10MB (Ethernet), длина снимка 262144 байта
03:44:12.023668 ARP, Ethernet (len 6), IPv4 (len 4), запрос у кого 192.168.10.1 рассказ 192.168.10.2, длина 28
03:44:17.140259 ARP, Ethernet (len 6), IPv4 (len 4), запрос у кого есть 192.168.10.21 скажите 192.168.10.1, длина 28
03:44:17.140276 ARP, Ethernet (длина 6), IPv4 (длина 4), ответ 192.168.10.21 is-at 00: 11: 22: 33: 44: 55 (oui Unknown), длина 28
03:44:42.026393 ARP, Ethernet (len 6), IPv4 (len 4), запрос у кого есть 192.168.10.1 рассказ 192.168.10.2, длина 28

ICMP

ICMP, также известный как протокол управляющих сообщений Интернета, является поддерживающим протоколом в наборе Интернет-протоколов. ICMP используется как информационный протокол.

Чтобы просмотреть все пакеты ICMP на интерфейсе, мы можем использовать эту команду:

$ sudo tcpdump icmp -vvv
tcpdump: прослушивание wlan0, тип канала EN10MB (Ethernet), длина снимка 262144 байта
04:26:42.123902 IP (tos 0x0, ttl 64, id 14831, смещение 0, флаги [DF], протокол ICMP (1), длина 84)
192.168.10.16> 192.168.10.1: эхо-запрос ICMP, идентификатор 47363, последовательность 1, длина 64
04:26:42.128429 IP (tos 0x0, ttl 64, id 32915, смещение 0, флаги [нет], протокол ICMP (1), длина 84)
192.168.10.1> 192.168.10.16: эхо-ответ ICMP, идентификатор 47363, последовательность 1, длина 64
04:26:43.125599 IP (tos 0x0, ttl 64, id 14888, смещение 0, флаги [DF], протокол ICMP (1), длина 84)
192.168.10.16> 192.168.10.1: эхо-запрос ICMP, идентификатор 47363, последовательность 2, длина 64
04:26:43.128055 IP (tos 0x0, ttl 64, id 32916, смещение 0, флаги [нет], протокол ICMP (1), длина 84)
192.168.10.1> 192.168.10.16: эхо-ответ ICMP, идентификатор 47363, последовательность 2, длина 64

NTP

NTP - это сетевой протокол, разработанный специально для синхронизации времени в сети машин. Чтобы захватить трафик на ntp:

$ sudo tcpdump dst порт 123
04:31:05.547856 IP (tos 0x0, ttl 64, id 34474, смещение 0, флаги [DF], протокол UDP (17), длина 76)
192.168.10.16.ntp> время-b-wwv.нист.правительство.ntp: [udp sum ok] NTPv4, клиент, длина 48
Индикатор скачка: часы несинхронизированы (192), уровень 0 (не указан), опрос 3 (8 с), точность -6
Корневая задержка: 1.000000, Корневая дисперсия: 1.000000, Reference-ID: (не указано)
Контрольная отметка времени: 0.000000000
Отметка времени отправителя: 0.000000000
Отметка времени получения: 0.000000000
Отметка времени передачи: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Отправитель - отметка времени получения: 0.000000000
Отправитель - отметка времени передачи: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (tos 0x0, ttl 56, id 234, смещение 0, флаги [нет], протокол UDP (17), длина 76)
time-b-wwv.нист.правительство.ntp> 192.168.10.16.ntp: [udp sum ok] NTPv3, Сервер, длина 48
Индикатор прыжка: (0), уровень 1 (первичный эталон), опрос 13 (8192 с), точность -29
Корневая задержка: 0.000244, Корневая дисперсия: 0.000488, Идентификатор ссылки: NIST
Отметка времени ссылки: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Отметка времени отправителя: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Отметка времени получения: 3825358275.028660181 (2021-03-21T23: 31: 15Z)
Отметка времени передачи: 3825358275.028661296 (2021-03-21T23: 31: 15Z)
Отправитель - отметка времени получения: +9.480896026
Отправитель - отметка времени передачи: +9.480897141

SMTP

SMTP или простой протокол передачи почты в основном используется для электронной почты. Tcpdump может использовать это для извлечения полезной информации из электронной почты. Например, чтобы извлечь получателей / отправителей электронной почты:

$ sudo tcpdump -n -l порт 25 | grep -i 'ПОЧТА ОТ \ | RCPT TO'

IPv6

IPv6 это «следующее поколение» IP, предоставляющее широкий спектр IP-адресов. IPv6 помогает обеспечить долгосрочное здоровье Интернета.

Для захвата трафика IPv6 используйте фильтр ip6, указав протоколы TCP и UDP с помощью proto 6 и proto-17.

$ sudo tcpdump -n -i любой ip6 -vvv
tcpdump: тип канала данных LINUX_SLL2
tcpdump: прослушивание любого, LINUX_SLL2 типа ссылки (готовая версия Linux v2), длина снимка 262144 байта
04:34:31.847359 lo В IP6 (метка потока 0xc7cb6, hlim 64, следующий заголовок UDP (17) длина полезной нагрузки: 40) :: 1.49395> :: 1.49395: [неверный udp cksum 0x003b -> 0x3587!] UDP, длина 32
04:34:31.859082 lo в IP6 (метка потока 0xc7cb6, hlim 64, следующий заголовок UDP (17) длина полезной нагрузки: 32) :: 1.49395> :: 1.49395: [плохой udp cksum 0x0033 -> 0xeaef!] UDP, длина 24
04:34:31.860361 lo в IP6 (метка потока 0xc7cb6, hlim 64, следующий заголовок UDP (17) длина полезной нагрузки: 40) :: 1.49395> :: 1.49395: [неверный udp cksum 0x003b -> 0x7267!] UDP, длина 32
04:34:31.871100 lo в IP6 (метка потока 0xc7cb6, hlim 64, следующий заголовок UDP (17) длина полезной нагрузки: 944) :: 1.49395> :: 1.49395: [неверный udp cksum 0x03c3 -> 0xf890!] UDP, длина 936
4 пакета захвачено
12 пакетов получено фильтром
0 пакетов отброшено ядром

'-C 4' обеспечивает подсчет пакетов до 4 пакетов. Мы можем указать количество пакетов до n и захватить n пакетов.

HTTP

Протокол передачи гипертекста используется для передачи данных с веб-сервера в браузер для просмотра веб-страниц. HTTP использует связь по форме TCP. В частности, используется TCP-порт 80.

Чтобы распечатать все HTTP-пакеты IPv4 на порт 80 и обратно:

tcpdump: прослушивание wlan0, тип канала EN10MB (Ethernet), длина снимка 262144 байта
03:36:00.602104 IP (tos 0x0, ttl 64, id 722, смещение 0, флаги [DF], протокол TCP (6), длина 60)
192.168.10.21 год.33586> 192.168.10.1.http: Flags [S], cksum 0xa22b (правильно), seq 2736960993, win 64240, параметры [mss 1460, sackOK, TS val 389882294 ecr 0, nop, wscale 10], длина 0
03:36:00.604830 IP (tos 0x0, ttl 64, id 0, смещение 0, флаги [DF], протокол TCP (6), длина 60)
192.168.10.1.http> 192.168.10.21 год.33586: Флаги [S.], cksum 0x2dcc (правильно), seq 4089727666, ack 2736960994, win 14480, параметры [mss 1460, sackOK, TS val 30996070 ecr 389882294, nop, wscale 3], длина 0
03:36:00.604893 IP (tos 0x0, ttl 64, id 723, смещение 0, флаги [DF], протокол TCP (6), длина 52)
192.168.10.21 год.33586> 192.168.10.1.http: Flags [.], cksum 0x94e2 (правильно), seq 1, ack 1, win 63, options [nop, nop, TS val 389882297 ecr 30996070], длина 0
03:36:00.605054 IP (tos 0x0, ttl 64, id 724, смещение 0, флаги [DF], протокол TCP (6), длина 481)

HTTP-запросы…

192.168.10.21 год.33586> 192.168.10.1.http: Флаги [P.], cksum 0x9e5d (правильно), seq 1: 430, ack 1, win 63, options [nop, nop, TS val 389882297 ecr 30996070], длина 429: HTTP, длина: 429
GET / HTTP / 1.1
Хост: 192.168.10.1
Пользовательский агент: Mozilla / 5.0 (Windows NT 10.0; rv: 78.0) Gecko / 20100101 Firefox / 78.0
Принять: text / html, application / xhtml + xml, application / xml; q = 0.9, изображение / webp, * / *; q = 0.8
Accept-Language: en-US, en; q = 0.5
Принятие кодировки: gzip, deflate
DNT: 1
Подключение: keep-alive
Cookie: _TESTCOOKIESUPPORT = 1; SID = c7ccfa31cfe06065717d24fb544a5cd588760f0cdc5ae2739e746f84c469b5fd
Небезопасные запросы на обновление: 1

И ответы тоже фиксируются

192.168.10.1.http> 192.168.10.21 год.33586: Флаги [P.], cksum 0x84f8 (правильно), seq 1: 523, ack 430, win 1944, options [nop, nop, TS val 30996179 ecr 389882297], длина 522: HTTP, длина: 522
HTTP / 1.1 200 ОК
Сервер: веб-сервер ZTE 1.0 ZTE corp 2015 г.
Accept-Ranges: байты
Подключение: закрыть
Параметры X-Frame: SAMEORIGIN
Cache-Control: без кеширования, без хранения
Длина содержимого: 138098
Set-Cookie: _TESTCOOKIESUPPORT = 1; ПУТЬ = /; HttpOnly
Тип содержимого: текст / html; charset = utf-8
Параметры X-Content-Type: nosniff
Content-Security-Policy: frame-ancestors 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data :;
X-XSS-Protection: 1; режим = блок
Set-Cookie: SID =; expires = Thu, 01-Jan-1970, 00:00:00 GMT; path = /; HttpOnly

TCP

Чтобы перехватить только TCP-пакеты, эта команда подойдет:

$ sudo tcpdump -i wlan0 tcp
tcpdump: прослушивание wlan0, тип канала EN10MB (Ethernet), длина снимка 262144 байта
04:35:48.892037 IP (tos 0x0, ttl 60, id 23987, смещение 0, флаги [нет], протокол TCP (6), длина 104)
TL-IN-F189.1e100.сеть.https> 192.168.10.16.50272: Флаги [P.], cksum 0xc924 (правильно), seq 1377740065: 1377740117, ack 1546363399, win 300, options [nop, nop, TS val 13149401 ecr 3051434098], длина 52
04:35:48.892080 IP (tos 0x0, ttl 64, id 20577, смещение 0, флаги [DF], протокол TCP (6), длина 52)
192.168.10.16.50272> TL-IN-F189.1e100.сеть.https: флаги [.], cksum 0xf898 (правильно), seq 1, ack 52, win 63, options [nop, nop, TS val 3051461952 ecr 13149401], длина 0
04:35:50.199754 IP (tos 0x0, ttl 64, id 20578, смещение 0, флаги [DF], протокол TCP (6), длина 88)
192.168.10.16.50272> TL-IN-F189.1e100.сеть.https: флаги [P.], cksum 0x2531 (правильно), seq 1:37, ack 52, win 63, options [nop, nop, TS val 3051463260 ecr 13149401], длина 36
04:35:50.199809 IP (tos 0x0, ttl 64, id 7014, смещение 0, флаги [DF], протокол TCP (6), длина 88)
192.168.10.16.50434> hkg12s18-in-f14.1e100.сеть.https: флаги [P.], cksum 0xb21e (правильно), seq 328391782: 328391818, ack 3599854191, win 63, options [nop, nop, TS val 3656137742 ecr 2564108387], длина 36
4 пакета захвачено
4 пакета получены фильтром
0 пакетов отброшено ядром

Обычно захват TCP-пакетов приводит к большому трафику; вы можете подробно указать свои требования, добавив фильтры в захват, например:

Порт
Задает порт для мониторинга

$ sudo tcpdump -i wlan0 TCP-порт 2222

Исходный IP
Для просмотра пакетов из указанного источника

$ sudo tcpdump -i wlan0 tcp src 192.168.10.2

IP-адрес назначения
Для просмотра пакетов в указанное место назначения

$ sudo tcpdump -i wlan0 tcp dst 192.168.10.2

Сохранение захвата пакетов в файлы

Чтобы сохранить захват пакета для последующего анализа, мы можем использовать параметр -w команды tcpdump, для которого требуется параметр имени файла. Эти файлы сохраняются в формате файла pcap (захват пакетов), который можно использовать для сохранения или отправки захваченных пакетов.

Например:

$ sudo tcpdump / захвачено.pcap

Мы можем добавить фильтры относительно того, хотим ли мы перехватывать пакеты TCP, UDP или ICMP и т. Д.

Чтение захвата пакетов из файлов

К сожалению, вы не можете прочитать сохраненный файл с помощью обычных команд чтения файла, таких как cat и т. Д. Вывод - это почти бред, и трудно сказать, что находится в файле. '-r' используется для чтения пакетов, сохраненных в .pcap, ранее сохраненный с помощью '-w' или другого программного обеспечения, хранящего pcaps:

$ sudo tcpdump -r / выходы.pcap

Это печатает данные, собранные из захваченных пакетов, на экране терминала в удобочитаемом формате.

Шпаргалка по tcpdump

Tcpdump можно использовать с другими командами Linux, такими как grep, sed и т. Д., извлекать полезную информацию. Вот несколько полезных комбинаций и ключевых слов, которые используются с tcpdump для получения ценной информации.

Извлечь пользовательских агентов HTTP:

$ sudo tcpdump -n | grep "User-Agent:"

URL-адреса, запрошенные через HTTP, можно отслеживать с помощью tcpdump, например:

$ sudo tcpdump -v -n | egrep -i "POST / | GET / | Хост:"

Вы также можете Извлечение паролей HTTP в запросах POST

$ sudo tcpdump -nn -l | egrep -i "POST / | pwd = | passwd = | password = | Host:"

Серверные или клиентские файлы cookie можно извлечь, используя:

$ sudo tcpdump -n | egrep -i 'Установить-Cookie | Хост: | Cookie:'

Захват DNS-запросов и ответов с помощью:

$ sudo tcpdump -i wlp58s0 -s0 порт 53

Вывести все пароли в виде обычного текста:

$ sudo tcpdump порт http или порт ftp, или порт smtp, или порт imap, или порт pop3, или порт telnet -l -A | egrep -i -B5 'pass = | pwd = | log = | login = | user = | user | username = | pw = | passw = | passwd = | password = | pass: | user: | username: | password: | логин: | пройти '

Общие фильтры Tcpdump

  • Показывает пакеты в формате ASCII.
  • -c Количество пакетов для захвата.
  • -считать Печатать счетчик пакетов только при чтении захваченного файла.
  • Печать MAC-адресов и заголовков на уровне ссылок.
  • -h или -help Распечатывает информацию о версии и использовании.
  • -версия Показать только информацию о версии.
  • Укажите сетевой интерфейс для захвата.
  • -K Предотвратить попытки проверки контрольных сумм любого пакета. Прибавляет скорость.
  • Укажите модуль для использования.
  • -п Не конвертировать адреса (i.е., адреса хостов, номера портов и т. д.) к именам.
  • -номер Выведите необязательный номер пакета в начале каждой строки.
  • -п Запретить интерфейсу переходить в неразборчивый режим.
  • -Q Выберите направление захвата пакетов. Отправить или получить.
  • -q Тихий / быстрый вывод. Печатает Меньше информации. Выходы короче.
  • Используется для чтения пакетов из pcap .
  • Не печатайте метку времени на каждой строке дампа.
  • -v Распечатывает дополнительную информацию о выводе.
  • Записать сырые пакеты в файл.
  • -Икс Печать вывода в формате ASCII.
  • -Икс Печатает ASCII с шестнадцатеричным.
  • -список интерфейсов Показывает все доступные сетевые интерфейсы, где пакеты могут быть захвачены tcpdump.

Прекращение

Tcpdump был очень широко используемым инструментом, используемым в исследованиях и приложениях безопасности / сети. Единственный недостаток tcpdump не имеет графического интерфейса, но он слишком хорош, чтобы не попадать в топ-чарты. Как пишет Дэниел Мисслер: «Анализаторы протоколов, такие как Wireshark, великолепны, но если вы хотите по-настоящему освоить пакетный фу, вы должны сначала стать единым целым с tcpdump.”

Контроль и управление перемещением мыши между несколькими мониторами в Windows 10
Диспетчер мыши с двумя дисплеями позволяет контролировать и настраивать движение мыши между несколькими мониторами, замедляя ее движения возле границы...
WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...