Ключевые слова:arp, mac, security, sniffer, ethernet, (найти похожие документы)
From: Rafter <igoronli@online.ru.>
Newsgroups: http://nag.ru
Date: Sun, 28 Mar 2006 17:02:14 +0000 (UTC)
Subject: Сниффинг сети на коммутаторах
Оригинал: http://nag.ru/2003/0405/0405.shtmlВведение.
Для большинства организаций угроза сниффинга является в значительной
степени внутренней угрозой. Хакеру из Интернет, например, нелегко
использовать снифферы для прослушивания трафика локальной сети. Но это
не должно вас успокаивать.
В последнее время наметилась тенденция обновления сетевой
инфраструктуры, при которой хабы (концентраторы) заменяются на свитчи
(коммутаторы). При этом часто приводится довод, что локальная сеть на
коммутаторах будет обладать и повышенной безопасностью. Однако, как мы
увидим ниже, уязвимы и такие сети. Сниффинг в локальных сетях,
построенных на коммутаторах, возможен! Любой, имея ноутбук и
соответствующее программное обеспечение, может, подключившись к
свободному порту коммутатора, перехватывать пакеты передаваемые от
одного компьютера к другому.
Утилиты для сниффинга появились с первых дней появления самих
локальных сетей и предназначались для облегчения сетевого
администрирования. Однако в соответствующих руках эти утилиты -
снифферы - стали мощным инструментом хакеров, позволяющие
перехватывать пароли и другую информацию, передаваемую по локальной
сети.
Традиционно снифферы считаются довольно сложными утилитами, требующими
определенного умения для работы с ними, зачастую еще и с непростыми
руководствами. Все это изменилось в последние несколько лет, когда
появились и стали широко применяться легкие в использовании
специализированные снифферы паролей. Многие из этих утилит нового
поколения свободно доступны в Интернет. Имея встроенную базу данных,
позволяющую понимать многие сетевые протоколы, снифферы фильтруют
сетевой трафик на лету, выделяя только требуемую информацию (такую как
связку usernames - passwords).
Сниффинг в локальной сети без коммутаторов - хорошо проработанная
технология. Большое количество коммерческих и некоммерческих утилит
делает возможным прослушивание сетевого трафика и извлечение
необходимой информации. Идея заключается в том, что для прослушивания
сетевого трафика, сетевая карта компьютера переводится в специальный
режим "promisc mode". После этого весь сетевой трафик (несмотря на его
предназначение), достигший сетевой карты, может быть доступен
снифферу. Подробное объяснение того как работает сниффер можно найти
здесь (Graham, Robert. "Sniffing (network wiretap, sniffer) FAQ".
Version 0.3.3. 14 September 2000.
В локальной сети с коммутаторами для прослушивания сетевого трафика
потребуется больше изобретательности, поскольку коммутатор направляет
только тот трафик, который предназначен для конкретного компьютера
(Tyson, Jeff. "How LAN Switches Work"). Однако, существует ряд
технологий, которые позволяют преодолеть это ограничение.
Сниффинг в локальной сети без коммутаторов.
В ЛВС без коммутаторов последнее поколение снифферов является
высокоэффективным средством для получения паролей и другой необходимой
информации из сети. Большинство обычно используемых протоколов либо
передают данные явным образом (так называемый plaintext, который может
быть легко перехвачен), либо не используют достаточно стойкую
криптографию для предотвращения перехвата и расшифровки. Примерами
протоколов, передающих данные явным образом, являются SMTP, POP3,
SNMP, FTP, TELNET и HTTP. Также, и хорошо известный Microsoft's LM
(LAN Manager) криптопротокол, используемый для аутентификации Windows
клиентов - беззащитен от перехвата и расшифровки. Microsoft пыталась
преодолеть уязвимость в протоколае LM, введением протокола NTLM (v1 и
v2). NTLM улучшился, но все еще незащищен от сниффинга и крэкинга.
(Seki, Hidenobu. "Cracking NTLMv2 Authenication").
Утилиты для сниффинга в локальной сети без коммутаторов.
Поиск в Интернет дает большое количество свободно доступных снифферов.
Имеет смысл рассмотреть хотя бы две утилиты dsniff и ScoopLM, которые
особенно хороши для перехвата паролей.
Dsniff
Для протоколов, осуществляющих передачу явным образом, для перехвата
username, password и другой информации очень полезна утилита
dsniff (Song, Dug. "dsniff"). Она доступна для различных клонов
Unix, а также портирована (правда, более ранняя версия) для
Windows (Davis, Michael. "dsniff").
В дополнение к возможности перехвата информации, передаваемой с
использованием протоколов, передающих информацию явным образом, dsniff
исключительно хорош и как фильтр перехватываемого трафика. Он
отображает на дисплее только интересующую информацию, например,
usernames и passwords. Dsniff можно охарактеризовать как "Пароль на
блюдечке с голубой каемочкой", поскольку эта утилита делает перехват
необходимой информации тривиальным упражнением для начинающих. Пример
работы утилиты (портированной под Windows) и собирающей необходимую
информацию в небольшой сети изображен на рисунке:
ScoopLM
L0phtcrack - хорошо известная утилита, способная перехватывать имена
пользователей и зашифрованные пароли Win'NT/2k из сети. К сожалению,
это коммерческая утилита, доступная отсюда ("L0phtcrack 4").
Однако существуют и другие, freeware программы, способные выполнять ту
же работу и очень простые в использовании.
Великолепный пример - утилита ScoopLM (Seki, Hidenobu. "ScoopLM".
January 2002), которая является freeware и может быть загружена из
Интернет. ScoopLM может перехватывать имена пользователей и LM/NTLM
зашифрованные пароли Win'NT/2k.
Ее собрат - BeatLM (Seki, Hidenobu. "ScoopLM". February 2002)
может вскрывать зашифрованные пароли, которые собирает ScoopLM, как
методом прямого перебора (brute-force), так и с использованием
словарей. Вместе эти утилиты представляют значительную угрозу
безопасности сети без коммутаторов с компьютерами под управлением Win.
Рисунок отображает работу утилиты ScoopLM, перехватывающей имена
пользователей и их зашифрованные пароли, которые затем могут быть
сохранены в файл и загружены в BeatLM для расшифровки.
Приведенные выше примеры показывают, насколько легко раскрыть
информацию, перехватывая трафик в сети без коммутаторов. Это стало
одним из побудительных мотивов для модернизации сетей и замены хабов
на коммутаторы. Существует и много других доводов в пользу этого -
как, например, увеличение производительности модернизированной сети.
Но стоит помнить, что решить проблему сниффинга не удастся. Следующий
раздел покажет почему.
Сниффинг в локальной сети с коммутаторами.
Казалось бы, что замена хабов на коммутаторы в локальной сети должна в
значительной степени смягчить угрозу сниффинга. Ведь коммутатор
направляет сетевой трафик только тому компьютеру сети, которому он
предназначен, и если компьютер "A" обменивается пакетами с компьютером
"B", то компьютер "С" по идее, не способен перехватывать этот трафик.
Простая сеть с коммутатором
Коммутатор гарантирует, что этот трафик не попадает на порты, для
которых не предназначен. Передача пойдет только на те порты, к которым
подключены компьютеры "A" и "B". Однако существует ряд технологий,
разрушающие приведенную выше идеальную схему, позволяя компьютеру "С"
перехватывать сетевой трафик между компьютерами "A" и "B".
Как осуществить сниффинг в сети с коммутаторами.
Cуществует ряд технологий, которые делают возможным сниффинг в сетях с
коммутаторами и которые включают такие элементы, как ARP spoofing,
MAC flooding и MAC duplicating (Whalen, Sean. "An Introduction to ARP
Spoofing". Revision 1. April 2001). Все утилиты, приводимые в статье,
используют технологию ARP spoofing.
ARP spoofing - относительно новая технология, классическая атака
"man-in-the-middle" (Cohen, Fred. "The All.Net Security Database".
May 1999). Для понимания ее сути рассмотрим следующий пример. Возьмем
предыдущую схему с тремя компьютерами, подключенными к коммутатору, в
которой компьютер "С" собирается перехватывать сетевой трафик между
компьютерами "A" и "B". Для этого "С" представляется "A" как "B".
Затем, когда "A" посылает трафик для "B" он перехватывается "C". "С"
пересылает полученную информацию "B" представляясь как "А". "С" также
выполняет подобную роль при передаче трафика от "B" к "А".
Сначала, однако, нам необходимо понять, как происходит нормальный
обмен между компьютерами "А" и "В". Для этого компьютеру "А" необходим
МАС адрес компьютера "В". Для его получения, компьютер "А" проверяет в
своем ARP кэше, имеется ли там уже МАС адрес компьютера "В". Если да,
то используется МАС адрес, полученный из ARP кэша. Если нет, то
компьютер "А" посылает широковещательный (broadcast) ARP запрос.
Компьютер "В" отвечает, посылая свой MAC (и IP) адреса. IP адрес
компьютера "В" и соответствующий ему МАС адрес сохраняются в ARP кэше
компьютера "А" для дальнейшего использования. Теперь можно начинать
посылать пакеты с данными для компьютера "В". Аналогичные процессы
происходят и на компьютере "В", собирающегося обмениваться пакетами с
компьютером "А". Предположим, что компьютеры "А" и "В" установили МАС
адреса друг друга и обмениваются пакетами через коммутатор. Как
компьютер "С" может перехватить этот трафик? Именно здесь приходит на
помощь ARР spoofing.
Первым шагом будет представление компьютера "С" под видом компьютера
"В" компьютеру "А". Если это будет достигнуто, сетевой трафик,
предназначенный для "В" изменит маршрут и попадет к компьютеру "С".
Таким же образом, необходимо все проделать и по отношению к компьютеру
"В".
Как всего этого достигнуть? Ответ прост - компьютер "С" должен как бы
"отравить", переписать АRP кэш как на компьютере "А", так и на
компьютере "В". ARP - это протокол, не требующий аутентификации, так
что ARP просто повторяет посылку пакетов каждому хосту сети для
обновления его кэша (Montoro, Massimiliano. "Introduction to ARP
Poison Routing (APR)") Revision 1.0..
Так, компьютер "С", посылая ложный ARP пакет для компьютера "А", как
бы инструктирует компьютер "А" посылать пакеты, предназначенные для
компьютера "В", на компьютер "С". Ложный ARP пакет для компьютера "А"
приводит к принудительному обновлению его ARP кэша. В обновленном ARP
кэше IP адрес компьютера "В" будет соотнесен с МАС адресом компьютера
"С". Это означает, что весь трафик, предназначенный компьютеру "В"
попадет сначала на компьютер "С". Следующая таблица показывает, что
случилось с ARP кэшем компьютера "А":
ARP кэш "А" до посылки ложного ARP пакета с "С"
IP Addresses MAC Addresses
IP адрес компьютера "B" MAC адрес компьютера "B"
IP адрес компьютера "C" MAC адрес компьютера "C"
... ...
ARP кэш "А" после посылки ложного ARP пакета с "С"
IP Addresses MAC Addresses
IP адрес компьютера "B" MAC адрес компьютера "C"
IP адрес компьютера "C" MAC адрес компьютера "C"
... ...
То же самое компьютер "С" проделывает по отношению к компьютеру "В".
Посылается ложный ARP пакет для "B", который принудительно обновляет
ARP кэш, так что IP адрес компьютера "А" соотносится с МАС адресом
компьютера "С". Как только это будет проделано, весь трафик с
компьютера "А", предназначенный для компьютера "В", будет
перенаправлен на компьютер "С", и, наоборот, весь трафик с компьютера
"В", предназначенный для компьютера "А", будет перенаправлен опять же
на компьютер "С".
Вообще говоря, если компьютер "В" - шлюз провайдера, на нем не сложно
запретить обновление ARP-таблицы. После этого ARР spoofing'ом можно
будет перехватывать только исходящий от абонента трафик. Да и "особо
осторожные" пользователи могут это сделать без особых хлопот. Однако
сложно представить такую защиту массовой, применимой к обычным
абонентам... Прим. Nag..
Теперь следующий важный шаг. Компьютер "С" должен гарантировать
передачу всего чужого трафика по истинному назначению. Так, например,
когда "А" посылает пакет для "В", то он попадает на "С", после чего
должен быть переслан на "В". Это легко достигается посредством
технологии IP forwarding, которая поддерживается многими операционными
системами. Альтернативой являются приложения, способные взять на себя
ответственность за IP forwarding трафика по истинному назначению.
Как только перечисленные шаги будут выполнены, компьютер "С"
осуществит перехват сетевого трафика между компьютерами "А" и "В".
Стоит заметить, что, послав ложный ARP пакет и подменив ARP кэш,
необходимо выполнять эту процедуру вновь и вновь на регулярной основе,
поскольку и операционная система также автоматически обновляет ARP кэш
на регулярной основе (обычно каждые 30 с).
Многие коммутаторы в настоящее время предлагают сконфигурировать опцию
"port security", чтобы помочь сетевым администраторам закрепить
конкретные компьютеры за конкретными портами коммутатора. Упрощенно,
"port security" позволяет нам закрепить порт коммутатора за
определенным MAC адресом. Это предохраняет от подключения посторонних
компьютеров к коммутатору.
Однако "port security" не предотвращает ARP spoofing (Ettercap
effects on switches"). При помощи ARP spoofing мы как раз подменяем
ARP-кэш на заданных компьютерах (в примере выше - компьютеры "А" и
"В"), а это "port security" коммутаторов предотвратить не может.
Интересным побочным эффектом является возможность через перехват
посредством ARP spoofing/IP forwarding. Поскольку мы выполняем атаку
"man in the middle" мы можем переделывать (добавлять, модифицировать
или удалять) пакеты, которые мы перехватили или даже создавать новые.
Это дает возможность нам похищать определенный тип сессий, например,
telnet. Не только снифинг telnet трафика, мы можем также подделывать
команды клиента и ответы сервера. Как насчет такой выдумки - "mail
hacker@hack.com /etc/passwd" - команды от клиента.
Угон сессии - это не только теоретическая возможность. Такие утилиты,
как ettercap и hunt (Krauz, Pavel. "Hunt Project") делают угон
сессии легко реализуемым.
Утилиты для снифинга в сети с коммутаторами.
Количество утилит, позволяющих осуществлять снифинг в локальных сетях
с коммутаторами, постоянно растет. В этом разделе рассмотрим две
утилиты - ettercap и Cain.
Изолированная локальная сеть из трех компьютеров и коммутатора была
развернута для исследования возможности сниффинга. Как и было
рассмотрено выше, - два компьютера "А" и "B" являются "жертвами",
сетевой трафик между ними перехватывается компьютером "C", на котором
установлены и запущены утилиты для сниффинга. В таблице приведены
дополнительные данные по компьютерам этой исследуемой сети.
Компьютер IP Addresses MAC Addresses
А 192.168.0.1 00-02-e3-0a-ee-e4
В 192.168.0.2 00-50-22-88-f1-48
С 192.168.0.3 00-00-39-ca-13-81
Все компьютеры работали под управлением ОС Win'2k Professional SP2.
Коммутатор - 5 портовый 10/100Mb Unex Innovation Corp.
ettercap
Рассмотрим ettercap - утилиту, которая описываетcя как мощный и гибкий
инструмент для проведения атак типа " man-in-the-middle". Утилита
работает на большинстве платформ, включая Win, Linux, xBSD и Mac OS X.
Утилиту можно загрузить отсюда. Устанавливаем ее на компьютер "C".
Перед запуском утилиты проверим ARP кэш компьютеров "A" и "B", набрав
команду:
C:\>arp /a
Как и ожидалось, ARP кэш компьютера "A" хранит правильные значения IP
и МАС адресов компьютеров "B" и "C".
Аналогично, и ARP кэш компьютера "B" хранит правильные значения IP и
МАС адресов компьютеров "A" и "C".
Теперь запускаем утилиту ettercap на компьютере "C" и настраиваем ее
на перехват трафика между "A" и "B". На этом этапе ettercap выполнит
ARP spoofing, проведя атаку "man-in-the-middle". Проверка ARP кэша
компьютеров "A" и "B" подтверждает это - МАС адреса "A" и "B" заменены
на МАС адрес "C"
Теперь трафик между "A" и "B" перехватывается "C". Подобно dsniff,
ettercap имеет встроенную базу по большому числу сетевых протоколов.
Утилита может выделять интересующие части перехватываемого трафика,
такие, например, как usernames и passwords. На скриншоте отображается
начальный этап перехвата telnet сессии между "A" и "B".
Во время перехвата ettercap может обнаружить большое число usernames и
passwords, которые можно сохранить в простом ASCII файле для
последующего анализа.
Cain
Другой утилитой, которая способна осуществлять перехват в локальной
сети с коммутаторами является Cain (Montoro, Massimiliano.
"Homepage for Cain"). Доступна версия только для Windows (что не может
не огорчать поклонников Пингвина), эта утилита способна на большее,
чем простой перехват трафика в локальной сети с коммутаторами.
Подобно dsniff и ettercap, Cain имеет встроенную базу по различным
сетевым протоколам и может выделять интересующие части
перехватываемого трафика.
Cain также имеет встроенную технологию вскрытия зашифрованных паролей,
перехваченных из сетевого трафика, позволяющую проводить расшифровку
как прямым перебором (brute-force), так и подбором по словарю.
Подобно BeatLM, Cain может предпринять атаку против протоколов
аутентификации Microsoft (включая LM и NTLM версии v1, v2). Однако,
Cain пошел дальше BeatLM, предлагая возможность вскрытия MD5 хэша
Cisco и зашифрованных APOP паролей.
Обратим внимание и на другие, встроенные в Cain возможности. Например
traceroute и анализатор протоколов маршрутизации и способность
получать список пользователей NT и разделяемых ресурсов с удаленного
компьютера.
Функциональность Cain просто впечатляет. Изумительно, что одна утилита
в состоянии решать большинство ключевых задач, для решения которых
были созданы в свое время разнообразные утилиты, такие как
john the ripper "John the Ripper password cracker"
ettercap
Cain можно скачать из Интернета отсюда. Скачиваем и устанавливаем
на компьютер "C". Проверяем ARP кэш компьютеров "A" и "B", как и
должно быть он содержит пока правильные данные
Сконфигурируем Cain на использование ARP spoofing (называемого APR -
ARP Poisoned Routing в самом приложении) - перехват сетевого трафика
между "A" и "B".
Как только это будет сделано, Cain, используя встроенную базу сетевых
протоколов, предоставляет возможность отображения ключевой информации.
Как и в тесте при использовании ettercap, между компьютерами "A" и "B"
запущена telnet сессия. Для многих протоколов Cain просто извлекает
username и password. А для telnet сессии в файл записывается вся
сессия (включая, естественно, username и password), как показано на
рисунке.
Проведенные тесты продемонстрировали, что такие утилиты, как ettercap
и Cain представляют реальную угрозу для многих сетей. Что же можно
противопоставить этой угрозе?
Рекомендации по ослаблению угрозы снифинга
Обнаружение снифферов.
Один из путей смягчения угрозы от применения снифферов, является
попытка определения их работы в сети. Поскольку если предупрежден -
значит вооружен.
Определение работы снифферов, которые разработаны для сетей без
коммутаторов является сложной задачей. Это связано с тем, что работа
таких снифферов происходит преимущественно в пассивном режиме. Они
работают, переведя сетевую карту в promisc mode, что позволяет
атакующему компьютеру получать любой сетевой трафик, достигающей
сетевой карты, для исследования. Подобно радиорессиверу, снифферы не
порождают обязательного дополнительного и подозрительного трафика для
передачи в сеть. Итак, как же их можно обнаружить?
Определенные технологии могут быть использованы для попытки
определения компьютеров, чьи сетевые карты работают в неразборчивом
режиме, вероятно, осуществляя сниффинг локальной сети. Многие
используемые технологии полагаются на определение специфичных
уязвимостей в TCP/IP стэке. Утилиты типа L0pht's antisniff
"Antisniff 1.021" предоставляют сведения о своеобразии TCP/IP стэка в
Win'NT и Unix для определения компьютеров, сетевые карты которых
работают в promisc mode.
Как уже было показано, сниффинг в сетях на коммутаторах подразумевает
атаку "man-in-the-middle". Прослушивание в этом случае носит
"активный" характер, когда сетевой трафик передается атакующему
компьютеру и только потом пересылаться по истинному назначению.
Определение работы "активных" снифферов является в некотором роде
более простым, чем определение работы "пассивных" снифферов.
Существует возможность определения таких атак, как ARP spoofing путем
применения специального программного обеспечения, такого как
LBNL's arpwatch "arpwatch" которое может обнаруживать
подозрительный ARP сетевой трафик и информировать об этом сетевого
администратора.
Однако, полагаться на надежное определение всех примеров сетевого
сниффинга не приходится.
Единственным решением, препятствующим сниффингу, является шифрование.
В Song, Dug. "dsniff FAQ" для dsniff советуют "не допускайте
использования фирменных небезопасных прикладных протоколов или
унаследованных протоколов, передающих данные явным образом в ваших
сетях". Это очень важный совет. Замена небезопасных протоколов (таких
как telnet) на их надежные шифрованные аналоги (такие как ssh)
представляется серьезным барьером от перехвата. Замена всех
небезопасных протоколов в большинстве случаев маловероятна.
Вместо прекращения использования протоколов, передающих данные явным
образом, остается только одна возможность - шифрование всего сетевого
трафика на 3 уровне, используя IPSec (Taylor, Laura.
"Understanding IPSec". June 2002). Осуществляя шифрование на 3 уровне,
возможно продолжать использовать небезопасные протоколы, поскольку все
данные будут инкапсулированы IPSec и зашифрованы при передаче по сети.
Таким образом, унаследованные приложения, которые используют старые
протоколы, не пострадают. IPSec полностью прозрачен для приложений и
пользователей. Это открытый стандарт, поддерживаемый многими
вендорами, включая Microsoft и Cisco. Кроме того, многие реализации
Unix поддерживают IPSec. Легкая настройка IPSec в Win'2k/XP
дополнительно увеличивает его доступность.
Осуществление технологии шифрования на 3 уровне, таких как IPSec
решает проблему снифинга полностью. Масштабируемость,
распространенность, доступность IPSec выделяет его как прагматическое
решение проблемы перехвата сетевого трафика.