Как посмотреть содержимое tcp пакета
Используем tcpdump для анализа и перехвата сетевого трафика
Утилита tcpdump — отличный инструмент командной, который способен перехватывать и анализировать сетевой трафик. Может оказаться большим подспорьем при решении сетевых проблем. Пакеты можно сохранить в файл и анализировать позже. Рекомендуется время от времени запускать эту утилиту, чтобы следить за своей сетью.
Вывод tcpdump
Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C.
Давайте рассмотрим одну строку из примера вывода:
Каждая строка включает:
Установка tcpdump
В дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT:
В дистрибутивах на основе RPM tcpdump можно установить с помощью YUM:
В RHEL 8 с использование DNF:
Опции tcpdump
Запускать tcpdump нужно с правами root. Tcpdump включает в себя множество опций и фильтров. При запуске tcpdump без каких-либо параметров произойдет перехват всех пакетов, проходящих через интерфейс по умолчанию.
Вывести список доступных системе сетевых интерфейсов, в которых tcpdump может захватывать пакеты:
Очень полезно для систем, в которых нет команды для вывода списка интерфейсов.
По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов.
Фильтры tcpdump
Фильтр выражений
Фильтр выражений выбирает, какие заголовки пакетов будут отображаться. Если фильтры не применяются, отображаются все заголовки пакетов.
Самые распространенные фильтры :
Фильтр портов
Фильт портов используется для просмотра пакетов, поступающих на определенный порт:
Фильтр хостов
Для перехвата пакетов, приходящих или исходящих от определенного хоста. Например, IP-адрес 10.0.2.15:
Для перехвата пакетов определенных типов протоколов. Например, icmp, на интерфейсе eth1:
Комбинирование фильтров
Фильтры можно комбинировать с помощью операторов:
Это позволит писать команды, которые могут более точно изолировать пакеты. Например, пакеты с определенного IP-адреса и для определенного порта:
Если нужно перехватить все пакеты кроме ICMP, используем оператор NOT:
Сохранение заголовков в файл
Вывод tcpdump может довольно быстро перемещаться по экрану. В таких случаях можно сохранить заголовки пакетов в файле с опцией -w. Вывод сохраняется в файлы с расширением .pcap.
Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap.
Прочитать этот файл можно с помощью опции -r
Просмотр сведений о пакете
Пока мы видели только заголовки пакетов, а для просмотра содержимого нужно использовать параметр -A. Вывод содержимого будет в формате ASCII.
С помощью опции -X можно отобразить вывод в шестнадцатеричном формате, правда, это не сильно помогает в тех случаях, когда соединение зашифровано.
Вывод
Утилита tcpdump проста в настройке и освоении. Необходимо лишь немного разобраться с:
После чего tcpdump станет отличным помощником в вопросах обеспечения безопасности вашей сети.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Захват пакетов с tcpdump: руководство с примерами
Gotta Catch ‘Em All!
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Это мощный и универсальный инструмент, который включает в себя множество опций и фильтров. Поскольку это инструмент командной строки, он идеально подходит для работы на удаленных серверах или устройствах, для которых GUI недоступен, для сбора данных, которые могут быть проанализированы позже, поскольку результаты можно сохранять в отдельный файл. Он также может быть запущен в фоновом режиме или как запланированное задание с использованием таких инструментов, как cron.
В этой статье мы рассмотрим некоторые из наиболее распространенных функций tcpdump.
Установка Tcpdump
Tcpdump включен в несколько дистрибутивов Linux, так что скорее всего, он у вас уже установлен. Проверьте, установлен ли tcpdump в вашей системе, например, с помощью команды which :
Мы должны получить примерно такой вывод:
Если tcpdump не установлен, вы можете установить его, но используя менеджер пакетов вашего дистрибутива.
В CentOS или Red Hat Enterprise Linux:
Для Ubuntu and Debian:
Захват пакетов с Tcpdump
Синтаксис Tcpdump выглядит следующим образом:
Для захвата пакетов для траблшутинга или анализа tcpdump требуются повышенные разрешения, поэтому в следующих примерах большинство команд имеют префикс sudo.
В приведенном выше примере вы можете увидеть все интерфейсы, доступные на компьютере. Специальный интерфейс any позволяет захватывать на всех активных интерфейсах.
Давайте использовать его, чтобы поймать немного пакетов:
Как показано выше, вывод захвата теперь отображает IP-адреса и номера портов. Это также не позволяет tcpdump выдавать DNS-запросы, что помогает снизить сетевой трафик при устранении неполадок в сети.
Теперь, когда вы можете захватывать сетевые пакеты, давайте рассмотрим, что означает этот вывод.
Понимание формата вывода
Tcpdump способен захватывать и декодировать множество различных протоколов, таких как TCP, UDP, ICMP и многие другие. Хотя мы не можем охватить все их здесь, чтобы помочь вам начать, давайте рассмотрим пакет TCP. Вы можете найти более подробную информацию о различных форматах протокола на страницах руководства tcpdump. Типичный пакет TCP, захваченный tcpdump, выглядит следующим образом:
Поля могут различаться в зависимости от типа отправляемого пакета, но общий формат tcpdump выглядит так:
Теперь давайте узнаем, как фильтровать пакеты, чтобы сузить результаты и упростить устранение конкретных проблем.
Фильтрация пакетов
Как упоминалось выше, tcpdump может перехватывать слишком много пакетов, некоторые из которых даже не связаны с проблемой, которую вы устраняете. Например, если вы устраняете проблему с подключением к веб-серверу, вас не интересует трафик SSH, поэтому удаление пакетов SSH из выходных данных облегчает работу с реальной проблемой.
Одной из самых мощных функций tcpdump является его способность фильтровать захваченные пакеты с использованием различных параметров, таких как IP-адреса источника и назначения, порты, протоколы и так далее. Давайте рассмотрим некоторые из наиболее распространенных.
Протокол
Для фильтрации пакетов на основе протокола, указав протокол в командной строке. Например, перехватывайте ICMP-пакеты только с помощью этой команды:
В другом терминале попробуйте пропинговать другой компьютер:
Вернувшись в захват tcpdump, обратите внимание, что tcpdump захватывает и отображает только пакеты, связанные с ICMP. В этом случае tcpdump не отображает пакеты разрешения имен, которые были сгенерированы при разрешении имени wiki.merionet.ru:
Ограничьте захват только пакетами, относящимися к определенному хосту, используя фильтр host :
В этом примере tcpdump захватывает и отображает только пакеты с хоста 54.204.39.132 и на него.
IP адрес или имя хоста отправителя или получателя
Обратите внимание, что tcpdump захватывает пакеты с исходящим IP-адресом 192.168.122.98 для нескольких служб, таких как разрешение имен (порт 53) и HTTP (порт 80). Пакеты ответов не отображаются, так как их исходный IP адрес у них отличается.
И наоборот, вы можете использовать фильтр dst для фильтрации по IP-адресу или имени хоста:
Сложные выражения
Вы можете создавать более сложные выражения, группируя фильтр с круглыми скобками. В этом случае заключите все выражение фильтра в кавычки, чтобы оболочка не перепутала их с выражениями оболочки:
В этом примере мы фильтруем пакеты только для службы HTTP (порт 80) и исходящих IP-адресов 192.168.122.98 или 54.204.39.132. Это быстрый способ изучения обеих сторон одного и того же потока.
Проверка содержимого пакета
Например, проверьте HTTP-содержимое веб-запроса следующим образом:
Это полезно для устранения проблем с вызовами API, при условии, что вызовы используют простой HTTP. Для зашифрованных соединений этот вывод менее полезен.
Сохранение файл
Поскольку вы больше не захватываете пакеты непосредственно из сетевого интерфейса, sudo не требуется для чтения файла.
Вы также можете использовать любой из фильтров, которые мы обсуждали, чтобы отфильтровать содержимое из файла, так же, как и с данными в реальном времени. Например, проверьте пакеты в файле захвата с исходящего IP-адреса 54.204.39.132, выполнив эту команду:
Если вы хотите запустить tcpdump в фоновом режиме, добавьте & в конце команды.
Заключение
Эти основные функции tcpdump помогут вам начать работу с этим мощным и универсальным инструментом. Чтобы узнать больше, посетите веб-сайт tcpdump и справочные страницы.
Интерфейс командной строки tcpdump обеспечивает большую гибкость для захвата и анализа сетевого трафика. Если вам нужен графический инструмент для понимания более сложных потоков, посмотрите на Wireshark.
14 команд tcpdump для захвата сетевого трафика в Linux
tcpdump – это команда устранения неполадок сети, которая также известна как пакетный сниффер, используемый для захвата и отображения пакетов из сети.
tcpdump позволяет пользователям захватывать и отображать TCP / IP и другие пакеты, которые передаются или принимаются по сети, к которой подключен компьютер.
Он позволяет выполнять поиск в режиме реального времени путем перенаправления захваченных данных на grep или данные могут быть записаны в файл для последующего поиска. Вы можете применять фильтры к пакетам и избегать трафика, который вы не хотите видеть.
Для запуска команды tcpdump требуется root-доступ.
Вы можете захватить все данные, проходящие через вашу локальную сеть, и поместить эти данные в файл.
Он не отображает вывод в реальном времени на экран, но фиксирует пакеты в сети в указанном файле.
Вы можете сохранить все пакеты или часть пакетов (заголовок).
Вы можете выбрать захват и анализ трафика через один сетевой интерфейс или весь сетевой интерфейс. В
этой статье мы узнаем, как использовать команду tcpdump для анализа трафика, идущего на машину Linux.
1) Анализ трафика по всему интерфейсу
tcpdump по умолчанию не установлен, поэтому вам нужно установить его
Формат источника – source.port, где источником может быть имя хоста или IP-адрес.
Вы можете видеть в первой строке, пакет, захваченный в timestamp 07: 41: 25.886307, является IP-протоколом, который создается с именем хоста li339-47.members.linode.com и port ssh, поэтому вы видите li339-47. members.linode.com.ssh.
Пакет предназначен для флага 169.255.7.5.44284.
Вам нужно нажать кнопку отмены, чтобы остановить ее.
Если вам нужна дополнительная информация, tcpdump предоставляет несколько опций, которые улучшают или изменяют его вывод:
Как пользоваться tcpdump
Tcpdump ничем не хуже Wireshark, и имеет все необходимые возможности для анализа пакетов, к тому же вы можете сохранить все перехваченные пакеты в файл, чтобы анализировать их потом с помощью того же самого Wireshark. В этой статье мы рассмотрим как пользоваться tcpdump для перехвата сетевых пакетов.
Установка tcpdump
Во многих дистрибутивах команда tcpdump поставляется по умолчанию, но если в вашем дистрибутиве ее нет, то вы можете очень просто ее установить из официальных репозиториев. Например, в Ubuntu/Debian:
sudo apt install tcpdum p
В Fedora/Red Hat/CentOS:
sudo yum install tcpdump
Когда установка завершится, вы можете переходить к работе.
Команда tcpdump
Перед тем как перейти к примерам работы с утилитой, давайте рассмотрим ее синтаксис и основные опции. Команда имеет такой синтаксис:
При вызове обязательно нужно передать интерфейс, который будете отслеживать. Если интерфейс не указать, то будет использован первый в списке. Опции настраивают отображение и основные возможности утилиты, а фильтры позволяют отсеять ненужные пакеты. А теперь рассмотрим основные опции:
Это не все опции, но их вам будет вполне достаточно для решения большинства задач. Чаще мы будем применять фильтры. С помощью фильтров вы можете отсеивать только те типы пакетов, которые хотите видеть. Вы можете фильтровать по ip адресу, протоколу, сети, интерфейсу и многим другим параметрам. Но фильтры tcpdump мы будем рассматривать уже на примерах.
Как пользоваться tcpdump
Начнем рассматривать примеры tcpdump с захвата трафика на интерфейсе eth0, у меня это основной интерфейс, который подключен к интернету. Для работы программе необходимы права суперпользователя, поэтому не забудьте указать sudo:
Чтобы остановить работу команды нажмите Ctrl+C. В выводе вы сразу же увидите все перехваченные пакеты. Формат записи для каждого пакета будет выглядеть следующим образом:
13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881 > 192.168.1.2.52055 : Flags [.], seq 640160396:640161844, ack 436677393, win 2050, options [nop,nop,TS val 3805626438 ecr 4677385], length 1448
Здесь уже появляется информация о протоколе IP:
После опций вы можете указывать фильтры для пакетов. Вот основные параметры, по которым можно отсеивать пакеты:
Вы можете все это комбинировать между собой, чтобы получить желаемый результат. Рассмотрим более детально на примерах. Отсеем только пакеты, адресованные нашему компьютеру:
Также мы можем отобрать пакеты, отправляемые на определенный узел:
Как видите, это DNS пакеты и здесь вместо флагов TCP содержится полезная информация, запрос ip адреса хоста. Также вы можете выбрать ответные пакеты от определенного хоста:
С помощью оператора and вы можете объединить несколько фильтров в один:
Из операций объедения доступны and и or, также можно применять скобки для обозначения приоритета. Вам необязательно указывать host, во многих случаях достаточно src или dst, утилита сама поймет что имелось в виду. Точно такую же конструкцию можно использовать для портов. Например, мы можем отсеять все запросы или ответы к DNS (на порт 53):
Точно такое же можно провернуть для http (порт 80):
Естественно, тут тоже можно применять dst и src для более конкретных результатов. Вы можете фильтровать не один порт, а целый диапазон портов:
sudo tcpdump portrange 21-23
Если указать один из протоколов, вы отфильтруете только пакеты этого протокола, например tcp, udp или arp:
Точно также можно выбрать все udp пакеты:
Также доступен фильтр по обозначению сети:
sudo tcpdump net 129.168.1.1/24
Кроме того, вы можете фильтровать пакеты по их размеру, например, меньше 32 байт:
sudo tcpdump less 32
tcpdump greater 128
Выводы
В этой статье мы рассмотрели как пользоваться tcpdump. Это очень мощный сетевой анализатор, который работает только через командную строку. Надеюсь, эта информация была полезной для вас и теперь использование tcpdump будет намного проще, если у вас остались вопросы, спрашивайте в комментариях!
На завершение видео с лекцией о tcpdump:
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Руководство по tcpdump
Оглавление
1. Программа tcpdump. Различия tcpdump и Wireshark
tcpdump — это самый мощный и широко используемый сниффер пакетов с интерфейсом командной строки. Эта программа представляет собой анализатор пакетов, который используется для захвата или фильтрации разнообразных сетевых пакетов: несмотря на название, данный инструмент может захватывать и фильтровать не только пакеты TCP/IP, но и всё семейство IP протоколов (icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp, tcp), семейство протоколов Ethernet (ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, netbeui). Дополнительно программа поддерживает работу с пакетами беспроводных сетей (IEEE 802.11, то есть Wi-Fi и другие), поддерживает IPv6 и имеет очень гибкую систему фильтров.
Программа анализирует (или захватывает) пакеты на указанном интерфейсе, но также может работать сразу со всеми интерфейсами. Она доступна в операционных системах на основе Linux/Unix. Программа умеет не только анализировать живой поток данных, но и умеет их сохранять для последующего анализа в tcpdump или с использованием Wireshark (сетевой анализатор протоколов с графическим пользовательским интерфейсом), которая поддерживает формат файлов tcpdump pcap.
Различия tcpdump и Wireshark
Программа Wireshark также предназначена для захвата и анализа сетевых пакетов. У программы Wireshark имеется графический интерфейс и вариант с интерфейсом командной строки; у tcpdump только интерфейс командной строки
Программа Wireshark поддерживает два вида фильтров:
Фильтры захвата Wireshark идентичны фильтрам tcpdump. В Wireshark и tcpdump фильтры захвата применяются для фильтрации данных, которые будут сохранены в файл (или выведены на экран). Что касается фильтров отображения Wireshark, то они не влияют на количество захваченных и сохранённых данных, а используются только для фильтрации показываемой информации. Фильтры отображения Wireshark и фильтры захвата tcpdump/Wireshark поддерживают:
Фильтры отображения Wireshark поддерживают все возможности фильтров захвата, а также дополнительно:
Кроме того, программа Wireshark имеет больше инструментов для анализа сетевых данных и наглядности их отображения.
Итак, программа Wireshark больше подходит для анализа трафика протоколов прикладного уровня и анализа связанных потоков данных.
Что касается tcpdump, то она будет работать в условиях отсутствия графического окружения. Также эта программа отлично подходит для захвата сетевого трафика и его фильтрации по заданным критериям. Tcpdump тоже может применяться для выполнения разного рода анализа и тестирования сетевых настроек.
Смотрите также справочный материал «Фильтры Wireshark».
Как установить tcpdump в Linux
Многие дистрибутивы Linux поставляются уже с tcpdump. В случае, если эта программа отсутствует, вам достаточно установить пакет tcpdump из стандартных репозиториев:
Установка в Debian, Linux Mint, Ubuntu, Kali Linux и их производные:
Установка в Arch Linux, BlackArch и производные:
Установка в CentOS и другие родственные дистрибутивы:
После установки программы tcpdump в систему, вы можете продолжать исследовать следующие примеры команды.
2. Как запустить tcpdump. Сетевые интерфейсы для захвата данных. Смена сетевого интерфейса для захвата и захват со всех интерфейсов сразу
Как запустить tcpdump
Утилиту tcpdump можно запустить без опций, но она требует повышенных привилегий:
В случае запуска без опций, tcpdump самостоятельно выберет интерфейс для захвата и анализа трафика — обычно это первый настроенный интерфейс с наименьшим номером, петлевые интерфейсы пропускаются.
Окно программы будет автоматически прокручиваться по мере сниффинга новых пакетов. Для остановки захвата нажмите CTRL+c.
Опции и фильтры tcpdump
Работа tcpdump и захватываемые и отображаемые ей данные регулируются опциями программы и фильтрами для выбора только сетевых пакетов, которые удовлетворяют указанным в выражении фильтра условиям.
В качестве выражения фильтров tcpdump используются фильтры pcap (библиотека по захвату пакетов). Выражение фильтров следует после опций и может быть помещено в одинарные кавычки, если в нём содержаться специальные символы.
Выражение фильтра может быть помещено в файл, который в программу передаётся опцией -F. Если в командной строке указано ещё одно выражение фильтра, то оно игнорируется.
Смотрите также справочную информацию «Формат tcpdump (фильтры pcap)».
Захват пакетов с определённого интерфейса
Если программа tcpdump неправильно выбрала интерфейс, то вы можете указать его явно с помощью опции -i:
Как захватывать и анализировать трафик со всех интерфейсов в tcpdump
Если с опцией -i указать слово any, то программа будет захватывать со всех доступных в системе интерфейсов:
Как посмотреть, какие интерфейсы имеются в системе
Чтобы вывести список доступных в системе интерфейсов, запустите команду с опцией -D:
Показ поддерживаемых каналов передачи данных для сетевого интерфейса
Опция -L выведет список известных типов каналов передачи данных для выбранного интерфейса в указанном режиме и завершите работу. Список известных типов каналов передачи данных может зависеть от указанного режима; например, на некоторых платформах интерфейс Wi-Fi может поддерживать один набор типов каналов передачи данных, когда он не находится в режиме мониторинга (например, он может поддерживать только поддельные заголовки Ethernet или может поддерживать заголовки 802.11, но не поддерживает заголовки 802.11 с радиоинформацией) и другой набор типов каналов передачи данных в режиме мониторинга (например, он может поддерживать заголовки 802.11 или заголовки 802.11 с радиоинформацией, только в режиме мониторинга).
Пример вывода для Wi-Fi интерфейса:
Опция -I переводит Wi-Fi интерфейс в режим монитора (об этом в одном из следующих разделов), в данной команде опция -I комбинируется с -L чтобы посмотреть на тип канала передачи данных когда беспроводная карта будет в режиме монитора:
Следующая команда проверить типы каналов передачи для проводного интерфейса:
3. Фильтрация Ethernet трафика и протоколов локальной сети
В следующих командах в качестве примера выбран MAC-адрес c0:b6:f9:da:af:3e — при запуске команд заменяйте это значение на интересующий вас аппаратный адрес.
Как отфильтровать фреймы по MAC-адресу в tcpdump
Чтобы увидеть только фреймы, которые отправлены на определённый MAC-адрес или исходят от этого аппаратного адреса в Ethernet сети, используйте конструкцию ether host MAC, например:
Как в tcpdump показать только фреймы, источником которых является определённый MAC-адрес
Чтобы в локальной сети отфильтровать фреймы, которые исходят с определённого аппаратного адреса используйте ether src MAC, например:
Как в tcpdump показать только фреймы, предназначенные для определённого MAC-адреса
Чтобы в локальной сети отфильтровать фреймы, которые пришла на определённый аппаратный адрес используйте ether dst MAC, например:
Как отфильтровать ARP в tcpdump
Чтобы показать или сохранить только фреймы протокола ARP, используйте соответствующий фильтр:
Фильтр широковещательных пакетов Ethernet
Для показа только широковещательных (broadcast) пакетов локальной сети запустите команду:
Фильтр многоадресных пакетов Ethernet
Для показа только многоадресных пакетов (multicast) запустите команду:
Альтернативный вариант этой же команды:
Как показать MAC-адреса в tcpdump
Если вам нужно, чтобы для каждого пакета таких протоколов как Ethernet и IEEE 802.11 показывался MAC-адрес, то добавьте к команде опцию -e
Эту опцию можно сочетать с фильтрами:
4. Фильтры IP протокола: фильтрация трафика определённых IP, диапазонов IP адресов и подсетей в tcpdump
Фильтрация IP трафика
Чтобы отфильтровать трафик протоколов канального уровня, запустите команду:
Фильтр пакетов по IP
Для показа всех пакетов, которые пришли с указанного IP или отправлены на определённый IP используется команда вида:
Вместо IP_АДРЕСа можно указать домен сайта:
Или любое другое имя хоста, которое в данной сети может быть преобразовано в IP:
Захват пакетов, пришедших с определённого IP
Чтобы в tcpdump захватывать пакеты, которые пришли с определённого IP адреса, используйте слово src, после которого укажите интересующий вас IP:
Анализ пакетов, отправленных на определённый IP
Для захвата пакетов, которые предназначены для отправки на указанный IP адрес, используется ключевое слово dst. Следующая команда захватит только пакеты, которые направляются к хосту с адресом 157.245.118.66:
В этой и предыдущей команде в качестве ХОСТа можно указывать любое имя, которое в данной сети может быть преобразовано в IP.
Захват пакетов для диапазона IP адресов
tcpdump поддерживает несколько вариантов указания подсетей для фильтрации пакетов.
В качестве СЕТЬ можно указать полный IP адрес, например
А также можно указать только три октета IP адреса:
Два октета IP адреса:
Или один октет IP адреса:
sudo tcpdump net 192
В случае указания полного IP адреса, будут показаны только пакеты, которые отправлены или получены с этого адреса. В случае указания неполного IP, будут показаны все пакеты, часть адреса которых соответствуют указанному фрагменту IP (в случаях указания 4, 3, 2 и 1 октетов сетевыми масками являются, соответственно, 255.255.255.255, 255.255.255.0, 255.255.0.0 и 255.0.0.0).
Другими вариантами указания сети являются:
И ещё один вариант натации подсети:
Как в tcpdump фильтровать пакеты отправленные на диапазон IP адресов
Для показа только покетов, которые предназначены для определённой подсети, имеется несколько поддерживаемых нотаций.
В ней в каче СЕТЬ можно указать как полный IP адрес, так и 3, 2 или 1 его октет — смотрите примеры для предыдущего пункта.
Второй вариант фильтрации пакетов отправленных в подсеть:
Третий вариант (реальные примеры команд смотрите в предыдущем пункте):
Как в tcpdump фильтровать пакеты пришедшие из диапазона IP (подсети)
Для показа только покетов, которые пришли из определённой подсети, можно использовать любую из следующих нотаций:
В качестве СЕТЬ может быть часть IP адреса (не все октеты).
Также вы можете указать диапазон подсети следующим образом:
Или с помощью такой нотации:
Показ широковещательных пакетов IPv4
Для вывода только broadcast пакетов используйте команду фильтром:
Этот фильтр проверят оба варианта записи широковещательных адресов: все нули и все единицы и ищет маску подсети на интерфейсе, на котором выполняется захват.
Показ многоадресных пакетов
Для вывода многоадресных пакетов IPv4 запустите команду:
Как отфильтровать только входящий или только исходящий трафик в
С опцией -Q вы можете указать направление движение пакетов, которое должно быть захвачено. Возможными значениями являются «in» (только входящий трафик), «out» (только исходящий трафик) и «inout» (входящий и исходящий трафик).
Например, для захвата только входящего трафика используйте команду:
Для захвата только исходящего трафика запустите:
Эта опция работает не на всех платформах.
5. Фильтры транспортных протоколов TCP и UDP в tcpdump (фильтрация по номеру порта, диапазонам портов)
Фильтрация только IP или IPv6 трафика
Все последующие команды будут показывать трафик для обоих межсетевых протоколов: IP и IPv6.
Если вы хотите ограничить трафик только IP, то добавьте к любой из команд этого раздела and ip
Если вы хотите ограничить трафик только IPv6, то добавьте к любой из команд этого раздела and ip6
Захват только TCP пакетов
Для захвата только пакетов протокола TCP, добавьте к команде фильтр tcp:
Захват только UDP пакетов
Для фильтрации UDP трафика выполните команду:
Захват пакетов определённого порта
Допустим нужно захватить пакеты, которые отправлены или пришли на определённый порт, в этом случае после слова port укажите номер интересующего вас порта:
Эта и последующие команды с фильтрами портов применяются только для ip/tcp, ip/udp, ip6/tcp или ip6/udp протоколов — во всех остальных случаях данные не выводятся.
Порт может быть числом или именем, используемым в /etc/services. Если используется имя, то на соответствие проверяются и номер порта, и протокол. Если используется число или двусмысленное имя, то проверяется только номер порта. Например dst port 513 напечатает оба tcp/login трафик и udp/who трафик, а port domain напечатает оба tcp/domain и udp/domain трафик).
В этой и последующих командах фильтрации по портам, можно явно указать протокол, для этого любому из приведённых выражений с портом или диапазоном портов могут предшествовать ключевые слова tcp или udp как в
которому соответствуют только tcp пакеты, чей порт есть ПОРТ.
Фильтрация по порту назначения
Если нужно показать только трафик, который отправлен на определённый порт на удалённом хосте, то используйте команду вида:
Фильтрация по порту на локальной машине
Для фильтрации трафика, который исходит с определённого порта на локальной машине, используйте команду вида:
Фильтрация по диапазону портов
Для фильтрации по диапазону портов, которые использовались в качестве порта отправки трафика или порта на удалённой системе, используется команда вида:
То есть для указания диапазона портов два крайних значения нужно записать через дефис. В результате будет показан весь трафик, который в качестве исходящего или конечного порта использует номер порта, входящий в этот диапазон.
Фильтрация по диапазону портов удалённого хоста
Чтобы показать только трафик, который отправился на один из портов в указанном диапазоне, используется команда вида:
Фильтрация по диапазону портов локального хоста
Можно показать только пакеты, которые были отправлены с одного из портов на локальной машине, входящего в указанный диапазон портов:
Захват TCP пакетов с определёнными комбинациями флагов (SYN-ACK, URG-ACK и пр.)
В разделе контрольных битов заголовка TCP есть 8 битов:
Давайте предположим, что мы хотим просматривать пакеты, используемые при установлении TCP-соединения. Вспомним, что при инициализации нового соединения TCP использует протокол трёх этапного рукопожатия; последовательность соединений относительно контрольных битов TCP:
Теперь мы заинтересованы в захвате пакетов, в которых установлен только бит SYN (шаг 1). Обратите внимание, что нам не нужны пакеты с шага 2 (SYN-ACK), просто начальный SYN. Нам нужно правильное выражение фильтра для tcpdump.
Напомним структуру заголовка TCP без параметров:
Начиная отсчёт с 0, соответствующие биты управления TCP содержатся в октете 13:
Давайте внимательнее посмотрим на октет №. 13:
Это интересующие нас биты TCP. Мы пронумеровали биты в этом октете от 0 до 7 справа налево, поэтому бит PSH — это бит 3, а бит URG — 5.
Напомним, что мы хотим захватывать пакеты только с установленным SYN. Давайте посмотрим, что происходит с октетом 13, если приходит датаграмма TCP с битом SYN, установленным в его заголовке:
Глядя на раздел битов управления, мы видим, что установлен только бит номер 1 (SYN).
Предполагая, что октет номер 13 является 8-разрядным целым числом без знака в порядке сетевых байтов, двоичное значение этого октета равно
и его десятичное представление
0*2 7 + 0*2 6 + 0*2 5 + 0*2 4 + 0*2 3 + 0*2 2 + 1*2 1 + 0*2 0 = 2
Мы почти закончили, потому что теперь мы знаем, что если установлен только SYN, значение 13-го октета в заголовке TCP, если интерпретировать его как 8-разрядное целое число без знака в порядке сетевых байтов, должно быть ровно 2.
Эта связь может быть выражена как
Мы можем использовать это выражение в качестве фильтра для tcpdump для просмотра пакетов, в которых установлен только SYN:
Выражение говорит: «пусть 13-й октет дейтаграммы TCP имеет десятичное значение 2», и это именно то, что нам нужно.
Теперь давайте предположим, что нам нужно перехватить пакеты SYN, но нам все равно, установлен ли одновременно с ним ACK или любой другой бит управления TCP. Давайте посмотрим, что происходит с октетом 13, когда приходит TCP датаграмма с установленным SYN-ACK:
Теперь биты 1 и 4 установлены в 13-м октете. Двоичное значение октета 13 равно
что при переводе в десятичное представление даёт
0*2 7 + 0*2 6 + 0*2 5 + 1*2 4 + 0*2 3 + 0*2 2 + 1*2 1 + 0*2 0 = 18
Теперь мы не можем просто использовать ‘tcp[13] == 18’ в выражении фильтра tcpdump, потому что это выберет только те пакеты, у которых установлен SYN-ACK, но не те, у которых установлен только SYN. Помните, что нам все равно, установлен ли ACK или любой другой бит управления, пока установлен SYN.
Чтобы достичь нашей цели, нам нужно выполнить логическую операцию И между бинарным значением октета 13 с другим значением, которое сохранит бит SYN. Чтобы этого добиться, нужно выполнить операцию логическое И между значением 13-го октета и бинарным значением SYN:
Мы видим, что эта операция И даёт один и тот же результат независимо от того, установлен ли ACK или другой бит управления TCP. Десятичное представление значения AND, а также результат этой операции равен 2 (двоичный 00000010), поэтому мы знаем, что для пакетов с установленным SYN должно соблюдаться следующее соотношение:
Это же самое в качестве выражения фильтра tcpdump:
Некоторые смещения и значения полей могут быть выражены как имена, а не как числовые значения. Например, tcp[13] можно заменить на tcp[tcpflags]. Также доступны следующие значения полей флага TCP: tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg, tcp-ece, tcp-cwr.
Это может быть продемонстрировано как:
Обратите внимание, что вы должны использовать одинарные кавычки или обратную косую черту в выражении, чтобы скрыть специальный символ AND (‘&‘) от оболочки.
Итак, если нам нужно отфильтровать пакеты, в которых установлен только определённый флаг (а остальные не установлены), то нужно использовать конструкцию вида
Если же нам нужны пакеты, в которых установлен определённый флаг (а другие флаги могут быть установлены или установлены — нам не важно), то нужно использовать конструкцию вида:
Если нужно отфильтровать пакеты с установленным определённым сочетанием флагов, то можно использовать одну из следующих конструкций (показано на примере одновременно установленных SYN и ACK):
6. Фильтрация IPv6 трафика
Как показать IPv6 трафик в tcpdump
По умолчанию фильтр ip показывает только IPv4 трафик. Для показа только IPv6 трафика запустите команду:
Как в tcpdump выводить одновременно IPv4 и IPv6 трафик
Чтобы захватывать и сохранять трафик обеих версий протокола IP, запустите команду:
При запуске без опций, программа также будет показывать трафик обоих рассматриваемых протоколов:
Но последние две команды при этом не являются идентичными! Предпоследняя будет захватывать только IPv4 и IPv6 трафик, а последняя из рассмотренных будет заватывать IPv4 и IPv6 трафик + Ethernet трафик (например, ARP).
Как отфильтровать TCP трафик IPv6
Чтобы показывать только TCP пакеты, которые проходят по сети IPv6, выполните команду:
Как отфильтровать UDP трафик IPv6
Для вывода и сохранения только UDP трафика протокола IPv6 запустите команду:
Как отфильтровать ICPM6
Чтобы показать только пакеты ICPM для IPv6, то есть ICPM6, выполните команду:
Как отфильтровать пакеты ARP протокола для IPv6
Для того, чтобы увидеть пакеты, которые выполняют роль ARP для IPv6, запустите команду:
Какие типы пакетов ICPM6 поддерживаются в tcpdump для фильтрации
В tcpdump доступны следующие типы полей пакетов ICPM6: icmp6-destinationrunreach, icmp6-packettoobig, icmp6-timeexceeded, icmp6-parameterproblem, icmp6-echo, icmp6-echoreply, icmp6-multicastlistenerquery, icmp6-multicastlistenerreportv1, icmp6-multicastlistenerdone, icmp6-routersolicit, icmp6-routeradvert, icmp6-neighborsolicit, icmp6-neighboradvert, icmp6-redirect, icmp6-routerrenum, icmp6-nodeinformationquery, icmp6-nodeinformationresponse, icmp6-ineighbordiscoverysolicit, icmp6-ineighbordiscoveryadvert, icmp6-multicastlistenerreportv2, icmp6-homeagentdiscoveryrequest, icmp6-homeagentdiscoveryreply, icmp6-mobileprefixsolicit, icmp6-mobileprefixadvert, icmp6-certpathsolicit, icmp6-certpathadvert, icmp6-multicastrouteradvert, icmp6-multicastroutersolicit, icmp6-multicastrouterterm.
В фильтрах tcpdump типы полей нужно указывать следующим образом:
Также можно использовать цифровое значение:
Фильтр многоадресных пакетов IPv6
Для фильтрации multicast пакетов протокола IPv6 запустите команду:
Фильтр широковещательных пакетов IPv6
Поддерживаются только фильтры широковещательных пакетов IP.
Как отфильтровать по IPv6 адресу
Если нужно найти пакеты, которые отправлены на определённый IPv6 или пришли с определённого IPv6 адреса, то используйте команду вида:
В следующих командах в качестве примера я буду использовать IPv6 2604:a880:800:c1::2ae:d001 — заменяйте его на интересующий вас:
Фильтр трафика, отправленного с определённого IPv6 адреса
Если вас интересует только трафик, источником которого является указанный IPv6, то используйте следующую команду:
Как показать трафик, отправленный на определённый IPv6 адрес
Если вы хотите найти пакеты, которые предназначены для IPv6 адреса, то запустите команду вида:
Как отфильтровать по диапазону IPv6 адресов
Как было показано выше, для IP протокола можно указать диапазоны подсетей сразу несколькими способами. Для IPv6 протокола вариантов меньше.
Во-первых, доступна следующая команда:
Для IP протокола можно указать не все октеты, но для IPv6 адрес должен быть записан полностью, то есть сетевой маской является ff:ff:ff:ff:ff:ff:ff:ff. То есть получается, что IPv6 «сеть» на самом деле всегда соответствует одному хосту.
Указать диапазон подсети для IPv6 можно следующим образом:
Захват пакетов, пришедших из подсети IPv6
Для мониторинга трафика пришедшей из определённой IPv6 сети (с любого адреса, принадлежащего этой подсети) используйте команду вида:
Захват пакетов, отправленных в подсеть IPv6
Для мониторинга трафика отправленную в указанную IPv6 сеть (на любой адрес, принадлежащий этой подсети) используйте команду вида:
Как отфильтровать IPv6 трафик по номеру порта
Чтобы получить только IPv6 отправленный или принятый на определённый ПОРТ, используйте конструкцию:
Если вам нужно одновременно захватывать трафик протоколов IP и IPv6 по номеру порта, то используйте команду вида:
IPv6 трафик пришедший на указанный порт
Чтобы показать только трафик, который предназначен для определённого порта, запустите команду:
Для захвата трафика отправленного на определённый порт независимо от межсетевого протокола, используйте команду вида:
IPv6 трафик отправленный с указанного порта
Чтобы показать только трафик, который отправлен с указанного порта, запустите команду:
Для захвата трафика отправленного с указанного порта независимо от межсетевого протокола, используйте команду вида:
Как отфильтровать IPv6 трафик по диапазону портов
Для фильтрации по диапазону портов, которые использовались в качестве порта отправки трафика или порта на удалённой системе, используется команда вида:
Фильтрация IPv6 по диапазону портов удалённого хоста
Чтобы показать только трафик, который отправился на один из портов в указанном диапазоне, используется команда вида:
Фильтрация IPv6 по диапазону портов локального хоста
Можно показать только пакеты, которые были отправлены с одного из портов на локальной машине, входящего в указанный диапазон портов:
7. Комбинирование фильтров tcpdump
В фильтрах tcpdump можно выстраивать довольно сложные правила, что-то вроде «TCP трафик, отправленный на порт 8080, кроме трафика от хоста 192.168.1.4». Ещё пример: «весь трафик от хоста 192.168.1.5 или хоста 192.168.1.6, кроме TCP протокола на порт 443».
При создании таких комбинированных фильтров можно использовать:
Отрицание имеет наивысший приоритет. Логическое ИЛИ и И имеют равный приоритет и связывают слева направо — обратите на это особое внимание, т. к. в логике и в некоторых других синтаксисах И имеет приоритет над ИЛИ. Чтобы правильно выражать логическую связь между фильтрами, рекомендуется группировать их с помощью скобок.
Например, если мы ходим видеть любой трафик кроме TCP и UDP, то следующее выражение будет неправильным:
Обратите внимание на одинарные кавычки — их нужно использовать если в выражении фильтра имеются скобки или другие специальные символы.
Пример, в котором будет показан любой трафик, кроме IP и IPv6 (будет показан, например, ARP):
Эта команда означает в точности, что и предыдущая:
«TCP трафик, отправленный на порт 8080, кроме трафика от хоста 192.168.1.4» в виде команды будет выглядеть следующим образом:
«Весь трафик от хоста 192.168.1.5 или хоста 192.168.1.6, кроме TCP протокола на порт 443» можно записать так:
Обратите внимание, что кроме слов src (хост или порт с которого отправлен пакет) и dst (хост или порт на который отправлен пакет), также существуют ключевые слова src or dst и src and dst. Причём вариант src or dst является поведением по умолчанию, поскольку если не указаны слова src and dst, то совпадение засчитывается для указанного хоста/порта, независимо от того, является он источником или пунктом назначения.
Выражение src and dst означает одновременно является источником и пунктом назначения (хост или порт) — может пригодиться для каких-то специальных случаев.
8. Настройка вывода tcpdump
Печать содержимого сетевых пакетов в ASCII
С опцией -A команда tcpdump будет отображать на экране содержимое пакетов в формате ASCII:
Печатные символы будут показаны в обычном виде, а остальные символы будут заменены точками — подобную картину можно видеть если открыть в ASCII формате бинарный файл.
В виде понятного текста вы будите видеть только информацию, которая передаётся в виде обычного текста. Бинарные данные и зашифрованный трафик будет нечитаем.
Показ захваченных сетевых пакетов в шестнадцатеричном виде и в ASCII
Следующая команда с опцией -XX захватывает данные каждого пакета, включая его заголовки уровня канала, и выводит их на экран в шестнадцатеричном и ASCII форматах.
Все родственные опции:
Как в tcpdump выводить адреса и номера портов в числовом виде
Программа tcpdump при выводе информации IP адреса преобразовывает в имена хостов и использует имена портов (служб) вместо цифрового отображения. Чтобы показывать IP и числа вместо имён портов, добавьте опцию -n, которая препятствует конвертации адресов (то есть адресов хостов и номеров портов) в имена.
Как выводить MAC адреса в tcpdump
С опцией -e программа tcpdump будет печатать заголовки канального уровня в каждой выведенной строке. Это может использоваться, например, для показа аппаратных адресов MAC для таких протоколов как Ethernet и IEEE 802.11:
Настройка подробности вывода tcpdump
У программы tcpdump несколько уровней вербальности. Для изменения уровня вербальности, установленного по умолчанию, используйте следующие опции:
Настройка времени в tcpdump
Для времени имеются следующие опции:
Номера пакетов
Вы можете использовать опцию -# чтобы выводить в начале порядковый номер каждого захваченного пакета.
А опция -S печатает абсолютные, а не относительные номера последовательности TCP.
9. Сохранение сетевых пакетов в файл. Анализ файла с сетевыми пакетами
Захват и сохранение пакетов в файл
Как уже было сказано ранее, у tcpdump есть функция по захвату и сохранению файла в формате .pcap, для этого используйте опцию -w:
В результате вместо парсинга и печати пакетов, сырые пакеты будут сохраняться в файл. Позже их можно напечатать с помощью опции -r. Если в качестве имени файла указать — (дефис), то будет использоваться стандартный вывод.
При записи в файл или передаче по контейнеру (трубе), вывод будет буферизироваться, поэтому программа, считывающая из файла или трубы, может не видеть пакеты произвольное количество времени после того, как они уже получены. Использование флага -U приводит к тому, что пакеты записываются сразу по мере их получения.
MIME тип application/vnd.tcpdump.pcap было зарегистрировано в IANA для файлов pcap. Файловое расширение .pcap кажется самым часто используемым наряду с .cap и .dmp. Сам Tcpdump не проверяет расширение при чтении файлов захвата и не добавляет расширение при их записи (вместо этого он использует магическое число в заголовке файла). Тем не менее многие операционные системы и приложения будут использовать это расширение, если оно присутствует, и добавление расширения (то есть pcap) является рекомендованным.
Чтение файла захвата
Для считывания и анализа файла захвата packet 0001.pcap используйте команду с опцией -r:
Ротация файлов захвата tcpdump
Если указать опцию -G СЕКУНДЫ, то файл захвата, который записывается с опцией -w, будет ротироваться каждые СЕКУНД. Сохраняемый файл будет иметь имя, которое указано опцией -w, при которой имя должно включать формат времени strftime(3). Если формат времени не указан, каждый новый файл будет перезаписывать предыдущий.
Если используется в пакет с опцией -C, то имя файла будет иметь форму «файл ».
10. Ограничение количества захваченных сетевых данных
Ограничение количества захваченных пакетов
Программу tcpdump можно запустить с опцией, чтобы автоматически завершала работу после N захваченных пакетов. Этой опцией является -c. Например, чтобы утилита захватила только 6 пакетов:
Ограничение на размер файла захвата tcpdump
Если вы не хотите, чтобы файл с сетевыми пакетами, которые захватывает tcpdump, привысил определённый размер, то используйте опцию -C РАЗМЕР_ФАЙЛА.
Перед записью сырокого пакета в файл, будет выполняться проверка, превысил ли текущий файл РАЗМЕР_ФАЙЛА, и если это так, то текущий файл для сохранения будет закрыт и открыт новый.
Файл для сохранения данных будет иметь имя, которое указано опцией -w, после которого следует номер, начинающийся с 1 и постепенно увеличивающийся. Единицей РАЗМЕРа_ФАЙЛА являются миллионы байт (1,000,000 байт, а не 1,048,576 байт).
Учитывая логику работы, нужно понимать, что скорее всего файлы объём файла будет получаться не строго равным РАЗМЕРу_ФАЙЛА, а будет чуть превышать его.
Настройка количества файлов для ротации в tcpdump
Для ограничения количества создаваемых файлов с захваченными сетевыми пакетами используется опция -W. Эта опция комбинируется с -C (ограничивает размер файлов) и -G (устанавливает время ротации файлов).
Когда -W используется в паре с -C, то она ограничит лимит количества созданных файлов указанным числом, и будет перезаписывать файлы начиная с первого, таким образом создав буфер «ротации». Дополнительно она будет к имени файла добавлять достаточное количество нулей для поддержки максимального числа файлов — это делается для корректной их сортировки.
Когда -W используется в паре с -G, она будет ограничивать количество созданных ротируемых файлов дампа и завершит работу со статусом 0 при достижении лимита. Если используется также и с -C, то результатом будет циклическая ротация файлов в указанный промежуток времени.
Автоматическое выполнение команды после ротации файлов tcpdump
Вместе с опциями -C или -G вы можете дополнительно использовать опцию -z КОМАНДА. В результате tcpdump будет запускать файл КОМАНДА каждый раз, когда файл захвата будет закрываться при переходе к следующему файлу во время ротации. Например, если указать -z gzip или -z bzip2, то каждый файл захвата будет сжат с использованием gzip или bzip2.
Обратите внимание, что tcpdump будет запускать команду параллельно захвату, используя низший приоритет, то есть он не будет беспокоить процесс захвата.
В случае если вам хочется использовать команду, которая сама принимает опции или различные аргументы, вы всегда можете записать скрипт оболочки, который в качестве единственного аргумента будет принимать имя сохранённого файла захвата и в этом файле вы можете в команде указать любые опции и аргументы.
11. Захват трафика беспроводных сетей
Можно ли в tcpdump захватывать трафик Wi-Fi
Программа tcpdump может захватывать трафик беспроводных сетей, в том числе Wi-Fi, при этом она может работать с Wi-Fi сетями как в обычном режиме, аналогичному захвату данных в Ethernet сети, так и в режиме монитора, когда она сможет захватывать управляющие и контрольные фреймы, рукопожатия и прочие пакеты, недоступные в обычном режиме. Для работы в режиме монитора нужен Wi-Fi адаптер из этого списка.
Режим монитора в tcpdump. Как перевести Wi-Fi карту в режим монитора
Режим монитора поддерживают Wi-Fi карты из этого списка. В режиме монитора беспроводная карта может захватывать фреймы, которые не предназначены для неё, а также контрольные и управляющие фреймы.
Для включения режима монитора нужно указать опцию -I:
Это работает только для IEEE 802.11 Wi-Fi интерфейсов и поддерживается не на всех операционных системах.
Обратите внимание, что в зависимости от беспроводного адаптера (точнее говоря, от сочетания одновременно поддерживаемых интерфейсов, т. к. некоторые Wi-Fi карты могут работать одновременно в обычном режиме и в режиме монитора), соединение Wi-Fi в режиме монитора может прерваться и будет невозможно преобразовывать имена хостов или сетевые адреса если вы не подключены к Интернету с помощью другого сетевого адаптера.
Как выводить MAC адреса в tcpdump
Для показа MAC адресов используйте опцию -e.
Как захватить рукопожатие в tcpdump
При работе tcpdump в режиме монитора без указания фильтров, будут захватываться все беспроводные фреймы, в том числе и четырёхступенчатое рукопожатие. Впоследствии это рукопожатие можно будет найти с помощью Wireshark, используя фильтр:
Смотрите дополнительные подробности в статье «Фильтры Wireshark».
Для того, чтобы tcpdump фильтровала только фреймы рукопожатий, используйте фильтр:
При захвате рукопожатий дополнительное рекомендуется всегда указывать опцию -U, чтобы данные сразу записывались в файл.
Пример захвата всех рукопожатий (для любых Точек Доступа и клиентов) и сохранение их в файл test.cap:
Предыдущая команда будет захватывать рукопожатия на том канале, на котором в данный момент работает беспроводная карта — автоматического переключения каналов не будет.
Рассмотрим практическую ситуацию: нужно захватить рукопожатие от точки доступа с BSSID 14:9d:09:d0:04:84, которая работает на канале 8. Для захвата я буду использовать беспроводной интерфейс с именем wlp0s20f0u1.
Для выполнения этой задачи, нужно начать с переключения беспроводной карты на нужный канал. При этом помните, что NetworkManager и другие программы могут автоматически переключать беспроводные интерфейсы на другие каналы. Поэтому нужно либо остановить службу NetworkManager:
Либо хотя бы убедиться, что используемый для захвата беспроводной интерфейс не используется для Интернет-подключения.
Переключение беспроводной точки доступа выполняется просто, но есть нюансы, о которых нужно помнить: команда сработает только если интерфейс уже в режиме монитора И если он в момент переключения в состоянии up И если он в момент переключения не используется… В общем, хотя tcpdump умеет включать режим монитора, мы сделаем это заранее.
Для переключения Wi-Fi карты на определённый канал используйте последовательность команд:
Например, беспроводную карту с именем интерфейса wlp0s20f0u1 я устанавливаю на восьмой канал:
Теперь нужно запустить команду вида:
Пример реальной команды, в которой для захвата рукопожатия используется интерфейс wlp0s20f0u1, рукопожатие сохраняется в файл test.cap, MAC-адрес ТД 14:9d:09:d0:04:84, а MAC-адрес клиента c0:b6:f9:da:af:3e:
Файл test.cap открытый в Wireshark после захвата рукопожатия:
Фильтры tcpdump для Wi-Fi
У tcpdump имеются специальные фильтры для Wi-Fi сетей во время захвата трафика в режиме монитора, полный перечень смотрите в статье «Фильтры tcpdump и pcap. Фильтры захвата Wireshark». Ниже рассмотрены только некоторые из них.
Фильтрация различных типов пакетов Wi-Fi в tcpdump
type wlan_type
Истина, если тип фреймов IEEE 802.11 совпадает с указанным wlan_type. Действительными типами являются: mgt, ctl и data.
type wlan_type subtype wlan_subtype
Истина, если тип фреймов IEEE 802.11 совпадает с указанным типом wlan_type и подтип фреймов совпадает с указанным wlan_subtype.
Если указанным wlan_type является mgt, тогда действительными wlan_subtypes являются: assoc-req, assoc-resp, reassoc-req, reassoc-resp, probe-req, probe-resp, beacon, atim, disassoc, auth и deauth.
Если указанным wlan_type является ctl, тогда действительными wlan_subtypes являются: ps-poll, rts, cts, ack, cf-end и cf-end-ack.
Если указанным wlan_type является data, тогда действительными wlan_subtypes являются: data, data-cf-ack, data-cf-poll, data-cf-ack-poll, null, cf-ack, cf-poll, cf-ack-poll, qos-data, qos-data-cf-ack, qos-data-cf-poll, qos-data-cf-ack-poll, qos, qos-cf-poll и qos-cf-ack-poll.
12. Практические примеры использования tcpdump
Как проверить настройку прокси
При настройке прокси, VPN или другого анонимайзера может возникнуть вопрос, действительно ли все пакеты на целевой хост переправляются через прокси, VPN или другой анонимайзер?
Ответить на этот вопрос поможет команда tcpdump если запустить её примерно следующим образом:
В качестве IP_или_ДОМЕН укажите, например, адрес удалённого хоста:
Теперь откройте этот удалённый хост или запустите его сканирование. Если прокси настроен правильно, то не должны отправляться пакеты на этот хост, и также не должны приходить пакеты с этого хоста. То есть вывод tcpdump должен быть пустым. Если вы увидели обмен трафиком с этим хостом, значит прокси или программа для работы с прокси настроена неверно и обращается к этому хосту напрямую.
Как найти подключения к SSH. Как найти подключения к SSH на нестандартном порту
Трафик SSH является зашифрованным. Тем не менее подключения к SSH можно обнаружить, поскольку зачастую SSH использует стандартны порт 22. И даже в случае если хитрый системный администратор настроил работу на нестандартном порту, мы всё равно можем найти эти подключения!
Начнём с захвата всего трафика:
Чтобы обнаружить SSH подключения, которые выполняются к стандартному порту, выполните команду:
В выводе этой команды вы увидите IP адреса, между которыми выполнялось это подключение.
Если используется нестандартный порт, то всё равно можно обнаружить подключение к SSH серверу. Дело в том, что при инициализации передачи ключа происходит обмен информацией в виде открытого текста, обе стороны пересылают друг другу что-то вроде такого:
Скорее всего, это список поддерживаемых ими алгоритмов шифрования. Если удастся найти какую-либо из этих строк, то это говорит об инициализации подключения к SSH серверу.
Для поиска можно использовать примерно такую команду (ищется строка «@openssh.com»):
Если будет что-то найдено, то для удобства можно продолжить в Wireshark, там используя фильтр отображения
Вы наглядно увидите хосты, между которыми пересылались эти пакеты.
13. Формат выводимых данных
[В ПРОЦЕССЕ ПОДГОТОВКИ]
14. Справочная информация по всем фильтрам tcpdump. Применение экранирования в фильтрах tcpdump
Справка по фильтрам tcpdump
Полный перечень фильтров смотрите в справочном материале «Фильтры tcpdump и pcap. Фильтры захвата Wireshark».
Экранирование в фильтрах tcpdump
Некоторые слова могут быть как примитивом (ключевым словом), так и значением другого примитива (например, ip, tpc, upd, icmp). В случае использования такого слова в качестве значения, требуется его экранирование с помощью обратного слэша (\). При использовании выражения фильтра, например, с программой tcpdump, нужно помнить, что обратный слэш имеет особое значение для оболочки, по этой причине весь фильтр нужно заключать в одинарные кавычки, например:
При наличии слов, которые нужно экранировать, всё выражение фильтра нужно помещать в одинарные кавычки. В данной ситуации экранирование выполняется не для оболочки Bash, а для библиотеки обработки фильтров (поэтому такое странное экранирование — не отдельных символов, а целых слов).
Ещё примеры, когда, нужно экранировать ключевые слова:
ip proto протокол
В качестве протокола может быть число или одно из имён: icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp или tcp. Обратите внимание, что идентификаторы tcp, udp и icmp также являются ключевыми словами и должны быть экранированы обратным слэшем (\).
ether proto протокол
Протоколом может быть число или одно из имён: ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx или netbeui. Обратите внимание, что идентификаторы также являются ключевыми словами и должны быть экранированы обратным слэшем (\).
В выражении фильтра могут применяться специальные символы (обозначение логических И, ИЛИ, НЕ, выражения фильтрации по заголовкам TCP пакетов и пр.). В этом случае можно экранировать отдельные символы, но намного удобнее просто поместить всё выражение фильтра в одинарные кавычки — в этом случае не придётся экранировать каждый символ по отдельности.