В этой главе обсуждаются следующие темы:

• Что такое прослушивание сетевого графика?

• Что прослушивать?

• Популярное программное обеспечение для прослушивания сетевого трафика

• Усовершенствованные методы прослушивания сетевого трафика

• Исследование программных интерфейсов приложений операционных систем

• Защитные меры

• Применение методов обнаружения

Резюме

Конспект

Часто задаваемые вопросы

Введение

Sniff

гл. sniffed, sniffing, sniffs.

1. а) Вдыхать через нос; б) сопеть; фыркать.

2. Нюхать; обнюхивать, принюхиваться.

Sniffed at the jar to see what it held - принюхаться к банке, для того чтобы узнать, что в ней.

3. Презрительно, пренебрежительно относиться к чему-либо.

The critics sniffed at the adaptation of the novel to film. - Критики презрительно отнеслись к адаптации романа к фильму.

4. Неформ. - процесс подслушивания, подглядывания или выведывания, шпионажа.

Подглядывать, подсматривать, любопытствовать, вмешивать, совать нос в чужие дела, выведывать, выпытывать.

The reporters came sniffing around for more details. - Журналисты сновали вокруг, выведывая подробности.

Как видно из приведенного выше определения, слово sniffing имеет несколько значений. Несмотря на то что мы полагаем, что хакеры производят раздражающие фыркающие звуки, принюхиваются к банкам, для того чтобы узнать их содержимое, и в особенности пренебрежительно относятся к нарушению закона, мы в самом деле заинтересованы в последнем значении: процесс подслушивания, подглядывания или выведывания, шпионажа.

Что такое прослушивание сетевого трафика?

Прослушивание сетевого трафика является методом, с помощью которого нарушитель может скомпрометировать безопасность сети в пассивном режиме. Анализатор трафика

(sniffer) - программа, которая пассивно наблюдает компьютерную сеть на предмет ключевой информации, интересующей нарушителя. В большинстве случаев эта информация является информацией аутентификации, например имена пользователей и пароли, которые могут быть использованы для получения доступа к системе или ресурсу. Анализаторы трафика включены в состав большинства инструментариев для получения прав администратора / суперпользователя (rootkits). Если ваша UNIX-система подверглась взлому, скорее всего анализатор трафика на ней уже запущен.

Как это работает?

Существуют два метода прослушивания сетевого трафика: метод «старой школы» и метод «новой школы». В старые времена компьютеры соединялись посредством общей среды. Все они совместно использовали один и тот же локальный провод, и сетевой трафик был виден всем всеми компьютерами. Сетевые карты фильтровали трафик таким образом, что присоединенные компьютеры видели только свой трафик, а не чей-либо еще. Это не являлось функциональностью безопасности, а было разработано во избежание перегрузки машины. Программное обеспечение прослушивания сетевого трафика блокирует этот фильтр, переводя карту в так называемый «безразличный режим» («promiscuous mode»). Программное обеспечение специально настроено так, чтобы работать с большим потоком трафика и далее либо анализировать, либо захватывать его.

В настоящие дни все больше и больше компьютеров соединены с помощью коммутаторов. Вместо того чтобы распространять сетевой трафик по всей сети, коммутаторы фильтруют трафик на концентраторе. Это не дает компьютеру видеть чей-либо еще трафик даже в случае перевода адаптера в «безразличный режим». Нарушители должны либо активно атаковать коммутатор / маршрутизатор, для того чтобы перенаправить поток трафика (который мы опишем позже), либо довольствоваться наблюдением трафика, проходящего через уже скомпрометированный ими компьютер.

Когда сетевой трафик входит в компьютер, он сначала обрабатывается Ethemet-драйвером. Драйвер далее передает трафик стеку протоколов TCP/IP (Transmission Control Protocol / Internet Protocol), который в свою очередь передает его приложениям. Программное обеспечение прослушивания сетевого трафика соединяется напрямую с Ethemet-драйвером и создает его копию. Для реализации этого UNIX предоставляет более открытый набор интерфейсов, несмотря на то что Windows-системы также предоставляют несколько инструментов. Таким образом, анализаторы трафика обычно являются частью UNIX-инструментариев для получения прав администратора / суперпользователя и редко частью Windows-инструментариев для получения прав администратора / суперпользователя.

Что прослушивать?

Существует много интересной информации для поиска во время наблюдения сети. В самом очевидном случае может быть перехвачена информация аутентификации (имена пользователей и пароли) и далее использована для получения доступа к ресурсу. Другие виды информации, такие как электронная почта и моментальные сообщения, также могут перехватываться. Все, что проходит через сеть, открыто глазам наблюдающего.

Получение информации аутентификации

Следующие подразделы предоставляют примеры разнообразных типов сетевого трафика, являющихся привлекательными нарушителю, ведущему прослушивание вашей сети. Подразделы упорядочены по протоколу или сервису, которому соответствует трафик, и никоим образом не представляют всеобъемлющий список.

В примере трафика в следующем разделе полужирным шрифтом выделено то, что посылается клиентской программой, стандартным шрифтом выделено то, что посылается сервером. В большинстве случаев нас интересует только трафик, создаваемый клиентом, так как именно этот трафик содержит информацию аутентификации. Более продвинутые анализаторы трафика могут также обследовать результирующие коды сервера для отфильтровывания неудачных попыток аутентификации.

Следующие разделы предоставляют краткий обзор типов информации аутентификации, которые могут быть собраны с соответствующих протоколов. Эти примеры были упрощены, и в некоторых случаях текущая версия данных протоколов поддерживает более продвинутые механизмы аутентификации, которые смягчают показанные риски. В случае общих Интернет-протоколов существуют запросы на комментарии (RFC), которые могут конкретизировать спецификации.

Прослушивание Telnet (порт 23)

Telnet исторически был сервисом, который нарушители прослушивают при попытке получения информации для входа в систему. Telnet не предоставляет безопасность на уровне сессий, пересылка имени пользователя и пароля через сеть производится в открытом виде, как показано здесь:

[~] % telnet localhost Trying 127.0.0.1...
Connected to localhost.

Escape character is “A]”.

Red Hat Linux release 6.1 (Cartman)
Kernel 2.2.12-20 on an i686 login: oliver Password: welcome [18:10:03][redhat61]
H %

Прослушивание FTP (порт 21) Сервис протокола передачи файла (FTP) используется для передачи файла через сеть, также посылает свою информацию аутентификации в открытом виде. В отличие от Telnet, FTP может также использоваться для разрешения анонимного доступа к файлам, посредством чего пользователь использует имя пользователя «anonymous» или «ftp» и выдает случайный пароль. Информация протокола FTP обычно спрятана дружественным интерфейсом клиента, однако лежащий в основе аутентификации трафик имеет следующий вид:

[~] % telnet localhost 21 Trying 127.0.0.1...
Connected to localhost.

Escape character is “A]”.

220 localhost FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
USER Oliver
331 Password required for oliver.
PASS welcome
230 User oliver logged in.

Прослушивание POP (порт 110) Сервис почтового протокола (POP) является сетевым сервисом, с помощью которого клиентские программы электронной почты соединяются для доступа к электронной почте пользователя на центральном сервере. POP сервера обычно находятся в сети поставщика услуг Интернет (ISP) для осуществления доставки сообщений электронной почты клиентам. POP-трафик часто не шифруется, и информация аутентификации посылается в открытом виде. Имя пользователя и пароль передаются на удаленный сервер посредством команд USER и PASS. Пример протокола:

[~] % telnet localhost 110 Trying 127.0.0.1...
Connected to localhost.

Escape character is “A]”.

+OK POP3 localhost v7.59 server ready USER Oliver
+OK User name accepted, password please PASS welcome
+OK Mailbox open, 24 messages

Необходимо отметить, что существуют расширения протокола POP, которые предотвращают прохождение информации аутентификации по сети в открытом виде, в дополнение к шифрованию сессии. Прослушивание IMAP (порт 143) Сервис-протокол доступа к сообщениям в сети Интернет является альтернативным протоколом сервису POP и предоставляет ту же функциональность. Как и у POP-протокола, информация аутентификации во многих случаях отправляется через сеть в открытом виде. IMAP-аутентификация производится путем отправления строки, состоящей из выбранного пользователем токена, команды LOGIN, а также имени пользователя и пароля, как показано ниже:

[~] % telnet localhost imap Trying 127.0.0.1...
Connected to localhost.

Escape character is “A]”.

• OK localhost IMAP4revl vl2.250 server ready A001 LOGIN Oliver welcome
A001 OK LOGIN completed

Необходимо отметить, что существуют расширения протокола IMAP, которые предотвращают прохождение информации аутентификации по сети в открытом виде, в дополнение к шифрованию сессии. Прослушивание NNTP (порт 119) Сетевой протокол передачи новостей (NNTP) поддерживает чтение и написание для сообщений новостных групп Usenet. Аутентификация NNTP может проходить многими путями. В традиционных системах аутентификация базировалась на сетевом адресе клиента, разрешая доступ к серверу новостей только тем хостам (или сетям), которые находятся в указанном диапазоне адресов. Расширения NNTP были созданы для поддержки разнообразных методов аутентификации, включая открытые и шифрованные механизмы реагирования. Механизм аутентификации открытым текстом прямой и может быть с легкостью перехвачен в сети. Это выглядит следующим образом:

[~] % telnet localhost 119 Trying 127.0.0.1...
Connected to localhost.

Escape character is “A]”.

200 Welcome to My News Server (Typhoon vl.2.3)
AUTHINFO USER Oliver 381 More Authentication Required AUTHINFO PASS welcome 281 Authentication Accepted

Прослушивание rexec (порт 512) Сервис rexec, называемый rexecd в большинстве UNIX-операционных систем, является традиционным сервисом, используемым для удаленного выполнения команд. Сервис выполняет аутентификацию посредством послания имени пользователя и пароля от клиента серверу в открытом виде. Сервис получает буфер от клиента, состоящий из следующих данных:

• номер порта в ASCII, указание порта серверу, на который посылать стандартное сообщение об ошибке. Этот порт на хосте клиента, который будет ожидать соединения. 0 указывается, в случае если это не требуется, данная строка разделяется NULL;

• разделенное NULL-имя пользователя. Длина 16 символов или меньше;

• разделенный NULL-пароль. Длина 16 символов или меньше;

• разделенная NULL-команда для выполнения на удаленном хосте.

Пример запроса аутентификации выглядит следующим образом: 0\0oliver\0welcome\0touch /tmp/hello\0

Если аутентификация прошла успешно, сервером возвращается NULL, в противном случае значение 1 в дополнение к строке ошибки. Прослушивание rlogin (порт 513) Протокол rlogin предоставляет практически такую же функциональность, как и протокол Telnet, объединенный с механизмом аутентификации протокола rexec с некоторыми исключениями. Он поддерживает доверительные отношения, которые указывают посредством файла rhosts в домашней директории пользователя. Этот файл содержит список тех пользователей и хостов, на которых они находятся, которым разрешено подключаться к указанным учетным записям без пароля. Аутентификация проводится путем доверия тому, что пользователь удаленного клиента rlogin говорит, кто он или она. Данный механизм аутентификации работает только между UNIX-системами и является чрезвычайно некорректным во многих отношениях; поэтому он не используется широко в сетях на сегодняшний день. Если доверительных отношений не существует, имя пользователя и пароль передаются в открытом виде по этому протоколу, как и у гехес:

• номер порта в ASCII, указание порта серверу, на который посылать стандартное сообщение об ошибке. Этот порт на хосте клиента, который будет ожидать соединения. О указывается, в случае если это не требуется, данная строка разделяется NULL;

• разделенное NULL-имя пользователя. Длина 16 символов или меньше;

• разделенный NULL-пароль. Длина 16 символов или меньше;

• разделенная NULL-команда для выполнения на удаленном хосте.

Сервер возвращает 0, чтобы показать, что он получил эти данные. Если аутентификация посредством автоматического механизма не удается, соединение передается программе входа в систему, далее вход в систему проходит так, как будто пользователь подключился с помощью сервиса Telnet.

Прослушивание XII (порт 6000+) XII Window-система использует «магическую булочку» («magiccookie») для авторизации клиентов, пытающихся подключиться к серверу. Случайно сгенерированный 128-битный идентификатор посылается клиентами XII во время соединения к серверу X Window. Перехватив данный идентификатор, нарушитель может использовать его для подключения к тому же серверу X Window. Обычно идентификатор хранится в файле . Xauthority в домашней директории пользователя. Данный идентификатор передается серверу X Window программой xdm при входе в систему.

Прослушивание дескрипторов файла NFS Сетевая файловая система (NFS), созданная компанией Sun Microsystems, для разрешения доступа к конкретному файлу или директории на файловом сервере использует так называемый дескриптор файла NFS. Прослушивая сеть на наличие дескрипторов файла NFS, существует возможность перехвата данного дескриптора и использования его для получения доступа к ресурсу. К сожалению, протокол NFS использует открытую сетевую обработку - удаленный вызов процедуры (ONC-RPC) для выполнения операций, представляющих механизм аутентификации, более сложный, чем механизм аутентификации открытым текстом. Данный факт не обеспечивает большую защиту; однако делает сложным приведение примера в данной книге. Процесс, который делает легитимным доступ клиента NFS к файловой системе на сервере, следует далее.

• Пытаясь подмонтировать удаленную файловую систему, пользователь посылает запрос на монтирование.

• Локальная операционная система связывается с сервисом удаленного вызова процедур rpc.mountd на удаленном хосте, посылая ему имя файловой системы, к которой она хочет получить доступ.

• Программа mountd производит проверку достоверности доступа для определения, пришел ли запрос от привилегированного порта на хосте клиента и есть ли разрешение у клиентского хоста на доступ к данному хосту.

• Программа mountd посылает клиенту ответ, включающий дескриптор файла NFS, который предоставляет возможность доступа к корневому каталогу файловой системы, доступ к которой пользователь хочет получить.

• Программа клиента далее связывается демоном NFS (nfsd) на целевом хосте, передает дескриптор файла и получает доступ к ресурсу.

Перехват информации аутентификации Windows NT Операционная система Windows поддерживает несколько разных типов аутентификации, каждый из которых постепенно увеличивает свою безопасность. Использование слабых механизмов аутентификации Windows NT, как объясняется далее, создает одно из самых слабых звеньев в безопасности Windows NT. Типы поддерживаемых механизмов аутентификации описаны ниже.

• Открытый текст. Пароли передаются по сети в открытом виде.

• Управляющая программа локальной сети (LAN Manager). Используется слабый механизм запроса-ответа, при котором сервер посылает запрос клиенту, клиент использует его для операции зашифрования кэша пароля пользователя и далее посылает его обратно серверу. Сервер проделывает то же самое и сравнивает результаты для аутентификации пользователя. Механизм, которым данный кэш был преобразован до передачи, является слабым, и исходный кэш может быть перехвачен из сети и взломан довольно просто. В Windows NT 4, несмотря на то что используется более стойкий механизм аутентификации управляющей программы локальной сети NT (NTLM), LM-кэш все еще посылается через сеть вместе с NTLM-кэшем, что понижает общую защиту до защиты механизма LM.

• Управляющая программа локальной сети NT (NTLM) и Управляющая программа локальной сети NT v2 (NTLMv2). NTLM и NTLMv2 предоставляют намного более стойкий механизм запроса-ответа, который намного усложняет процесс взлома перехваченного запроса аутентификации. NTLMv2 был представлен в релизе Service Pack 4 для Windows NT 4.0. NTLMv2 должен использоваться, если возможно, однако необходимо удостовериться, что ваши клиенты поддерживают данный протокол. В случае необходимости нужно установить дополнительное программное обеспечение на клиентах для использования NTLMv2.

Развитие данных механизмов происходит серией итерационных шагов по мере нахождения уязвимостей в каждой предыдущей реализации (к счастью, уязвимости становятся менее существенными с каждым улучшением).

Существуют специализированные анализаторы трафика, которые поддерживают перехват информации аутентификации Windows NT. Хорошим примером данных анализаторов трафика является анализатор, включенный в состав программы LOphtcrack (являющийся программой для взлома паролей исключительно для Windows NT). Документация, поставляемая вместе с LOphtcrack, очень детально объясняет, как создаются кэши паролей в Windows NT. Данная программа может быть получена на http://stake.com/research/lc3.

Перехват другого сетевого трафика

Несмотря на то что порты, рассмотренные нами, в большинстве случаев прослушиваются вследствие того, что информация аутентификации проходит в открытом виде, они не являются единственными портами, интересующими нарушителя. Анализатор трафика может быть использован для перехвата трафика на других портах, что показано в данном разделе.

Прослушивание SMTP (порт 25)

Простой протокол электронной почты (SMTP) используется для передачи сообщений электронной почты по сети Интернет и внутри многих организаций. Электронная почта была и всегда будет привлекательной целью для нарушителя. Целью нарушителя может являться наблюдение за администратором сети для определения, обнаружен ли он, или намного более злонамеренные действия. Нетрудно догадаться, что в сегодняшней конкурентной бизнес-среде целью может быть прослушивание сети на наличие внутренней информации компании, такой как информация о дате слияния, приобретения, а также партнерской информации. Вся это информация может быть собрана чтением сообщений электронной почты, посылаемой через сеть.

Анализатор трафика dsniff, детально рассмотренный далее, включает в себя программу, предназначенную для перехвата сообщений электронной почты из сети:

mailsnarf выдает сообщения электронной почты, перехваченные из SMTP и POP-трафика в формате Berkeley mbox, подходящем для автономного просмотра вашей любимой программой чтения сообщений электронной почты (например: mail(l), pine(l)). -dsniff FAQ

Прослушивание HTTP (порт 80) Протокол передачи гипертекстовых файлов (HTTP) используется для передачи WEB-трафика. Этот трафик обычно предназначен для 80-го порта, прослушивается в большей степени ради сбора статистики и сетевого использования, чем для сбора содержимого. Несмотря на то что HTTP-трафик может содержать информацию аутентификации и транзакции кредитных карт, данный тип информации довольно часто зашифрован посредством протокола защищенных сокетов (SSL). Существуют коммерческие продукты для прослушивания, использующиеся организациями, которые находят приемлемым наблюдение за использованием сотрудниками Web-pecypcoB.

Анализатор трафика dsniff также включает в себя программу, предназначенную для перехвата запросов унифицированных указателей информационного ресурса (URL).

urlsnarf выдает все запросы унифицированных указателей информационного ресурса (URLs), перехваченные из HTTP-трафика в формат CLF (общий формат файлов журнализации, используется почти всеми Web-серверами), подходящий для автономной последующей обработки вашим любимым инструментом анализа файлов Web-журнализации (например: analog, wwwstat). - dsniff FAQ

Популярное программное обеспечение для прослушивания сетевого трафика

За всю историю прослушивания сетевого трафика было написано много анализаторов трафика. Здесь мы рассматриваем несколько ключевых программ. Необходимо отметить, что мы не стремились предоставить всеобъемлющий список анализаторов трафика, а только некоторые реализации. Мы рассматриваем как коммерческие реализации, используемые для диагностики сети, так и реализации, написанные чисто для перехвата информации аутентификации. Большое количество реализаций может быть найдено на ближайшем сайте, посвященном информационной безопасности, например www.securityfocus.com.

Ethereal

Ethereal является одним из самых новых анализаторов протоколов, впервые появившимся в 1998 году. Однако благодаря своей природе системы с открытым кодом Ethereal стал одним из самых популярных анализаторов протоколов. Вследствие его разработки сообществом разработчиков он расшифровывает больше протоколов, чем многие коммерческие реализации. Данный анализатор протоколов является самым лучшим для UNIX-систем. Однако, несмотря на то что он работает и из-под Windows, анализатор не имеет такого «блеска», который ожидают пользователи Windows. Интерфейс пользователя основан на Gtk, таким образом, он очень UNIX-подобен.

На рисунке 10.1 показано окно перехвата Ethereal. Одной из полезных отличительных возможностей Ethereal является live decodes. Многие анализаторы протоколов не могут демонстрировать перехваченную информацию до остановки перехвата. Прямое декодирование считалось плохой отличительной возможностью вследствие того, что сетевой трафик может протекать со скоростью 10 ООО пакетов в секунду, намного быстрее, чем человек может воспринимать. Однако большинство пользователей анализаторов трафика создают фильтры захвата, которые так или иначе отбрасывают наибольшую часть трафика.

Свойства захвата Ethereal После перехвата пакеты хранятся в буфере и демонстрируются на дисплее в стандартном трехоконном варианте (см

Рис. 10.1. Свойства захвата Ethereal После перехвата пакеты хранятся в буфере и демонстрируются на дисплее в стандартном трехоконном варианте (см. рис. 10.2). Данный формат отображения был выбран для первоначального анализатора протокола и в дальнейшем был принят всеми другими продуктами. Верхнее окно показывает построчно краткое изложение каждого пакета. Второе окно показывает детальную расшифровку текущего пакета выделенного в окне краткого изложения. Третье окно показывает шестнадцатеричный дамп того же пакета. Выбор щелчком по кнопке мыши поля в окне детализации вызывает подсветку эквивалентных символов в окне шестнадцатеричного дампа.

Расшифровка протокола программой Ethereal Network Associates Sniffer Pro Sniffer Pro - коммерческий продукт (название «Sniffer» является торговой маркой корпорации Network Associates, Inc

Рис. 10.2. Расшифровка протокола программой Ethereal Network Associates Sniffer Pro Sniffer Pro - коммерческий продукт (название «Sniffer» является торговой маркой корпорации Network Associates, Inc.). Продукт может быть очень популярным, если его имя образовано из хакерского сленга, так как он существовал задолго до появления программ для перехвата паролей. Продукт Sniffer Pro компании Network Associates предоставляет легкий в использовании интерфейс для перехвата и просмотра сетевого трафика. Одно из основных преимуществ коммерческих продуктов заключается в том, что они поддерживают обширный диапазон сетевых протоколов и показывают расшифрованные данные протокола в очень легком для чтения виде. Sniffer Pro работает в двух основных режимах: в первом он перехватывает сетевой трафик, а во втором расшифровывает и демонстрирует его. Сетевая статистика и данные Sniffer Pro в режиме перехвата в деталях показаны на рис.

10.3.
в режиме перехвата После перехвата данные декодируются в легкочитаемый вид

Рис. 10.3. Sniffer Pro в режиме перехвата После перехвата данные декодируются в легкочитаемый вид. На рисунке 10.4 мы видим, как Sniffer Pro декодировал HTTP-запрос. Мы видим, что некоторые соответствующие переменные прошли, alias и pw. Для данного Web-приложения они являются именем пользователя и паролем соответственно.

отображение перехваченных данных NT Network Monitor

Рис. 10.4. Sniffer Pro отображение перехваченных данных NT Network Monitor

Windows NT server поставляется с программным обеспечением контроля сети Network Monitor, или для краткости Netmon. Данная версия Netmon перехватывает только входящий или исходящий трафик сервера, на котором он установлен. Существуют версии Netmon для Windows 2000 и Windows ХР с теми же ограничениями. Однако есть версия Netmon, позволяющая прослушивать весь трафик. Данная версия входит в состав Systems Management Server (SMS). Netmon предоставляет некоторые преимущества перед коммерческими анализаторами сети, заключающиеся в умении декодировать проприетарный трафик сетей Microsoft, который не имеет открытых спецификаций. Хорошим примером такого типа трафика является множество различных сервисов MS-RPC, которые взаимодействуют, используя именованные каналы через Windows NT-сети. Несмотря на то что Netmon не декодирует трафик всех сервисов MS-RPC, он декодирует наиболее значимую часть, которую иным способом декодировать невозможно.

Операции Network MonitorYa очень схожи с операциями Sniffer Pro, они предоставляют как механизм перехвата (рис. 10.5), так и механизм просмотра (рис. 10.6) одинаковой функциональности.

в режиме перехвата

Рис. 10.5. Network Monitor в режиме перехвата

в режиме просмотра

Рис. 10.6. Network Monitor в режиме просмотра

WildPackets

EtherPeek от WildPackets (в настоящее время поставляется A.G. Group) является одним из старейших анализаторов протоколов. Существуют его реализации для Macintosh, так же как и под Windows (изначально данный анализатор протоколов был написан более 10 лет назад для Macintosh). EtherPeek имеет интересные возможности демонстрации и декодирования в реальном времени, а также интересные отличительные особенности (загрузить демо-версию продукта можно с сайта www.wildpackets.com). На сегодняшний день главным образом он примечателен своей ЕШегРеек-версией, прослушивающей IEEE 802.11b беспроводные сети.

TCPDump

TCPDump представляет собой наиболее популярный инструмент сетевой диагностики и анализа для операционных систем на базе UNIX. TCPDump просматривает и декодирует все данные хедеров IP, TCP, UDP и ICMP, в дополнение к некоторым данным уровня приложений (по большей части протоколы сетевой инфраструктуры). TCPDump не был написан как инструмент нарушителя и не предназначен для помощи нарушителю, желающему прослушивать сеть. Как было сказано, он предоставляет хорошую точку старта для всех, намеревающихся заняться написанием анализаторов трафика, и так как его исходные коды открыты и бесплатны, небезынтересно с ними ознакомиться, dsniff

dsniff от Dug Song является инструментарием для прослушивания сетевого трафика, dsniff доступен на сайте www.monkey.org/~dugsong/dsniff.

dsniff наиболее знаменит за свою способность прослушивать информацию аутентификации (имена пользователей и пароли). Текущая версия dsniff декодирует информацию аутентификации следующих протоколов: AOL Instant Messenger, Citrix Winframe, Concurrent Versions System (CVS), FTP, HTTP, ICQ, IMAP, Internet Relay Chat (IRC), Lightweight Directory Access Protocol (LDAP), RPC mount requests, Napster, NNTP, Oracle SQL*Net, Open Shortest Path First (OSPF), PC Anywhere, POP, PostgreSQL, Routing Information Protocol (RIP), Remote Login (rlogin), Windows NT plaintext (SMB), Network Associates Sniffer Pro (remote), Simple Network Management Protocol (SNMP), Socks, Telnet, XI1, и RPC yppasswd.

Приоткрывая завесу dsniff Used against the Author

Следующий образец результата работы dsniff был перехвачен Dug Song, который успешно перехватил мои пароли на конференции по безопасности CanSecWest 2001. Это произошло вследствие того, что Outlook автоматически проверяет РОРЗ-сервера, даже тогда, когда вы только открыли его для просмотра контактной информации. Я быстро сменил пароль, как раз вовремя - остаток выходной информации dsniff перехватил попытку кого-то еще подключиться с данным паролем, предположительно он использовал dsniff и перехватил пароль.

03/28/01 18:43:24 tcp 192.168.1.201.1035 ->
216.136.173.10.110 (pop)
USER robertdavidgraham PAS S Cerveza2
03/29/01 02:07:41 tcp 192.168.1.243.1837 ->
216.136.173.10.110 (pop)
USER robert david graham PAS S Cerveza2
03/29/01 02:07:08 tcp 192.168.1.243.1836 ->
64.58.76.98.80 (http)
POST /config/login?84gteu3flfmvt HTTP/l.0 Host: login.yahoo.com
Content-type: application/x-www-form-urlencoded Content-length: 147
.tries=l&.src=ym&.last=&promo=&.intl=us&.bypass=&.partner=&.u=86 3imictc5nnu& .v=0&hasMsgr=0& ,chkP=Y&. done=&login=robert _davi d_graham&pas swd=C erveza2
03/29/01 02:06:48 tcp 192.168.1.243.1835 ->
64.58.76.98.80 (http)
POST /config/login?15aeb5gl4endr HTTP/l.0
Host: login.yahoo.com
Content-type: application/x-www-form-urlencoded Content-length: 146
.tries=&.src=ym&.last=&promo=&.intl=us&.bypass=&.partner=&.u=863 imictc5nnu& .v=0&hasMsgr=0& ,chkP=Y&. done=&login=robert _davi d_graham&pas swd=C erveza2
03/31/01 17:07:38 tcp 192.168.1.243.1307 ->
216.136.173.10.110 (pop)
USER robert david graham PASS Cerveza2

С сегодняшними коммутируемыми сетями и криптографическими протоколами шифрования перехват паролей не всегда работает, как мы могли надеяться, dsniff содержит несколько утилит перенаправления и «человек по середине» (MITM) для перенаправления потока трафика и сеансов расшифрования.

Первая утилита - arpspoof (некогда известная как arpredirect). Протокол разрешения адресов (ARP) используется хостами для нахождения МАС-адреса локального маршрутизатора. При помощи спуфинга пакетов ARP вы можете убедить близлежащие компьютеры в том, что являетесь маршрутизатором. Ваша машина после получения пакетов должна перенаправить их на настоящий маршрутизатор, но тем временем анализатор трафика dsniff имеет возможность обрабатывать эти пакеты. Это работает не только в локальных коммутированных сетях, но также и в кабельно-модемных сетях. Данный инструмент не полностью надежен; вы по существу дела боретесь с маршрутизатором, пытаясь убедить другие компьютеры локальным МАС-адресом. Как результат поток трафика через вашу машину является неустойчивым. Подобный метод с легкостью обнаруживается при помощи систем обнаружения вторжений на уровне сети (IDSs). Даже Sniffer Pro (упомянутый ранее) имеет режим экспертной диагностики, который отметит это как «дублированный IP-адрес» (то есть несколько машин претендуют на 1Р-адрес маршрутизатора).

Утилита dnsspoof является другим инструментом для перенаправления трафика. В данном случае она подделывает ответ локального сервера службы имен доменов (DNS). Когда вы идете на сайт, такой как http://www.example.com, ваша машина посылает запрос на локальный DNS-сервер на получение 1Р-адреса www.example.com . Ответ DNS-сервера обычно занимает некоторое время; dnsspoof посылает свой ответ быстрее. Жертва примет только первый ответ и игнорирует второй. Подделанный ответ содержит IP-адрес, отличный от IP-адреса истинного ответа, обычно это IP-адрес машины нарушителя. Скорее всего, нарушитель будет использовать одну из утилит «человек посередине» анализатора трафика dsniff.

Название «человек посередине» (man-in-the-middle) пришло из криптографии и описывает ситуацию, когда кто-либо перехватывает информацию, изменяет ее и передает дальше, dsniff содержит две утилиты для реализации данного вида атаки: webmitm для HTTP-трафика (включая SSL) и sshmitm для SSH. Обычно SSH и SSL считаются защищенными протоколами, использующими криптографические преобразования, которые невозможно прослушать. Метод работы MITM-утилит заключается в том, что они предоставляют клиентам SSL/SSH свои собственные ключи шифрования. Это позволяет им расшифровывать трафик, перехватывать пароли и далее обратно зашифровывать, используя при этом настоящие ключи сервера. В теории вы можете защитить себя от этого проверкой подлинности сертификатов сервера, но на практике никто этого не делает.

dsniff может перехватывать не только пароли, но также и другие виды трафика, передаваемые открытым текстом. Утилита mailsnarf прослушивает сообщения электронной почты как FBIYs Carnivore, за исключением того что она конвертирует их в формат mbox,

который может открываться почти всеми программами чтения электронной почты. Утилита msgsnarf прослушивает сообщения ICQ, IRC, Yahoo! Messenger и AOL IM. Утилита filesnarf прослушивает файлы, передаваемые посредством NFS (популярный протокол файлового сервера, используемый в UNIX-системах). Утилита urlsnarf сохраняет все унифицированные указатели информационных ресурсов (URLs), проходящие в сети. Утилита webspy в реальном времени посылает данные указатели браузеру Netscape - по существу, позволяя вам просматривать в реальном времени то же, что видит в своем браузере жертва.

Утилита macof посылает множественный поток МAC-адресов. Это предназначено для осуществления другого метода атаки на Ethernet-коммутаторы. Большинство коммутаторов имеют ограниченные таблицы, способные содержать только 4000 МАС-адресов. Этого более чем достаточно для нормальной сети - вам потребуется 4000 подключенных к коммутатору машин до перегрузки этих таблиц. Когда коммутатор перегружается, он «становится открытым» («fails open») и начинает повторять каждый пакет на каждый порт, позволяя прослушивать весь трафик.

Утилита tcpkill уничтожает TCP-соединения. Она может быть использована для атак отказа в обслуживании (DoS). Например, можно сконфигурировать данную утилиту так, чтобы она уничтожала все TCP-соединения вашего соседа. Она также интегрирована в инструменты системы обнаружения вторжений на сетевом уровне для уничтожения соединений хакера. Утилита tcpnice схожа с tcpkill, но вместо уничтожения соединений она замедляет их. Например, вы можете подделать ICMP Source Quenches кабельного модема вашего соседа таким образом, что получите большую полосу пропускания для ваших загрузок.

Ettercap

Пакет Ettercap подобен dsniff. Он имеет много схожих возможностей, таких как атаки «человек посередине» на SSL и SSH, а также перехват паролей. Также Ettercap имеет дополнительные отличительные особенности для атаки «человек посередине» на обычные TCP-соединения, такие как вставка команд в поток. Ettercap был написан Альберто Орнаги и Марком Валлери и доступен в сети на сайте http://ettercap.sourceforge.net.

Esniff.c

Esniff.c, вероятно, является одним из первых анализаторов трафика, которые появились в хакерском подземелье. Написанный хакером rokstar работает только на операционных системах Sun MicrosystemsY SunOS (ныне устаревшая). Esniff.c поддерживает протоколы Telnet, FTP и rlogin. Он предоставляет базовую функциональность и не поддерживает полный список протоколов, поддерживающихся в новых анализаторах трафика, таких как dsniff и sniffit. Данный анализатор трафика был впервые публично опубликован в журнале Phrack, который может быть найден на www.phrack.org/show.php?p=45&a=5.

Sniffit

Sniffit - другой анализатор трафика, который существует уже несколько лет. Он работает на операционных системах Linux, Solaris, SunOS, Irix и FreeBSD. Sniffit не обновлялся несколько лет, но я нахожу его достаточно стабильным (даже несмотря на то, что последний релиз был классифицирован как бета-версия). Бречт Клаерхорт, автор Sniffit, имеет две версии, доступные на его сайте: 0.3.5 (релиз апреля 1997 года) и 0.3.7.beta (релиз июля 1998 года). Я не имел никаких проблем с компиляцией и использованием 0.3.7.beta, но если вы встретитесь с проблемой в 0.3.7.beta, то можете использовать 0.3.5. Сайт Бречта Клаерхорта находится на http://reptile.rug.ac.be/~coder/sniffit/sniffit.html.

Одна из причин, по которой мне так сильно нравится (и я использую) Sniffit, заключается в том, что вы можете с легкостью настраивать его журнализировать только определенный вид трафика, как, например, FTP и Telnet. Данный тип фильтрации не необычен; он присутствует в других анализаторах трафика, таких как Sniffer Pro и NetMon. Но когда в последний раз вы видели любой из этих анализаторов скрытно установленным на скомпрометированных системах? Sniffit маленький и легко настраивается на перехват (и журнализацию) только того трафика, который несет полезную информацию в открытом виде, например имена пользователей и пароли для определенных протоколов, как показано на примере далее:

[Tue Маг 28 09:46:01 2000] - Sniffit session started. [Tue Mar 28 10:27:02 2000] -10.40.1.6.1332-10.44.50.40.21:

USER
[hansen]
[Tue Mar 28 10:27:02 2000] - 10.40.1.6.1332-10.44.50.40.21:
PASS
[worksux]
[Tue Mar 28 10:39:42 2000] - 10.40.1.99.1651-10.216.82.5.23:
login
[trebor]
[Tue Mar 28 10:39:47 2000] - 10.40.1.99.1651-10.216.82.5.23:
password
[goaway]
[Tue Mar 28 11:08:10 2000] - 10.40.2.133.1123-10.60.56.5.23:
login
[jaaf]
[Tue Mar 28 11:08:17 2000] - 10.40.2.133.1123-10.60.56.5.23:
password
[5g5g5g5]
[Tue Mar 28 12:45:21 2000] - 10.8.16.2.2419-
10.157.14.198.21: USER
[afms]
[Tue Mar 28 12:45:21 2000] - 10.8.16.2.2419-
10.157.14.198.21: PASS
[smfasmfa]
[Tue Mar 28 14:38:53 2000] - 10.40.1.183.1132-
10.22.16.51.23: login
[hohman]
[Tue Mar 28 14:38:58 2000] - 10.40.1.183.1132-
10.22.16.51.23: password
[98rabt]
[Tue Mar 28 16:47:14 2000] - 10.40.2.133.1069-10.60.56.5.23:
login
[whitt]
[Tue Mar 28 16:47:16 2000] - 10.40.2.133.1067-10.60.56.5.23:
password
[9gillion]
[Tue Mar 28 17:13:56 2000] - 10.40.1.237.1177-10.60.56.5.23:
login
[douglas]
[Tue Mar 28 17:13:59 2000] - 10.40.1.237.1177-10.60.56.5.23:
password
[llsatrn5]
[Tue Mar 28 17:49:43 2000] - 10.40.1.216.1947-
10.22.16.52.23: login
[demrly]
[Tue Mar 28 17:49:46 2000] - 10.40.1.216.1947-
10.22.16.52.23: password
[9sefi9]
[Tue Mar 28 17:53:08 2000] - 10.40.1.216.1948-
10.22.16.52.23: login [demrly]
[Tue Mar 28 17:53:11 2000] - 10.40.1.216.1948-
10.22.16.52.23: password
[jesa78]
[Tue Mar 28 19:32:30 2000] - 10.40.1.6.1039-
10.178.110.226.21: USER
[custr2]
[Tue Mar 28 19:32:30 2000] - 10.40.1.6.1039-
10.178.110.226.21: PASS
[Alpo2p35]
[Tue Mar 28 20:04:03 2000] - Sniffit session ended.

Как вы можете видеть, за промежуток примерно 10 ч я собрал имена и пароли девяти разных пользователей, три для FTP-сайтов и пять - для Telnet. Один пользователь, demrly, видимо, использовал неправильный пароль, когда он или она пытался соединиться с 10.22.16.52 первый раз, но я сохраню этот пароль потому, что он может быть правильным для другой локации.

Carnivore

Carnivore является Интернет-перехватчиком, разработанным Федеральным бюро расследований (FBI) Соединенных Штатов Америки. Он разработан для специальных нужд обеспечения правопорядка. Например, некоторые ордера судов позволяют использование рукописного протокола наблюдения только адресов электронной почты отправителя и получателя, но некоторые могут позволить полный перехват сообщений электронной почты. Краткое изложение отличительных особенностей представлено в конфигурационной программе, показанной на рис. 10.7.

Рис. 10.7. Конфигурационная программа Carnivore74 Отличительные особенности: • наборы фильтров. Настройки сохраняются в конфигурационные файлы; пользователь может быстро менять параметры прослушивания, выбирая разные наборы фильтров;

• сетевые адаптеры. Система может иметь несколько сетевых адаптеров; одновременно может быть выбран только один адаптер для прослушивания;

• размер файла архива. Можно задать предел на количество перехватываемой информации; по умолчанию заполняет весь диск;

• использование памяти. Сетевой трафик может приходить быстрее, чем может быть записан на диск; память сбрасывает в буфер входящие данные;

• фиксированный IP-адрес. Весь входящий и исходящий трафик диапазона адресов может быть отфильтрован. Например, подозреваемый может иметь фиксированный 1Р-адрес 1.2.3.4, назначенный кабельному модему. ФБР может получить ордер суда, позволяющий им прослушивать весь трафик подозреваемого;

• протоколы для перехвата. Обычно ордер суда позволяет перехватывать только специфический трафик, например SMTP поверх TCP. В режиме «Реп» перехватываются только заголовки;

• текстовые строки данных. Данная отличительная особенность заключается в поиске ключевых слов в трафике. Ордер суда должен точно определять, что подлежит прослушиванию, будь то, например, IP-адрес или учетная запись электронной почты. Расширенный поиск по ключевым словам нелегален в Соединенных Штатах Америки. ФБР отрицает, что Carnivore имеет данную особенность;

• порты. Возможно создание списка TCP- и UDP-портов. Например, если ФБР имеет ордер суда, позволяющий прослушивание сообщений электронной почты, оно может указать конкретные порты электронной почты 25,110 и 143;

• SMTP-адреса электронной почты. Типичный сценарий представляет собой следующее. Carnivore прослушивает сервер электронной почты поставщика услуг Интернет, отбрасывая все сообщения, кроме сообщений подозреваемого. Сессия обмена электронной почтой прослеживается до нахождения адреса электронной почты подозреваемого, далее все пакеты, составляющие сообщение, перехватываются;

• динамические IP-адреса. Когда пользователи пользуются услугами коммутируемого Интернета, они подключаются посредством протокола RADIUS, который раздает им

IP-адреса. Обычно ФБР запрашивает почты поставщика услуг Интернет перенастроить RADIUS-сервера таким образом, что нарушителю будет выдаваться один и тот же IP-адрес, и прослушивает исходящий и входящий трафики с этого IP-адреса. (Необходимо отметить, что если вы пользователь коммутируемого Интернета и подозреваете, что ФБР прослушивает ваш трафик, всегда проверяйте ваш IP-адрес при выходе в сеть.) Иногда это невозможно. Carnivore может быть настроен для прослушивания протокола RADIUS и динамически определять новый IP-адрес, выданный подозреваемому. Прослушивание начинается с момента присвоения IP-адреса и заканчивается при завершении сеанса.

ФБР разработало Carnivore потому, что утилиты, такие как dsniff, не подходят для нужд обеспечения правопорядка. Когда сообщение электронной почты передается через сеть, оно разбивается на большое количество пакетов. Утилиты, такие как mailsnarf (описана выше), собирают сообщение в его первоначальный вид. Это плохо, так как адвокат подозреваемого будет оспаривать его точность: не был ли пропущен пакет из середины сообщения, изменяющий его значение? Не попал ли пакет другого сообщения в данное? Перехватывая необработанные пакеты, а не собирая их, Carnivore поддерживает настоящую последовательность чисел, портов и временных меток. Любые пропавшие или лишние пакеты легко прослеживаются, что позволяет ФБР отстаивать точность системы. Другая проблема, с которой сталкивается ФБР, заключается в минимизации прослушиваемой информации. Когда ФБР подключается к вашей телефонной линии, они должны приставить агента слушать ее. Если кто-либо другой использует телефон (например, ваша супруга или дети), они должны выключить магнитофон. Аналогично Carnivore разработан для избежания прослушивания чего-либо, не принадлежащего подозреваемому. Типичным примером является использование Carnivore для наблюдения активности пользователей коммутируемого Интернета. Carnivore содержит модуль прослушивания RADIUS-трафика, используемого большинством из поставщиков услуг Интернет для аутентификации пользователей и назначения им динамических IP-адресов. Это позволяет Carnivore74 прослушивать только данного пользователя без перехвата трафика остальных пользователей. Экземпляр программы, содержащей много особенностей Carnivore, может быть найден на сайте данной книги (www.syngress.com/solutions). Дополнительная информация Существуют несколько интересных ресурсов, которые предоставляют более полный список существующих анализаторов сетевого трафика, вот некоторые из них.

• Список сетевых анализаторов трафика доступен на Underground Security Systems

Research: www.ussrback.com/packetsniffers.htm.

• Очень хороший и детальный обзор пакетных анализаторов, написанных Робертом

Грахамом: www.robertgraham.com/pubs/sniffing-faq.html.

Примечание

FAQ по Carnivore можно найти здесь: www.robertgraham.com/pubs/carnivore-faq.html.

Усовершенствованные методы прослушивания сетевого трафика

По мере развития технологии хакеры вынуждены создавать новые методы прослушивания сетевого трафика. Следующий раздел посвящен нескольким методам, используемым нарушителями в целях перехитрить технологические достижения.

Атаки «человек посередине» (MITM)

Как мы отметили выше, наиболее эффективной защитой от прослушивания является использование протоколов с шифрованием данных, таких как SSL и SSH. Однако последние пакеты dsniff и Ettercap содержат методы обмана шифрования.

Базовый метод известен как атака «человек посередине» (MITM). Хорошим примером этого является фильм про Джеймса Бонда «Из России с любовью». Бонд должен встретиться с другим агентом на пироне поезда. Злой агент из SPECTRE первым встречается с агентом, прикидываясь Бондом. Таким способом злой агент узнает правильное кодовое слово. Злой агент далее выдает себя за агента, с которым у Бонда была назначена встреча.

Тот же метод может быть использован для протоколов с шифрованием. Нарушитель устанавливает сервер, который отвечает на запросы клиентов. Например, сервер отвечает на запрос https://www.amazon.com. Пользователь, соединяющийся с данной машиной, будет ложно считать, что он создал шифрованное соединение с Amazon.com. В то же время нарушитель соединяется с настоящим Amazon.com и выдает себя за пользователя. Нарушитель играет двойную роль, расшифровывает полученные от пользователя данные и далее шифрует их для передачи настоящему месту назначения. В теории протоколы с шифрованием защищены от этого. Сервер, выдающий себя за Amazon.com, должен доказать, что это так и есть на самом деле. На практике большинство пользователей игнорируют это. Атаки MITM доказали свою эффективность в данной области.

Взлом паролей

Инструменты, такие как dsniff и Ettercap, перехватывают не только пароли, но также и зашифрованные пароли. В теории перехват зашифрованных паролей бесполезен. Однако люди выбирают слабые пароли, такие как слова из словаря. Нарушителю требуется всего несколько секунд перебрать словарь из 100 ООО слов, сравнивая зашифрованную форму слова из словаря с зашифрованным паролем. Если совпадение найдено, нарушитель подобрал пароль. Данные программы для взлома паролей уже существуют. Инструменты, такие как dsniff and Ettercap, легко выдают зашифрованные пароли в виде, читаемом этими программами.

Обман коммутаторов

Коммутаторы вошли в моду несколько лет назад, и много людей считают, что если у них есть сеть с коммутатором, то это делает невозможным для нарушителя использовать анализатор трафика для перехвата информации из нее. Пришло время развеять данное заблуждение, как вы убедитесь в этом, когда мы рассмотрим методы прослушивания сетевого трафика в коммутируемых сетях.

ARP Spoofing

В процессе попытки прослушивания сетевого трафика в коммутируемых сетях вы столкнетесь с серьезной проблемой: коммутатор ограничит трафик, проходящий в вашем сегменте сети. Коммутатор содержит внутренний список МАС-адресов хостов, находящихся на каждом порту. Трафик посылается на порт только в том случае, если хост назначения прописан и присутствует на этом порте. Существует возможность перезаписать ARP-кэш на многих операционных системах, что позволит вам ассоциировать свой МАС-адрес с IP-адресом шлюза по умолчанию. Это приведет к тому, что весь исходящий трафик от хоста будет передаваться вам. Вам понадобится убедиться, что вы вручную добавили запись в таблицу ARP для настоящего шлюза, для того чтобы трафик передавался ему, и также убедиться, что IP-ретрансляция включена.

Также было обнаружено, что сети на кабельных модемах тоже уязвимы для данного типа атаки, поскольку они по существу являются сетями Ethernet, в которых модемы играют роль мостов. В двух словах: на данный момент не существует решения для защиты от данного вида атак, и новые сети на кабельных модемах будут использовать альтернативные механизмы подключения пользователей к сети.

Анализатор трафика dsniff для данной атаки включает в себя программу arpspoof (некогда arpredirect).

arpspoof переадресовывает пакеты от хоста (или всех хостов) в локальной сети, предназначенные для другого хоста в локальной сети поддельными ARP-ответами. Это является чрезвычайно эффективным способом прослушивания сетевого трафика на коммутаторе. - dsniff FAQ

MAC Flooding Для выполнения своих задач коммутатор хранит таблицу всех MAC(Ethernet-aflpecoB хостов на каждом порту. Если большое количество адресов фигурирует на одном порте, заполнение таблицы адресов на коммутаторе приводит к тому, что коммутатор уже не имеет записи, к какому порту соединяется МАС-адрес жертвы. Та же ситуация имеет место, когда новая машина впервые соединяется к коммутатору, и он должен узнать, где адрес расположен. Во время этого коммутатор должен посылать копии кадров для этого МАС-адреса всем портам, на практике это известно как flooding.

Анализатор сетевого трафика dsniff включает в себя программу macofi которая облегчает волновое распространение пакетов (flooding) для коммутатора случайными М АС-адресами:

macof наполняет локальную сеть случайными МАС-адресами (вызывая тем самым падение коммутатора в открытый режим ретрансляции, облегчающий прослушивание сетевого трафика). Прямая Сипортация оригинального Perl Net::RawIP, программа macof написана Яном Витеком (Ian Vitek) <ian.vitek@infosec.se>. - dsniff FAQ

Игры маршрутизации

Данный метод обеспечивает то, что весь сетевой трафик будет проходить через ваш хост, посредством изменения таблицы маршрутизации того хоста, который вы собираетесь прослушивать. Это возможно осуществить, посылая поддельное сообщение объявления маршрутизации посредством протокола информации маршрутизации (RIP) и провозглашая себя шлюзом по умолчанию. В результате весь трафик будет маршрутизироваться через ваш хост. Убедитесь, что вы включили ретрансляцию ГР и ваш шлюз по умолчанию настроен на реальный сетевой шлюз. Весь исходящий трафик с хоста будет проходить через ваш хост на реальный сетевой шлюз. Вы не сможете получить входящий трафик, разве только если у вас есть возможность изменить таблицу маршрутизации на шлюзе по умолчанию для перемаршрутизации всего входящего трафика обратно вам.

Исследование программных интерфейсов приложений операционных систем

Операционные системы предоставляют или не предоставляют интерфейсы с уровнем сетевых соединений. Рассмотрим несколько операционных систем, для того чтобы определить, как они взаимодействуют с их уровнем сетевых соединений.

Linux

Linux предоставляет интерфейс с уровнем сетевых соединений посредством интерфейса сокета. Он является одним из самых простых интерфейсов, предоставляемых любой операционной системой. Следующая программа иллюстрирует, насколько он прост. Программа открывает указанный интерфейс, устанавливает «безразличный» режим и далее приступает к чтению Ethernet-пакетов из сети. Когда пакет прочитан, в дополнение к типу пакета запоминаются МАС-адреса источника и получателя.

#include <stdio.h> #include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/if_arp.h>
#include <linux/if_ether.h>
#include <linux/sockios.h>
#include <net/ethernet.h> int open_interface(char *name)
{
struct sockaddr addr; struct ifreq ifr; int sockfd;
/* open a socket and bind to the specified interface */
sockfd = socket(AF_INET, SOCK PACKET, htons(ETH P ALL));
if (sockfd < 0)
return -1;
memset(&addr, 0, sizeof(addr)); addr.safamily = AFINET; stmcpy(addr.sa_data, name, sizeof(addr.sa_data)); if (bind(sockfd, &addr, sizeof(addr)) != 0) { close(sockfd); return -1;
}
/* check to make sure this interface is ethernet, otherwise exit */
memset(&ifr, 0, sizeof(ifr)); stmcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) < 0) { close(sockfd); return -1;
}
if (ifr.ifr hwaddr.sa family != ARPHRD ETHER) {
close(sockfd);
return -1;
}
/* now we set promiscuous mode */ memset(&ifr, 0, sizeof(ifr)); stmcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); if (ioctl(sockfd, SIOCGIFFLAGS, &ifr) < 0) { close(sockfd); return -1;
}
ifr.ifrjlags = IFFPROMISC; if (ioctl(sockfd, SIOCSIFFLAGS, &ifr) < 0) { close(sockfd); return -1;
}
return sockfd;
}
/* read ethernet packets, printing source and destination
addresses */
int readloop(sockfd)
{
struct sockaddr in from; char buf[ 1792], *ptr; int size, fromlen, c; struct etherheader *hdr; while (1) {
/* read the next available packet */
size = recvfrom(sockfd, buf, sizeof(buf), 0, &from,
&fromlen);
if (size < 0)
return -1;
if (size < sizeof(struct ether header)) continue;
hdr = (struct ether header *)buf;
/* print out ethernet header */ for (c = 0; c < ETHALEN; c++) printf(“%s%02x”,c == 0 ? : “:“,hdr-
>ether_shost[c]); printf(“ > ”);
for (c = 0; c < ETH ALEN; c++) printf(“%s%02x”,c == 0 ? : “:”,hdr-
>ether_dhost[c]);
printf(“ type: %i\n”, hdr->ether_type);
}
}
int main(int argc, char **argv)
{
int sockfd;
char *name = argv[l]; if (!argv[l]) {
fprintf(stderr, “Please specify an interface name\n”);
return -1;
}
if ((sockfd = open interface(name)) < 0) { fprintf(stderr, “Unable to open interfaced”); return -1;
}
if (read loop(sockfd) < 0) { fprintf(stderr, “Error reading packet\n”); return -1;
}
return 0;
}
BSD

Операционные системы, основанные на BSD, такие как OpenBSD, FreeBSD, NetBSD и BSDI, предоставляют интерфейс к канальному уровню посредством размещенного в ядре драйвера Berkeley Packet Filter (BPF). BPF располагает несколькими очень хорошими отличительными особенностями, которые чрезвычайно эффективны в обработке и фильтрации пакетов.

Драйвер BPF имеет в ядре механизм фильтрации. Он представляет собой встроенную виртуальною машину, состоящую из нескольких очень простых байтовых операций, позволяющих обследование каждого пакета посредством маленькой программы, загруженной в ядро пользователем. Всякий раз, когда пакет получен, данная программа оценивает его и определяет, следует ли предать его для приложения на стороне пользователя. Выражения компилируются в простой байт-код на стороне пользователя и далее загружаются в драйвер посредством вызова ioctl()

Libpcap

libpcap не является интерфейсом операционной системы, точнее, он является переносимой межплатформенной библиотекой, которая значительно облегчает сетевой доступ к канальному уровню во множестве операционных систем. Библиотека libpcap первоначально была разработана в Lawrence Berkeley Laboratories (LBL). Ее целью является абстрагировать интерфейс канального уровня на различных операционных системах и создать простой стандартизованный программный интерфейс приложения (API). Это позволяет создать портативный код, который может быть написан для использования одного интерфейса вместо многочисленных на множестве операционных систем. Данный факт значительно упрощает технику написания анализаторов сетевого трафика в сравнении с объемом работ, необходимых для выполнения такого кода на разнообразных операционных системах.

Исходная версия от LBL была значительно улучшена с ее последнего официального релиза. Она имеет лицензию системы с открытым кодом (лицензия BSD) и, следовательно, может быть использована в коммерческом программном обеспечении, а также позволяет неограниченные модификации и редистрибуцию.

Исходная LBL-версия может быть найдена на ftp://ftp.ee.lbl.gOv/libpcap.tar.Z. Команда tcpdump.org, принявшая разработку TCPDump, также приняла разработку libpcap. Свежая версия libpcap может быть найдена на www.tcpdump.org.

По сравнению с анализатором сетевого трафика, написанного под операционную систему Linux, используется «родной» интерфейс, анализатор сетевого трафика для Linux, использующий libpcap, намного проще, как показано далее:

#include <stdio.h> #include <stdlib.h>
#include <sys/types.h>
#include <net/ethernet.h>
#include <pcap/pcap.h>
pcap t *open_interface(char *name)
{
pcapt *pd;
char ebuf[PC APERRBUFSIZE];
/* use pcap call to open interface in promiscuous mode */ d = pcap_open_live(name, 1600, 1, 100, ebuf); f (!pd)
return NULL; return pd;
}
int read_loop(pcap_t *pd)
{
const unsigned char *ptr; int size, c;
struct pcap_pkthdr h; struct ether header *hdr; while (1) {
/* read the next available packet using libpcap */ ptr = pcap_next(pd, &h); if (h.caplen < sizeof(struct ether header)) continue;
hdr = (struct ether header *)ptr;
/* print out ethernet header */ for (c = 0; c < ETH ALEN; c++) printf(“%s%02x”,c == 0 ? : “:”,hdr-
>ether_shost[c]); printf(“ > ”);
for (c = 0; c < ETH ALEN; c++) printf(“%s%02x”,c == 0 ? : “:”,hdr-
>ether_dhost[c]);
printf(“ type: %i\n”, hdr->ether_type);
}
}
int main(int argc, char **argv)
{
pcap t *pd;
char *name = argv[l];
if (!argv[l]) {
fprintf(stderr, “Please specify an interface name\n”); return -1;
}
pd = openinterface(name); if (!pd) {
fprintf(stderr, “Unable to open interface\n”); return -1;
}
if (read loop(pd) < 0) { fprintf(stderr, “Error reading packet\n”); return -1;
}
return 0;
}
Windows

К сожалению, операционные системы семейства Windows не предоставляют функциональной возможности доступа к сети на канальном уровне. Мы должны приобрести и установить пакет драйвера стороннего производителя для получения доступа к данному уровню. До недавнего времени не существовало общедоступных драйверов, для которых не нужна лицензия. BPF-образный драйвер на данный момент уже написан и поддерживает BPF-механизм фильтрации в ядре. Также существует портация библиотеки libpcap, которая в сочетании с драйвером предоставляет интерфейс, такой же простой его UNIX, как аналог. Драйвер, портация libpcap, так же как и Windows-версия TCPDump, доступны на http://netgroup-serv.polito.it/windump.

Защитные меры

Итак, вы, наверное, думаете, что все потеряно и вы не можете ничего сделать для предотвращения прослушивания сетевого трафика вашей сети, правильно? Не все потеряно, вы убедитесь в этом в данном разделе.

Обеспечение шифрования

К счастью, для состояния сетевой безопасности шифрование (используемое должным образом) является «серебряной пулей», которая делает пакетные анализаторы бесполезными. Зашифрованная информация, полагая, что механизм шифрования является эффективным, разрушит все попытки нарушителя пассивно прослушивать вашу сеть.

Многие существующие сетевые протоколы имеют аналоги, которые полагаются на стойкие алгоритмы шифрования и всеобъемлющие механизмы, такие как IPSec, предоставляют это для всех протоколов. К сожалению, IPSec не используется широко в Интернете вне частных корпораций.

Программа атаки с использованием форматирующей строки | Защита от хакеров корпоративных сетей | Secure shell (ssh)


Защита от хакеров корпоративных сетей



Новости за месяц

  • Июль
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс