tcpdump SCCP или сообщения GSM MAP

Вопрос или проблема

Сейчас я использую tcpdump -i <interface_name> -p <port> -s0 -w /tmp/file.cap, а затем фильтрую захват в Wireshark.

Как можно захватить пакеты с помощью tcpdump только на протоколах SCCP или GSM_MAP и исключить сообщения sctp heartbeat?

Любое другое решение тоже подойдет 🙂

ОС: RedHat

Я не думаю, что можно фильтровать с помощью tcpdump на уровне протокола (HTTP, GSM_MAP и т. д.), или, точнее, это не очень просто. Вопрос и ответ на Stack Overflow, озаглавленный: “Can I use tcpdump to get HTTP requests, response header and response body?“, показывает, как это сделать для HTTP-трафика, и это не очень красиво! Я думаю, что функция, которую вы ищете, позволила бы фильтровать данные по общему названию протокола.

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

tshark может быть немного пугающим для начала, но это довольно простой инструмент, если потратить немного времени на чтение tshark man page и поиск в интернете существующих рецептов. Вы можете использовать команду, чтобы узнать о всех протоколах, которые tshark знает:

$ tshark -G protocols|grep -E "SCCP|GSM_MAP|SCTP"
GSM Mobile Application  GSM_MAP gsm_map
Signalling Connection Control Part  SCCP    sccp
Signalling Connection Control Part Management   SCCPMG  sccpmg
Stream Control Transmission Protocol    SCTP    sctp
SS7 SCCP-User Adaptation Layer  SUA sua

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

$ tshark -G fields | head -10
P   Short Frame short
P   Malformed Packet    malformed
P   Unreassembled Fragmented Packet unreassembled
P   IEEE 1722 Protocol  ieee1722
F   Control/Data Indicator  ieee1722.cdfield    FT_BOOLEAN  ieee1722    8   0x80    
F   AVBTP Subtype   ieee1722.subtype    FT_UINT8    ieee1722    BASE_HEX    0x7f    
F   AVBTP Stream ID Valid   ieee1722.svfield    FT_BOOLEAN  ieee1722    8   0x80    
F   AVBTP Version   ieee1722.verfield   FT_UINT8    ieee1722    BASE_HEX    0x70    
F   AVBTP Media Reset   ieee1722.mrfield    FT_UINT8    ieee1722    BASE_DEC    0x8 
F   AVBTP Gateway Info Valid    ieee1722.gvfield    FT_BOOLEAN  ieee1722    8   0x2 
...

Пример

Здесь я собираю только трафик протокола HTTP, когда загружаю страницу с “unix.stackexchange.com”, то есть “198.252.206.16”. Мой беспроводной интерфейс (-i wlp3s0), и я просто вывожу первые 10 строк.

$ tshark -O http -i wlp3s0 host 198.252.206.16 | head -10
Capturing on 'wlp3s0'
2 Frame 1: 855 bytes on wire (6840 bits), 855 bytes captured (6840 bits) on interface 0
Ethernet II, Src: IntelCor_85:a7:20 (00:26:c7:85:a7:20), Dst: Watchgua_85:be:9a (00:90:7f:85:be:9a)
Internet Protocol Version 4, Src: 192.168.1.161 (192.168.1.161), Dst: 198.252.206.16 (198.252.206.16)
Transmission Control Protocol, Src Port: 37713 (37713), Dst Port: http (80), Seq: 1, Ack: 1, Len: 789
Hypertext Transfer Protocol
    GET /review/late-answers HTTP/1.1\r\n
        [Expert Info (Chat/Sequence): GET /review/late-answers HTTP/1.1\r\n]
            [Message: GET /review/late-answers HTTP/1.1\r\n]
            [Severity level: Chat]
            [Group: Sequence]
...

Главное, что вам нужно иметь в виду, это то, что вы используете “фильтры захвата” для записи этой информации. Они отличаются от “фильтров отображения”.

Разрешения

Убедитесь, что вы ознакомились с вопросом и ответом на U&L, озаглавленным: Can’t get Wireshark to run as user on CentOS, если у вас неправильно настроены разрешения для запуска tshark и wireshark не от имени пользователя root.

Ссылки

вы можете фильтровать по “sctp”, но это захватит heartbeats.

Чтобы отфильтровать heartbeats, возможно, потребуется фильтровать по “m3ua”, но это невозможно во время захвата.

.

Ответ или решение

Вопрос, который вам поставлен, касается захвата сетевых пакетов, которые относятся к протоколам SCCP или GSM_MAP, с помощью утилиты tcpdump, и фильтрации шума через сообщения heartbeat от SCTP на операционной системе Red Hat. Давайте рассмотрим данную задачу более подробно, уделяя внимание теоретической, практической и прикладной частям.

Теория

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

SCCP (Signalling Connection Control Part) и GSM_MAP (GSM Mobile Application Part) являются компонентами стеков протоколов SS7 (Signalling System No. 7), которые применяются для обеспечения передачи сигнализаций в сетях телекоммуникационных операторов. Эффективность фильтрации данных этих протоколов на уровне захвата требует понимания их структур и формата.

Пример

Для того чтобы осуществлять захват пакетов, относящихся к конкретным протоколам, и избегать шума от heartbeat SCTP-сообщений, можно обратиться к tshark — командной версии Wireshark. tshark позволяет проводить захват и фильтрацию на более высоком уровне, так как он поддерживает более широкий спектр фильтров.

  1. Установка и настройка: На Red Hat tshark обычно можно установить из стандартных репозиториев, используя менеджер пакетов YUM или DNF:

    sudo yum install tshark
  2. Фильтрация протоколов: Для фильтрации пакетов, относящихся к SCCP и GSM_MAP, можно воспользоваться опцией -Y (или -O для отсева пакетов по типу протокола):

    tshark -i <interface_name> -Y "sccp || gsm_map" -w /tmp/capture.pcap
  3. Исключение SCTP heartbeat сообщений: SCTP heartbeat — это специальное сообщение, используемое для мониторинга состояния связи. Хотя tshark может собирать их, для исключения этих сообщений можно настроить дополнительные фильтры, такие как:

    tshark -i <interface_name> -f "not sctp && (sccp || gsm_map)" -Y "!sctp.chunk_type == 3" -w /tmp/capture.pcap

    Здесь sctp.chunk_type == 3 относится к heartbeat-сообщениям, и мы запрещаем их отображение.

Применение

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

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

Заключение

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

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

Капча загружается...