TGViewer
AUTHORITY AUTHORITY @authoritywear · 667 subscribers
Post #133 287
Всем, кто хоть раз анализировал сетевой трафик, наверняка хотелось добавить какой-нибудь автоматизации

Обычно на ум сразу приходит обработка трафика с использованием pyshark/tshark.
Несмотря на удобство в разработке, при анализе большого объема трафика, становится понятно, что решение не очень удачное - обработка происходит чудовищно медленно (преимущественно из-за использования диссекторов).

Тогда, если вам не нужно глубоко погружаться в анализ, на ум может прийти фильтрация трафика с использованием bpf в tcpdump с последующим парсингом текстового вывода
Такое решение действительно показывает гораздо большую скорость в сравнение с tshark (т.к. работает прямо в ядре и до попадания пакета в юзерспейс), однако обладает своим минусом: bpf, по сути,- это бинарные операции, что порождает необходимость четко понимать, какие байты в пакете за что отвечают.

Так, например, команда для фильтрации dns-запросов выглядит следующим образом:
tcpdump -i eth1 (udp[10:2])=0x0100

(Этот фильтр соответствует dns.flags==0x0100 в WireShark)

А если в организации канала участвуют vlan или pppoe, необходимо каждый раз писать фильтр заново:
tcpdump -i eth1 pppoes and ((udp[10:2])=0x0100)

Или
tcpdump -i eth1 pppoes and vlan and ((udp[10:2])=0x0100)

А что если в трафике что-то смешанное? Согласитесь, не очень удобно. К тому же, с выводом tcpdump все еще нужно что-то дополнительно делать.

На помощь приходит Zeek (он же Bro) - мощный opensource анализатор трафика
Из коробки Zeek самостоятельно генерирует логи со статистикой
Чтобы убедиться, выполните команду
zeek -i eth1


В текущей директории, по мере поступления пакетов, будут создаваться логи:
https://docs.zeek.org/en/master/reference/logs/index.html

Для анализа логов в составе zeek есть утилита zeek-cut
Например, чтобы получить статистику подключений в формате "ipsrc srcport ipdst dstport", выполните следующую команду:
cat conn.log | zeek-cut -m id.orig_h id.orig_p id.resp_h id.resp_p


Возникает вопрос: "А где собственная автоматизация?"
Во-первых, можно сделать вывод логов в формате json и парсить их самостоятельно:
zeek -i eth1 LogAscii::use_json=T


А во-вторых, в Zeek есть собственный event-based скриптовый движок, который предоставляет довольно широкий и удобный функционал по доступу к полям пакетов.
Так, например, чтобы вывести все доменные имена в dns запросах, можно использовать event dns_request, который сработает, как call-back при появлении нужного пакета
event dns_request(c: connection, msg: dns_msg, query: string, qtype: count,
qclass: count, original_query: string)
{
print query;
}

Опробовать можно тут:
https://try.zeek.org/
Для того, чтобы выполнить собственный скрипт, выполните команду
zeek -i eth1 script.zeek


Ну и в-третьих, zeek можно использовать для мониторинга ИБ в сети с использованием готовых скриптов, разработанных сообществом
Пример хорошего набора скриптов - https://github.com/mitre-attack/bzar


PS:
К слову, claude прекрасно пишет zeek-скрипты

Чтобы познакомиться с Zeek поближе, советуем посмотреть видео от SANS:
https://www.youtube.com/watch?v=-nTR5kAXf2w
  • 👍 5
  • 🔥 3
  • ✍ 2
More from @authoritywear
  1. Jan 26, 2026static_asm - библиотека для программирования на ассемблере x86 прямо в исходниках С++ Помн…
  2. Dec 14, 2025В Kali NetHunter добавили поддержку серии Samsung Galaxy S10 и Android 16. Конечно, спорно…
  3. Dec 7, 2025VibeVoice - open-source AI-модель для озвучки текста в реальном времени Проект от Microsof…
  4. Dec 4, 2025Simple DLL Injector Реализует классический метод инжекта dll: 1. Получает информацию о цел…
  5. Nov 21, 2025Конференция по кибербезопасности ZeroNights 2025 публикуют доклады! Ловите описания выступ…
  6. Oct 21, 2025Осталось всего 3️⃣ часа до старта нашего традиционного хакерского квеста HackQuest! 🟢Hack…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →