Как использовать tcpdump и 6 примеров
Вы пытаетесь захватить пакеты данных, чтобы проанализировать трафик в вашей сети? Возможно, вы администратор сервера, который столкнулся с проблемой и хочет отслеживать передаваемые данные в сети. В любой ситуации утилита tcpdump Linux – это то, что вам нужно.
В этой статье мы подробно обсудим команду tcpdump, а также некоторые руководства по установке и использованию tcpdump в вашей системе Linux.
Что такое команда tcpdump?
Tcpdump – это мощный инструмент мониторинга сети, который позволяет пользователю эффективно фильтровать пакеты и трафик в сети. Вы можете получить подробную информацию о TCP / IP и пакетах, передаваемых в вашей сети. Tcpdump – это утилита командной строки, что означает, что вы можете запускать ее на серверах Linux без дисплея.
Системные администраторы также могут интегрировать утилиту tcpdump с cron для автоматизации различных задач, таких как ведение журнала. Поскольку его многочисленные функции делают его достаточно универсальным, tcpdump работает как средство устранения неполадок и безопасности.
tcpdump, часть 1
Как установить tcpdump в Linux
Хотя в большинстве случаев tcpdump предустановлен в вашей системе, некоторые дистрибутивы Linux не поставляются с пакетом. Поэтому вам, возможно, придется вручную установить утилиту в вашей системе.
Вы можете проверить, установлен ли tcpdump в вашей системе, используя команду which .
which tcpdump
Если в выходных данных отображается путь к каталогу ( / usr / bin / tcpdump ), значит, в вашей системе установлен пакет. Однако, если нет, вы можете легко сделать это с помощью диспетчера пакетов по умолчанию в вашей системе.
Чтобы установить tcpdump в дистрибутивах на основе Debian, таких как Ubuntu:
sudo apt-get install tcpdump
Установить tcpdump на CentOS тоже просто.
sudo yum install tcpdump
В дистрибутивах на основе Arch:
sudo pacman -S tcpdump
Для установки в Fedora:
sudo dnf install tcpdump
Обратите внимание, что пакет tcpdump требует libcap в качестве зависимости, поэтому убедитесь, что вы также установили его в своей системе.
Примеры tcpdump для захвата сетевых пакетов в Linux
Теперь, когда вы успешно установили tcpdump на свой Linux-компьютер, пришло время отслеживать некоторые пакеты. Поскольку tcpdump требует прав суперпользователя для выполнения большинства операций, вам придется добавить sudo к своим командам.
1. Список всех сетевых интерфейсов
Чтобы проверить, какие сетевые интерфейсы доступны для захвата, используйте флаг -D с командой tcpdump.
tcpdump -D
Передача флага –list-interfaces в качестве аргумента вернет тот же результат.
tcpdump —list-interfaces
Результатом будет список всех сетевых интерфейсов, имеющихся в вашей системе.
После получения списка сетевых интерфейсов пришло время контролировать вашу сеть путем захвата пакетов в вашей системе. Хотя вы можете указать, какой интерфейс вы хотите использовать, любой аргумент команд tcpdump для захвата сетевых пакетов с использованием любого активного интерфейса.
tcpdump —interface any
Система отобразит следующий вывод.
2. Формат вывода tcpdump
Начиная с третьей строки, каждая строка вывода обозначает конкретный пакет, захваченный tcpdump. Вот как выглядит вывод одного пакета.
17:00:25.369138 wlp0s20f3 Out IP localsystem.40310 > kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 33
Имейте в виду, что не все пакеты захватываются таким образом, но это общий формат, которому следует большинство из них.
Вывод содержит следующую информацию.
- Отметка времени полученного пакета
- Имя интерфейса
- Поток пакетов
- Название сетевого протокола
- IP-адрес и сведения о порте
- Флаги TCP
- Порядковый номер данных в пакете
- Подтвержденные данные
- Размер окна
- Длина пакета
В первом поле ( 17: 00: 25.369138 ) отображается отметка времени, когда ваша система отправила или получила пакет. Записанное время извлекается из местного времени вашей системы.
Второе и третье поля обозначают используемый интерфейс и поток пакета. В приведенном выше фрагменте wlp0s20f3 – это имя беспроводного интерфейса, а Out – это поток пакетов.
Четвертое поле включает информацию, относящуюся к имени сетевого протокола. Как правило, вы найдете два протокола – IP и IP6 , где IP означает IPV4, а IP6 – для IPV6.
Следующее поле содержит IP-адреса или имя исходной и целевой системы. За IP-адресами следует номер порта.
Шестое поле вывода состоит из флагов TCP. В выводе tcpdump используются различные флаги.
| SYN | S | Подключение начато |
| ПЛАВНИК | F | Подключение завершено |
| ТОЛКАТЬ | п | Данные отправлены |
| RST | р | Соединение сброшено |
| ACK | . | Подтверждение |
Вывод также может содержать комбинацию нескольких флагов TCP. Например, FLAG [f.] Обозначает пакет FIN-ACK.
Двигаясь дальше в выходном фрагменте, следующее поле содержит порядковый номер ( seq 196: 568 ) данных в пакете. Первый пакет всегда имеет положительное целочисленное значение, а последующие пакеты используют относительный порядковый номер для улучшения потока данных.
Следующее поле содержит номер подтверждения ( ack 1 ) или простой номер подтверждения. Пакет, захваченный на машине отправителя, имеет номер подтверждения 1. На стороне получателя номер Ack – это значение следующего пакета.
Девятое поле вывода соответствует размеру окна ( выигрыш 309 ), который представляет собой количество байтов, доступных в приемном буфере. Есть несколько других полей, которые следуют за размером окна, включая максимальный размер сегмента (MSS).
Последнее поле ( длина 33 ) содержит длину всего пакета, захваченного tcpdump.
3. Ограничьте количество перехваченных пакетов.
При первом запуске команды tcpdump вы можете заметить, что система продолжает захватывать сетевые пакеты, пока вы не передадите сигнал прерывания. Вы можете переопределить это поведение по умолчанию, указав количество пакетов, которые вы хотите перехватить, заранее с помощью флага -c .
tcpdump —interface any -c 10
Вышеупомянутая команда захватит десять пакетов с любого активного сетевого интерфейса.
4. Фильтрация пакетов по полям.
Когда вы устраняете проблему, получение большого блока текста на вашем терминале не облегчает задачу. Вот где в игру вступает функция фильтрации в tcpdump. Вы можете фильтровать пакеты по различным полям, включая хост, протокол, номер порта и т. Д.
Чтобы захватить только TCP-пакеты, введите:
tcpdump —interface any -c 5 tcp
Точно так же, если вы хотите отфильтровать вывод по номеру порта:
tcpdump —interface any -c 5 port 50
Вышеупомянутая команда будет получать только пакеты, переданные через указанный порт.
Чтобы получить подробную информацию о пакете для определенного хоста:
tcpdump —interface any -c 5 host 112.123.13.145
Если вы хотите отфильтровать пакеты, отправленные или полученные определенным хостом, используйте аргумент src или dst с командой.
tcpdump —interface any -c 5 src 112.123.13.145
tcpdump —interface any -c 5 dst 112.123.13.145
Вы также можете использовать логические операторы и и или для объединения двух или более выражений вместе. Например, чтобы получить пакеты, принадлежащие исходному IP- адресу 112.123.13.145 и использовать порт 80 :
tcpdump —interface any -c 10 src 112.123.13.145 and port 80
Сложные выражения можно сгруппировать, используя круглые скобки следующим образом:
tcpdump —interface any -c 10 «(src 112.123.13.145 or src 234.231.23.234) and (port 45 or port 80)»
5. Просмотрите содержимое пакета.
Вы можете использовать флаги -A и -x с командой tcpdump для анализа содержимого сетевого пакета. Флаг -A обозначает формат ASCII , а -x обозначает шестнадцатеричный формат.
Чтобы просмотреть содержимое следующего сетевого пакета, захваченного системой:
tcpdump —interface any -c 1 -A
tcpdump —interface any -c 1 -x
6. Сохраните данные захвата в файл.
Если вы хотите сохранить данные захвата для справки, tcpdump может вам помочь. Просто передайте флаг -w с командой по умолчанию, чтобы записать вывод в файл, а не отображать его на экране.
tcpdump —interface any -c 10 -w data.pcap
Расширение файла .pcap означает данные о захвате пакетов . Вы также можете выполнить вышеупомянутую команду в подробном режиме, используя флаг -v .
tcpdump —interface any -c 10 -w data.pcap -v
Чтобы прочитать файл .pcap с помощью tcpdump, используйте флаг -r, за которым следует путь к файлу. -R означает чтение .
tcpdump -r data.pcap
Вы также можете фильтровать сетевые пакеты из пакетных данных, сохраненных в файле.
tcpdump -r data.pcap port 80
Мониторинг сетевого трафика в Linux
Если вам была поручена задача администрирования сервера Linux, то команда tcpdump – отличный инструмент, который можно включить в ваш арсенал. Вы можете легко решить проблемы, связанные с сетью, захватив пакеты, передаваемые по вашей сети, в режиме реального времени.
Но перед этим ваше устройство должно быть подключено к Интернету. Для новичков в Linux даже подключение к Wi-Fi через командную строку может быть немного сложной задачей. Но если вы используете правильные инструменты, это совсем несложно.
Связанный
Лучшие сообщения
- 10 веселых смс-игр для игры с друзьями по телефону
- Как рисовать графики в Jupyter Notebook
- Введение в Aseprite: лучший доступный инструмент для пиксельной графики
- Да, вы можете подключить Nintendo Switch к телевизору без док-станции – вот как
- Как исправить проблемы с автоматическим выравниванием на Anycubic Vyper
- 3 способа проверить, разогнан ли ваш процессор или графический процессор
- Какое зарядное устройство вам нужно для Samsung Galaxy S21?
- Безопасны ли умные игрушки для ваших детей?
- Мышь не работает на вашем Mac? 10 советов, как это исправить
- Toon Boom Harmony 20: Руководство для начинающих
Источник: www.istocks.club
Используем tcpdump для анализа и перехвата сетевого трафика
Утилита tcpdump — отличный инструмент командной, который способен перехватывать и анализировать сетевой трафик. Может оказаться большим подспорьем при решении сетевых проблем. Пакеты можно сохранить в файл и анализировать позже. Рекомендуется время от времени запускать эту утилиту, чтобы следить за своей сетью.
Вывод tcpdump
Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C.
Давайте рассмотрим одну строку из примера вывода:
20:58:26.765637 IP 10.0.0.50.80 > 10.0.0.1.53181: Flags [F.], seq 1, ack 2, win 453, options [nop,nop,TS val 3822939 ecr 249100129], length 0
Каждая строка включает:
- Метка времени Unix (20: 58: 26.765637)
- протокол (IP)
- имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80)
- имя хоста или IP-адрес назначения и номер порта (10.0.0.1.53181)
- Флаги TCP (Flags [F.]). Указывают на состояние соединения и могут содержать более одного значения:
- o S — SYN. Первый шаг в установлении соединения
- F — FIN. Прекращение соединения
- — ACK. Пакет подтверждения принят успешно
- P — PUSH. Указывает получателю обрабатывать пакеты вместо их буферизации
- R — RST. Связь прервалась
Установка tcpdump
В дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT:
# apt install tcpdump -y
В дистрибутивах на основе RPM tcpdump можно установить с помощью YUM:
# yum install tcpdump -y
В RHEL 8 с использование DNF:
# dnf install tcpdump -y
Опции tcpdump
Запускать tcpdump нужно с правами root. Tcpdump включает в себя множество опций и фильтров. При запуске tcpdump без каких-либо параметров произойдет перехват всех пакетов, проходящих через интерфейс по умолчанию.
Вывести список доступных системе сетевых интерфейсов, в которых tcpdump может захватывать пакеты:
# tcpdump -D
# tcpdump —list-interfaces
1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.eth1 5.any (Pseudo-device that captures on all interfaces) 6.lo [Loopback]
Очень полезно для систем, в которых нет команды для вывода списка интерфейсов.
Для захвата пакетов, проходящих через определенный интерфейс, используйте -i с именем интерфейса. Если не указать имя, тогда tcpdump подберет первый обнаруженный сетевой интерфейс.
# tcpdump -i eth1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 01:06:09.278817 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 1, length 64 01:06:09.279374 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 4761, seq 1, length 64 01:06:10.281142 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 2, length 64
- -v увеличивает количество отображаемой информации о пакетах
- -vv дает еще более подробную информацию
По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов.
- -n Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имени.
# tcpdump –n
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100 04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0 04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36 04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0 04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100
- -c захватывает только набор строк, например, 5:
#tcpdump -c 5
04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100 04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0 04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36 04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0 04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100 5 packets captured
- -tttt для использования более удобных временных меток (по умолчанию используются временные метки Unix)
# tcpdump –tttt
2020-07-06 04:30:12.203638 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186734102:2186734138, ack 204107103, win 37232, length 36 2020-07-06 04:30:12.203910 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0 2020-07-06 04:30:12.204292 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 36:72, ack 1, win 37232, length 36 2020-07-06 04:30:12.204524 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0 2020-07-06 04:30:12.204658 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 72:108, ack 1, win 37232, length 36
Фильтры tcpdump
Фильтр выражений
Фильтр выражений выбирает, какие заголовки пакетов будут отображаться. Если фильтры не применяются, отображаются все заголовки пакетов.
Самые распространенные фильтры :
Фильтр портов
Фильт портов используется для просмотра пакетов, поступающих на определенный порт:
# tcpdump -i eth1 -c 5 port 80
23:54:24.978612 IP 10.0.0.1.53971 > 10.0.0.50.80: Flags [SEW], seq 53967733, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0 23:54:24.978650 IP 10.0.0.50.80 > 10.0.0.1.53971: Flags [S.E], seq 996967790, ack 53967734, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0 23:54:24.978699 IP 10.0.0.1.53972 > 10.0.0.50.80: Flags [SEW], seq 226341105, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0 23:54:24.978711 IP 10.0.0.50.80 > 10.0.0.1.53972: Flags [S.E], seq 1363851389, ack 226341106, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0
Фильтр хостов
Для перехвата пакетов, приходящих или исходящих от определенного хоста. Например, IP-адрес 10.0.2.15:
# tcpdump host 10.0.2.15
03:48:06.087509 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 3862934963:3862934999, ack 65355639, win 37232, length 36 03:48:06.087806 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0 03:48:06.088087 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 36:72, ack 1, win 37232, length 36 03:48:06.088274 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0 03:48:06.088440 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 72:108, ack 1, win 37232, length 36
Для перехвата пакетов определенных типов протоколов. Например, icmp, на интерфейсе eth1:
# tcpdump -i eth1 icmp
04:03:47.408545 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 75, length 64 04:03:47.408999 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 75, length 64 04:03:48.408697 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 76, length 64 04:03:48.409208 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 76, length 64 04:03:49.411287 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 77, length 64
Комбинирование фильтров
Фильтры можно комбинировать с помощью операторов:
Это позволит писать команды, которые могут более точно изолировать пакеты. Например, пакеты с определенного IP-адреса и для определенного порта:
# tcpdump -n -i eth1 src 10.0.0.1 and dst port 80
00:18:17.155066 IP 10.0.0.1.54222 > 10.0.0.50.80: Flags [F.], seq 500773341, ack 2116767648, win 4117, options [nop,nop,TS val 257786173 ecr 5979014], length 0 00:18:17.155104 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [S], seq 904045691, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 257786173 ecr 0,sackOK,eol], length 0 00:18:17.157337 IP 10.0.0.1.54221 > 10.0.0.50.80: Flags [P.], seq 4282813257:4282813756, ack 1348066220, win 4111, options [nop,nop,TS val 257786174 ecr 5979015], length 499: HTTP: GET / HTTP/1.1 00:18:17.157366 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [.], ack 1306947508, win 4117, options [nop,nop,TS val 257786174 ecr 5983566], length 0
Если нужно перехватить все пакеты кроме ICMP, используем оператор NOT:
# tcpdump -i eth1 not icmp
Сохранение заголовков в файл
Вывод tcpdump может довольно быстро перемещаться по экрану. В таких случаях можно сохранить заголовки пакетов в файле с опцией -w. Вывод сохраняется в файлы с расширением .pcap.
Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap.
# tcpdump -i eth1 -c 10 -w icmp.pcap
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 10 packets captured 10 packets received by filter 0 packets dropped by kernel
Прочитать этот файл можно с помощью опции -r
# tcpdump -i eth1 -c 10 -w icmp.pcap
reading from file icmp.pcap, link-type EN10MB (Ethernet) 05:33:20.852732 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 33, length 64 05:33:20.853245 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 33, length 64 05:33:21.852586 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 34, length 64 05:33:21.853104 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 34, length 64 05:33:22.852615 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 35, length 64
Просмотр сведений о пакете
Пока мы видели только заголовки пакетов, а для просмотра содержимого нужно использовать параметр -A. Вывод содержимого будет в формате ASCII.
С помощью опции -X можно отобразить вывод в шестнадцатеричном формате, правда, это не сильно помогает в тех случаях, когда соединение зашифровано.
# tcpdump -c10 -i eth1 -n -A port 80
Вывод
Утилита tcpdump проста в настройке и освоении. Необходимо лишь немного разобраться с:
После чего tcpdump станет отличным помощником в вопросах обеспечения безопасности вашей сети.
Источник: habr.com
Что за утилита TCPdump и как ей пользоваться
Для анализа сетевых пакетов и просмотра их содержимого одним из самых мощных методов считают именно захват этих самых пакетов. С помощью такой операции можно многое узнать о том, что и как происходит в сети. Достаточно изучить сырые данные, которые передаются таким образом. Потоки данных не просто захватываются – можно получить их интерпретацию в виде, доступном для понимания человека. В Linux сделать это можно с помощью утилиты TCPdump.
Что это такое?
Для специалистов по компьютерной безопасности утилита TCPdump может стать главным инструментом. Это важное приложение, связанное с большим количеством нюансов. Многим нравятся инструменты более высокого уровня, но такой подход часто воспринимают как ошибочный.
Программу создали для прослушивания и анализа работы сети. Благодаря дополнительным настройкам программа может проводить анализ для разных пакетов – предназначенных не только для конкретного Mac-адреса. Допустим широковещательный тип.

Доступна утилита TCPdump не только в Linux, но и Windows. Скачать оригинальный клон можно с официального сайта, но продукт платный.
Оборудование для подключения к сети определяет набор возможностей, доступных пользователю. Вот некоторые из них:
- «Трюки» с концентраторами. Коммутаторный порт, прослушка которого необходима, соединяют с участием концентратора. Узел-монитор тоже соединяют с коммутатором. Сетевое подключение отличается низкой производительностью, но результаты всё равно есть.
- Использование специальных средств или ответвителей. Они включаются в разрыв сетевых подключений. Передают трафик на отдельный порт, в результате чего становится доступным его прослушивание.
- Копирование трафика. Поддерживается только некоторыми коммутаторами.
- Наблюдение за коммутаторами или свичами, образующие сеть. Коммутатору доступен не только трафик сети, но и весь широковещательный трафик, связанный с сегментом.
- Работа в сетях на основе концентраторов.
Принцип работы
Перед началом использования утилиты TCPdump надо разобраться в том, какие она поддерживает сетевые интерфейсы. Для выполнения основных задач понадобятся права суперпользователя. Потому в первых командах важно указывать параметр, который обозначается как sudo и имя администратора, после нажатия Enter ввести пароль.
Приложения Chrome OS, которые можно использовать в Windows
Сочетание клавиш Ctrl + C останавливает работу того или иного заданного параметра. Все перехваченные пакеты будут отображаться в выводе практически сразу.

Формат перехвата имеет следующий вид:
Такой формат поддерживает большинство пакетов, содержащих данные. Текст, выделенный чёрным цветом, может отличаться в каждом случае, в зависимости от используемого протокола. Элементы кода идут в такой последовательности:
- временные метки;
- протокол;
- IP адрес отправителя;
- адрес адресата;
- характеристики других разновидностей;
- измеряемый байтами размер пакетов.
—V – опция, позволяющая легко контролировать подробность вывода информации. Например, дополнительно отображаются сведения, связанные с протоколом IP.
Что может узнать пользователь конкретно:
Проверка контрольных сумм выводится при использовании команды –vv. В некоторых случаях подробно отображается содержимое пакетов.
После использования опций легко указывать фильтры, которые применяют для тех или иных пакетов. Вот лишь основные параметры, используемые при отсеивании:
- Несколько видов протоколов, включая udp, tcp, decnet, rarp, arp, ip6, ip. wlan, tr, fddi, ether.
- DST – параметр, связанный с получателем.
- SRC – отправитель.
- Port – указание адреса порта.
- Net – адреса сетей, подсетей.
- Proto – указание протокола.
- IP – ip адрес.
- Host – имя хоста.
Для получения желаемого результата разрешается комбинировать различные команды друг с другом.
Установка TCPdump
Необходимо выполнить следующие шаги, когда речь идёт о системах Debian/Ubuntu/Linux Mint: прописывают команду sudo apt – get install tcpdump.
По-другому будет выглядеть сочетание для RedHat/CentOS/Fedora: sudo yum install tcpdump.
Описание синтаксиса
Приведём несколько примеров использования TCPdump в Linux, способных заметно упростить использование приложения, для пользователей любого уровня.
Из пакета приложение принимает стандартно только первые 6896 байт. Добавление опции –s позволяет получить более подробную информацию, когда возникает необходимость. Число обозначает, сколько байтов планирует перехватить тот или иной пользователь. Захват всех производится при указании комбинации –s 0 (ноль).
У самой команды синтаксис такой: $ tcpdump опции -i интерфейс фильтры
Что делать, если отсутствует файл C:WindowsSystem32config
Главное – не забывать о передаче интерфейса, который будет использован. Если указания по этому отсутствуют – автоматически программа использует первый элемент из списка. Благодаря фильтрам становится проще отсеивать пакеты, не представляющие интереса для конечного пользователя. Программа поддерживает следующий набор основных ключей:
- Z – обозначение пользователя, от имени которого происходит создание для всех файлов.
- W – запись в файл для вывода.
- Q – команда, позволяющая вывести минимальное количество информации.
- Более подробный вывод предполагает применение команд –v, —vv, —vvv.
- R – для считывания пакетов, созданных с помощью команды w.
- N – отменяет отображение доменных имён.
- L – для вывода поддерживаемых протоколов, через которые подключают интерфейс.
- L – к выводу добавляют функцию прокрутки.
- K – после использования контрольные суммы проверяться не будут.
- J – просмотр доступных временных меток (TimeStamp).
- Маленькаяj устанавливает формат Time Stamp в отношении созданных пакетов.
- I– переключение режима монитора, который будет действовать для всех пакетов.
- Маленькаяi задаёт имя интерфейса при перехвате пакетов. Пакеты могут захватываться со всех интерфейсов, достаточно задать параметр any.
Основные команды и фильтры
Вставка фильтров – главная особенность, характерная для синтаксиса tcpdump. Следующее описание приводят для самых популярных вариантов:
- Less,greater – пакеты выводятся больше или меньше по сравнению с указанным размером.
- And,Or – объединение сразу нескольких фильтров внутри одной команды.
- Port – для отображения информации, связанной с определённым портом.
- Arp,upd,tcp – фильтрация с использованием одного из протоколов.
- Dst – для вывода с указанным адресом.
- SRC – выводит пакеты, отправителем которых признан конкретный адрес.
- IP – описание адреса протокола.
- NET – описание IP главной сети и подсети.
- HOST – чтобы указать имя хоста.
Допустимо создавать комбинации, включающие сразу несколько фильтров. Благодаря этому в выдаче информации пользователь видит только то, что действительно представляет интерес.
Примеры использования
Вариантов применения утилиты множество. Можно рассмотреть лишь наиболее интересные и популярные.
Сбрасываем пароль на ОС Windows
Просмотр списка с интерфейсами
Каждому пользователю рекомендуют с самого начала смотреть списки текущих интерфейсов. Вариант актуален для всех отслеживаемых компонентов. Стандартно для решения вопроса применяют опцию –D. Следующая команда, внесённая в терминал, позволит получить список:
Sudo tcdump –D.

Об обычном захвате трафика
—i – вот опция, облегчающая захват трафика. После ввода команды следует точное указание используемого интерфейса. На практике применение команд имеет примерно такой вид:
Sudo tcpdump –I ppp0

Права суперпользователя обязательны, потому вначале и вводят sudo.
Нажатие клавиши Enter приводит к отображению пакетов, перехваченных в терминале. Комбинация клавиш Ctrl+C останавливает этот процесс.

При отсутствии дополнительных пакетов с фильтрами следующим образом выглядит формат, в котором отображаются пакеты:
Основные моменты выделены при помощи различных цветов:
- Красным цветом выделяют размеры, с единицей измерения в виде байтов.
- Дополнительная информация по TCP выделяется серым.
- Фиолетовым – адрес, по которому находят получателей.
- Отправитель и его адрес — зелёный.
- Протокол с его версией обозначают оранжевым.
- Время получения – синий цвет.
Захват трафика с помощью –V
Опция способствует увеличению количества сведений, показанных пользователю. За вводом команды ниже следует проверка по всему интерфейсу:
Sudo tcpdump –v –I ppp0

В выводе может появиться такая строка:
Расшифровать ее можно так:
- Красный – обозначение размера пакета.
- Фиолетовым обозначают версию для TCP.
- Зелёный – длина заголовка у полей.
- Синим обозначают, сколько времени живёт протокол.
- Оранжевый – версия протокола.
Добавление букв vv, vvv увеличит объёмы информации по протоколу.
-w и -r

Команды w и r используют для сохранения в отдельный файл всех выводимых сведений. Потом это упрощает просмотр. Удобный вариант, чтобы сохранить большие объёмы текстов для просмотра.
Есть и другие сочетания, которые используются владельцами устройств для максимально эффективной работы. Возможности этого инструмента отличаются широтой. Главное – запомнить буквенные сочетания, применимые в том или ином случае. Со временем на выполнение действий будет уходить минимум времени.
Источник: composs.ru
Анализ трафика с помощью tcpdump
Для чего нужно анализировать трафик? Знание того, как происходит взаимодействие между компьютерами дозволяет более быстро обнаружить и решить возможные проблемы, возникшие в работе сети. Приведу простенький пример: один из компьютеров локальной сети перестает отвечать на запросы. Что могло случится? Были ли он взломан или это ошибки системного администратора?
Если в сети присутствует хорошая система управления логами, то возможно много информации узнать из этих файлов. Но что если в них нет ничего подозрительного или, что еще хуже, они истины скомпрометированы злоумышленником? Тогда на помощь приходит tcpdump. Эта программа, как скрытая камера, какая показывает, что происходит в данный момент в сети. Благодаря ей вы можете создать специальные фильтры, какие будут отображать только нужный вам трафик.
Конечно tcpdump не единственная прога, умеющая анализировать трафик, существует множество подобных программ, например ethereal. Это весьма хорошее средство, быстро развивающееся и, несмотря на казалось бы раннюю версию, (последняя на момент начертанье статьи версия была 0.10.10) является очень надежной и глубоко продуманной програмкой.
Один только список поддерживаемых протоколов перевалил за 500 (последняя версия, в какой мере я знаю поддерживает 673 протокола www.ethereal.com/introduction.html )! Почему я утилизировал именно tcpdump, а не эту программу (термин, в переводе означающий «предписание», то есть предварительное описание предстоящих событий или действий)? Во-первых я привык работать с tcpdump, для использования же ethereal нужно наличие X-сервера, а я больше люблю работать в консоли. Во-вторых, отчеты ethereal нелегко отобразить в печатном виде. И все же я планирую подробно рассказать об этой замечательной программе в одной из собственных следующих статей.
Создать подобный цикл статей меня заставило практически полное отсутствие в интернете подробного и понятного описания программы tcpdump, а также этого, что с помощью нее можно сделать. Понятно, что тема анализа протоколов TCP/IP очень обширна, обрисовать все возможные виды трафика невозможно, да и не нужно, поэтому я постараюсь описать только наиболее интересное, и, на мой взгляд, необходимое.
Как работает tcpdump
Для того, чтобы научиться читать записи tcpdump нужно хотя бы небольшие знания основных протоколов, в частности рассматриваемом ниже протоколе TCP. Хотя если вы хотите максимально использовать tcpdump, без глубокого изучения теории их работы ни коим образом не обойтись. Напомню, что tcpdump – лишь программа для отображения, но не генерирования трафика. Она может только показать то, что происходит в сети и повлиять на трафик она не может.
Для работы в tcpdump нужны полномочия пользователя root. Это связано с тем, что tcpdump необходимо перевести сетевую карту в так именуемый неразборчивый (promiscuous) режим, при котором сетевая карта не проверяет предназначены ли именно ей приобретенные данные, она принимает абсолютно всё.
Схема передачи данных, при котором трафик (Телефонный трафик — в телекоммуникациях — большое количество телефонных разговоров и попыток установления соединения, проходящих через коммутационной оборудования и/или телефонную сеть Транспортный) проходит чрез каждый компьютер свойственна для Ethernet-сетей, основанных прежде всего на концентраторах. Их называют «сетями всеобщего пользования», то есть получив данные от какого-нибудь хоста, концентратор отправляет эти данные на все присоединенные к нему порты не заботясь о том, кому именно они предназначались.
Противоположность такому типу сети – Ethernet-сеть базирующаяся на коммутаторах. Здесь данные передаются только указанному получателю. Коммутатор создает условное соединение между компьютерами, что не позволяет остальным хостам в сети «прослушивать» передаваемые ими этые. Однако, это вовсе не означает, что их невозможно перехватить, правда для этого не обойтись без некоторых хитростей.
Коммутатор работает не столько с ip-адресами сколько с фреймами (единица передачи этих на канальном уровне), для каждого порта которого в его таблице закреплен mac-адрес компьютера в сети. Весьма часто эта таблица является не статичной, а динамически изменяемой. Благодаря этому, существует много способов arp-спуфинга и другой хакерской деятельности по отношению к коммутатору… Так вот, если переполнить эту матрицу mac-адресов, то, скорее всего, коммутатор перейдет в неразборчивый режим, то есть будет себе везти как обычный концентратор, что и позволит tcpdump перехватывать весь трафик.
У программы tcpdump много опций, поэтому для удобства я выписал их, а также еще несколько важных моментов касающихся ее службы, в отдельный файл, чтобы его можно было распечатать и всегда держать под рукой.
Еще один момент, какой следует указать, так это то, что tcpdump поддерживает chroot. chroot – это переопределение корневой папки для програмки, пользователя. С ее помощью можно сделать так, чтобы даже в случае взлома программы и приобретенье прав с помощью которой запускается программа, взломщик не сможет выйти за пределы папки узкой chroot-средой. Эта полезная опция, указывается при компиляции Tcpdump.
Тестовые машины
tcpdump нужен для работы в сети. Однако если у вас ее нет, то есть несколько вариантов:
1) Использовать интерфейс оборотной связи.
Благодаря тому, что в *nix системах запрограммирован этот интерфейс, вы можете посылать наиболее себе данные, предназначенные как бы для локальной сети. Преимущества данного способа: высокая быстрота работы (может означать: Работа — функционирование какой-либо системы — механизма, биоценоза, организма или общности, — а также её части), не нужно дополнительное ПО. Недостатки – поведение вашей операционной системы на тот или иной трафик сможет сильно отличаться от реальной работы в сети, в результате можно сделать неправильные выводы. Хотя просто для познания того, как работает сеть это идеальный вариант.
2) Воспользоваться програмками типа VmWare или Bochs.
Виртуальная машина – прекрасное средство, если вы хотите эмулировать на собственном компьютере работу локальной сети. Именно так я и поступил, т.к. у меня пока что нет возможности трудиться в реальной локальной сети. Преимущества: хорошая производительность, впечатление, что работаешь в локальной сети. Несовершенства: необходим большой объем оперативной памяти. Если учесть, что для работы каждой операторной системы необходимо как минимум 32, а то и 64 или 128 мб, то для эмуляции сети из 3-4 компьютеров необходимо примерно 256 мб.
Я пользовался программой VmWare. На своей машине и эмулировал службу в сети 4 операционных систем: ASP Linux 7.2 (192.168.0.1) – эта машина выполняет роль web и ftp-сервера сервера. Поставлены apache последней версии и vsftpd. На нем же стоит Tcpdump.
Windows 2000 (192.168.0.2) – на этой машине также стоит web и ftp-сервер.
FreeBSD 4.1 (192.168.0.3) – клиентская машина.
ASP Linux 7.2 (192.168.0.4) – клиентская машина.
Аппарат программного обеспечения
Как было выше упомянуто, для анализа пакетов мы будем использовать програмку tcpdump. Для ее установки потребуется библиотека libpcap, последнюю версию которой вы можете закачать с сайта www.tcpdump.org. впрочем, как и саму tcpdump. Настоятельно рекомендую перед установкой прочитать README и INSTALL, в них содержаться полезные сведения о том, с какими параметрами ее следует устанавливать, и какой-никакие дополнительные библиотеки нужны для правильной работы программы. В частности, для libpcap необходимы flex и bison. Когда у вас система основанная на RPM, то скорее всего пакеты есть на диске с дистрибутивом, либо уже находятся в системе. Лично я ставил libpcap из исходников с такими параметрами:
Как видите, я отключил поддержку IP 6 версии, мы будем рассматривать пакеты только 4 версии. Когда ставил tcpdump, я также выключил поддержку smb-принтера и криптоанализа.
У меня tcpdump водворился в директории /usr/local/sbin. Возможно, вам придется добавить эту директорию в переменную PATH, когда она там не числится. Для тех, кто не знает, это можно сделать вот так:
Вот и все, tcpdump поставлен и можно приступить к работе с самой программой.
Пример отчета tcpdump
Ниже представлен пример отчета сетевого трафика в tcpdump: клиент делает запрос страницы из браузера, приобретает необходимые данные, а затем закрывает соединение. Этот простейший отчет не выделяется неизвестно чем особенным. На загруженном сервере подобные записи наверняка просто игнорируются, однако наша мишень – научиться читать эти отчеты, для того, чтобы в дальнейшем перейти к более сложным записям. В этом случае мы рассматриваем стандартное TCP – соединение.
Для более понятного восприятия, я разделил данный отчет на 3 этапа, сам Tcpdump конечно же ничего подобного не делает. Ниже я подробно обрисую каждую процедуру.
- 07:18:54.437096 192.168.0.4.1026 > 192.168.0.1.80: S 3292064290:3292064290(0) win 5840
- 07:18:54.445895 192.168.0.1.80 > 192.168.0.4.1026: S 3900383410:3900383410(0) ack 3292064291 win 5792
- 07:18:54.449874 192.168.0.4.1026 > 192.168.0.1.80: . ack 1 win 5840
- 07:18:54.449921 192.168.0.4.1026 > 192.168.0.1.80: P 1:566(565) ack 1 win 5840
- 07:18:54.450152 192.168.0.1.80 > 192.168.0.4.1026: . ack 566 win 6780
- 07:18:54.505579 192.168.0.1.80 > 192.168.0.4.1026: P 1:321(320) ack 566 win 6780
- 07:18:54.506535 192.168.0.4.1026 > 192.168.0.1.80: . ack 321 win 6432
- 07:18:54.565873 192.168.0.4.1026 > 192.168.0.1.80: F 566:566(0) ack 322 win 6432
- 07:18:54.565954 192.168.0.1.80 > 192.168.0.4.1026: . ack 567 win 6780
- 07:18:54.56708 192.168.0.1.80 > 192.168.0.4.1026: F 321:321(0) ack 566 win 6780
- 07:18:54.567954 192.168.0.4.1026 > 192.168.0.1.80: . ack 322 win 6432
Процедура аппараты соединения
В начале каждой строки отчета указано время, когда был передан пакет, потом указывается IP адрес отправителя, за ним следует ip-адрес получателя. После каждого ip-адреса, чрез точку, указывается порт обмена данными (зарегистрированная информация:439; представление фактов, понятий или инструкций в форме, приемлемой для общения, интерпретации, или обработки человеком или с помощью автоматических средств), в данном случае он будет осуществляться: у покупателя через временный порт – 1026, а у сервера через 80 порт. Далее заслуживает буква S, это означает, что в пакете установлен флаг SYN, как вы помните, этот флаг используется при введенье каждого tcp-соединения. Далее следует начальный порядковый номер пакета (упаковка для чего-либо, обычно из бумаги или пластика: Бумажный пакет Полиэтиленовый пакет Пакет-саше — герметичный пакет) (ISN – initial sequence number ), за ним – последний порядковый номер пакета, в скобках указана полезная нагрузка – 0 байт, и это верно, так как во время установления соединения никаких данных передаваться не должно, однако если каким-никаким данным имеет место быть, то они будут добавлены к остальным уже после установки слияния.
Следует всегда обращать на это внимание, так как зачастую этот метод используется для отвода фаерволлов. win 5840 – это размер окна (буфера), в котором хранятся данные для отправки. Отправитель вдобавок сообщает, что несмотря на большой размер буфера, максимальное число байт данных*, какое можно передать в его сети – 1460 (mss 1460), это стандартное значение для сетей Ethernet.
Потом, во второй строке, хост-сервер отсылает пакет с установленным SYN-флагом и подтверждение на получение пакета от хоста 192.168.0.1, заслуживает флаг ack и увеличен ISN клиента на 1(3292064291). Он также говорит размер своего окна и mss.
Знак . в третьей строке означает отсутствие флага SYN, FIN, RESET или PUSH (обычно его называют заполнителем). Хост подкрепляет получение пакета флагом ack, а следующая за ним цифра 1 показывает, что он увеличил ISN на 1. Такая несложная форма (использование единицы) позволяет не заполнять отчет постоянно изменяющимся ISN. Если же вы желаете, чтобы tcpdump не использовал эту форму, запустите tcpdump с ключом -S.
Вся проделанная процедура слияния называется ‘полным tcp-соединением с подтверждением данных’. Если вы запутались во всех этих записях в низу в таблице 1 показана расшифровка каждого поля.
* – Я не зря в скобках указал, что 1460 б – максимальное значение именно для данных, а не всего пакета. Если быть более буквальным, то это значение должно быть 1500. Просто 20 байт идет на tcp-заголовок и еще 20 на ip-заголовок.
07:18:54.437096 метка времени
192.168.0.4 хост-отправитель
80 порт размена данными
3292064290 начальный порядковый номер
3292064290 конечный последовательный номер
(0) полезная нагрузка пакета
win 5840 размер окна
mss 1460 наибольшее число байтов, которые
можно передавать в данной сети.
Обмен здоровыми данными
Обмен даными происходит при помощи пакетов с установленным флагом PUSH, для сжатости в tcpdump он обозначается как P, в скобочках указывается полезная нагрузка. И по-прежнему каждый посланный пакет подтверждается с иной стороны. На самом деле это довольно сложный этап, при котором может происходить много разных событий, например один из партнеров перестал передавать данные и не подтвердил приобретенные пакеты от сервера. В самом протоколе TCP заложены механизмы в случае появления непредвиденной ситуации во время передавания данных, однако рассматривать их сейчас – значит углубиться еще дальше в работу протокола, что сейчас мне не хотелось бы делать.
Закрытие соединения
Процедура закрытия соединения происходит практически также как и его открытии, правда вместо SYN используется FIN флаг. При этом, как видите не передается безличных данных. Теоретически возможна передача данных и во время закрытия соединения, однако на практике это выходит довольно редко.
Заключение
Мы с вами рассмотрели схему обмена данными по tcp-протоколу, а вдобавок узнали, как выглядит небольшой отчет о нем в tcpdump. В следующей части статьи мы более досконально рассмотрим, как создавать отчеты tcpdump и узнаем как читать заголовки ip-пакета в шестнадцатиричном формате.
Источник: linux16.ru