- Администрирование систем Linux. Перехват сетевого трафика
- Глава 23. Перехват сетевого трафика
- 23.1. Приложение wireshark
- 23.2. Утилита tcpdump
- 23.3. Практическое задание: перехват сетевого трафика
- 23.4. Корректная процедура выполнения практического задания: перехват сетевого трафика
- Установите и используйте Wireshark в Ubuntu Linux
- Установка Wireshark в дистрибутивах Linux на основе Ubuntu
- Запуск Wireshark без sudo
- Запуск Wireshark
- Захват пакетов с помощью Wireshark
- Остановка захвата пакета в Wireshark
- Сохранить захваченные пакеты в файл
- Заключение.
Администрирование систем Linux. Перехват сетевого трафика
Глава 23. Перехват сетевого трафика
Администратор сети должен уметь работать со сниффером, таким, как wireshark или tcpdump , для диагностирования проблем сети.
Студенту также придется нередко прибегать к использованию сниффера для того, чтобы разобраться в принципах функционирования сетей. В данной главе описываются соответствующие методики перехвата сетевого трафика .
23.1. Приложение wireshark
23.1.1. Установка wireshark
В данном примере приведена команда для установки приложения wireshark в дистрибутивах, использующих пакеты программного обеспечения с расширением .deb (включая Debian, Mint, Xubuntu и другие дистрибутивы).
В дистрибутивах, использующих пакеты программного обеспечения с расширением .rpm , таких, как CentOS, RHEL и Fedora, для установки приложения wireshark может использоваться утилита yum .
23.1.2. Выбор сетевого интерфейса
При запуске приложения wireshark в первый раз вам придется выбрать сетевой интерфейс. Вы увидите диалог, который выглядит аналогично приведенному на иллюстрации ниже.
Вероятна ситуация, при которой доступных сетевых интерфейсов попросту не окажется, ведь в некоторых дистрибутивах перехват сетевого трафика может осуществляться исключительно пользователем root. В этом случае вам придется запустить приложение wireshark от лица пользователя root с помощью команды sudo wireshark .
Или же вы можете последовать общим рекомендациям и использовать утилиту tcpdump или какой-либо другой инструмент для перехвата трафика и записи данных в файл. Любые перехваченные данные могут быть проанализированы позднее с помощью приложения wireshark .
23.1.3. Минимизация трафика
В процессе перехвата сетевого трафика в течение очень коротких промежутков времени могут генерироваться тысячи пакетов. Очевидно, что такой объем данных затруднит анализ трафика. Попытайтесь выйти из этого положения, изолировав ваш сниффер в рамках сети. Предпочтительным вариантом является перехват трафика, проходящего через сетевой интерфейс изолированной виртуальной сети, находящейся под вашим полным контролем.
Если вы изучаете инструменты для перехвата сетевого трафика в домашних условиях, для минимизации трафика будет полезно завершить работу всех приложений для работы с сетью, запущенных на вашем компьютере, а также отсоединить компьютер от других компьютеров и от таких устройств, как смартфоны и планшеты.
И все же более важным инструментом для минимизации трафика являются фильтры , которые будут обсуждаться в следующем разделе.
23.1.4. Перехват трафика, генерируемого утилитой ping
Я запустил сниффер и захватил все пакеты, переданные по сети в результате исполнения трех команд ping (не имеет смысла выполнять эти команды от лица пользователя root):
В общей сложности из сети было захвачено более чем 200 пакетов. Все станет гораздо очевиднее в том случае, если введете строку icmp в поле фильтра и нажмете кнопку «Применить» («Apply»).
23.1.5. Перехват трафика, генерируемого утилитой ping и клиентом dns
Работая с той же сессией захвата данных, применим отличный фильтр . Мы хотим отслеживать трафик, относящийся как к протоколу dns , так и к протоколу icmp , поэтому нам придется ввести названия двух упомянутых протоколов в поле фильтра.
Для захвата данных, относящихся к двум рассматриваемым протоколам, в поле фильтра должна быть введена строка «dns or icmp» . В случае ввода строки «dns and icmp» не будет выведено информации о каких-либо пакетах, так как не существует пакетов, относящихся к обоим упомянутыми протоколам.
При рассмотрении приведенной выше иллюстрации можно заметить, что пакеты 25 и 26 имеют исходные и целевые IP-адреса 10.104.33.30. Это объясняется тем, что клиент DNS работает на том же компьютере, что и сервер DNS.
Аналогичная ситуация наблюдается и в случае пакетов 31 и 32, ведь с помощью утилиты ping осуществляется отправка пакетов рабочей системе, на которой запущена данная утилита.
23.1.6. Определенный IP-адрес
В данном случае осуществляется фильтрация пакетов, относящихся к протоколу DNS и содержащих определенный IP-адрес . В качестве фильтра используется строка «ip.addr==10.104.33.30 and dns» . Директива and сообщает приложению о том, что следует выводить информацию о каждом пакете, соответствующем двум условиям.
Пакет 93 содержит запрос DNS , направленный на получение записи типа A домена linux-training.be. Пакет 98 содержит ответ от сервера DNS . Как вы думаете, что происходило после отправки пакета 93 и до приема пакета 98? Попытайтесь ответить на этот вопрос перед чтением следующего раздела (при работе с различными системами всегда полезно пытаться предсказывать наступающие события и проверять корректность своих предсказаний).
23.1.7. Фильтрация на основе фреймов
Корректным термином, используемым для обозначения перехваченного пакета , является термин фрейм (из-за того, что мы осуществляем перехват пакетов на уровне 2 сетевой модели OSI). Таким образом, для вывода информации о пакетах с определенными номерами, следует использовать директиву frame.number в поле фильтра.
23.1.8. Исследование содержимого пакетов
Средняя панель окна сниффера может быть раскрыта. При выборе строки в рамках данной панели вы можете увидеть соответствующие значения байт в поле нижней панели.
На иллюстрации ниже показана средняя панель окна сниффера с выбранным адресом моего ноутбука.
Учтите, что описанная выше техника отлично работает при перехвате трафика, передаваемого через один сетевой интерфейс. Если же вы перехватываете трафик, к примеру, с помощью команды tcpdump -i any , вы столкнетесь с методом перехвата пакетов «Linux cooked capture» .
23.1.9. Другие примеры фильтров
Вы можете комбинировать два описания протоколов с помощью директивы логической операции or («ИЛИ»), расположенной между ними. На иллюстрации ниже показан способ захвата исключительно пакетов, относящихся к протоколам ARP и BOOTP (или DHCP ).
А на следующей иллюстрации показан способ перехвата пакетов, относящихся к протоколу DNS и содержащих определенный IP-адрес .
23.2. Утилита tcpdump
В случае работы с интерфейсом командной строки системы перехват пакетов может осуществляться с помощью утилиты tcpdump . Ниже приведены некоторые примеры ее использования.
При использовании команды tcpdump host $ip будет выводиться информация обо всем трафике, относящимся к определенному узлу (в данном случае с IP-адресом 192.168.1.38).
Перехват трафика, относящегося исключительно к протоколу ssh (протокол TCP, порт 22), может осуществляться с помощью команды tcpdump tcp port $порт . Длина строк вывода урезана до 76 символов для более удобного чтения.
Та же операция, но с записью захваченных данных в файл, может осуществляться с помощью команды tcpdump -w $имя_файла .
С помощью команды tcpdump -r $имя_файла может быть выведено содержимое файла, созданного в предыдущем примере.
Множество других примеров использования рассматриваемой утилиты может быть найдено на странице руководства man tcpdump .
23.3. Практическое задание: перехват сетевого трафика
1. Установите приложение wireshark в вашу систему (работающую не в виртуальной машине).
2. Используйте утилиту ping генерации трафика между вашим и каким-либо другим компьютером.
3. Начните перехват сетевого трафика.
4. С помощью фильтра осуществите вывод информации исключительно о тех пакетах, которые содержат ответы на запросы от утилиты ping.
5. Теперь передайте утилите ping имя домена (такое, как www.linux-training.be) и попытайтесь перехватить пакеты с запросом и ответом DNS. Какой DNS-сервер был использован? Был ли использован протокол TCP или UDP для передачи запроса и ответа?
6. Найдите закрытый вебсайт, имеющий форму запроса пароля. Попытайтесь войти на него, использовав имя пользователя ‘paul’ и пароль ‘hunter2’ в процессе работы сниффера. Теперь попытайтесь найти введенные имя пользователя и пароль в захваченных с помощью сниффера данных.
23.4. Корректная процедура выполнения практического задания: перехват сетевого трафика
1. Установите приложение wireshark в вашу систему (работающую не в виртуальной машине).
В дистрибутивах Debain/Ubuntu: aptitude install wireshark
В дистрибутивах Red Hat/Mandriva/Fedora: yum install wireshark
2. Используйте утилиту ping генерации трафика между вашим и каким-либо другим компьютером.
3. Начните перехват сетевого трафика.
Выберите сетевой интерфейс (вероятно, eth0)
4. С помощью фильтра осуществите вывод информации исключительно о тех пакетах, которые содержат ответы на запросы от утилиты ping.
Введите ‘icmp’ (без кавычек) в поле фильтра и нажмите кнопку «Применить» («Apply»).
5. Теперь передайте утилите ping имя домена (такое, как www.linux-training.be) и попытайтесь перехватить пакеты с запросом и ответом DNS. Какой DNS-сервер был использован? Был ли использован протокол TCP или UDP для передачи запроса и ответа?
В первую очередь запустите сниффер.
Введите ‘dns’ в поле фильтра и нажмите кнопку «Применить» («Apply»).
Окно приложения wireshark должно выглядеть аналогичным образом.
На основе информация из окна приложения wireshark можно сделать вывод о том, что запрос DNS передавался с помощью пакета UDP, после чего несложно дать ответы на поставленные вопросы.
6. Найдите закрытый вебсайт, имеющий форму запроса пароля. Попытайтесь войти на него, использовав имя пользователя ‘paul’ и пароль ‘hunter2’ в процессе работы сниффера. Теперь попытайтесь найти введенные имя пользователя и пароль в захваченных с помощью сниффера данных.
Источник
Установите и используйте Wireshark в Ubuntu Linux
Wireshark — это бесплатный анализатор сетевых протоколов с открытым исходным кодом, широко используемый во всем мире.
С помощью Wireshark вы можете захватывать входящие и исходящие пакеты сети в режиме реального времени и использовать его для устранения неполадок в сети, анализа пакетов, разработки программного обеспечения и протоколов связи и многого другого.
Он доступен во всех основных настольных операционных системах, таких как Windows, Linux, macOS, BSD и других.
В этом руководстве я расскажу вам, как установить Wireshark в Ubuntu и других дистрибутивах на основе Ubuntu. Я также покажу немного о настройке и конфигурации Wireshark для захвата пакетов.
Установка Wireshark в дистрибутивах Linux на основе Ubuntu
Wireshark доступен во всех основных дистрибутивах Linux. В этом руководстве я сосредоточусь на установке последней версии Wireshark только в дистрибутивах на основе Ubuntu, поэтому если вы пользуетесь другими операционными системами на основе Linux, вам стоит почитать официальную документацию и советы по установке.
Wireshark доступен в репозитории «Universe» Ubuntu. Вы можете подключить этот репозиторий и затем установить его с помощью этих команд:
Одна небольшая проблема этого подхода заключается в том, что вы не всегда можете получить последнюю версию Wireshark.
Например, в Ubuntu 18.04, если вы используете команду apt для проверки доступной версии Wireshark, это будет версия 2.6.
Тогда как стабильная версия Wireshark 3.2 была выпущена несколько месяцев назад. А новый релиз, конечно, приносит новые возможности.
Итак, что вы делаете в таком случае? К счастью, разработчики Wiresshark предоставляют официальный PPA, который вы можете использовать для установки последней стабильной версии Wireshark в Ubuntu и других дистрибутивах на основе Ubuntu.
Я надеюсь, что вы знакомы с PPA. Если нет, пожалуйста, прочитайте наше превосходное руководство по PPA, чтобы разобраться в этом вопросе до конца.
Откройте терминал и используйте следующие команды одну за другой:
Даже если у вас установлена достаточно старая версия Wireshark, она будет обновлена до более новой версии.
Во время установки вам будет предложено разрешить не-суперпользователям перехватывать пакеты. Выберите «Да», чтобы разрешить, или «Нет», чтобы запретить не-суперпользователям захватывать пакеты, после этого завершите установку.
Запуск Wireshark без sudo
Если вы выбрали «Нет» в предыдущей установке, выполните следующую команду от имени пользователя root:
И выберите «Да», используя клавишу табуляции и затем клавишу ввода:
Поскольку вы разрешили не-суперпользователю перехватывать пакеты, вы должны добавить пользователя в группу wireshark. Используйте команду usermod, чтобы добавить себя в группу wireshark.
Наконец, перезапустите систему Ubuntu, чтобы внесенные изменения вступили в силу.
Забавный факт:
Впервые выпущенный в 1998 году, Wireshark изначально был известен как Ethereal. Разработчикам пришлось изменить его название на Wireshark в 2006 году из-за проблем с товарными знаками.
Запуск Wireshark
Запуск приложения Wireshark можно выполнить из панели запуска приложений или интерфейса командной строки.
Чтобы начать с CLI, просто введите wireshark в вашей консоли:
В графическом интерфейсе, напишите Wireshark в строке поиска и нажмите Enter.
Теперь давайте поиграем с Wireshark.
Захват пакетов с помощью Wireshark
Когда вы запустите Wireshark, вы увидите список интерфейсов, которые вы можете использовать для захвата пакетов.
Существует много типов доступных интерфейсов, которые вы можете отслеживать с помощью Wireshark, таких как проводные, внешние устройства и т.д. В зависимости от ваших предпочтений вы можете выбрать отображение определенных типов интерфейсов на экране приветствия из отмеченной области на приведенном ниже рисунке.
Например, я перечислил только проводные сетевые интерфейсы.
Затем, чтобы начать захват пакетов, вы должны выбрать интерфейс (в моем случае это ens33) и щелкнуть значок «Начать захват пакетов», как показано на рисунке ниже.
Вы также можете захватывать пакеты с нескольких интерфейсов одновременно. Просто нажмите и удерживайте кнопку CTRL, нажимая на интерфейсы, которые вы хотите захватить, и затем нажмите значок «Начать захват пакетов», как отмечено на изображении ниже.
Затем я попытался использовать команду ping google.com в терминале, и, как вы можете видеть, захватил много пакетов.
Теперь вы можете выбрать любой пакет для проверки. После нажатия на конкретный пакет вы можете увидеть информацию о различных уровнях протокола TCP / IP, связанных с ним.
Вы также можете увидеть RAW-данные этого конкретного пакета внизу, как показано на рисунке ниже.
Вот почему так важно сквозное шифрование
Представьте, что вы заходите на сайт, который не использует HTTPS. Любой в той же сети, что и вы, может перехватывать ваши пакеты, видеть имя пользователя и пароль в данных RAW.
Вот почему большинство приложений для чатов используют сквозное шифрование, и большинство веб-сайтов в наши дни используют https (вместо http).
Остановка захвата пакета в Wireshark
Вы можете нажать на красный значок, как отмечено на данном изображении, чтобы прекратить захват пакетов Wireshark.
Сохранить захваченные пакеты в файл
Вы можете нажать на отмеченный значок на изображении ниже, чтобы сохранить захваченные пакеты в файл для дальнейшего использования.
Примечание: вывод можно экспортировать в XML, PostScript®, CSV или обычный текст.
Затем выберите папку назначения, введите имя файла и нажмите «Сохранить».
Потом выберите файл и нажмите «Открыть».
Теперь вы можете открывать и анализировать сохраненные пакеты в любое время. Чтобы открыть файл, нажмите \ + o или перейдите в File > Open из интерфейса Wireshark.
Захваченные пакеты будут загружены из файла.
Заключение.
Wireshark поддерживает множество различных протоколов связи. Существует множество опций и функций, которые дают вам возможность захватывать и анализировать сетевые пакеты уникальным способом. Вы можете узнать больше о Wireshark из их официальной документации.
Я надеюсь, что это руководство помогло вам установить Wireshark в Ubuntu. Пожалуйста, дайте мне знать, если у вас остались вопросы или появились предложения.
Источник