Вы находитесь на странице: 1из 15

Лабораторная работа № 9. Снифферы.

Использование анализатора сетевого тра-


фика Iris.
Методические указания по выполнению лабораторной работы по дисциплине “Ин-
фокоммуникационные системы и сети” по направлению подготовки 230400 «Информаци-
онные системы и технологии» по профилям подготовки «Информационные системы и
технологии в машиностроении», «Информационные системы и технологии в администра-
тивном управлении» / И.В. Нагаев, – Иркутск: ИрГТУ, 2013.
Цель работы: знакомство с принципами работы снифферов на примере программы
Iris.
I. ОСНОВНЫЕ ПОНЯТИЯ
Снифферы – это программы, перехватывающие сетевой трафик. Снифферы полезны
для диагностики сети, нахождения неисправностей. В ЛВС можно перехватывать все от-
правляемые пакеты со всех машин, так как там практикуется широковещание.
Сниффер пакетов представляет собой прикладную программу, которая использует
сетевую карту, работающую в режиме promiscuous mode (в этом режиме все пакеты, полу-
ченные по физическим каналам, сетевой адаптер отправляет приложению для обработки).
При этом сниффер перехватывает все сетевые пакеты, которые передаются через опреде-
ленный домен, при условии, что в сети присутствует хаб или маршрутизатор. Если присут-
ствует свитч (!!!), то можно отловить только широковещательные пакеты, т.е. пакеты,
предназначенные всем машинам в сети.

Switch Hub

В настоящее время снифферы работают в сетях на вполне законном основании. Они


используются для диагностики неисправностей и анализа трафика. Однако ввиду того, что
некоторые сетевые приложения передают данные в текстовом формате (telnet, FTP, SMTP,
POP3 и т.д.), с помощью сниффера можно узнать полезную, а иногда и конфиденциальную
информацию (например, имена пользователей и пароли).
Перехват имен и паролей создает большую опасность, так как пользователи часто
применяют один и тот же логин и пароль для множества приложений и систем. Многие
пользователи вообще имеют один пароль для доступа ко всем ресурсам и приложениям.
Если приложение работает в режиме клиент/сервер, а аутентификационные данные пере-
даются по сети в читаемом текстовом формате, эту информацию с большой вероятностью
можно использовать для доступа к другим корпоративным или внешним ресурсам. Хакеры
слишком хорошо знают и используют наши человеческие слабости (методы атак часто ба-
зируются на методах социальной инженерии). Они прекрасно знают, что мы пользуемся

1
одним и тем же паролем для доступа к множеству ресурсов, и поэтому им часто удается,
узнав наш пароль, получить доступ к важной информации. В самом худшем случае хакер
получает доступ к пользовательскому ресурсу на системном уровне и с его помощью соз-
дает нового пользователя, которого можно в любой момент использовать для доступа в
сеть и к ее ресурсам.
Рассмотрим состав заголовков TCP и IP сегментов.
Заголовок IP-сегмента выглядит следующим образом:
0 3 7 15 18 23 31
+------+-------+---------------+-----+---------+---------------+
|Версия| Длина | Тип | Длина |
| |заг-ка | обслуживания | сегмента |
+------+-------+---------------+-+-+-+---------+---------------+
| Идентификатор | |D|M| Смещение |
| | |F|F| фрагмента |
+--------------+---------------+-+-+-+-------------------------+
| Время | Транспорт | Контрольная сумма |
| жизни | | заголовка |
+--------------+---------------+-------------------------------+
| Адрес |
| источника |
+--------------------------------------------------------------+
| Адрес |
| приемника |
+----------------------------------------------+---------------+
| Дополнительные | Данные |
| данные заголовка | выравнивания |
+----------------------------------------------+---------------+

Версия
4-х битовое поле, содержащее номер версии протокола IP (номер текущей версии равен 4);
Длина заголовка
4-х битовое поле, содержащее длину заголовка IP-сегмента в 32-битных словах. Минимальная
(и типичная) длина заголовка - пять слов.
Тип обслуживания
байт, содержащий набор критериев, определяющих тип обслуживания IP-сегментов.
Длина сегмента
двухбайтовое поле, содержащее длину (в байтах) всего IP-сегмента, включая длину заголовка.
Максимальная длина IP-сегмента (включая заголовок) - 65535 байт.
Идентификатор
двухбайтовое поле, содержащее уникальный идентификатор IP-сегмента, присваиваемый ему
посылающим узлом. Это поле используется для распознавания фрагментов одного IP-сегмента (в си-
туациях, когда в ходе перемещения по глобальной сети единый IP-сегмент был разбит на несколько
фрагментов по причине его недопустимо большой длины).
DF, MF
биты, используемые при обработке фрагментированных IP-сегментов.
Если бит DF (Don't Fragment) установлен в 1, то это означает, что IP-сегмент не может быть раз-
бит на фрагменты ни при каких условиях (даже, если он не может быть передан без этого далее к ад-
ресату и должен быть уничтожен).
Бит MF (More Fragments) указывает, является (MF=0) или нет (MF=1) данный IP-"подсегмент"
последним в цепочке IP-"подсегментов", в которую был преобразован (фрагментирован) исходный IP-
сегмент.
Смещение фрагмента
Это поле содержит смещение данных, содержащихся в IP-фрагменте, по отношению к началу
данных исходного IP-сегмента.

2
Время жизни
однобайтовое поле, заполняемое создающим IP-сегмент узлом сети количеством единиц време-
ни жизни IP-сегмента в сети. RFC 791 специфицирует в качестве этих единиц секунды и требует, чтобы
каждый транзитный узел сети, через который проходит IP-сегмент, уменьшал содержимое этого поля
по крайней мере на 1 (даже при условии, что обработка сегмента на самом деле заняла меньше одной
секунды). Таким образом, на практике, время жизни (TTL - Time To Live) - это максимальное количест-
во узлов, которое может пройти до своего уничтожения IP-сегмент.
Каждый IP-модуль на любом узле сети обязан уничтожать IP-сегменты, для которых поле "время
жизни" стало равным нулю. Этим предотвращается появление в сети IP-сегментов, "блуждающих" по
ней бесконечное время. При этом узлу-источнику уничтоженного IP-сегмента посылается ICMP-
сегмент, извещающий об этом событии.
Транспорт
поле размером в байт, содержащее идентификатор протокола более высокого (обычно, транс-
портного) уровня, для которого предназначены данные IP-сегмента. Ниже приведены идентификаторы
для ряда протоколов.
--------+-------------+------------------------------------------
Иденти- : Сокращенное : Имя протокола
фикатор : название :
--------+-------------+------------------------------------------
1 ICMP Межсетевой протокол управляющих сообщений
2 IGMP Межсетевой протокол группового управления
3 GGP Протокол "шлюз-шлюз"
6 TCP Протокол управления передачей
8 EGP Протокол "внешних" шлюзов
17 UDP Протокол дейтаграмм пользователя
27 RDP Протокол надежных данных
28 IRTP Протокол межсетевой надежной передачи
29 ISO TP4 Транспортный протокол ISO 4 класса
80 ISO IP Межсетевой протокол ISO
89 OSPF Протокол "кратчайший путь первым"
-------+--------------+------------------------------------------

Контрольная сумма заголовка


двухбайтовое поле, содержащее контрольную сумму заголовка IP-сегмента (обращаем внима-
ние, что для данных IP-сегмента контрольная сумма не подсчитывается; контролировать данные - за-
дача протоколов транспортного уровня).
Поскольку заголовок IP-сегмента содержит поле "время жизни", изменяющее свое значение в
каждом узле, через который следует IP-сегмент, то для вычисления контрольной суммы должен ис-
пользоваться эффективный (а, следовательно, простой алгоритм). Во всех протоколах, входящих в ар-
хитектуру TCP/IP, используется так называемая Internet-контрольная сумма, которая представляет со-
бой дополнение 16-битной суммы всех 16-битных слов контролируемой информации.
Адрес источника и адрес приемника
четырехбайтовые IP-адреса узлов сети.
Дополнительные данные заголовка
последовательность полей произвольной длины, описывающих необязательные данные заго-
ловка. Такие данные используются для специальных целей (управление сетью, секретность и т.п.).
Данные выравнивания
не имеющие смысла данные, включаемые в заголовок только для выравнивания его длины до
границы четырехбайтового слова.

Заголовок TCP-пакета
0 3 9 15 23 31
+------+-----------+-----------+---------------+---------------+
| Порт | Порт |
| источника | приемника |
+------------------------------+-------------------------------+
| Номер |
| в последовательности |
+--------------------------------------------------------------+
| Номер |

3
| подтверждения |
+------+-----------+-+-+-+-+-+-+-------------------------------+
|Смеще-| Зарезер- |U|A|P|R|S|F| Размер |
| ние | вировано |R|C|S|S|Y|I| окна |
|данных| |G|K|H|T|N|N| |
+------+-----------+-+-+-+-+-+-+-------------------------------+
| Контрольная | Указатель |
| сумма | |
+------------------------------+---------------+---------------+
| Дополнительные | Данные |
| данные заголовка | выравнивания |
+----------------------------------------------+---------------+

Порт источника и порт приемника


16-битовые поля, содержащие номера портов, соответственно, источника и адресата TCP-
пакета.
Номер в последовательности (sequence number)
32-битовое поле, содержимое которого определяет (косвенно) положение данных TCP-пакета
внутри исходящего потока данных, существующего в рамках текущего логического соединения.
В момент установления логического соединения каждый из двух партнеров генерирует свой на-
чальный "номер в последовательности", основное требование к которому - не повторяться в промежут-
ке времени, в течение которого TCP-пакет может находиться в сети (по сути, это время жизни IP-
сегмента). Партнеры обмениваются этими начальными номерами и подтверждают их получение. Во
время отправления TCP-пакетов с данными поле "номер в последовательности" содержит сумму на-
чального номера и количества байт ранее переданных данных.
Номер подтверждения (acknowledgement number)
32-битовое поле, содержимое которого определяет (косвенно) количество принятых данных из
входящего потока к TCP-модулю, формирующему TCP-пакет.
Смещение данных
четырехбитовое поле, содержащее длину заголовка TCP-пакета в 32-битовых словах и исполь-
зуемое для определения начала расположения данных в TCP-пакете.
Флаг URG
бит, установленное в 1 значение которого означает, что TCP-пакет содержит важные (urgent)
данные.
Флаг ACK
бит, установленное в 1 значение которого означает, что TCP-пакет содержит в поле "номер под-
тверждения" верные данные.
Флаг PSH
бит, установленное в 1 значение которого означает, что данные содержащиеся в TCP-пакете
должны быть немедленно переданы прикладной программе, для которой они адресованы. Подтвер-
ждение для TCP-пакета, содержащего единичное значение во флаге PSH, означает, что и все преды-
дущие TCP-пакеты достигли адресата.
Флаг RST
бит, установливаемый в 1 в TCP-пакете, отправляемом в ответ на получение неверного TCP-
пакета. Также может означать запрос на переустановление логического соединения.
Флаг SYN
бит, установленное в 1 значение которого означает, что TCP-пакет представляет собой запрос
на установление логического соединения. Получение пакета с установленым флагом SYN должно быть
подтверждено принимающей стороной.
Флаг FIN
бит, установленное в 1 значение которого означает, что TCP-пакет представляет собой запрос
на закрытие логического соединения и является признаком конца потока данных, передаваемых в
этом направлении. Получение пакета с установленым флагом FIN должно быть подтверждено прини-
мающей стороной.

4
Размер окна
16-битовое поле, содержащее количество байт информации, которое может принять в свои
внутренние буфера TCP-модуль, отправляющий партнеру данный TCP-пакет. Данное поле использует-
ся принимающим поток данных TCP-модулем для управления интенсивностью этого потока: так, уста-
новив значение поля в 0, можно полностью остановить передачу данных, которая будет возобновлена
только, когда размер окна примет достаточно большое значение. Максимальный размер окна зависит
от реализации, в некоторых реализациях максимальный размер может устанавливаться системным ад-
министратором (типичное значение максимального размера окна - 4096 байт). Определение оптималь-
ного размера окна - одна из наиболее сложных задач реализации протокола TCP
Контрольная сумма
16-битовое поле, содержащее Internet-контрольную сумму, подсчитанную для TCP-заголовка,
данных пакета и псевдозаголовка. Псевдозаголовок включает в себя ряд полей IP-заголовка и имеет
структуру:
0 7 15 31
+-----------+-----------+-----------------------+
| IP-адрес источника |
+-----------+-----------+-----------------------+
| IP-адрес приемника |
+-----------+-----------+-----------------------+
| Нули | Транспорт | Длина IP-сегмента |
+-----------+-----------+-----------------------+

Указатель
16-битовое поле, содержащее указатель (в виде смещения) на первый байт в теле TCP-пакета,
начинающий последовательность важных (urgent) данных.
Дополнительные данные заголовка
последовательность полей произвольной длины, описывающих необязательные данные заго-
ловка. Протокол TCP определяет только три типа дополнительных данных заголовка:
o конец списка полей дополнительных данных;
o пусто (No Operation);
o максимальный размер пакета.
Дополнительные данные последнего типа посылаются в TCP-заголовке в момент установления
логического соединения для выражения готовности TCP-модулем принимать пакеты длиннее 536 бай-
тов. В UNIX-реализациях длина пакета обычно определяется максимальной длиной IP-сегмента для
сети.

Краткий обзор существующих снифферов.


В настоящее время существует огромное количество снифферов как под Windows,
так и под *nix системы.
IRIS
Один из самых популярных снифферов под Windows - Iris от eEye, взять, соответст-
венно, можно на www.eeye.com. Естественно, не бесплатно. Этот сниффер является рево-
люцией в области сетевого мониторинга. Помимо того, что он превосходно выполняет
стандартные функции (сбора, фильтрации и поиска пакетов, а также построения отчетов),
он способен реконструировать данные. Ирис помогает детально воспроизвести сеансы ра-
боты пользователей с различными web-ресурсами и даже позволяет имитировать отправку
паролей для доступа к защищенным web-серверам с помощью cookies. Также в этой про-
грамме присутствует модуль декодирования (decode module), преобразующий сотни соб-
ранных двоичных сетевых пакетов в привычные глазу электронные письма, web-страницы,
сообщения ICQ и др.
ETHEREAL

5
Очень известный сниффер, перенесенный с *nix, поэтому и выглядит так коряво. Ог-
ромным плюсом этой программы является то, что реализация ethereal есть практически
под все ОС, посмотреть можно здесь: http://www.ethereal.com/download.html, а также она
бесплатна. В остальном - просто хороший сниффер.
NETSNIFFER
Конкурентов Iris мало, но все же этот сниффер тоже неплохой, так как он прост,
удобен и имеет приятный интерфейс, а еще он на русском языке.
http://www.tmeter.ru/netsniffer/ - взять можно тут, программка бесплатная. Знает четыре
протокола: POP3, IMAP4, FTP, PAP. Позволяет одновременно собирать пароли с 4-х сете-
вых адаптеров.
SNIFFIT
Сниффер, входящий в большинство дистрибутивов Линукса. Очень серьезное сред-
ство, и научиться им пользоваться, нелегко.
TCPDUMP
Известное средство под Линукс, официальный сайт - http://www.tcpdump.org/
II. ИНСТАЛЛЯЦИЯ IRIS И ОЗНАКОМЛЕНИЕ С ПРИНЦИПАМИ РАБОТЫ
В нашей работе в качестве анализатора сетевого трафика мы будем использовать
программу Iris.
Характеристики Iris
• Ирис может свободно захватить все пакеты из текущего сетевого сегмента.
• Ирис также способен декодировать все детали о захваченных пакетах.
• Ирис имеет интуитивный редактор пакетов. Изменения отображаются в окне дешифра-
тора протокола, и контрольные суммы пакетов немедленно вычисляются.
• Ирис восстанавливает сеансы TCP и показывает eMail, WEB-страницы, ftp сеансы и все
незашифрованные пакеты в сети.
• Ирис позволяет Вам искать определенные слова в захваченных пакетах.
• Ирис может регистрировать пакеты, восстановленные сеансы, а также попытки связи.
LOG-файлы могут быть экспортированы Excel-таблицы.
• Ирис имеет систему фильтров интуитивного пакета, позволяющей видеть только нуж-
ные пакеты.
• Ирис позволяет отправлять модифицированные пакеты в сеть.
Инсталляция IRIS v3.6
• Запустите из рабочей папки D:\Лабораторные\Сети\distrib\ЛР-№9\Iris363full.exe
• Согласитесь с пользовательской лицензией и нажимайте Next»
• Установите Iris в папку C:\Program Files\Iris.
После установки вам предлагают выбрать сетевой адаптер

6
• Выбираем один из сетевых адаптеров.
• Нажимаем кнопку Применить
• Выбираем закладку Decode и ставим флажок Decode UDP datagrams
• Нажимаем кнопку OK
• Чтобы начать захват пакетов, нажмите кнопку Start/Stop Capture .

7
Iris v3.6 в работе:

8
Окно декодера пакета:

Это окно отображает информацию о структуре пакета в виде дерева.


Окно дешифратора пакетов может содержать MAC заголовок, IP заголовок, ICMP
заголовок, заголовок TCP, заголовок UDP (В качестве примера показан декодированный
ARP-пакет).
Выбранный пункт в дешифраторе пакета выделяется в окне редактора пакета крас-
ным цветом.
Окно редактора пакета

Отображает пакет в шестнадцатеричном виде. Окно также содержит ASCII пред-


ставление пакета в правой стороне. Щелкая в любую часть шестнадцатеричного представ-
ления, соответствующая область выделяется в окне дешифратора пакета.
Окно редактора пакета позволяет редактировать и модифицировать пакеты. При мо-
дифицировании пакета контрольные суммы, обнаруженные в пакетах IP, TCP, заголовках
UDP вычисляются в реальном времени и если они неправильные, выводится сообщение о
неправильной контрольной сумме. Это дает возможность модифицировать захваченные
пакеты и создавать новые. Новые пакеты могут быть посланы в сеть, или сохранены на
диск.
Фильтрация
Iris позволяет настроить фильтрацию. Для этого выбираем в меню Filters->Edit Fil-
ters
Отлавливаться будут только указанные пакеты (в данном случае только ICMP).
Также можно настроить фильтры на строки, встречающиеся в пакетах, MAC-адреса,
IP-адреса, порты, на размер пакета и др.

9
Захват пакетов
После нажатия кнопки Start/Stop Capture начинается захват всех пакетов. Повторное
нажатие на эту кнопку останавливает процесс. При этом, щелкая по одному из захвачен-
ных пакетов в списке, мы видим его структуру.
Для примера, рассмотрим несколько захваченных пакетов.
UDP-пакет

Этот пакет - широковещательный запрос UDP (Destination: Broadcast).


Источник: машина, с MAC адресом 00:40:05:43:2C:1F
Получатель: все компьютеры (FF:FF:FF:FF:FF:FF)

Версия IP-пакета: 4
Длина заголовка: 20 байт

Время жизни пакета: 1 секунда


Контрольные суммы пакета:
IP-заголовок – 0x7645
UDP-заголовок – 0xC11D

IP отправителя: 172.27.77.77
IP получателя: 172.27.77.255 (всем машинам)

10
TCP-пакет
• Очистите список захваченных пакетов, нажав на значок New
• Настройте фильтры на захват TCP-пакетов
• Если Internet Explorer не настроен:
o Зайти в меню Сервис->Свойства обозревателя->Подключение
o Нажать Настройка сети
o Ставим галочку «Использовать прокси-сервер», в поле Адрес прописываем
172.27.100.5, Порт: 4444, нажимаем «Дополнительно», в поле «Не использовать
прокси-сервер для адресов, начинающихся с:» указываем «*.istu.edu»
• Нажмите в Iris Start/Stop Capture
• Запустите Internet Explorer и введите адрес www.istu.edu
• Затем повторно нажмите Start/Stop Capture , чтобы остановить захват пакетов.

(Как видно, этим пакетом передано 1384 байт полезных данных)

• Чтобы декодировать пакет, нажмите на кнопку Decode


Декодированный пакет выглядит следующим образом:

11
Этот TCP-пакет получен при обращении программой Internet Explorer по 80 порту
(HTTP) на сервер http://www.istu.edu/. Как видно, декодер пакета отображает содержание
загруженной HTML-страницы (вспомните один из сервисов IP-Tools – HTTP, способный
также отображать HTML-страницы).
Модифицирование пакета
Напомню, что в Iris есть возможность изменять отловленные пакеты и отправлять их
обратно в сеть. Такая функция может быть полезна, например, разработчикам сетевого ПО
для тестирования приложения в «экстремальных» условиях.
Возьмем, к примеру, один из ранее отловленных TCP-пакетов и изменим IP-адрес
отправителя. Для этого:
• в окне декодера пакета нажать на , при этом в окне редактора паке-
та будет выделена строка, содержащая эту информацию: ;
• исправляем это значение на другое, например на AC 1B 4E 20 (это соответствует IP-
адресу 172.27.78.32, но в принципе, значение может быть другим).
• Как видно, значение контрольной суммы IP-заголовка стало неправильным
. Это можно исправить, нажав на это поле и в
окне редактора пакета вместо D2 A1 написать E9 A1. Также можно поступить с кон-
трольными суммами других заголовков, хотя, это необязательно.
Отправим пакет в сеть и отловим его.
12
• Когда пакет отредактирован, нажмите Send this packet в окне редактора пакета.
• Появится окно:

• Установить Number of times = 200, Delay = 0 ms


• Нажмите Start/Stop Capture в главном меню для старта захвата пакетов.
• Нажать кнопку Send! для отправки модифицированных пакетов в сеть
• Затем закройте окно Send 1 frame(s) и остановите захват пакетов
• Теперь можно увидеть среди отловленных пакетов 200 модифицированных – с на-
шим исправленным IP отправителя.
• Сохранить сессию, для этого нажать Save , выбрать имя файла, выбрать
, Ok.
Передача файла по сети
Передаваемый файл по сети разбивается на множество TCP-пакетов, которые можно
легко захватить. Имя файла в TCP-пакетах передается в кодировке UNICODE.
Вот пример захваченного TCP-пакета, содержащего информацию об имени переда-
ваемого по сети файла 123.prt

Проще всего найти информацию о файле, кликнув по закладке Decode

13
TCP->NETBIOS-SSN

Время пакета

Имя файла
Для поиска нужной строки:
• нажать Select displaying format , выбрать в выпадающем меню пункт
Packets;

• ввести в строку Find искомую фразу из файла (имя файла таким образом не
найти, так как оно передается в кодировке UNICODE);
• находим в одном из пакетов нужную строчку и смотрим на время (в нашем
случае, файл передавался Time 14:33:12:025).

• Затем нажимаем Capture и ищем пакет с тем же временем. Если пакетов


с одинаковым временем будет несколько, то можно отсортировать пакеты по
времени, нажав на . И затем искать в пакетах с одинаковым време-
нем нужную информацию (текст можно увидеть в окне шестнадцатеричного
представления).
III. КОНТРОЛЬНОЕ ЗАДАНИЕ
1. В настройках фильтров указать только TCP и ICMP пакеты
2. Отправить запрос ping с другой машины (Пуск->Выполнить набрать ping –t
172.27.77.115 – т.е. IP-адрес пингуемой машины). При этом Iris фиксирует отправку ICMP-
14
пакетов и декодирует их. Получить MAC- и IP-адреса получателя и отправителя. Показать
контрольную сумму пакета на уровнях IP-заголовка и ICMP-заголовка. Сохранить сессию,
для этого нажать Save , выбрать имя файла, выбрать , Ok.
3. Отправить текстовый файл с произвольным текстом (шрифт - Terminal). Оп-
ределить отправителя и получателя файла, показать TCP-пакеты, содержащие информа-
цию о файле (его имя) и данные из файла. Для примера, создайте и скопируйте с одного
компьютера на другой файл Test.txt, содержащий текст “Это тестовое сообщение” (или
какое-либо другое произвольное сообщение, можно в английской раскладке).
4. Перехватите два ping пакета с любого ПК, проверяющие доступность Вашего
компьютера. Измените пакет-запрос на проверку с Вашего ПК любого другого доступного
компьютера, за исключением отправляющего ping пакеты на Ваш ПК.

IV. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Какие программы называют снифферами?


2. Почему невозможно отловить пакеты в сети, содержащей коммутатор?

15

Вам также может понравиться