Источник: https://github.com/AnaktaCTF/CTF/blob/main — Forensic/Введение в анализ трафика Wireshark.md

Основы регулярных выражений и их синтаксис в Wireshark

Что такое регулярные выражения?
Регулярные выражения (RegEx) — это мощный инструмент для работы с текстовыми строками, позволяющий искать, заменять, проверять и извлекать данные на основе заданных паттернов или шаблонов. Регулярные выражения представляют собой последовательности символов, которые описывают набор строк, соответствующих определённому шаблону. В их основе лежат концепции символов-метасимволов и классов символов, которые позволяют создавать гибкие и мощные шаблоны для анализа текстовых данных.

В контексте сетевого анализа регулярные выражения позволяют фильтровать и извлекать данные из пакетов, что даёт возможность эффективно работать с большими объёмами трафика

Регулярные выражения: работа с RegExp | YuSMP Group

Краткий обзор синтаксиса и базовых операторов:

  1. Базовые символы:
    • . — любой одиночный символ.
    • \d — цифра (аналогично [0-9]).
    • \w — любая буква, цифра или подчеркивание (аналогично [a-zA-Z0-9_]).
    • \s — пробельный символ (пробел, табуляция, перенос строки и т. д.).
  2. Модификаторы и квантификаторы:
    • * — ноль или более повторений предыдущего символа.
    • + — одно или более повторений предыдущего символа.
    • ? — ноль или одно повторение предыдущего символа.
    • {n,m} — от n до m повторений предыдущего символа.
    • ^ — начало строки.
    • $ — конец строки.
  3. Классы символов:
    • [abc] — любая из букв a, b или c.
    • [^abc] — любой символ, кроме a, b или c.
    • [a-z] — любой символ в диапазоне от a до z.
    • \b — граница слова.
  4. Группировка и логические операторы:
    • () — группировка символов для работы с подвыражениями.
    • | — логическое ИЛИ (альтернатива).
    • [] — указание диапазона символов.

Примеры использования:

  1. Поиск всех HTTP-запросов, содержащих определенные параметры в URL

Регулярное выражение:

http.request.uri matches ".*(?:\?|&)token=[A-Za-z0-9]+.*"

http.request.uri — это поле в пакете HTTP, которое содержит URI (Uniform Resource Identifier), например, путь и параметры запроса.
matches — это оператор, который в Wireshark используется для применения регулярного выражения к содержимому поля.
.* — это выражение означает "любая последовательность символов", включая ноль символов.
(?:...) — это "незахватывающая" группа, которая используется для группировки символов без захвата для дальнейшей обработки (например, для работы с несколькими вариантами паттернов).
\? — это экранированный символ вопросительного знака, который означает начало строки параметров в URL.
& — символ амперсанда, который используется для разделения параметров в URL.
token=[A-Za-z0-9]+ — этот фрагмент ищет параметр с именем token, значение которого состоит из одного или более символов латинского алфавита и цифр.
.* в конце снова позволяет захватывать любые дополнительные символы после токена.

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

  1. Поиск подозрительных DNS-запросов на основе доменных имён с частичным совпадением

Регулярное выражение:

dns.qry.name matches ".*(evil|malware|phish).*"

dns.qry.name — это поле в DNS-запросе, которое содержит имя домена, на которое выполняется запрос.
matches — оператор, позволяющий применить регулярное выражение.
.* — захватывает любые символы до и после нужного паттерна.
(evil|malware|phish) — это альтернативный паттерн, который ищет совпадение с любым из указанных слов (evil, malware или phish) в имени домена.
.* — снова захватывает все символы после этих слов.

Данный фильтр позволяет искать в DNS-запросах домены, которые могут быть связаны с вредоносной деятельностью. Например, домены, содержащие слова вроде evilmalwarephish могут быть индикаторами того, что трафик относится к атакам типа phishing или распространению вредоносного ПО. Это помогает обнаружить вредоносные запросы на ранних стадиях атаки.

  1. Поиск аномальных паттернов в содержимом TCP-пакетов

Регулярное выражение:

tcp.payload matches "(select|drop|union|insert)\s+into\s+.*\s+values"

tcp.payload — это поле в TCP-пакете, которое содержит данные, передаваемые в теле пакета.
matches — оператор для применения регулярного выражения.
(select|drop|union|insert) — это группа, которая ищет одно из ключевых слов SQL-запроса (select, drop, union, insert), что может свидетельствовать о попытке SQL-инъекции.
\s+ — один или более пробельных символов, используемых для поиска пробелов между элементами SQL-запроса.
into\s+.*\s+values — это часть паттерна, которая ищет конструкции SQL-запроса типа INSERT INTO ... VALUES.

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

4. Поиск всех пакетов, содержащих специфические SSL/TLS-сообщения с определёнными характеристиками

Регулярное выражение:

ssl.record.data matches ".*\x30\x82.*\x02\x01.*\x30\x82.*"

ssl.record.data — это поле, содержащее данные, передаваемые в SSL/TLS-запросах.
matches — оператор для применения регулярного выражения.
.* — это обычное регулярное выражение, которое захватывает любые символы. \x30\x82 — это шестнадцатеричное представление для первого байта в сертификатах X.509, что используется в данных SSL/TLS-сообщений.
\x02\x01 — это представление для определённого байта, который встречается в SSL-сообщениях и может быть использован для идентификации структуры сертификата.

Этот фильтр используется для поиска SSL/TLS-сообщений с определённой структурой, характерной для сертификатов X.509. Он помогает выявлять и анализировать пакеты, которые содержат важные данные, такие как цифровые подписи или сертификаты, что особенно полезно для расследований по безопасности. С помощью регулярных выражений можно настроить фильтрацию по конкретным байтам, что позволяет выделить специфические элементы протоколов SSL/TLS.

5. Выявление аномальных паттернов в трафике DNS для анализа DGA (Domain Generation Algorithm)

Регулярное выражение:

dns.qry.name matches "^[a-z0-9]{10,20}\.com$"

dns.qry.name — поле, содержащее доменное имя из DNS-запроса.
matches — оператор для регулярного выражения.
^[a-z0-9]{10,20}\.com$ — регулярное выражение для поиска доменных имён, которые состоят из 10-20 символов, состоящих из латинских букв и цифр, заканчивающихся на .com.
^[a-z0-9]{10,20} — начало строки, за которым следует от 10 до 20 символов, состоящих из латинских букв и цифр.
\.com$ — доменное имя заканчивается на .com.

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

​**A-Packets: Инструмент для анализа сетевого трафика на основе файлов PCAP

A-Packets предоставляет сервис для детализированного анализа сетевых пакетов. С помощью этого инструмента пользователи могут анализировать файлы в формате PCAP, которые могут быть получены с помощью таких утилит, как Wireshark, tcpdump или других средств захвата трафика.

Анализ HTTP-данных

Извлечение переданных файлов: A-Packets может извлекать файлы, передаваемые через HTTP, такие как изображения, документы Office, PDF-файлы и другие типы данных.
Анализ заголовков HTTP: Платформа предоставляет подробную информацию о заголовках HTTP-запросов и ответов, таких как заголовки User-AgentRefererCookie и другие.
Идентификация уязвимостей: Платформа может помочь в идентификации переданных данных, которые могут быть связаны с уязвимостями, например, при передаче чувствительных данных, таких как пароли.

image

Обнаружение сетевых устройств

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

image

Анализ беспроводных сетей (Wi-Fi)

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

image

Извлечение файлов из сетевых пакетов

Восстановления переданных файлов: Когда данные передаются в виде файлов (например, через FTP или HTTP), A-Packets позволяет восстановить и просмотреть эти файлы.
Поиск скрытых или заражённых файлов: Выявление вредоносных файлов, переданных через различные протоколы, таких как HTTP, FTP или SMB.

Анализ SMB и NetBIOS

Идентификации аномальной активности: Например, если SMB-сессии содержат неожиданные или подозрительные запросы, это может указывать на атаки типа SMB-эксплойтов.
Анализа сетевых ресурсов: Определение подключённых устройств и их ресурсов в локальной сети.

image

Анализ DNS, mDNS и NBNS

Обнаружение подделанных DNS-запросов: Идентификация возможных атак с использованием подмены DNS-записей.
Изучение трафика mDNS (Multicast DNS) и NBNS (NetBIOS Name Service): Анализ использования локальных сетевых сервисов.

Анализ ARP (Address Resolution Protocol)

Выявления атак ARP-спуфинга: ARP-спуфинг — это метод перехвата сетевого трафика путём подмены MAC-адресов в локальной сети.
Отслеживания топологии сети: Понимание, какие устройства в сети используют какой MAC-адрес, может помочь в определении уязвимостей в безопасности.

image

Обнаружение паролей и хешей

Извлечения паролей: Обнаружение слабых или небезопасных паролей, передаваемых через небезопасные протоколы.
Анализа хешей: Извлечение хешей паролей для анализа на предмет их уязвимости (например, через атакующие методы брутфорс).

NetworkMiner

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

image

Главные фичи

Когда ты загружаешь pcap-файл, NetworkMiner сам разбивает его на сессии, выявляет протоколы, пароли, файлы и другие данные. Это как твой личный анализатор трафика, который по сути экономит кучу времени.

Поддерживает HTTP, FTP, SMB, DNS, POP3, IMAP и многие другие. Это значит, что ты можешь смотреть трафик по этим протоколам и извлекать полезные вещи вроде паролей, файлов и даже флагов.

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

С чем работает?

HTTP: Может парсить HTTP-трафик, вытаскивать запросы, ответы, куки, заголовки, формы. Часто в таких запросах можно найти флаги или скрытые данные.
DNS: Все запросы и ответы. Это полезно, когда ищешь странные DNS-запросы, которые могут скрывать флаги в виде строк в типах записей (например, TXT).
FTP, SMB и другие: Для этих протоколов извлекаются файлы, списки пользователей и пароли, передаваемые по сети. Особенно полезно, если задача CTF включает в себя работу с такими протоколами.

Как это работает?

Простой пример: у тебя есть pcap-файл с HTTP-трафиком. Ты загружаешь его в NetworkMiner, и он сам раскладывает трафик на сессии. К примеру, если в какой-то из запросов передавался файл, скажем, изображение или документ, то NetworkMiner покажет тебе этот файл, и ты сможешь его скачать.

image

image

Другими словами, ты не копаешься вручную в каждом пакете, чтобы найти флаг или полезную информацию — это делает сам NetworkMiner. Он просто берет весь трафик и умно сортирует его по категориям: файлы, DNS-запросы, HTTP-сессии и т.д.

Что реально круто?

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

Интуитивно понятный. Ты загружаешь pcap-файл, и все, что нужно — это немного покликать по разным вкладкам, чтобы увидеть, что за файлы, какие пароли передавались и какие флаги могут скрываться в теле запросов.

Для решения CTF-задач тебе вполне хватит бесплатной версии NetworkMiner. Она предоставляет все нужные инструменты для анализа сетевого трафика, поиска флагов и извлечения файлов. Скачать инструмент можно с официального сайта: https://www.netresec.com/?page=NetworkMiner