Wireshark на службе защитников
Насколько хорошо вы знаете, какие пакеты ходят в вашей сети? А если ли среди ни что‑то подозрительное? Типичная ситуация, когда на периметре корпоративной сети установлены и настроены различные средства защиты межсетевые экраны, IDS, антивирусы и песочницы и т. д. Но при этом, в самой локальной сети сетевые средства защиты практически отсутствуют, в результате внутренний трафик не проверяется и злоумышленник может спокойно перемещаться внутри сети, не боясь быть обнаруженным. Таким образом, необходимо вести мониторинг трафика и во внутренней сети, а для этого нужно сначала разобраться с тем, какие пакеты вообще у нас ходят, чтобы затем грамотно настроить IDS.
Другой пример, при расследовании инцидента важно понять какие машины были скомпрометированы, как хакер осуществляет перемещения, какие протоколы при этом используются. Для того, чтобы ответить на все эти вопросы необходимо также разобраться с трафиком.
Отдельная история — это трафик в промышленных сетях. Для настройки решений для мониторинга промышленных протоколов нужно сначала изучить какие протоколы есть в сети.
Так или иначе мы приходим к выводу, что нам необходимо уметь перехватывать и анализировать сетевой трафик. Для перехвата трафика мы будем использовать всем хорошо знакомый Tcpdump, а для анализа не менее известный Wireshark. Собственно, никто не мешает использовать только Wireshark или его консольный вариант Tshark, но очень часто на серверных Линуксах есть Tcpdump и нет возможности доставить какие‑то еще инструменты. Мы можем собирать трафик с помощью Tcpdump в формате pcap, а затем уже анализировать с помощью Wireshark.
Сам процесс съема трафика мы не будем рассматривать. На эту тему есть много различных публикаций, предлагающих использовать для получения копии трафика использовать разнообразные технологические решения, от SPAN и TAP до хакерских манипуляций с вскрытием оплетки кабели и подключения непосредственно к витой паре с помощью крокодилов.
А вот о том, как на логическом уровне не снять лишнего мы поговорим подробнее. Если на интерфейс, который мы собираемся использовать для получения копии трафика, должны приходить пакеты не предназначенные для данного узла (мы настроили зеркалирование трафика), то на интерфейсе необходимо включить смешанный режим.
ip link set eth1 promisc on
Если мы хотим видеть только пакеты, предназначенные для данного узла, то смешанный режим не нужен.
С помощью tcpdump можно конечно просто собрать весь трафик, приходящий на данный интерфейс. Зачастую именно это и требуется.
sudo tcpdump -i eth0 -w network_traffic.pcap
Но если вы точно знаете, что нужны пакеты, идущие от или к определенному узлу, то можно сразу настроить фильтр. Разберем несколько примеров.
Если нам нужно собрать все пакеты, в которых источником является узел 192.168.222.161, то используем src:
tcpdump –i eth0 src 192.168.222.161
Если же нам нужно получить все пакеты в которых 192.168.222.161 был получателем, то используем dst:
tcpdump –i eth0 dst 192.168.222.161
А вот если мы хотим собрать все пакеты, в которых 192.168.222.161 присутствовал либо в качестве отправителя, либо в качестве получателя, то используем host:
tcpdump –i eth0 host 192.168.222.161
Аналогично с портами. Мы можем использовать параметр port совместно с dst или src.
tcpdump –i eth0 port 443
Таким образом, мы можем собрать только нужный трафик с помощью tcpdump, и затем уже приступить к его анализу с помощью Wireshark.
Используем Wireshark
Если мы используем Wireshark для перехвата трафика, то здесь тоже можно настроить фильтрацию для того, чтобы не собирать лишнее.
Например, мы можем настроить сбор только tcp пакетов, как показано в примере ниже. Для этого нужно в окне с выбором интерфейса, в поле фильтра указать нужное выражение.

Не стоит путать фильтр для захвата пакетов с фильтром для поиска, который мы будем использовать в примерах дальше. Здесь мы будем перехватывать только то, что указано в фильтре. А в фильтре поиска мы указываем что нужно найти, при этом перехвачено может быть гораздо больше трафика.
Итак, мы собрали трафик за достаточно продолжительный период теперь нам необходимо его проанализировать. Начнем с простого, поищем HTTP трафик. Да, конечно, сейчас везде используется HTTPS, но в локальной сети вполне мог остаться какой‑нибудь самописный сервер учета времени, написанный студентом‑практикантом лет 15 назад и использующий только HTTP.
Чтобы найти в потоке перехваченного трафика HTTP пакеты достаточно в поле фильтра указать http. Но за тем придется анализировать все собранные пакеты вручную. Но мы можем упростить себе жизнь, попросив Wireshark построить HTTP Stream. Для этого необходимо на первом HTTP пакете нажать правую кнопку мыши и выбрать Follow → HTTP Stream. В результате последовательное представление информационного обмена между отправителем и получателем по протоколу HTTP.

Далее мы можем воспользоваться полем Find для поиска нужных данных, например для поиска содержимого форм.
Старый добрый ARP Spoofing
Теперь пример немного посложнее, посмотрим, как выглядит в дампе ARP‑spoofing. Напомним, при реализации ARP spoofing злоумышленники отправляют жертвам ARP‑пакеты, устанавливающие соответствие между IP‑адресами одних устройств в сети и MAC‑адресами других устройств, например подконтрольных атакующим. В дальнейшем, если устройство жертвы отправляет данные на эти IP‑адреса, злоумышленники могут перехватывать, модифицировать или перенаправлять сообщения.

Давайте посмотрим, как может выглядеть ARP spoofing в дампе трафика.
Здесь для начала нам придется немного модифицировать внешний вид нашего Wireshark для большей наглядности. Выберем Edit ‑> Preferences из главного меню. Далее выберем Columns, который находится у левого края открывшегося окна Preferences. Нажав + добавим новый столбец и укажем Source МАС (МАС‑адрес источника). Также выберем Hw src addr (resolved) (Аппаратный адрес отправителя (преобразованный)) из раскрывающегося списка Туре.
Для большей наглядности новый столбец разместим сразу после столбца Source.
Далее, аналогичным образом добавим Dest МАС (МАС‑адрес места назначения) и разместим его сразу после столбца Destination.
Теперь у каждого пакета мы видим не только IP, но и МАС адреса и это нам пригодится при идентификации ARP Spoofing.

Теперь в общем потоке трафика нам необходимо идентифицировать arp пакеты. Укажем соответствующий фильтр arp. В результате мы видим несколько ARP пакетов, два из которых нам особенно интересны, это пакеты 55 и 56, в которых как раз и говорится об изменении соответствия адресов.

Далее, благодаря добавленным нами столбцам мы можем отследить изменение соответствия IP и MAC адресов.
Анализируем мусор
Аналитический функционал Wireshark может быть очень полезен при анализе различных видов DDoS атак. Эти атаки практически всегда отличаются большим количеством различных пакетов, как правило идущих от разных узлов и вручную разобраться с этим крайне проблематично.
Возьмем в качестве примера еще одну нестареющую классику — SYN flood. В этой атаке используются так называемые полуоткрытые соединения, когда отправитель после отправки SYN, игнорирует ответный SYN/ACK. В результате на машине получателя расходуется память на каждое из этих соединений и становится возможен отказ в обслуживании.
Несмотря на то, что разработчики современных ОС научились бороться с подобными атаками, в промышленных сетях, где много устаревших операционок, эти атаки по‑прежнему актуальны.
Для того, чтобы понять, что у нас в сети происходит что‑то странное, можно построить статистику по трафику (Statistics → Conversations).
Как видно из моего примера с SYN‑flood, во вкладке TCP мы видим довольно большое количество пакетов, с различных хостов, причем каждый из них отправил ровно один пакет, на разные порты и каждый пакет содержит ровно 60 байт.

Такой трафик может быть признаком SYN flood. Если узел отправителя всегда один, тогда это скорее всего сканирование сети.
Аналогичным образом можно проанализировать и другие дампы DDoS трафика. Некоторые образцы для изучения можно взять на этом ресурсе.
Заключение
Сетевой трафик является важнейшим источником информации не только о происходящем в сети, но и о том, какими данными обмениваются приложения, какие данные они передают в открытом виде, какие подозрительные активности есть в сети.
В этой статье мы посмотрели, как можно использовать Tcpdump для сбора трафика и Wireshark для анализа трафика с целью выявления использования небезопасных протоколов, сетевых атак и DDoS.
На основании анализа трафика можно точнее настроить средства обнаружения атак, NGFW, профилировщики трафика и другие средства сетевой защиты.
Все актуальные методы и инструменты обеспечения информационной безопасности можно освоить на онлайн-курсах OTUS: в каталоге можно посмотреть список всех программ, а в календаре — записаться на открытые уроки.