Анализ TCP-соединений в Tshark

WiresharkBeginner
Практиковаться сейчас

Введение

В этом лабораторном занятии вы научитесь анализировать TCP-разговоры с помощью командной строки tshark из пакета Wireshark. Вы научитесь захватывать TCP-трафик с использованием фильтров, перечислять разговоры и изучать конкретные порты, такие как HTTP (порт 80), при этом интерпретируя детальную информацию о пакетах.

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

Захват TCP-трафика с использованием -f "tcp"

На этом этапе вы научитесь захватывать TCP-сетевой трафик с помощью командной строки tshark из пакета Wireshark. TCP (Transmission Control Protocol, Протокол управления передачей) является одним из основных протоколов Интернета, ответственным за надежный обмен данными между приложениями. Используя фильтр -f "tcp", мы можем сосредоточиться именно на TCP-пакетах, что полезно при анализе веб-браузинга, передачи файлов или электронной почты.

  1. Сначала откройте терминал в виртуальной машине LabEx, нажав на иконку терминала на рабочем столе Xfce или используя сочетание клавиш Ctrl+Alt+T. В терминале мы будем выполнять все команды для анализа сети.

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

    cd ~/project
    

    Это гарантирует, что все наши захваченные данные будут сохранены в одном месте, которое легко найти позже.

  3. Начните захват TCP-трафика с помощью следующей команды:

    sudo tshark -f "tcp" -w tcp_capture.pcap
    

    Разберем, что делает каждая часть этой команды:

    • sudo предоставляет нам административные привилегии, необходимые для захвата пакетов.
    • tshark - это командная строка Wireshark.
    • -f "tcp" действует как фильтр захвата, указывая tshark записывать только TCP-пакеты.
    • -w tcp_capture.pcap сохраняет захваченные пакеты в файл с именем "tcp_capture.pcap".
  4. Пока tshark работает, нам нужно сгенерировать пример TCP-трафика. Откройте другое окно терминала и выполните следующую команду:

    curl https://www.example.com
    

    Эта команда отправляет простой веб-запрос на сайт example.com, который использует TCP для связи. Команда curl покажет вам HTML-содержимое, возвращаемое сайтом.

  5. После ожидания нескольких секунд, чтобы захватить достаточно данных, остановите захват, нажав Ctrl+C в первом терминале, где запущен tshark. Это безопасно завершает процесс захвата пакетов.

  6. Теперь проверим, что мы захватили, изучив первые несколько строк нашего файла с захваченным трафиком:

    tshark -r tcp_capture.pcap | head -n 5
    

    Эта команда считывает (-r) наш файл с захваченным трафиком и отображает первые 5 пакетов. Вы должны увидеть вывод, показывающий процесс рукопожатия TCP, который включает:

    • Пакеты SYN (синхронизация), которые инициализируют соединение.
    • Ответы SYN-ACK (синхронизация - подтверждение).
    • IP-адреса источника и назначения.
    • Номера портов, используемые для связи.

Показать разговоры с использованием -z conv,tcp

На этом этапе вы научитесь анализировать TCP-разговоры из захваченного трафика с помощью опции -z conv,tcp в Wireshark. TCP-разговор представляет собой полную сессию связи между двумя конечными точками, идентифицируемыми по их IP-адресам и номерам портов. Эта функция предоставляет сводку по всем TCP-разговорам в вашем захвате, показывая IP-адреса источника и назначения, порты и статистику пакетов, что необходимо для понимания моделей сетевого взаимодействия.

  1. Сначала убедитесь, что вы находитесь в правильной директории, где хранится ваш файл с захваченным трафиком. Это важно, так как Tshark должен знать, где найти файл с захваченными пакетами:

    cd ~/project
    
  2. Базовая команда для перечисления TCP-разговоров анализирует захваченные пакеты и отображает сводную таблицу. Флаг -r указывает входной файл, а -z conv,tcp включает функцию статистики разговоров:

    tshark -r tcp_capture.pcap -z conv,tcp
    
  3. Вывод будет представлять собой таблицу, показывающую все TCP-разговоры, аналогичную этому примеру. Каждая строка представляет один разговор между двумя конечными точками, показывая количество кадров (пакетов) и переданных байтов в каждом направлении:

    =========================================================================
    TCP Conversations
    Filter:<No Filter>
                                                  |       <-      | |       ->      | |     Total     |
                                                  | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
    192.168.1.2:49152   <-> 93.184.216.34:80     |      3    180 | |      3    216 | |      6    396 |
    =========================================================================
    
  4. Чтобы получить более детальный вид с абсолютными временными метками, показывающими, когда произошел каждый разговор, используйте опцию -t ad. Это помогает понять временные рамки и последовательность сетевых событий:

    tshark -r tcp_capture.pcap -z conv,tcp -t ad
    
  5. Вы можете фильтровать разговоры по определенным критериям, используя фильтры отображения с опцией -Y. Этот пример фильтрует разговоры, связанные с портом 80 (HTTP-трафик), что полезно, если вы хотите анализировать только веб-трафик:

    tshark -r tcp_capture.pcap -z conv,tcp -Y "tcp.port==80"
    
  6. Чтобы сохранить статистику разговоров для дальнейшего анализа или отчетности, перенаправьте вывод в текстовый файл. Это создаст постоянную запись вашего анализа, которую вы можете просмотреть или поделиться с другими:

    tshark -r tcp_capture.pcap -z conv,tcp > tcp_conversations.txt
    

Фильтрация по определенному порту с использованием -Y "tcp.port==80"

На этом этапе вы научитесь фильтровать сетевой трафик по определенному TCP-порту (порту 80) с помощью синтаксиса фильтра отображения Wireshark и опции -Y "tcp.port==80". Порт 80 является стандартным портом для HTTP-веб-трафика, поэтому этот фильтр позволяет выделить веб-связанные коммуникации в вашем сетевом захвате.

Прежде чем мы начнем, разберем, что делает этот фильтр: он показывает все TCP-пакеты, в которых либо исходный, либо целевой порт равен 80. Это отличается от фильтрации конкретно по исходным или целевым портам, о чем мы поговорим позже.

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

    cd ~/project
    
  2. Чтобы отфильтровать ранее захваченный трафик по порту 80 (HTTP), выполните следующую команду:

    tshark -r tcp_capture.pcap -Y "tcp.port==80"
    

    Флаг -r указывает входной файл, а -Y применяет фильтр отображения. Эта команда считывает пакеты из файла tcp_capture.pcap, но показывает только те, которые связаны с портом 80.

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

     1 0.000000000    192.168.1.2 → 93.184.216.34 TCP 74 49152 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
     2 0.028763000  93.184.216.34 → 192.168.1.2 TCP 74 80 → 49152 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
     3 0.028852000    192.168.1.2 → 93.184.216.34 TCP 66 49152 → 80 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    

    Этот вывод показывает полный трехэтапный рукопожатие TCP (SYN, SYN-ACK, ACK) между клиентом (192.168.1.2) и веб-сервером (93.184.216.34).

  4. Чтобы отфильтровать трафик, направленный на порт 80 (целевой порт), который показывает запросы к веб-серверам:

    tshark -r tcp_capture.pcap -Y "tcp.dstport==80"
    
  5. Чтобы отфильтровать трафик, исходящий из порта 80 (исходный порт), который обычно представляет ответы веб-сервера:

    tshark -r tcp_capture.pcap -Y "tcp.srcport==80"
    
  6. Вы можете комбинировать этот фильтр с другими для более точного анализа. Например, чтобы увидеть только HTTP-запросы GET (наиболее распространенный тип веб-запросов):

    tshark -r tcp_capture.pcap -Y "tcp.port==80 && http.request.method==GET"
    

    Это комбинирует фильтр по порту с фильтром по протоколу HTTP, чтобы показать конкретно, когда веб-браузеры запрашивают страницы у серверов.

Показать результаты с использованием -V

На этом этапе мы рассмотрим, как просматривать подробные сведения о пакетах с помощью опции -V (verbose) в Wireshark. При устранении неполадок в сети просмотр полного разбора протокола является важным. Флаг -V показывает каждую прослойку сетевого стека, от Ethernet-кадров до протоколов приложений, что помогает понять, что именно происходит в сетевом трафике.

  1. Сначала убедитесь, что вы находитесь в правильной директории, где хранится ваш файл с захваченным трафиком. Это важно, так как Tshark должен иметь доступ к файлу, который вы хотите проанализировать:

    cd ~/project
    
  2. Базовая команда для отображения всех деталей пакетов показывает все, что Tshark может декодировать. Это полезно, когда вам нужно изучить полную структуру сетевых коммуникаций:

    tshark -r tcp_capture.pcap -V
    
  3. Подробный вывод отображает технические детали в структурированном формате. Вот что означает каждая часть:

    • Frame (кадр): Информация о размере пакета на физическом уровне
    • Ethernet II: MAC-адреса на уровне канального доступа
    • IP: Адресация на сетевом уровне
    • TCP: Порты и номера последовательности на транспортном уровне
    Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits)
    Ethernet II, Src: 00:11:22:33:44:55, Dst: 66:77:88:99:aa:bb
    Internet Protocol Version 4, Src: 192.168.1.2, Dst: 93.184.216.34
    Transmission Control Protocol, Src Port: 49152, Dst Port: 80, Seq: 0, Ack: 0, Len: 0
    
  4. При работе с большими захватами комбинирование фильтров с подробным выводом помогает сосредоточиться на релевантном трафике. В этом примере показывается только HTTP-трафик (порт 80), и вывод ограничивается первыми 20 строками:

    tshark -r tcp_capture.pcap -Y "tcp.port==80" -V | head -n 20
    
  5. Для документирования или дальнейшего анализа вы можете сохранить подробный вывод в текстовый файл. Это создаст постоянную запись вашего исследования пакетов:

    tshark -r tcp_capture.pcap -V > verbose_output.txt
    
  6. Чтобы изучить определенные элементы протокола, такие как HTTP-заголовки, комбинируйте фильтры по протоколу с подробным режимом. Это полезно при отладке веб-приложений или анализе HTTP-транзакций:

    tshark -r tcp_capture.pcap -Y "http" -V
    

Резюме

В этом лабораторном занятии вы научились анализировать TCP-разговоры с использованием командной строки tshark в Wireshark. Вы захватили TCP-трафик с использованием конкретных фильтров, изучили детали трехэтапного рукопожатия TCP и сгенерировали примерный трафик для анализа.

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