- •Воронеж 2008
- •Воронеж 2008
- •Введение
- •1 Подбор пароля
- •1.1 Общие понятия парольной защиты
- •1.1.1 Парольная система
- •1.1.2 Методы подбора паролей
- •1.1.3 Методы количественной оценки стойкости паролей
- •1.2 Парольная защита операционных систем
- •1.2.1 Подбор паролей в ос Windows
- •1.2.1.1 База данных учетных записей пользователей
- •1.2.1.2 Хранение паролей пользователей
- •1.2.1.3 Использование пароля
- •1.2.1.4 Возможные атаки на базу данных sam
- •1.2.2 Подбор паролей в ос unix
- •1.3 Классификация и принцип работы программного обеспечения для подбора паролей
- •1.3.1 Подбор паролей в oc Windows
- •1.3.2 Подбор паролей в oc unix
- •1.3.3 Подбор паролей в архивах zip, rar и arj
- •1.3.4 Подбор паролей документов ms Office
- •1.3.5 Подбор паролей pdf документов
- •1.4 Противодействие подбору паролей
- •1.4.1 Требования к паролю
- •1.4.2 Правила назначения/изменения паролей
- •1.4.3 Требования к генерации паролей
- •1.4.4 Хранение пароля пользователем
- •1.4.5 Хранение паролей компьютерной системой
- •1.4.6 Противодействие попыткам подбора паролей
- •1.4.7 Защита Windows nt и Unix от подбора паролей
- •2.1.2 Протокол tcp
- •2.1.2.1 Функции протокола tcp
- •2.1.2.2 Базовая передача данных
- •2.1.2.3 Разделение каналов
- •2.1.2.4 Управление соединениями
- •2.1.2.5 Заголовок тср-сегмента
- •2.1.2.6 Состояния соединения
- •2.2 Основные методы, применяемые при сканировании портов
- •2.2.1 Методы сканирования tcp-портов
- •2.2.1.1 Методы открытого сканирования
- •2.2.1.1.1 Метод icmp-сканирования
- •2.2.1.1.2 Сканирование tcp-портов функцией connect()
- •2.2.1.1.3 Сканирование tcp-портов флагом syn
- •2.2.1.1.4 Сканирование tcp-портов флагом fin
- •2.2.1.1.5 Сканирование с использованием ip-фрагментации
- •2.2.1.1.6 Сканирование tcp-портов методом reverse-ident (обратной идентификации)
- •2.2.1.1.7 Сканирование Xmas
- •2.2.1.1.8 Null сканирование
- •2.2.1.2 Методы "невидимого" удаленного сканирования
- •2.2.1.2.1 Скрытая атака по ftp
- •2.2.1.2.2 Сканирование через proxy-сервер
- •2.2.1.2.3 Скрытное сканирование портов через системы с уязвимой генерацией ip id
- •2.2.1.2.3.1 Исторические предпосылки
- •2.2.1.2.3.2 Описание базового метода ip id сканирования
- •2.2.1.2.3.3 Исследование правил и обход брандмауэра при сканировании
- •2.2.1.2.3.4 Сканирование машин с приватными адресами
- •2.2.1.2.3.5 Использование ip id при сканирование udp сервисов за брандмауэром
- •2.2.2 Методы сканирования udp-портов
- •2.2.2.1 Сканирование udp-портов проверкой icmp-сообщения «Порт недостижим»
- •2.2.2.2 Сканирование udp-портов с использованием функций recvfrom() и write()
- •2.3.1 Сканирование портов в ос семейства Windows
- •2.3.2 Сканирование портов в ос семейства Unix
- •2.4 Защита от сканирования портов
- •3 Анализ сетевого трафика
- •3.1 Анализ сетевого трафика сети Internet
- •3.1.1 Ложные arp-ответы
- •3.1.2 Навязывание ложного маршрутизатора
- •3.1.3 Атака при конфигурировании хоста
- •3.1.4 Атака на протоколы маршрутизации
- •3.2 Протокол telnet
- •3.2.1 Протокол ftp
- •3.2.3 Программы анализаторы сетевого трафика (сниффиры)
- •3.2.4 Принцип работы сниффира
- •3.3 Методы противодействия сниффирам
- •3.3.1 Протокол ssl
- •3.3.2 Протокол skip
- •3.3.3 Устройство обеспечения безопасности локальной сети skipBridge
- •4 Внедрение ложного доверенного объекта
- •4.1 Особенности атаки «Внедрение ложного доверенного объекта»
- •4.2 Внедрение ложного объекта путем использования недостатков алгоритмов удаленного поиска
- •4.2.1.1 Протокол arp и алгоритм его работы
- •4.2.1.2 Техника выполнения arp-spoofing
- •4.2.1.3 Методы обнаружения
- •4.2.1.4 Методы противодействия
- •4.2.2.1 Принцип работы Domain Name System
- •4.2.2.2 Внедрение dns-сервера путем перехвата dns-запроса
- •4.2.2.3 «Шторм» ложных dns ответов на атакуемый хост
- •4.2.2.4 Перехват dns-запроса или создание направленного «шторма» ложных dns-ответов непосредственно на атакуемый dns-сервер
- •4.2.2.5 Обнаружение и защита от внедрения ложного dns-сервера
- •4.3.1.2 Внедрение ложного доверенного объекта путем навязывания ложного маршрута с помощью протокола icmp
- •4.3.1.3 Обнаружение и методы противодействия
- •5 Отказ в обслуживании
- •5.1 Модель DoS атаки
- •5.1.1 Отказ в обслуживании (DoS)
- •5.1.2 Распределенный отказ в обслуживании (dDoS)
- •5.2.1.1 Описание утилиты для реализации icmp – флуда и атаки Smurf
- •5.2.1.2 Реализация атаки icmp-flooding, на основе отправки icmp-пакетов
- •5.2.1.3 Реализация атаки Smurf
- •5.2.3 Низкоскоростные dos-атаки
- •5.2.3.1 Механизм таймаута tcp-стека
- •5.2.3.2 Моделирование и реализация атаки
- •5.2.3.2.1 Минимальная скорость DoS-атаки
- •5.2.3.3 Многопоточность и синхронизация потоков
- •5.2.3.5 Атаки в сети интернет
- •5.2.4 Syn атака
- •5.3 Анализ средств и методов сетевой защиты
- •5.3.1 Настройка tcp/ip стека
- •5.3.4 Межсетевые экраны (FireWall)
- •5.3.5 Системы обнаружения атак (ids)
- •5.3.6 Система Sink Holes
- •Заключение
- •Список информационных источников
- •394026 Воронеж, Московский просп., 14
4.2 Внедрение ложного объекта путем использования недостатков алгоритмов удаленного поиска
4.2.1 ARP-spoofing
4.2.1.1 Протокол arp и алгоритм его работы
Для определения локального адреса по IP-адресу используется протокол ARP - Address Resolution Protocol. Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring) с возможностью широковещательного доступа одновременно ко всем узлам сети, или протокол глобальной сети (X.25, frame relay), как правило, не поддерживающий широковещательный доступ. Существует протокол, выполняющий обратную задачу - определение IP-адреса по известному локальному адресу (Reverse Address Resolution Protocol) и используется при старте бездисковых станций, не знающих в начальный момент своего IP-адреса, но знающих адрес своего сетевого адаптера. В локальных сетях протокол ARP использует широковещательные кадры протокола канального уровня для поиска в сети узла с заданным IP-адресом [6].
Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно (рисунок 4.2).
Рисунок 4.1 - Место расположения протокола ARP среди других протоколов
Рисунок 4.2 - Широковещательный ARP-запрос
Все узлы локальной сети получают ARP запрос [24] и сравнивают указанный там IP-адрес с собственным. В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный (Ethernet) адрес затем отправляет его уже направленно хосту, который отправил широковещательный ARP-запрос, так как в ARP запросе отправитель указывает свой локальный адрес (рисунок 4.3).
Рисунок 4.3 - ARP-ответ на широковещательный ARP-запрос
ARP-запросы и ответы используют один и тот же формат пакета. Так как локальные адреса могут в различных типах сетей иметь различную длину, то формат пакета протокола ARP зависит от типа сети. Преимущественно протокол ARP используется в локальных сетях. Отображение адресов осуществляется путем поиска в ARP-таблице. Упрощенно, ARP-таблица состоит из двух столбцов (таблица 4.1). В первом столбце содержится IP-адрес, а во втором Ethernet-адрес. Таблица соответствия необходима, так как адреса выбираются произвольно и нет какого-либо алгоритма для их вычисления. Если машина перемещается в другой сегмент сети, то ее ARP-таблица должна быть изменена.
Таблица 4.1. ARP-таблица
IP-адрес |
Ethernet-адрес |
10.137.0.2 |
08:00:39:00:2F:C3 |
10.137.0.3 |
08:00:5A:21:A7:22 |
10.137.0.4 |
08:00:10:99:AC:54 |
В первом столбце содержится IP-адрес, а во втором Ethernet-адрес. Таблица соответствия необходима, так как адреса выбираются произвольно и нет какого-либо алгоритма для их вычисления. Если машина перемещается в другой сегмент сети, то ее ARP-таблица должна быть изменена.
Таблицу ARP можно посмотреть, используя команду arp в командной строке: >arp -a
ARP-таблица заполняется автоматически. Перед тем, как создать подключение к какому-либо устройству в сети, IP-протокол проверяет свою ARP-таблицу, чтобы выяснить, не зарегистрирована ли в нём уже нужная для подключения информация о хосте-получателе. Если такой записи в ARP-таблице нет, то выполняется широковещательный ARP-запрос (рисунок 4.2). Все сетевые интерфейсы получают этот запрос, но отвечает только владелец адреса (рисунок 4.3). При этом существует два способа отправки IP-пакета, для которого ищется адрес: пакет ставится в очередь на отправку или уничтожается. В первом случае за отправку отвечает модуль ARP, а во втором случае модуль IP, который повторяет посылку через некоторое время [6].
Если искомого IP-адреса нет в локальной сети и сеть не соединена с другой сетью шлюзом, то разрешить запрос не удается. IP-модуль будет уничтожать такие пакеты, обычно по time-out (превышен лимит времени на разрешение запроса).
Записи в ARP-кеше могут быть статическими и динамическими. Пример, данный выше, описывает динамическую запись кеша. Хост-отправитель автоматически послал запрос получателю, не уведомляя при этом пользователя. Записи в ARP-кеш можно добавлять вручную, создавая статические записи кеша. Это можно сделать при помощи команды: arp -s <IP адрес> <MAC адрес>
Например:
Интерфейс: 10.137.0.30 --- 0x10003
Адрес IP Физический адрес Тип
10.137.0.120 00-0f-ea-65-f9-c8 статический
10.137.0.177 00-80-48-45-a8-ba динамический
Структура пакета. В сетях Ethernet пакеты используют EtherType 0x0806, и рассылаются широковещательно MAC-адрес - FF:FF:FF:FF:FF:FF. Отметим, что в структуре пакета, показанной ниже (таблица 4.2) в качестве SHA, SPA, THA, & TPA условно используются 32-битные слова — реальная длина определяется физическим устройством и протоколом.
Таблица 4.2. Структура ARP-пакета
|
Hardware type (HTYPE) - каждый транспортный протокол передачи данных имеет свой номер, который хранится в этом поле. Например, Ethernet имеет номер 1.
Protocol type (PTYPE) - код протокола. Например, для IPv4 будет записано 0x0800.
Hardware length (HLEN) - длина физического адреса в байтах. Ethernet адреса имеют длину 6 байт.
Protocol length (PLEN) - длина логического адреса в байтах. IPv4 адреса имеют длину 4 байта.
Operation - код операции отправителя: 1 в случае запроса и 2 в случае ответа.
Sender hardware address (SHA) - физический адрес отправителя.
Sender protocol address (SPA) - логический адрес отправителя.
Target hardware address (THA) - физический адрес получателя. Поле пусто при запросе.
Target protocol address (TPA) - логический адрес получателя.
Пример запроса. Если хост с IPv4 адресом 10.137.0.123 и MAC адресом 00:09:58:D8:11:22 хочет послать пакет другому хосту с адресом 10.137.0.140, но не знает его MAC адрес, то он должен послать ARP запрос для разрешения адреса.
Пакет, изображенный ниже (таблица 4.3), изображает широковещательный запрос. Если хост с IP 10.137.0.140 присутствует в сети и доступен, то он получает этот ARP-запрос и возвращает ответ.
Таблица 4.3. ARP-запрос
|
Пример ответа. По сценарию, описанному выше, если хост с адресом 10.137.0.140 имеет MAC адрес 00:09:58:D8:33:AA, то он пошлет в ответ пакет, проиллюстрированный ниже (таблица 4.4). Заметим, что блоки адресов отправителя и получателя теперь поменяли значения (отправитель ответа теперь получатель запроса; получатель ответа - отправитель запроса). Кроме того, хост 10.137.0.140 заполнил свой MAC адрес в поле физического адреса отправителя.
Любой хост в той же сети, что и отправитель с получателем, тоже получат запрос (т.к. он широковещательный) и таким образом добавят в свой кеш информацию об отправителе. ARP-ответ направлен только источнику ARP-запроса, поэтому ARP-ответ не доступен другим хостам в сети.
Таблица 4.4. ARP-ответ
|
ARP оповещение. ARP Announcement - это пакет (обычно ARP запрос) содержащий корректную SHA и SPA хоста-отправителя, с TPA равной SPA. Это не разрешающий запрос, а запрос на обновление ARP-кеша других хостов, получающих пакет.
Большинство операционных систем посылают такой пакет при включении хоста в сеть, это позволяет предотвратить ряд проблем. Например, при смене сетевой карты (когда необходимо обновить связь между IP и MAC адресами), такой запрос исправит записи в ARP-кеше других хостов в сети.
Протокол ARP является абсолютно незащищённым. Он не обладает никакими способами проверки подлинности пакетов: как запросов, так и ответов. Ситуация становится ещё более сложной, когда может использоваться самопроизвольный ARP (gratuitous ARP).
Самопроизвольный ARP - такое поведение ARP, когда ARP-ответ присылается, когда в этом (с точки зрения получателя) нет особой необходимости. Самопроизвольный ARP-ответ это пакет-ответ ARP, присланный без запроса. Он применяется для определения конфликтов IP-адресов в сети: как только станция получает адрес по DHCP или адрес присваивается вручную, рассылается ARP-ответ gratuitous ARP.
Самопроизвольный ARP может быть полезен в следующих случаях:
обновление ARP-таблиц, в частности, в кластерных системах;
информирование коммутаторов;
извещение о включении сетевого интерфейса.
Несмотря на эффективность самопроизвольного ARP [35], он является особенно небезопасным, поскольку с его помощью можно уверить удалённый узел в том, что MAC-адрес какой-либо системы, находящейся с ней в одной сети, изменился и указать, какой адрес используется теперь.