Для анализа сетевого трафика обычно используют Wireshark. У популярного сниффера множество достоинств, среди которых: настраиваемые фильтры, отличный интерфейс, и подробная документация. Но у Wireshark есть один большой недостаток — медленная работа при анализе больших дампов. Далее рассмотрим неплохую альтернативу для анализа трафика, которая называется ZUI и лишена этого недостатка.
Еще по теме: Перехват Bluetooth с помощью сниффера BrakTooth на ESP32
Анализ трафика при помощи ZUI
Сколько времени было потрачено на ожидание, пока Wireshark отобразит (если вообще отобразит) список вхождений после фильтрации при анализе большого файла PCAP. Для многих это становилось настоящим испытанием. Но теперь у нас есть ZUI, который заметно упростит вашу работу.
Что такое ZUI
ZUI — Zed User Interface (бывший Brim), написан с помощью Electron и React. Работает на движе ZED, который написан на Go и состоит различных элементов:
Основные отличия ZUI от Wireshark — это скорость работы, поддержка сигнатур и анализ логов. Из недостатков: не умеет декодировать пакеты и экспортировать найденные в трафике файлы. Это на самом деле не большие минусы, потому что каждый найденный поток данных в ZUI можно открыть простым кликом по кнопке в Wireshark, где отображается вся недостающая информация.
Изначально ZUI назывался Brim специализацией которого был исключительно анализ сетевого трафика и логов. Но из‑за универсальности движка ZED он стал развиваться и в других направлениях, в частности в сторону аналитики данных.
Идея двигла ZED, который позволяет ZUI работать с файлами PCAP в разы быстрее Wireshark, состоит в том, чтобы избавиться от концепции таблиц из базовой модели данных. Таблицы заменили современной системой типов, при которой все значения могут иметь свой тип независимо от составной схемы. Получается, Zed User Interface — и не полуструктурированный, и не табличный. Разработчики называют данную концепцию суперструктурированной.
Разработчик ZUI — это создатель формата PCAP, BPF и автор tcpdump.
Для примера можно взять формат из Zed data model под названием ZSON. Это привычный для всех JSON с собственными типами значений. Этого будет достаточно, чтобы начать использовать ZUI в анализе трафика.
Установка ZUI на Windows Linux и macOS
Установка ZUI на Linux
Для установки ZUI на Linux выполните команды:
1 2 |
wget "https://github.com/brimdata/brim/releases/download/v0.31.0/Brim-0.31.0.deb" sudo chmod +x ./Brim-0.31.0.deb; apt install ./Brim-0.31.0.deb |
Не забудьте изменить версию в команде, чтобы установить самый последний релиз.
Установка ZUI на Windows и macOS
Для Windows и macOS достаточно скачать с официального страницы файл установки и с предвкушением запустить его.
Интерфейс Zed User Interface
Сначала взглянем на минималистичный интерфейс и заценим его функциональность. Приложение всеядно, ему можно подсунуть файлы JSON, CSV, ZSON, ZNG и т.д., но нас интересует файл PCAP или какой-нибудь структурированный лог, например Zeek log.
После открытия файла PCAP в ZUI, он сразу же будет проверен с помощью движков Zeek и Suricata, а после этого буду отображены все хеши с VirusTotal. Прикольно да?
Pool — это место, где находится преобразованный PCAP. Можно загрузить сразу несколько файлов в один pool, и все данные из них будут доступны в единой строке поиска. На таймлайне можно будет выбрать диапазон времени, который требуется изучить в данный момент.
Особенно интересна, на мой взгляд, функция отображения небольшой диаграммы взаимодействия двух хостов. Она выводится, если открыть лог с зеленым тегом conn. Также довольно полезна кнопка открытия потока данных в Wireshark.
Использование ZUI
Писать запросы с помощью ZQL query очень легко. Нужно только найти в логах необходимые поля и отфильтровать по ним логи. Посл чего строка запроса будет обрастать новыми и новыми условиями поиска. Лично я часто забываю, как с помощью фильтров Wireshark найти ту или иную информацию.
Я подготовил для вас примеры запросов поиска, которые покроют основные юзкейсы при работе с ZUI.
Количество каждой категории тегов:
1 |
count() by _path | sort -r |
Все уникальные DNS queries:
1 |
_path=="dns" | count() by query | sort -r |
SMB- и RPC-трафик в системах Windows:
1 |
_path matches smb* OR _path=="dce_rpc" |
HTTP-запросы и фильтрация самых полезных колонок:
1 |
_path=="http" | cut id.orig_h, id.resp_h, id.resp_p, method, host, uri | uniq -c |
Уникальные коннекты и их количество:
1 |
_path=="conn" | cut id.orig_h, id.resp_p, id.resp_h | sort | uniq |
Количество переданных байтов на один коннект:
1 |
_path=="conn" | put total_bytes := orig_bytes + resp_bytes | sort -r total_bytes | cut uid, id, orig_bytes, resp_bytes, total_bytes |
Поиск передаваемых файлов:
1 |
filename!=null | cut _path, tx_hosts, rx_hosts, conn_uids, mime_type, filename, md5, sha1 |
Все запросы HTTP Post:
1 |
method=="POST" | cut ts, uid, id, method, uri, status_code |
Все IP-подсети:
1 |
_path=="conn" | put classnet := network_of(id.resp_h) | cut classnet | count() by classnet | sort -r |
Ну и в завершение парада самые, на мой взгляд, классные.
Демонстрация всех срабатываний сигнатур Suricata и их количество:
1 |
event_type=="alert" | count() by alert.severity,alert.category | sort count |
Демонстрация всех срабатываний сигнатур Suricata, отфильтрованных по Source IP и Destination IP:
1 |
event_type=="alert" | alerts := union(alert.category) by src_ip, dest_ip |
Поиск Emotet C2
Впервые Emotet обнаружили в 2014 году, и тогда исследователи безопасности классифицировали его как банковский троян. Emotet в свое время вызвал целую эпидемию и успел серьезно навредить многим пользователям. Однако позже этот RAT мутировал в дроппер и начал продаваться в даркнете по принципу CaaS (Cybercrime as a Service). Новой функцией малвари стала загрузка другого вредоносного ПО в систему жертвы.
Одним из распространяемых Emotet’ом вредоносов был банковский троян TrickBot. Эту связку мы сейчас и найдем с помощью ZUI.
Для анализа нам понадобится вот этот файл PCAP.
Найдем все вхождения DNS в файле PCAP. Для этого используем один из ранее приведенных запросов.
1 |
_path=="dns" | count() by query | sort -r |
Больше всего выделяются два адреса:
1 |
112.146.166.173.zen.spamhaus.org |
1 |
t-privat.de |
Первый относится к платформе threat-intelligence под названием Spamhaus. А вот второй нам стоит проверить на VirusTotal. Для этого вызовем контекстное меню и выберем VirusTotal Lookup.
VirusTotal проводит проверку и сообщает нам, что домен вредоносный и ранее использовался для хостинга малвари.
Найдем запись типа A и используем более старую дату резолва, которая ближе к дате публикации PCAP. Это будет адрес 81.169.145.161. Попробуем найти совпадения в нашем файле PCAP.
Мы обнаруживаем адрес, и наше внимание привлекает то, что с него передается файл во внутреннюю сеть. Это очень подозрительно, надо исследовать дальше.
Откроем вкладку с этим коннектом и достанем оттуда MD5-хеш 997d6f2e3879bb725fb4747b0046bb50. Теперь нам надо проверить его на вредоносность.
Что ж, сомнения отпали, хост 10.9.1.101 — это наш первый зараженный.
Надо найти все передаваемые файлы, которые содержатся в этом дампе. Для этого используем такую строку поиска:
1 |
filename!=null | cut _path, tx_hosts, rx_hosts, conn_uids, mime_type, filename, md5, sha1 |
И что же мы видим? Еще один IP-адрес. Закидываем его на VirusTotal и убеждаемся, что он вредоносный.
Чтобы удостовериться, что это управляющий сервер, проверим остальные коннекты на этот адрес. Сразу становится очевидно: имеют место «маячковые отстукивания».
Отсортируем трафик по тегам, чтобы представлять самые частые типы взаимодействия между хостами.
1 |
_path | count() by _path | sort -r |
Хм, можно сказать, что ничего, указывающего на дальнейшее распространение малвари, здесь нет. В таких расследованиях обычно рассчитываешь увидеть активность SMB and DCE/RPC.
Для уверенности, что заражение не пошло дальше, можно посмотреть коннекты, которые совершал первый (и, надеемся, последний) инфицированный хост.
Нам интересны коннекты только из той же подсети. Ничего подозрительного не наблюдается.
Мы нашли несколько IOC, первый зараженный хост, С2-сервер, а также выяснили, что дальше хоста 10.9.1.101 заражение не пошло.
Заключение
ZUI, к сожалению, не может стать полноценной заменой Wireshark, он скорее превращает утомительный процесс в продуктивную работу и бережет нервы. Но в качестве помощника в анализе трафика он просто незаменим.
ПОЛЕЗНЫЕ ССЫЛКИ:
pcap arcfile password infected
Крутой сканер, интерфейс удобный, все понятно и просто.
Отличный инструмент. Интерфейс шикарный!