|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.1.3 Как "разобрать" кадр EthernetСтруктура пакетов, передаваемых по сети, разбор кадра (frame) Ethernet, MAC-адреса, данные протокола IP, порты TCP и UDP, прикладные протоколы Все снифферы оперируют кадрами (фреймами, frames - иногда их называют также пакетами Ethernet). Кадр - это минимальная единица передаваемой информации в сети Ethernet. Вся информация передается только кадрами. Либо кадр прошел (информация дошла до получателя), либо по каким-то причинам получить его не удалось (коллизия, другое повреждение кадра, физические проблемы в сети и т.п.) Перехватывать и просматривать кадры позволяют любые снифферы, но без предварительного разбора читать информацию в них очень тяжело. Поэтому во многом качество сниффера определяется тем, как он умеет "читать" пакет Ethernet, переводя информацию из двоичного в удобный для восприятия расшифрованный вид. Мы продемонстрируем содержание кадра Ethernet с некоторыми комментариями на примере того, что показывает Network Monitor. Для просмотра кадров в Network Monitor необходимо поймать их, затем в меню Capture выбрать Display Captured Data (или Stop and View, если захват данных продолжается - откроется экран просмотра захваченных кадров. Далее необходимо выбрать интересующий нас пакет и дважды щелкнуть по нему мышью - откроется два дополнительных окна. В самом нижем окне показывается кадр в двоичном формате, а в среднем окне - та информация, которую удалось расшифровать. Каждый кадр организован как "матрешка" - в пакет протокола более низкого уровня упакован пакет вышестоящего протокола, и в только в саму середину "завернуты" передаваемые данные. В Network Monitor перечисление идет сверху вниз от "наружных обложек" - протоколов более низкого уровня к внутренним - протоколам более высоких уровней и данным. На самом верху в Network Monitor показан узел Frame. Собственно говоря, это информация не самого пакета, а Network Monitor об этом пакете: когда был пойман кадр, сколько времени прошло с момента поимки предыдущего пакета, размер пакета. Ниже расположен узел Ethernet. Здесь - только два блока полезной информации: MAC-адрес получателя и MAC-адрес отправителя (еще есть ссылка на вышестоящий протокол - для IP всегда 0x0800 - и контрольная сумма кадра, но они нам вряд ли будут интересны). Про MAC-адреса необходимо сказать подробнее. Эти адреса прошиваются в каждый сетевой адаптер производителем адаптера при изготовлении. У каждого сетевого адаптера - свой уникальный MAC-адрес, за уникальностью следит IEEE (она раздает диапазоны MAC-адресов производителям) и производитель. Узнать, какой диапазон какому производителю выдан, можно по адресу http://standards.ieee.org/regauth/oui/index.shtml. Просмотреть MAC‑адрес сетевого адаптера локального компьютера можно при помощи ipconfig /all, удаленного - при помощи тех же самых снифферов (организовав любой обмен пакетами, например, ping, с удаленным компьютером). MAC-адреса - один из самых стабильных элементов сетевой инфраструктуры, и поэтому они часто используются для надежной организации аудита, дополнительных проверок прав и т.п. Однако иногда при мониторинге сети выявляются посторонние MAC-адреса, которых раньше не было в сети. Что это может быть: · самый простой вариант - кто-то принес ноутбук и подключился к сети. Подобные подключения (особенно если на ноутбуке не стоить антивирусное программное обеспечение и он использовался для выхода в Интернет из дома) - часто становятся источником больших проблем для администраторов; · второй вариант (маловероятный) - кто-то поменял MAC-адрес. Многие современные производители прописывают MAC-адрес во флэш-память сетевого адаптера и его можно изменить - обычно при помощи утилит самих производителей; · третий вариант - кто-то установил у себя на компьютере виртуальный компьютер VMWare или Virtual PC с доступом в сеть. Для старых версий VMWare такие карточки выглядят как NE2000, для новых - как производства фирмы AMD; · четвертый вариант - кто-то воспользовался утилитой SMAC (в каталоге Spoofing на компакт-диске), которая умеет осуществлять подмену MAC-адреса "на лету". В этом случае обнаружить компьютер злоумышленника практически невозможно. Если пакет отправлен на MAC-адрес FF-FF-FF-FF-FF-FF, то это значит, что это пакет - широковещательный на уровне фрейма и его примут все компьютеры этого сегмента сети. Если пакет отправлен на MAC-адрес 03-00-00-00-00-01, то это - широковещание в сети NETBEUI. Следующая "матрешка" в кадре Ethernet - это заголовок (служебные данные) протокола IP. Подробнее про все поля этого заголовка - в справочниках по TCP/IP, для нас же самые важные поля - это IP-адрес отправителя и получателя. Специальный адрес 255.255.255.255 или когда 255 стоит в последних октетах - это широковещание на уровне протокола IP (на по всем адресам или только адресам одной сети), специальный адрес 0.0.0.0 означает, что адаптер не имеет IP-адреса (например, такой адрес используется адаптером при взаимодействии с сервером DHCP до получения IP-адреса). Если у адаптера адрес начинается на 169.254.x.x - это сработал протокол APIPA, то есть компьютер Windows 2000/XP/2003 не смог получить адрес у DHCP сервера и взял себе адрес из этой сети самостоятельно. IP-адреса можно менять (если у пользователя есть права администратора), а можно подменять (IP Spoofing). Самый простой вариант IP Spoofing - создать пакет вручную, например, в IRIS, и отправить его. Обычно используется специализированным программным обеспечением для сокрытия следов при DoS-атаках. Если IP-адрес получателя и отправителя в принимаемом пакете совпадают (а также совпадают и порты), некоторые старые операционные системы (Win95, WinNT до SP3, Novell 4.11, MacOS 8.0, FreeBSD до 2.2.5 включительно, AS/400 3.7) приходят в изумление и зависают (или подвисают) при попытке обработать такой пакет - получается LAND-атака. Дальше в кадрах Ethernet, пойманных в IP-сети, начинаются различия. Выше идут протоколы так называемого уровня 3+ по модели OSI. Наиболее часто используются следующие протоколы этого уровня: · TCP - основной протокол для передачи пользовательских (и многих служебных) данных. Используется для надежной передачи данных (с установкой соединения). Самая важная информация протокола TCP - номер порта получателя и номер порта отправителя, то есть идентификаторы конечных приложений (служб) на компьютере, которым предназначен пакет. · UDP - аналог TCP, но работает без установки соединения, поэтому используется обычно для передачи служебных данных (обращение к DHCP, DNS, WINS и т.п.). Самая важная информация - также порты. · ICMP - протокол управляющих сообщений Интернета. Определяется RFC 792. Протокол очень простой, в нем предусмотрено всего 11 типов сообщений. Наиболее частое использование - Ping, Tracert, перехват пакетов ICMP Source Quench. Часто используется также вирусами-червями (Welchia и т.п.) для обнаружения компьютеров в сети, поэтому если компьютер рассылает очень большое количество ICMP-пакетов, скорее, всего, на нем завелся червь. · IGMP - протокол групповых сообщений. Используется для передачи групповых (multicast) данных - которые посылаются одним компьютером и принимаются группой других. Обычно используется для аудио и видео трансляций, установки ПО (Norton Ghost) и т.п. Самое важное, что можно перехватить на этом уровне - это порты, то есть идентификаторы сетевых приложений/служб на этом компьютере. Порты делятся на несколько категорий: · первое деление - по протоколам (TCP и UDP). Обычно под портами подразумеваются порты TCP, но про то, что есть и порты UDP, также забывать не следует. Например, если вы откроете порт TCP 53 на брандмауэре, то проходить трафик DNS через него не будет (только zone transfers и очень большие DNS-запросы). · второе деление - на порты, приписанные к приложениям в соответствии со стандартами IANA (например TCP 21, 25, 80, 110, полный официальный список - на www.iana.org/assignments/port-numbers) и динамические (обычно все остальные, которые динамически выбираются приложениями из числа свободных в данный момент на компьютере); · третье деление - на порты открытые (занятые приложениями, которые готовы принимать на них данные, или для брандмауэра - пакеты, отправленные на эти порты, он будет принимать) и закрытые (пакеты на эти порты не принимаются и не пропускаются). Обращение на закрытые порты можно использовать для дополнительных проверок и повышения уровня безопасности - Port Knocking (www.portknocking.org, реализация на Java находится в каталоге Снифферы). Лишние открытые порты - потенциальные уязвимости компьютера (а иногда и результат установки троянских программ), и подробнее про их выявление будет рассказано в модуле про сканеры безопасности и управление патчами. Выше TCP/UDP находятся уже прикладные протоколы. Некоторые из них (DNS, WINS, BOOTP-DHCP) расшифровываются Network Monitor полностью, другие (SMB, RPC и т.п.) - лишь частично, третьи (например, RDP и TDS) - вообще не расшифровываются. Для некоторых протоколов можно установить дополнительные парсеры - разборщики (специальные модули DLL, которые позволяют расшифровать данный протокол), для других таких парсеров не существует.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||