Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
html
Студенту также придется нередко прибегать к использованию сниффера для того, чтобы разобраться в принципах функционирования сетей. В данной
главе описываются соответствующие методики перехвата сетевого трафика.
В данном примере приведена команда для установки приложения wireshark в дистрибутивах, использующих пакеты программного обеспечения с
расширением .deb (включая Debian, Mint, Xubuntu и другие дистрибутивы).
root@debian8:~#
Чтение списков пакетов Готово
Построение дерева зависимостей
Чтение информации о состоянии Готово
... (вывод сокращен)
В дистрибутивах, использующих пакеты программного обеспечения с расширением .rpm, таких, как CentOS, RHEL и Fedora, для установки
приложения wireshark может использоваться утилита yum.
[root@centos7 ~]#
yum install wireshark
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
... (вывод сокращен)
При запуске приложения wireshark в первый раз вам придется выбрать сетевой интерфейс. Вы увидите диалог, который выглядит аналогично
приведенному на иллюстрации ниже.
Вероятна ситуация, при которой доступных сетевых интерфейсов попросту не окажется, ведь в некоторых дистрибутивах перехват сетевого трафика
может осуществляться исключительно пользователем root. В этом случае вам придется запустить приложение wireshark от лица пользователя root с
помощью команды sudo wireshark.
Или же вы можете последовать общим рекомендациям и использовать утилиту tcpdump или какой-либо другой инструмент для перехвата трафика и
записи данных в файл. Любые перехваченные данные могут быть проанализированы позднее с помощью приложения wireshark.
В процессе перехвата сетевого трафика в течение очень коротких промежутков времени могут генерироваться тысячи пакетов. Очевидно, что такой
объем данных затруднит анализ трафика. Попытайтесь выйти из этого положения, изолировав ваш сниффер в рамках сети. Предпочтительным
вариантом является перехват трафика, проходящего через сетевой интерфейс изолированной виртуальной сети, находящейся под вашим полным
контролем.
Если вы изучаете инструменты для перехвата сетевого трафика в домашних условиях, для минимизации трафика будет полезно завершить работу
всех приложений для работы с сетью, запущенных на вашем компьютере, а также отсоединить компьютер от других компьютеров и от таких устройств,
как смартфоны и планшеты.
И все же более важным инструментом для минимизации трафика являются фильтры, которые будут обсуждаться в следующем разделе.
23.1.4. Перехват трафика, генерируемого утилитой ping
Я запустил сниффер и захватил все пакеты, переданные по сети в результате исполнения трех команд ping (не имеет смысла выполнять эти команды
от лица пользователя root):
В общей сложности из сети было захвачено более чем 200 пакетов. Все станет гораздо очевиднее в том случае, если введете строку icmp в поле
фильтра и нажмете кнопку "Применить" ("Apply").
Работая с той же сессией захвата данных, применим отличный фильтр. Мы хотим отслеживать трафик, относящийся как к протоколу dns, так и к
протоколу icmp, поэтому нам придется ввести названия двух упомянутых протоколов в поле фильтра.
Для захвата данных, относящихся к двум рассматриваемым протоколам, в поле фильтра должна быть введена строка "dns or icmp". В случае ввода
строки "dns and icmp" не будет выведено информации о каких-либо пакетах, так как не существует пакетов, относящихся к обоим упомянутыми
протоколам.
При рассмотрении приведенной выше иллюстрации можно заметить, что пакеты 25 и 26 имеют исходные и целевые IP-адреса 10.104.33.30. Это
объясняется тем, что клиент DNS работает на том же компьютере, что и сервер DNS.
Аналогичная ситуация наблюдается и в случае пакетов 31 и 32, ведь с помощью утилиты ping осуществляется отправка пакетов рабочей системе, на
которой запущена данная утилита.
В данном случае осуществляется фильтрация пакетов, относящихся к протоколу 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 в поле фильтра.
Средняя панель окна сниффера может быть раскрыта. При выборе строки в рамках данной панели вы можете увидеть соответствующие значения байт
в поле нижней панели.
На иллюстрации ниже показана средняя панель окна сниффера с выбранным адресом моего ноутбука.
Учтите, что описанная выше техника отлично работает при перехвате трафика, передаваемого через один сетевой интерфейс. Если же вы
перехватываете трафик, к примеру, с помощью команды tcpdump -i any, вы столкнетесь с методом перехвата пакетов "Linux cooked capture".
Вы можете комбинировать два описания протоколов с помощью директивы логической операции or ("ИЛИ"), расположенной между ними. На
иллюстрации ниже показан способ захвата исключительно пакетов, относящихся к протоколам ARP и BOOTP (или DHCP).
А на следующей иллюстрации показан способ перехвата пакетов, относящихся к протоколу DNS и содержащих определенный IP-адрес.
При использовании команды tcpdump host $ip будет выводиться информация обо всем трафике, относящимся к определенному узлу (в данном случае
с IP-адресом 192.168.1.38).
Перехват трафика, относящегося исключительно к протоколу ssh (протокол TCP, порт 22), может осуществляться с помощью команды tcpdump tcp
port $порт. Длина строк вывода урезана до 76 символов для более удобного чтения.
root@deb503:~# tcpdump tcp port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
14:22:20.716313 IP deb503.local.37973 > rhel53.local.ssh: P 666050963:66605
14:22:20.719936 IP rhel53.local.ssh > deb503.local.37973: P 1:49(48) ack 48
14:22:20.720922 IP rhel53.local.ssh > deb503.local.37973: P 49:113(64) ack
14:22:20.721321 IP rhel53.local.ssh > deb503.local.37973: P 113:161(48) ack
14:22:20.721820 IP deb503.local.37973 > rhel53.local.ssh: . ack 161 win 200
14:22:20.722492 IP rhel53.local.ssh > deb503.local.37973: P 161:225(64) ack
14:22:20.760602 IP deb503.local.37973 > rhel53.local.ssh: . ack 225 win 200
14:22:23.108106 IP deb503.local.54424 > ubuntu910.local.ssh: P 467252637:46
14:22:23.116804 IP ubuntu910.local.ssh > deb503.local.54424: P 1:81(80) ack
14:22:23.116844 IP deb503.local.54424 > ubuntu910.local.ssh: . ack 81 win 2
^C
10 packets captured
10 packets received by filter
0 packets dropped by kernel
Та же операция, но с записью захваченных данных в файл, может осуществляться с помощью команды tcpdump -w $имя_файла.
С помощью команды tcpdump -r $имя_файла может быть выведено содержимое файла, созданного в предыдущем примере.
Множество других примеров использования рассматриваемой утилиты может быть найдено на странице руководства man tcpdump.
2. Используйте утилиту ping генерации трафика между вашим и каким-либо другим компьютером.
4. С помощью фильтра осуществите вывод информации исключительно о тех пакетах, которые содержат ответы на запросы от утилиты ping.
5. Теперь передайте утилите ping имя домена (такое, как www.linux-training.be) и попытайтесь перехватить пакеты с запросом и ответом DNS. Какой
DNS-сервер был использован? Был ли использован протокол TCP или UDP для передачи запроса и ответа?
6. Найдите закрытый вебсайт, имеющий форму запроса пароля. Попытайтесь войти на него, использовав имя пользователя 'paul' и пароль 'hunter2' в
процессе работы сниффера. Теперь попытайтесь найти введенные имя пользователя и пароль в захваченных с помощью сниффера данных.
2. Используйте утилиту ping генерации трафика между вашим и каким-либо другим компьютером.
ping $ip_адрес
(sudo) wireshark
4. С помощью фильтра осуществите вывод информации исключительно о тех пакетах, которые содержат ответы на запросы от утилиты ping.
Введите 'icmp' (без кавычек) в поле фильтра и нажмите кнопку "Применить" ("Apply").
5. Теперь передайте утилите ping имя домена (такое, как www.linux-training.be) и попытайтесь перехватить пакеты с запросом и ответом DNS. Какой
DNS-сервер был использован? Был ли использован протокол TCP или UDP для передачи запроса и ответа?
6. Найдите закрытый вебсайт, имеющий форму запроса пароля. Попытайтесь войти на него, использовав имя пользователя 'paul' и пароль 'hunter2' в
процессе работы сниффера. Теперь попытайтесь найти введенные имя пользователя и пароль в захваченных с помощью сниффера данных.