- •Воронеж 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
5.2.1.1 Описание утилиты для реализации icmp – флуда и атаки Smurf
DoS-атака ICMP-flooding вызывает истощение ресурсов сети отправкой огромного числа ICMP эхо-запросов. Поэтому программа, реализующая эту DoS-атаку, не сильно отличается от работы утилиты ping. Главное отличие в том, что для реализации DoS-атаки нужно только отправлять эхо-запросы, а получать ответы не требуется. Кроме того, не требуется задержка между отправками пакетов, наоборот, пакеты должны отправляться с максимальной скоростью. Для большей эффективности пакеты можно сделать увеличенного размера. Надо заметить, что стандартная утилита ping позволяет осуществить DoS-атаку ICMP-flooding с помощью параметра командной строки -f, который заставляй утилиту ping посылать эхо-запросы с максимально возможной скоростью, а параметр -s, позволяет увеличить размер отправляемых пакетов. Например, следующая команда отправляет беспрерывный поток пакетов размером в 3 Кбайт узлу example.ru:
# ping -f -s 3072 example.ru
После каждого отправленного пакета ping выводит на экран точку (''•"), а в случае получения эхо-ответа точка стирается.
Однако утилита ping не дает возможности осуществить подмену адреса отправителя, то есть IP-spoofing.
Суть Smurf-атаки состоит в следующем: злоумышленник посылает широковещательный ICMP эхо-запрос компьютерам локальной сети, указывая в качестве адреса отправителя адрес узла "жертвы". В результате все компьютеры локальной сети вышлют эхо-ответ на адрес узла "жертвы", вызывая на нем наводнение.
Для реализации IP-spoofing’а, нужно программно заполнять все поля IP-заголовка при этом в поле "IP-адрес" отправителя программа будет подставлять поддельный адрес. Для сборки собственного пакета необходимо создать raw-сокет:
sd = socket(PF_INET, SOCK_RAW, IPPROTO_RAWJ;
Для raw-сокета задается опция: p_hdrincl с помощью функции setsockopc (). Если этого не сделать, стек TCP/IP сам будет генерировать заголовок IP при посылке пакета.
Чтобы можно было отправлять широковещательные сообщения, с помощью еще одного вызова setsockopt() мы устанавливаем параметр сокета so_broadcast. Это необходимо для реализации атаки Smurf.
Для отправляемого пакета в программе определяется буфер следующим образом:
char sendbuf[sizeof(struct iphdr) + sizeof(struct icmp) + 1400];
To есть размер каждого отправляемою пакета будет определяться длиной IP-заголовка, длиной ICMP-заголовка и дополнительными 1400 байтами. Определение структуры IP-заголовка берется из заголовочного файла /netinet/ip.h, а ICMP-заголовка из /netinei/ip_icmp.h. Значение 1400 выбрано произвольно исключительно только для того, чтобы увеличить размер отправляемого пакета. Этот участок буфера будет просто заполнен мусором.
Конечно, можно сделать размер отправляемого пакета до 65 535 байтов. Этот предел устанавливается 16-разрядным полем общей длины IP-заголовка. Но в таком случае нужно дополнительно реализовывать алгоритм фрагментации пакетов, в том случае если MTU сети меньше размера посылаемого пакета. Например, размер MTU для Ethernet равен 1500 байтам. Попытка послать в сеть Ethernet пакет больше 1500 байтов вызовет ошибку в функции отправки, a perror () выведет: "Message too long".
Размер ICMP-заголовка составляет 8 байтов, размер IP-заголовка 20-60 байтов, поэтому размер пакета не превысит 1468 байтов. Такой пакет пропустит большинство сетей без фрагментации.
Таким образом, особого смысла нет посылать пакет слишком большого размера, так как он все равно будет фрагментирован на мелкие пакеты, поэтому размер пакета около 1400 байтов является наиболее оптимальным.