arrow_back

Знакомство с tcpdump

Sign in Join
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Знакомство с tcpdump

Lab 1 hour universal_currency_alt 1 Credit show_chart Introductory
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Введение

На этом занятии вы познакомитесь с программой tcpdump и некоторыми ее функциями. Это основное средство анализа сети для специалистов в области информационной безопасности и сетевых технологий. Как специалисту по ИТ-поддержке, вам важно уметь пользоваться этой программой на случай, если придется разбираться в данных TCP/IP. Она поможет представить сетевой трафик в таком виде, чтобы было удобнее анализировать его и устранять неполадки.

На выполнение заданий отводится 60 минут.

Что вам предстоит сделать

  • Основные сведения. Вы узнаете, как использовать программу tcpdump, что означают некоторые ее параметры и как интерпретировать получаемые результаты.
  • Перехват пакетов. Вы научитесь сохранять перехваченные пакеты в файлы и читать их.

Для некоторых заданий на этом занятии потребуется ещё один терминал, потому откройте второе окно терминала. Так вы сможете выбирать разные SSH-подключения к ВМ.

Подготовка к выполнению заданий

Начните практическое занятие

Чтобы получить доступ к материалам, которые находятся в операционной системе виртуальной машины, необходимо запустить практическое занятие. Нажмите зеленую кнопку Start Lab (Начать занятие).

Примечание. Чтобы пройти это практическое занятие, вы должны будете начать работу с виртуальной машиной Linux с помощью локального SSH-клиента вместо Google Console. В рамках этого занятия вам недоступна кнопка Open GCP Console (Открыть GCP Console).

Начать занятие

После нажатия кнопки Start Lab (Начать занятие) в левой части экрана появятся все сведения о подключении по SSH. Вы увидите следующий интерфейс:

Сведения о подключении

Доступ к виртуальной машине

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

Примечание. В Qwiklabs вы будете выполнять примерно те же задачи, что и специалисты ИТ-поддержки. Вы будете работать с передовой технологией, для освоения которой требуется выполнить немало шагов и проявить большое терпение и настойчивость. Для доступа к практическим занятиям вы будете использовать протокол SSH и сможете изучить основы этой технологии, которая является обязательным инструментом в арсенале служб технической поддержки.

Способ 1: подключение к виртуальной машине для пользователей Windows

Чтобы подключиться, вам предстоит использовать клиент PuTTY Secure Shell (SSH) и внешний IP-адрес виртуальной машины.

Скачайте файл ключа PPK

Вы можете скачать закрытый ключ виртуальной машины в формате PPK, совместимом с PuTTY, на странице запуска практического занятия в Qwiklabs. Нажмите Скачать PPK.

PPK

Подключитесь к виртуальной машине по протоколу SSH с помощью клиента PuTTY

  1. Скачайте PuTTY.

  2. В поле Host Name (or IP address) (Имя хоста или IP-адрес) введите значение username@external_ip_address.

Примечание. Замените элементы username и external_ip_address значениями, предоставленными вам в рамках занятия.

Putty_1

  1. В списке Category (Категория) раскройте меню SSH.

  2. Нажмите Auth (Аутентификация), но не раскрывайте этот пункт.

  3. В окне Private key file for authentication (Закрытый ключ для аутентификации) выберите файл PPK, который вы скачали, и дважды нажмите на него.

  4. Нажмите кнопку Open (Открыть).

Примечание. Чтобы импортировать файл PPK в PuTTY, используйте доступную в этом инструменте функцию Browse (Обзор). Такие файлы используются только в PuTTY. Их не следует открывать напрямую.

Putty_2

  1. Когда вам будет предложено разрешить первое подключение к этому удаленному SSH-серверу, нажмите Yes (Да). Поскольку вы используете для аутентификации пару ключей, вам не нужно вводить пароль.

Распространенные проблемы

Если PuTTY не может подключиться к вашей виртуальной машине Linux, убедитесь в следующем:

  • Вы ввели значение <username>@<external ip address> в PuTTY.

  • Вы скачали новый PPK-файл для этого практического занятия из Qwiklabs.

  • Вы используете скачанный файл PPK в PuTTY.

Способ 2: подключение к виртуальной машине по протоколу SSH для пользователей macOS и Linux

Скачайте закрытый ключ виртуальной машины

Вы можете скачать закрытый ключ виртуальной машины в формате PEM на странице запуска практического занятия в Qwiklabs. Нажмите Download PEM (Скачать PEM).

PEM

Подключитесь к виртуальной машине, используя терминал

Терминал – это программа, которая запускает текстовый интерфейс для ввода команд. Вы будете использовать свой терминал в качестве клиента SSH для подключения к виртуальной машине Linux, предоставленной в рамках занятия.

  1. Откройте терминал.

    • Чтобы открыть терминал на компьютере с Linux, используйте сочетание клавиш Ctrl + Alt + t.

    • Чтобы открыть терминал на компьютере с macOS, введите сочетание клавиш Cmd + Пробел, а затем введите слово терминал.

  2. Введите указанные ниже команды.

Примечание. Измените имя скачанного PEM-файла и путь к нему, имя пользователя и внешний IP-адрес.

Вероятнее всего, вы найдете PEM-файл в папке для загрузок. Если вы не меняли настройки загрузок в своей системе, то путь к ключу PEM будет выглядеть так: ~/Downloads/qwikLABS-XXXXX.pem

chmod 600 ~/Downloads/qwikLABS-XXXXX.pem
ssh -i ~/Downloads/qwikLABS-XXXXX.pem username@External Ip Address

SSH

Способ 3: подключение к виртуальной машине по протоколу SSH для пользователей Chrome OS

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

Скачайте закрытый ключ виртуальной машины

Вы можете скачать закрытый ключ виртуальной машины в формате PEM на странице запуска практического занятия в Qwiklabs. Нажмите Download PEM (Скачать PEM).

PEM

Подключитесь к виртуальной машине

  1. Добавьте приложение Secure Shell в браузер Chrome.

  2. Откройте приложение Secure Shell и нажмите New Connection (Новое подключение).

    new-connection-button

  3. В разделе username (имя пользователя) введите имя пользователя, которое указано на доступной в рамках занятия панели сведений о подключении. В разделе hostname (имя хоста) введите внешний IP-адрес экземпляра виртуальной машины, который указан на доступной в рамках занятия панели сведений о подключении.

    username-hostname-fields

  4. В разделе Identity (Идентификатор) импортируйте скачанный ключ PEM, нажав кнопку Import (Импортировать). Выберите ключ PEM и нажмите кнопку OPEN (ОТКРЫТЬ).

Примечание. Если после импортирования ключ по-прежнему недоступен, обновите приложение и выберите его в раскрывающемся меню Identity (Идентификация).
  1. После загрузки ключа нажмите кнопку [ENTER] Connect (Подключиться) ниже.

    import-button

  2. Чтобы продолжить, отвечайте yes (да) во всех окнах с запросами.

  3. Вы успешно подключились к виртуальной машине с Linux.

Теперь вы можете продолжить практическое занятие.

Использование tcpdump

Вы выполните несколько заданий с помощью tcpdump. Начнем с основных функций, а затем перейдем к чуть более сложным темам.

Основные функции

Начнем с описания tcpdump и запустим программу без всяких параметров. Обратите внимание, что для захвата трафика с помощью tcpdump требуются права пользователя root или администратора, поэтому любая команда должна начинаться с sudo. Требуется по меньшей мере указать контролируемый интерфейс с помощью параметра -i. Возможно, вы захотите узнать имя первичного сетевого интерфейса с помощью команды ip link. В данном случае мы во всех примерах используем интерфейс ens4, но на вашем собственном компьютере это может быть не так.

Чтобы начать контролировать трафик интерфейса с помощью tcpdump, введите команду, указанную ниже.

Внимание!. Эта команда будет направлять на ваш терминал постоянный поток текста по мере прочтения новых пакетов. Остановить его можно комбинацией клавиш Ctrl + C.

sudo tcpdump -i ens4

По этой команде некоторая базовая информация о найденных пакетах будет выводиться непосредственно на стандартное выходное устройство. Это будет продолжаться до тех пор, пока вы не укажете, что нужно остановиться. Чтобы остановить поток, в любой момент нажмите Ctrl + C.

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

e62459231285086a.png

По умолчанию tcpdump выполняет некоторый базовый анализ протокола. Чтобы включить детальный анализ и получить более подробные сведения, используйте параметр -v. По умолчанию tcpdump также пытается выполнять обратный DNS-запрос для преобразования IP-адресов в имена хостов, а также заменять номера портов на связанные с ними общепринятые имена служб. Эту функцию можно отключить с помощью параметра -n. Рекомендуется использовать этот параметр, чтобы не генерировать избыточный трафик из-за DNS-запросов и ускорить анализ. Введите команду, указанную ниже.

Внимание!. Эта команда будет направлять на ваш терминал постоянный поток текста по мере прочтения новых пакетов. Остановить его можно комбинацией клавиш Ctrl + C.

sudo tcpdump -i ens4 -vn

Вы видите, что в выходных данных содержится более подробная информация о каждом пакете:

e74637cc70c05cc3.png

Без параметра детализации программа tcpdump показывает нам только:

  • протокол 3-го уровня, адреса и порты источника и адресата;
  • данные TCP, в частности флаги, порядковые номера и номера подтверждений, размер окна и параметры.

При наличии параметра детализации вы также увидите такие данные IP-заголовка, как время жизни, идентификатор пакета, параметры и флаги.

Фильтрация

Давайте теперь наряду с анализом протокола познакомимся с языком фильтров tcpdump. Программа tcpdump поддерживает мощный язык для фильтрации пакетов, благодаря чему вы можете перехватывать только интересующий вас трафик. Правила фильтрации вводятся в самом конце команды после всех остальных параметров. Мы установим фильтр для перехвата только DNS-трафика к определенному DNS-серверу. Затем создадим некоторый DNS-трафик, чтобы можно было показать, как tcpdump может интерпретировать DNS-запросы и ответы.

Итак, давайте введем команду. Как и в предыдущем случае, она будет выполняться до нажатия Ctrl + C, но теперь вы не увидите выходных данных.

sudo tcpdump -i ens4 -vn host 8.8.8.8 and port 53

Проанализируем, из чего состоит этот фильтр и что он делает. Параметр host 8.8.8.8 указывает, что нам нужны только пакеты с заданным IP-адресом источника или адресата (в данном случае 8.8.8.8). Если нас интересует трафик только в одном направлении, мы можем добавить указатель направления dst или src (адресат и источник соответственно). Если указатель направления опустить, то будет контролироваться трафик в любом направлении.

Фрагмент port 53 означает, что нас интересуют только пакеты с заданным портом источника и адресата (в данном случае DNS). Два условия фильтра объединены логическим оператором and (И). Это означает, что пакет будет захвачен в том случае, если выполняются условия обоих фильтров.

Двигаемся дальше и подключим второй терминал, следуя инструкциям в разделе Accessing the virtual machine (Доступ к виртуальной машине). Нажмите на раздел Accessing the virtual machine на панели навигации справа и введите следующую команду:

dig @8.8.8.8 A example.com

Вы увидите на экране следующий результат:

e5f29bb1a837ebc6.png

Здесь используется утилита dig, чтобы запросить у заданного DNS-сервера (в нашем случае 8.8.8.8) запись A для указанного домена (в нашем случае example.com).

Вернувшись к исходному терминалу, вы должны увидеть два перехваченных пакета, поскольку весь остальной трафик должен быть исключен по нашим правилам фильтрации:

b6a4cefaba5b53ef.png

Первый пакет – это DNS-запрос, который является нашим обращением к серверу со второго терминала. Обратите внимание, что в данном случае это UDP-трафик. Анализ DNS-запроса, выполненныйtcpdump, идет сразу после поля UDP checksum. Сначала идет идентификатор DNS, за ним следуют некоторые параметры UDP, затем тип запроса. В нашем случае это A?, что означает, что мы запрашиваем запись A. Далее приводится имя интересующего нас домена (example.com).

49bfc7a0a335ca52.png

Второй пакет – это ответ сервера, который содержит идентификатор DNS исходного запроса, за которым следует сам запрос. После этого идет ответ на запрос, который содержит IP-адрес, связанный с доменным именем.

8df52ed65c9b5f66.png

Теперь можно остановить сеанс tcpdump на первом терминале, нажав Ctrl + C. Оставьте окно второго терминала открытым, он вам скоро снова понадобится.

Далее посмотрим, как tcpdump записывает пакеты в файл и считывает их оттуда.

Сохранение перехваченных пакетов

На одном из терминалов введите команду:

sudo tcpdump -i ens4 port 80 -w http.pcap

По этой команде на нашем интерфейсе ens4 начинается перехват исключительно HTTP-трафика, на что указывает порт 80. Параметр -w указывает, что мы хотим записать перехваченные пакеты в файл http.pcap. Как и все прочие перехваты, этот будет выполняться вплоть до принудительной остановки нажатием Ctrl + C.

Пока все работает, снова перейдите ко второму терминалу, где надо сгенерировать HTTP-трафик, который будет перехвачен на первом терминале. Не останавливайте перехват, который вы только что начали, выполнив предыдущую команду. (Если вы все-таки это сделали, сейчас его можно перезапустить.)

В окне второго терминала введите следующую команду для создания некоторого трафика:

curl example.com

Эта команда извлекает код HTML сайта example.com и выводит его на экран. Результат должен выглядеть таким образом. (Обратите внимание, что здесь показана только первая часть выходных данных.)

d261699311c8cdba.png

После этого закройте окно второго терминала и вернитесь к исходному терминалу, где выполняется перехват. Остановите его, нажав Ctrl + C. Вы должны увидеть сводные данные о количестве перехваченных пакетов:

aeacf2f21c2dea4f.png

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

6649a448a7faef33.png

Где-то в этом файле содержится информация о пакетах, созданных при извлечении кода HTML сайта example.com. Теперь мы можем прочитать данные из этого файла с помощью tcpdump, используя следующую команду:

tcpdump -r http.pcap -nv

5b2f12f38410cce2.png

Обратите внимание, что для чтения пакетов из файла нам не требуется программа sudo. Также заметьте, что tcpdump записывает в файл полные пакеты, а не только текстовый анализ, который выводится на экран в процессе обычной работы. Например, где-то в выходных данных вы должны увидеть код HTML, который был возвращен в качестве тела исходного запроса на другом терминале:

6d7bb5d7e908c6e.png

Нажмите Check my progress (Проверить статус выполнения), чтобы узнать, справились ли вы с заданием.

Запись пакетов в файл

Заключение

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

Как завершить практическое занятие

Выполнив практическое занятие, нажмите End Lab (Завершить занятие). Платформа Qwiklabs удалит список ресурсов, которыми вы пользовались, и выполнит очистку аккаунта.

Вам будет предложено оценить удобство выполнения задания. Выберите нужное количество звезд, введите комментарий и нажмите Submit(Отправить).

Какой оценке соответствует то или иное количество звезд:

  • 1 звезда = "Очень плохо"
  • 2 звезды = "Плохо"
  • 3 звезды = "Затрудняюсь ответить"
  • 4 звезды = "Хорошо"
  • 5 звезд = "Отлично"

Если вы не хотите оценивать занятие, просто закройте диалоговое окно.

Отправлять отзывы, предложения или исправления можно на вкладке Support (Поддержка).