Как захватить сетевой трафик?
Перед тем, как проводить тестирование безопасности, вы должны иметь возможность контролировать свои действия. Просмотр сетевого трафика обеспечит вам такой контроль. К тому же вы должны иметь возможность перехватывать сетевые сообщения для анализа ситуации.
Сетевые интерфейсы созданы, чтобы фильтровать информацию и не перегружать операционную систему, посредством проверки адреса управления доступом к среде (MAC) в пункте назначения фрейма. Фрейм — это набор заголовков уровня 2 для связи в локальной физической сети. И в случае, когда MAC-адрес совпадает с адресом, связанным с сетевым интерфейсом (физическим адресом), то пакет перенаправляется в ОС.
Бывает, что по сети отправляются широковещательные (broadcast) сообщения, которые пересылаются в операционку для обработки системой. Остальные сообщения отбрасываются сетевым интерфейсом, потому что они не имеют значения.
Раньше для передачи сообщений из одной системы в другую использовались концентраторы, все сообщения в сети проходили через все системы. Сейчас популярно использовать коммутаторы и беспроводные средства связи, которые выполняют ту же функцию. Получается, что на наш сетевой интерфейс отправляются только сообщения, предназначенные для нашей системы, и бродкастовые сообщения. Но способы получить больше сообщений есть. Для этого нам нужно перевести наш интерфейс в беспорядочный режим (promiscuous mode), так интерфейс перестаёт фильтровать сообщения и отправляет все в операционную систему для обработки.
Мы будем использовать программу tcpdump, которая используется для перехвата трафика. После этого она начнет вытягивать все фреймы и отображать их.
К слову, сейчас перехватить трафик на сетевом интерфейсе ее составит труда. Для этого мы запускаем tcpdump
Когда захват трафика закончится, останавливаем работу tcpdump с помощью клавиш Ctrl-C.
Есть один проблематичный момент — для работы с tcpdump нужны права администратора, так как он будет работать с сетевым интерфейсом, извлекать содержимое фрейма/пакета из операционной системы. В большинстве систем Linux есть возможность получить права администратора, используя sudo. Это позволяет программе, Таким образом программа будет выполняться с повышенными правами.
Так выглядит получение прав администратора в Kali Linux.
tcpdump использует интерфейс по умолчанию. Это значит, что если необходимо захватить другой интерфейс, то нужно сообщить tcpdump, какой именно интерфейс хотим захватить. При помощи команды:
Например, применим команду для захвата интерфейса eth0, который является обычным интерфейсом в системах:
Есть вероятность, что нам придется определить интерфейсы. Это можно сделать 2 способами: запустить ifconfig или ip a. В результате мы получим IP-адрес, который связан с каждым интерфейсом. Это может нам сильно помочь с поиском того интерфейса, который мы хотим захватить.
Уметь перехватывать пакеты полезно каждому специалисту по кибербезопасности, это позволяет видеть, отправленную и полученную информацию. Также важно выполнять любые действия по устранению неполадок на уровне сети. Когда нам нужно захватить пакеты, tcpdump — хороший инструмент в вашем арсенале.
tcpdump идеальный инструмент для захвата пакетов общего назначения. Кроме нее есть еще программа tshark. Это программа командной строки, которая устанавливается вместе с Wireshark. Сейчас опробуем tshark для захвата пакетов в стандартный вывод и посмотрим на ее работу. Вначале нам потребуются права администратора. Получаем права и затем запускаем tshark:
Если есть необходимость указать интерфейс, можно использовать — i:
Результат аналогичный выводу tcpdump. Конечно, могут быть небольшие отличия, но основная информация та же: есть информация об источнике и получателе, но tshark выдает небольшую заметку о том, что содержит пакет.
Например, если бы мы собирали трафик для порта 443, получили бы информацию о хэндшейке. После того, как установится соединение, tshark сообщит, что каждый перехваченный пакет содержит данные приложения и на этом все. Он не может прочитать информацию внутри пакета, потому что зашифрован.
tshark позволяет использовать фильтры пакетов Berkeley. Это дает нам контроль на тем, что мы захватываем. Сейчас попробуем увеличить уровень детализации.
Вместо данных перехвата пакетов мы видим информацию о версии. Чтобы получить детали, нужно вводить заглавную букву V.