Полное руководство по tcpdump с примерами

Полное руководство по tcpdump с примерами

Инструмент Tcpdump представляет собой основное средство сетевого анализа, используемое специалистами в сфере информационной безопасности. То есть, все желающие разобраться в особенностях TCP / IP протоколов должны также освоить основы работы с этим инструментом. Безусловно, немало специалистов применяют в своей работе более высокоуровневые средства вроде Wireshark. С другой стороны, мы считаем такой выбор не совсем верным.

В том случае, если приложение визуализирует данные о сетевом трафике в максимально простой естественной форме, анализ этих данных в полной мере осуществляется за счет навыков и знания человека. Подобный подход позволяет сформировать более глубокое понимание принципов TCP / IP протоколов. По этой причине стоит с самого начала использовать именно tcpdump, а не другие средства.

Содержание

  1. Базовые особенности работы с tcpdump
    1. Доступные функции
    2. Фильтрующие выражения в tcpdump
  2. Несколько примеров
  3. Расширенное отображение в tcpdump
  4. Спецсимволы и комплексное группирование
    1. Отображение конкретных TCP-флагов
    2. Вывод пакетов ACKNOWLEDGE (ACK)
    3. Вывод пакетов PUSH (PSH)
    4. Вывод пакетов RESET (RST).
    5. Вывод пакетов SYNCHRONIZE (SYN)
    6. Вывод пакетов FINISH (FIN)
    7. Вывод пакетов SYNCHRONIZE / ACKNOWLEDGE (SYNACK)
    8. Снятие флагов RST за счет tcpflags
    9. Снятие флагов FIN за счет tcpflags
  5. Выявление трафика, заслуживающего особого внимания
    1. Поиск пакетов с нормальными комплектами RST и SYN
    2. Открытый текст HTTP и запрос
    3. SSH-соединения на конкретный порт (через баннер)
    4. Пакеты С TTL < 10 (проблема или TRACEROUTE)
    5. Пакеты с установкой EVIL BIT
  6. Заключение

Базовые особенности работы

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

Доступные функции

  • -D — вывести исчерпывающий перечень доступных интерфейсов;
  • -i eth0 — проверить определенный интерфейс (eth0);
  • -i any — проверить интерфейсы на предмет наличия любого трафика;
  • -n — выводить IP- адреса, а не имена хостов;
  • -nn — выводить IP-адреса вместе с номерами портов, а не имена хостов с названиями протоколов;
  • -q — отображать минимальный объем данных о пакете;
  • -t — отключить вывод метки времени для всех строк;
  • -tttt —включает для каждой из строк отображение временных меток в формате по умолчанию;
  • -X — отображать данные пакета одновременно в шестнадцатеричной и в ASCII кодировках;
  • -XX — аналог -X, который также выводит ethernet header;
  • -v, -vv, -vvv — увеличить объем возвращаемых данных о пакетах;
  • -c — вывести указанное число пакетов, после чего стоп;
  • -s — вычислить длину snaplength захвата в байтах (-s0, чтобы вычислить все, если вы намеренно не захватили меньше);
  • -S — вывести абсолютные порядковые номера;
  • -e — продемонстрировать ethernet header;
  • -q — вывести минимум данных о пакете;
  • -E — произвести расшифровку трафика IPSEC, отдав ключ шифрования.

Стоит обратить внимание, что стандартное значение snaplength в tcpdump 4.0 увеличилось — с 68 до 96 байтов. То есть, о каждом пакете вы увидите больше данных, однако все равно не все. Попробуйте -s 1514 или -s 0 для получения полного охвата.

Фильтрующие выражения

Инструмент tcpdump позволяет использовать различные выражения, способные отсеивать отдельные типы трафика. Это упрощает поиск нужной информации и экономит ваше время. Изучение основных выражений и способов их комбинирования превращает данное приложение в крайне мощный инструмент.

Всего выражений в программе предусмотрено три вида: type, dir и proto.

Основные возможности: хост, сеть или порт.

Директории дают возможность выполнить src, dst в любых комбинациях комбинации.

Кроме того, протокол дает возможность выявлять tcp, udp, icmp, ah и прочее.

Несколько примеров

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

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

 

Просмотреть данные по конкретному интерфейсу поможет следующая комбинация.

 

Для просмотра трафика по 192.168.0.100 (исходящего и входящего) введите такой набор команд.

 

Следующим способом можно настроить подробное отображение данных без номеров портов или имен хостов, абсолютных порядковых номеров и временных меток.

 

С другой стороны, бывает полезен способ отображения в шестнадцатеричном виде. Например, если вам нужно проверить содержимое определенных пакетов. Применяется для изолированного просмотра нескольких пакетов для более глубокого изучения.

 

Также можно отсеять для отображения трафик по источнику или назначению за счет src и dst.

 

С целью выявления пакетов, следующих из определенной сети либо в нее, примените net (можно и нужно комбинировать с src и dst).

 

Кроме того, существует возможность вывести трафик определенного порта, применив опцию port + нужный номер порта.

 

В том случае, если вы разыскиваете конкретный тип трафика, попробуйте опции tcp, udp, icmp.

 

Помимо всего прочего, несложно вывести весь трафик IP6 с помощью опции протокола.

 

Найти трафик поможет даже фильтр по диапазону портов.

 

В том случае, если вас интересуют все пакеты определенного размера, вы можете использовать следующие запросы.

 

Бывает необходимо сохранить результаты поиска пакетов в отдельный файл для дальнейшего изучения и анализа. Такие файлы называют PCAP (PEE-cap), и они имеют машиночитаемый формат. То есть, считывать данные из таких файлов способны самые разные приложения, включая разные сетевые анализаторы, инструменты выявления атак и вторжений и, безусловно, tcpdump. Для сохранения данных нужно указать файл с именем capture_file + опцию -w.

 

Открывать для чтения PCAP можно за счет использования опции -r. Стоит отметить, что при чтении файла доступны для применения все регулярные выражения tcpdump. Только нужно помнить, что при их введении обрабатывается только содержимое PCAP.

Расширенное отображение

Базовые примеры применения выражений и опций мы рассмотрели. Теперь настало время перейти к более сложным примерам.

Прежде всего, tcp dump позволяет комбинировать опции всеми доступными способами, что позволяет отсеять для отображения ту или иную выборку данных. Предусмотрено три метода комбинирования опций, которые будут хорошо знакомы любому человеку с опытом изучения программирования.

AND
Оператор and — также можно &&.

OR
Оператор or — также можно||.

EXCEPT
Оператор not — также можно !.

Попробуем привести несколько примеров с удачными комбинациями.

Предположим, что нам нужно вывести трафик из 192.168.0.1 до любого хоста на порте 8000.

 

Или же нам может понадобится найти весь трафик из 192.168.x.x, направляющийся в сети 10.x или 172.16.x.x. Кроме того, попробуем указать шестнадцатеричный формат вывода и не указывать имена хостов. И добавим уровень дополнительной детализации.

 

Следующий пример позволит вывести весь трафик из 192.168.0.2, не являющийся ICMP.

 

А такая комбинация позволит отобразить трафик, кроме SSH (22 порта).

 

То есть, вы можете применить свою креативность для формирования абсолютно любых запросов, которые позволят найти буквально все необходимое. Сначала находите нужную информацию, после чего отсеиваете все ненужное для получения изолированного типа трафика.

Спецсимволы и комплексное группирование 

Стоит отметить, что в сложных запросах обычно приходится комбинировать различные опции внутри одинарных кавычек. Эти символы дают понять tcpdump, что отдельные спец символы нужно игнорировать. Однако так же можно группировать и выражения, включая хост, порт, сеть и т.д. Следующий пример показывает команду, не использующую одинарные кавычки.

 

Однако наличие скобок приведет к тому, что выполнение команды вернет ошибку. Решить проблему можно, поставив перед каждой из скобок \ или заключив команду в одинарные кавычки:

Отображение конкретных TCP-флагов

Трафик можно захватывать на основании конкретных TCP-флагов.

Вывод пакетов ACKNOWLEDGE (ACK)

Вывод пакетов PUSH (PSH)

Вывод пакетов RESET (RST)

Вывод пакетов SYNCHRONIZE (SYN)

Вывод пакетов FINISH (FIN)

Вывод пакетов SYNCHRONIZE / ACKNOWLEDGE (SYNACK)

 

Примечание: лишь флаги PSH, RST, SYN и FIN присутствуют в соответствующем поле tcpdump. Безусловно, URG и ACK тоже отображаются, но не в поле flags.

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

Снятие флагов RST за счет tcpflags

Снятие флагов FIN за счет tcpflags

 

Примечание: данный метод подходит и для других флагов.

Выявление трафика, заслуживающего особого внимания

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

Поиск пакетов с нормальными комплектами RST и SYN

Открытый текст HTTP и запрос

SSH-соединения на конкретный порт (через баннер)

Пакеты С TTL < 10 (проблема или TRACEROUTE)

Пакеты с установкой EVIL BIT

Заключение

Tcpdump — мощный инструмент, полезный для всех желающих освоить принципы сетевой и информационной безопасности.
Особый принцип взаимодействия с трафиком вместе с точностью анализа пакетов превращают приложение в лучший инструмент изучения TCP / IP.
Безусловно, анализаторы протоколов вроде Wireshark очень удобны. Однако если вы желаете разобраться в пакетах, лучше начать с tcp dump.

Спасибо за время, потраченное на чтение статьи! Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира информационных технологий!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников — записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University!

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Сети Linux

Больше похожих постов

1 комментарий. Оставить новый

  • Спасибо большое за статью. Есть вопрос как можно определить сетевых приложений по характеристикам сетевтго трафика? По номеру порта это только работает если приложения использует статичечкий порт. Жду вашего ответа. Заранее спасибо!

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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

Самое читаемое
Меню
Send this to a friend