
- •Часть I. Основы сетей передачи данных 25
- •Глава 1. Эволюция компьютерных сетей 26
- •Глава 2. Общие принципы построения сетей 45
- •Глава 3. Коммутация каналов и пакетов 92
- •Глава 4. Архитектура и стандартизация сетей 130
- •Глава 5. Примеры сетей 167
- •Глава 6. Сетевые характеристики 198
- •Глава 7. Методы обеспечения качества обслуживания 227
- •Часть II. Технологии физического уровня 283
- •Глава 8. Линии связи 284
- •Глава 9. Кодирование и мультиплексирование данных 320
- •Глава 10. Беспроводная передача данных 357
- •Глава 11. Первичные сети 389
- •Часть III. Локальные вычислительные сети 441
- •Глава 12. Технологии локальных сетей на разделяемой среде 443
- •Глава 13. Коммутируемые сети Ethernet 507
- •Глава 14. Интеллектуальные функции коммутаторов 565
- •Часть IV. Сети tcp/ip 607
- •Глава 15. Адресация в стеке протоколов tcp/ip 608
- •Глава 16. Протокол межсетевого взаимодействия 652
- •Глава 17. Базовые протоколы tcp/ip 700
- •Глава 18. Дополнительные функции маршрутизаторов ip-сетей 758
- •Часть V. Технологии глобальных сетей 834
- •Глава 19. Транспортные услуги и технологии глобальных сетей 838
- •Глава 20. Технология mpls 885
- •Глава 21. Ethernet операторского класса 921
- •Глава 22. Удаленный доступ 961
- •Глава 23. Сетевые службы 1008
- •Глава 24. Сетевая безопасность 1052
- •От авторов
- •Для кого эта книга
- •Изменения в четвертом издании
- •Структура книги
- •Благодарности
- •Часть I. Основы сетей передачи данных
- •Глава 1. Эволюция компьютерных сетей
- •Два корня компьютерных сетей Вычислительная и телекоммуникационная технологии
- •Системы пакетной обработки
- •Многотерминальные системы — прообраз сети
- •Первые компьютерные сети Первые глобальные сети
- •Первые локальные сети
- •Конвергенция сетей Сближение локальных и глобальных сетей
- •Конвергенция компьютерных и телекоммуникационных сетей
- •Вопросы и задания
- •Глава 2. Общие принципы построения сетей
- •Простейшая сеть из двух компьютеров Совместное использование ресурсов
- •Сетевые интерфейсы
- •Связь компьютера с периферийным устройством
- •Обмен данными между двумя компьютерами
- •Доступ к пу через сеть
- •Сетевое программное обеспечение
- •Сетевые службы и сервисы
- •Сетевая операционная система
- •Сетевые приложения
- •Физическая передача данных по линиям связи
- •Кодирование
- •Характеристики физических каналов
- •Проблемы связи нескольких компьютеров
- •Топология физических связей
- •Адресация узлов сети
- •Коммутация
- •Обобщенная задача коммутации
- •Определение информационных потоков
- •Маршрутизация
- •Продвижение данных
- •Мультиплексирование и демультиплексирование
- •Разделяемая среда передачи данных
- •Типы коммутации
- •Вопросы и задания
- •Глава 3. Коммутация каналов и пакетов
- •Коммутация каналов
- •Элементарный канал
- •Составной канал
- •Неэффективность при передаче пульсирующего трафика
- •Коммутация пакетов
- •Буферизация пакетов
- •Дейтаграммная передача
- •Передача с установлением логического соединения
- •Передача с установлением виртуального канала
- •Сравнение сетей с коммутацией пакетов и каналов
- •Транспортная аналогия для сетей с коммутацией пакетов и каналов
- •Количественное сравнение задержек
- •Ethernet — пример стандартной технологии с коммутацией пакетов
- •Вопросы и задания
- •Глава 4. Архитектура и стандартизация сетей
- •Декомпозиция задачи сетевого взаимодействия
- •Многоуровневый подход
- •Протокол и стек протоколов
- •Модель osi
- •Общая характеристика модели osi
- •Физический уровень
- •Канальный уровень
- •Сетевой уровень
- •Транспортный уровень
- •Сеансовый уровень
- •Уровень представления
- •Прикладной уровень
- •Модель osi и сети с коммутацией каналов
- •Стандартизация сетей
- •Понятие открытой системы
- •Источники стандартов
- •Стандартизация Интернета
- •Стандартные стеки коммуникационных протоколов
- •Стек osi
- •Стек ipx/spx
- •Стек NetBios/smb
- •Стек tcp/ip
- •Соответствие популярных стеков протоколов модели osi
- •Информационные и транспортные услуги
- •Распределение протоколов по элементам сети
- •Вспомогательные протоколы транспортной системы
- •Вопросы и задания
- •Глава 5. Примеры сетей
- •Классификация компьютерных сетей
- •Классификация компьютерных сетей в технологическом аспекте
- •Другие аспекты классификации компьютерных сетей
- •Обобщенная структура телекоммуникационной сети
- •Сеть доступа
- •Магистральная сеть
- •Информационные центры
- •Сети операторов связи
- •Клиенты
- •Инфраструктура
- •Территория покрытия
- •Взаимоотношения между операторами связи различного типа
- •Корпоративные сети
- •Сети отделов
- •Сети зданий и кампусов
- •Сети масштаба предприятия
- •Интернет
- •Уникальность Интернета
- •Структура Интернета
- •Классификация провайдеров Интернета по видам оказываемых услуг
- •Вопросы и задания
- •Глава 6. Сетевые характеристики
- •Типы характеристик Субъективные оценки качества
- •Характеристики и требования к сети
- •Временная шкала
- •Соглашение об уровне обслуживания
- •Производительность
- •Идеальная сеть
- •Статистические оценки характеристик сети
- •Активные и пассивные измерения в сети
- •Характеристики задержек пакетов
- •Характеристики скорости передачи
- •Надежность Характеристики потерь пакетов
- •Доступность и отказоустойчивость
- •Характеристики сети поставщика услуг
- •Расширяемость и масштабируемость
- •Управляемость
- •Совместимость
- •Вопросы и задания
- •Глава 7. Методы обеспечения качества обслуживания
- •Обзор методов обеспечения качества обслуживания
- •Приложения и качество обслуживания
- •Предсказуемость скорости передачи данных
- •Чувствительность трафика к задержкам пакетов
- •Чувствительность трафика к потерям и искажениям пакетов
- •Классы приложений
- •Анализ очередей
- •Модель м/м/1
- •Очереди и различные классы трафика
- •Техника управления очередями
- •Очередь fifo
- •Приоритетное обслуживание
- •Взвешенные очереди
- •Комбинированные алгоритмы обслуживания очередей
- •Механизмы кондиционирования трафика
- •Классификация трафика
- •Профилирование
- •Формирование трафика
- •Обратная связь Назначение
- •Участники обратной связи
- •Информация обратной связи
- •Резервирование ресурсов Резервирование ресурсов и контроль допуска
- •Обеспечение заданного уровня задержек
- •Инжиниринг трафика
- •Недостатки традиционных методов маршрутизации
- •Методы инжиниринга трафика
- •Инжиниринг трафика различных классов
- •Работа в недогруженном режиме
- •Вопросы и задания
- •Часть II. Технологии физического уровня
- •Глава 8. Линии связи
- •Классификация линий связи Первичные сети, линии и каналы связи
- •Физическая среда передачи данных
- •Аппаратура передачи данных
- •Характеристики линий связи Спектральный анализ сигналов на линиях связи
- •Затухание и волновое сопротивление
- •Помехоустойчивость и достоверность
- •Полоса пропускания и пропускная способность
- •Биты и боды
- •Соотношение полосы пропускания и пропускной способности
- •Типы кабелей
- •Экранированная и неэкранированная витая пара
- •Коаксиальный кабель
- •Волоконно-оптический кабель
- •Структурированная кабельная система зданий
- •Вопросы и задания
- •Глава 9. Кодирование и мультиплексирование данных
- •Модуляция Модуляция при передаче аналоговых сигналов
- •Модуляция при передаче дискретных сигналов
- •Комбинированные методы модуляции
- •Дискретизация аналоговых сигналов
- •Методы кодирования Выбор способа кодирования
- •Потенциальный код nrz
- •Биполярное кодирование ami
- •Потенциальный код nrzi
- •Биполярный импульсный код
- •Манчестерский код
- •Потенциальный код 2b1q
- •Избыточный код 4в/5в
- •Скремблирование
- •Компрессия данных
- •Обнаружение и коррекция ошибок
- •Методы обнаружения ошибок
- •Методы коррекции ошибок
- •Мультиплексирование и коммутация
- •Коммутация каналов на основе методов fdm и wdm
- •Коммутация каналов на основе метода tdm
- •Дуплексный режим работы канала
- •Вопросы и задания
- •Глава 10. Беспроводная передача данных
- •Беспроводная среда передачи Преимущества беспроводных коммуникаций
- •Беспроводная линия связи
- •Диапазоны электромагнитного спектра
- •Распространение электромагнитных волн
- •Лицензирование
- •Беспроводные системы Двухточечная связь
- •Связь одного источника и нескольких приемников
- •Связь нескольких источников и нескольких приемников
- •Типы спутниковых систем
- •Геостационарный спутник
- •Средне- и низкоорбитальные спутники
- •Технология широкополосного сигнала
- •Расширение спектра скачкообразной перестройкой частоты
- •Прямое последовательное расширение спектра
- •Множественный доступ с кодовым разделением
- •Вопросы и задания
- •Глава 11. Первичные сети
- •Сети pdh
- •Иерархия скоростей
- •Методы мультиплексирования
- •Синхронизация сетей pdh
- •Ограничения технологии pdh
- •Сети sonet/sdh
- •Иерархия скоростей и методы мультиплексирования
- •Типы оборудования
- •Стек протоколов
- •Кадры stm-n
- •Типовые топологии
- •Методы обеспечения живучести сети
- •Новое поколение протоколов sdh
- •Сети dwdm
- •Принципы работы
- •Волоконно-оптические усилители
- •Типовые топологии
- •Оптические мультиплексоры ввода-вывода
- •Оптические кросс-коннекторы
- •Сети otn Причины и цели создания
- •Иерархия скоростей
- •Стек протоколов otn
- •Кадр otn
- •Выравнивание скоростей
- •Мультиплексирование блоков
- •Коррекция ошибок
- •Вопросы и задания
- •Часть III. Локальные вычислительные сети
- •Глава 12. Технологии локальных сетей на разделяемой среде
- •Общая характеристика протоколов локальных сетей на разделяемой среде Стандартная топология и разделяемая среда
- •Стандартизация протоколов локальных сетей
- •Ethernet со скоростью 10 Мбит/с на разделяемой среде
- •Форматы кадров технологии Ethernet
- •Доступ к среде и передача данных
- •Возникновение коллизии
- •Время оборота и распознавание коллизий
- •Спецификации физической среды
- •Максимальная производительность сети Ethernet
- •Технологии Token Ring и fddi
- •Беспроводные локальные сети ieee 802.11 Проблемы и области применения беспроводных локальных сетей
- •Топологии локальных сетей стандарта 802.11
- •Стек протоколов ieee 802.11
- •Распределенный режим доступа dcf
- •Централизованный режим доступа pcf
- •Безопасность
- •Физические уровни стандарта 802.11
- •Физические уровни стандарта 802.11 1997 года
- •Физические уровни стандартов 802.11а и 802.11b
- •Физический уровень стандарта 802.11g
- •Физический уровень стандарта 802.11n
- •Персональные сети и технология Bluetooth Особенности персональных сетей
- •Архитектура Bluetooth
- •Стек протоколов Bluetooth
- •Кадры Bluetooth
- •Поиск и стыковка устройств Bluetooth
- •Пример обмена данными в пикосети
- •Новые свойства Bluetooth
- •Вопросы и задания
- •Глава 13. Коммутируемые сети Ethernet
- •Мост как предшественник и функциональный аналог коммутатора Логическая структуризация сетей и мосты
- •Алгоритм прозрачного моста ieee 802.1d
- •Топологические ограничения при применении мостов в локальных сетях
- •Коммутаторы Параллельная коммутация
- •Дуплексный режим работы
- •Неблокирующие коммутаторы
- •Борьба с перегрузками
- •Характеристики производительности коммутаторов
- •Скоростные версии Ethernet
- •История создания
- •Физические уровни технологии Fast Ethernet
- •История создания
- •Проблемы совместимости
- •Средства обеспечения диаметра сети в 200 м на разделяемой среде
- •Спецификации физической среды стандарта Gigabit Ethernet
- •Gigabit Ethernet на витой паре категории 5
- •Архитектура коммутаторов
- •Конструктивное исполнение коммутаторов
- •Вопросы и задания
- •Глава 14. Интеллектуальные функции коммутаторов
- •Алгоритм покрывающего дерева
- •Классическая версия stp
- •Три этапа построения дерева
- •Недостатки и достоинства stp
- •Версия rstp
- •Агрегирование линий связи в локальных сетях Транки и логические каналы
- •Борьба с «размножением» пакетов
- •Выбор порта
- •Фильтрация трафика
- •Виртуальные локальные сети
- •Назначение виртуальных сетей
- •Создание виртуальных сетей на базе одного коммутатора
- •Создание виртуальных сетей на базе нескольких коммутаторов
- •Альтернативные маршруты в виртуальных локальных сетях
- •Качество обслуживания в виртуальных сетях
- •Классификация трафика
- •Маркирование трафика
- •Управление очередями
- •Резервирование и профилирование
- •Ограничения коммутаторов
- •Вопросы и задания
- •Часть IV. Сети tcp/ip
- •Глава 15. Адресация в стеке протоколов tcp/ip
- •Стек протоколов tcp/ip
- •Типы адресов стека tcp/ip
- •Локальные адреса
- •Сетевые ip-адреса
- •Доменные имена
- •Формат ip-адреса
- •Классы ip-адресов
- •Особые ip-адреса
- •Использование масок при ip-адресации
- •Порядок назначения ip-адресов
- •Назначение адресов автономной сети
- •Централизованное распределение адресов
- •Адресация и технология cidr
- •Отображение ip-адресов на локальные адреса
- •Протокол разрешения адресов
- •Протокол Proxy-arp
- •Система dns Плоские символьные имена
- •Иерархические символьные имена
- •Обратная зона
- •Протокол dhcp
- •Режимы dhcp
- •Алгоритм динамического назначения адресов
- •Вопросы и задания
- •Глава 16. Протокол межсетевого взаимодействия
- •Формат ip-пакета
- •Упрощенная таблица маршрутизации
- •Просмотр таблиц маршрутизации без масок
- •Примеры таблиц маршрутизации разных форматов
- •Источники и типы записей в таблице маршрутизации
- •Пример ip-маршрутизации без масок
- •Маршрутизация с использованием масок
- •Структуризация сети масками одинаковой длины
- •Просмотр таблиц маршрутизации с учетом масок
- •Использование масок переменной длины
- •Перекрытие адресных пространств
- •Фрагментация ip-пакетов
- •Параметры фрагментации
- •Механизм фрагментации
- •Вопросы и задания
- •Глава 17. Базовые протоколы tcp/ip
- •Протоколы транспортного уровня tcp и udp
- •Порты и сокеты
- •Протокол udp и udp-дейтаграммы
- •Протокол tcp и тср-сегменты
- •Логические соединения — основа надежности tcp
- •Повторная передача и скользящее окно
- •Реализация метода скользящего окна в протоколе tcp
- •Управление потоком
- •Общие свойства и классификация протоколов маршрутизации
- •Протокол rip
- •Построение таблицы маршрутизации
- •Адаптация маршрутизаторов rip к изменениям состояния сети
- •Пример зацикливания пакетов
- •Методы борьбы с ложными маршрутами в протоколе rip
- •Протокол ospf
- •Два этапа построения таблицы маршрутизации
- •Метрики
- •Маршрутизация в неоднородных сетях Взаимодействие протоколов маршрутизации
- •Внутренние и внешние шлюзовые протоколы
- •Протокол bgp
- •Протокол icmp
- •Утилита traceroute
- •Утилита ping
- •Вопросы и задания
- •Глава 18. Дополнительные функции маршрутизаторов ip-сетей
- •Фильтрация
- •Фильтрация пользовательского трафика
- •Фильтрация маршрутных объявлений
- •Стандарты QoS в ip-сетях
- •Модели качества обслуживания IntServ и DiffServ
- •Алгоритм ведра маркеров
- •Случайное раннее обнаружение
- •Интегрированное обслуживание и протокол rsvp
- •Дифференцированное обслуживание
- •Трансляция сетевых адресов
- •Причины подмены адресов
- •Традиционная технология nat
- •Базовая трансляция сетевых адресов
- •Трансляция сетевых адресов и портов
- •Групповое вещание
- •Стандартная модель группового вещания ip
- •Адреса группового вещания
- •Основные типы протоколов группового вещания
- •Протокол igmp
- •Принципы маршрутизации трафика группового вещания
- •Протокол dvmrp
- •Протокол mospf
- •Протокол pim-sm
- •IPv6 как развитие стека tcp/ip
- •Система адресации протокола iPv6
- •Снижение нагрузки на маршрутизаторы
- •Переход на версию iPv6
- •Маршрутизаторы Функции маршрутизаторов
- •Уровень интерфейсов
- •Уровень сетевого протокола
- •Уровень протокола маршрутизации
- •Классификация маршрутизаторов по областям применения
- •Вопросы и задания
- •Часть V. Технологии глобальных сетей
- •Глава 19. Транспортные услуги и технологии глобальных сетей
- •Базовые понятия Типы публичных услуг сетей операторов связи
- •Выделенные каналы для построения частной сети
- •Виртуальная частная сеть
- •Доступ в Интернет
- •Традиционная телефония
- •Многослойная сеть оператора связи
- •Услуги и технологии физического уровня
- •Услуги и технологии пакетных уровней
- •Туннелирование
- •Технология Frame Relay История стандарта
- •Техника продвижения кадров
- •Гарантии пропускной способности
- •Технология atm
- •Ячейки atm
- •Виртуальные каналы atm
- •Категории услуг atm
- •Виртуальные частные сети
- •Ip в глобальных сетях Чистая ip-сеть
- •Протокол hdlc
- •Протокол ррр
- •Использование выделенных линий ip-маршрутизаторами
- •Работа ip-сети поверх сети atm
- •Вопросы и задания
- •Глава 20. Технология mpls
- •Базовые принципы и механизмы mpls Совмещение коммутации и маршрутизации в одном устройстве
- •Пути коммутации по меткам
- •Заголовок mpls и технологии канального уровня
- •Стек меток
- •Протокол ldp
- •Мониторинг состояния путей lsp
- •Тестирование путей lsp
- •Трассировка путей lsp
- •Протокол двунаправленного обнаружения ошибок продвижения
- •Инжиниринг трафика в mpls
- •Отказоустойчивость путей mpls Общая характеристика
- •Использование иерархии меток для быстрой защиты
- •Вопросы и задания
- •Глава 21. Ethernet операторского класса
- •Обзор версий Ethernet операторского класса Движущие силы экспансии Ethernet
- •Разные «лица» Ethernet
- •Стандартизация Ethernet как услуги
- •Технология EoMpls Псевдоканалы
- •Услуги vpws
- •Услуги vpls
- •Ethernet поверх Ethernet Области улучшений Ethernet
- •Разделение адресных пространств пользователей и провайдера
- •Маршрутизация, инжиниринг трафика и отказоустойчивость
- •Функции эксплуатации, администрирования и обслуживания
- •Функции эксплуатации, администрирования и обслуживания в Ethernet
- •Протокол cfm
- •Протокол мониторинга качества соединений y.1731
- •Стандарт тестирования физического соединения Ethernet
- •Интерфейс локального управления Ethernet
- •Мосты провайдера
- •Магистральные мосты провайдера
- •Формат кадра 802.1 ah
- •Двухуровневая иерархия соединений
- •Пользовательские мас-адреса
- •Инжиниринг трафика и отказоустойчивость
- •Магистральные мосты провайдера с поддержкой инжиниринга трафика
- •Вопросы и задания
- •Глава 22. Удаленный доступ
- •Схемы удаленного доступа
- •Типы клиентов и абонентских окончаний
- •Мультиплексирование информации на абонентском окончании
- •Режим удаленного узла
- •Режим удаленного управления и протокол telnet
- •Коммутируемый аналоговый доступ
- •Принцип работы телефонной сети
- •Удаленный доступ через телефонную сеть
- •Коммутируемый доступ через сеть isdn Назначение и структура isdn
- •Интерфейсы bri и pri
- •Стек протоколов isdn
- •Использование сети isdn для передачи данных
- •Технология adsl
- •Доступ через сети catv
- •Беспроводной доступ
- •Вопросы и задания
- •Глава 23. Сетевые службы
- •Электронная почта
- •Электронные сообщения
- •Протокол smtp
- •Непосредственное взаимодействие клиента и сервера
- •Протоколы рорз и imap
- •Протокол http
- •Формат http-сообщений
- •Динамические веб-страницы
- •Ранняя ip-телефония
- •Стандарты н.323
- •Стандарты на основе протокола sip
- •Связь телефонных сетей через Интернет
- •Новое поколение сетей ip-телефонии
- •Распределенные шлюзы и программные коммутаторы
- •Новые услуги
- •Интеграция систем адресации е.164 и dns на основе enum
- •Протокол передачи файлов
- •Основные модули службы ftp
- •Управляющий сеанс и сеанс передачи данных
- •Команды взаимодействия ftp-клиента с ftp-сервером
- •Сетевое управление в ip-сетях Функции систем управления
- •Архитектуры систем управления сетями
- •Вопросы и задания
- •Глава 24. Сетевая безопасность
- •Основные понятия информационной безопасности Определение безопасной системы
- •Угроза, атака, риск
- •Типы и примеры атак Атаки отказа в обслуживании
- •Перехват и перенаправление трафика
- •Внедрение в компьютеры вредоносных программ
- •Троянские программы
- •Сетевые черви
- •Шпионские программы
- •Методы обеспечения информационной безопасности
- •Классификация методов защиты
- •Политика безопасности
- •Шифрование
- •Симметричные алгоритмы шифрования
- •Алгоритм des
- •Несимметричные алгоритмы шифрования
- •Алгоритм rsa
- •Односторонние функции шифрования
- •Аутентификация, авторизации, аудит Понятие аутентификации
- •Авторизация доступа
- •Строгая аутентификация на основе многоразового пароля в протоколе chap
- •Аутентификация на основе одноразового пароля
- •Аутентификация на основе сертификатов
- •Сертифицирующие центры
- •Инфраструктура с открытыми ключами
- •Аутентификация информации
- •Цифровая подпись
- •Аутентификация программных кодов
- •Антивирусная защита
- •Сканирование сигнатур
- •Метод контроля целостности
- •Сканирование подозрительных команд
- •Отслеживание поведения программ
- •Сетевые экраны
- •Типы сетевых экранов разных уровней
- •Реализация
- •Архитектура
- •Прокси-серверы
- •Функции прокси-сервера
- •Прокси-серверы прикладного уровня и уровня соединений
- •«Проксификация» приложений
- •Системы обнаружения вторжений
- •Протоколы защищенного канала. IPsec
- •Иерархия технологий защищенного канала
- •Распределение функций между протоколами ipSec
- •Безопасная ассоциация
- •Транспортный и туннельный режимы
- •Протокол ан
- •Протокол esp
- •Базы данных sad и spd
- •Сети vpn на основе шифрования
- •Вопросы и задания
- •Рекомендуемая и использованная литература
Сетевые черви
Сетевые черви (worm) — это программы, способные к самостоятельному распространению своих копий среди узлов в пределах локальной сети, а также по глобальным связям, перемещаясь от одного компьютера к другому без всякого участия в этом процессе пользователей сети.
Поскольку большинство сетевых червей передаются в виде файлов, основным механизмом их распространения являются сетевые службы, основанные на файловом обмене. Так, червь может рассылать свои копии по сети в виде вложений в сообщения электронной почты или путем размещения ссылок на зараженный файл на каком-либо веб-сайте. Однако существуют и другие разновидности червей, которые для своей экспансии используют более сложные приемы, например, связанные с ошибками («дырами») в программном обеспечении.
Главная цель и результат деятельности червя состоит в том, чтобы передать свою копию на максимально возможное число компьютеров. При этом для поиска компьютеров — новых потенциальных жертв — черви задействуют встроенные в них средства. Типичная программа-червь не удаляет и не искажает пользовательские и системные файлы, не перехватывает электронную почту пользователей, не портит содержимое баз данных, а наносит вред атакованным компьютерам путем потребления их ресурсов. Если червь обладает возможностью повторного заражения, то число его копий растет лавинообразно, и вредоносные программы все более и более загружают процессор, захватывая новые области памяти, отбирая пропускную способность сетевых соединений, пока, наконец, программы легальных пользователей не потеряют возможность выполняться.
При создании типичного сетевого червя хакер, прежде всего, определяет перечень сетевых уязвимостей, которые он собирается использовать для проведения атак средствами создаваемого червя. Такими уязвимостями могут быть как известные, но не исправленные на некоторых компьютерах ошибки в программном обеспечении, так и пока неизвестные никому ошибки, которые обнаружил сам хакер. Чем шире перечень уязвимостей и чем более они распространены, тем больше узлов может быть поражено данным червем.
Червь состоит из двух основных функциональных компонентов: атакующего блока и блока поиска целей.
□ Атакующий блок состоит из нескольких модулей (векторов атаки), каждый из которых рассчитан на поражение конкретного типа уязвимости. Этот блок открывает «входную дверь» атакуемого хоста и передает через нее свою копию.
□ Блок поиска целей (локатор) собирает информацию об узлах сети, а затем на основании этой информации определяет, какие из исследованных узлов обладают теми уязвимостями, для которых хакер имеет средства атаки.
Эти два функциональных блока являются обязательными и присутствуют в реализации любой программы-червя. Некоторые черви нагружены их создателями и другими вспомогательными функциями, о которых мы скажем позже.
Упрощенно жизненный цикл червя может быть описан рекурсивной процедурой, состоящей из циклического запуска локатора и атакующего блока на каждом из последующих заражаемых компьютеров (рис. 24.5).
Рис. 24.5. Экспансия червя в сети
В начале каждого нового цикла червь, базирующийся на захваченном в результате предыдущей атаки компьютере, запускает локатор для поиска и формирования списка узлов-целей, пригодных для проведения каждой из специфических атак, а затем, используя средства атакующего блока, пытается эксплуатировать уязвимости узлов из этого списка. В результате успешной атаки червь копирует все свои программы на «новую территорию» и активирует локатор. После этого начинается новый цикл. На рисунке показано, как червь лавинообразно распространяется по сети. Заражение тысяч компьютеров может занять всего несколько минут. Некоторые виды червей не нападают на уже зараженные и/или подвергающиеся атаке в данный момент узлы. Если же такая проверка не предусмотрена в алгоритме работы червя, то в сети случайным образом могут возникать очаги стихийных DoS-атак.
Локатор идентифицирует цели по адресам электронной почты, IP-адресам, характеристикам установленных на хостах операционных систем, номерам портов, типам и версиям приложений.
Для сбора информации локатор может предпринимать действия, связанные как с поисками интересующих данных на захваченном им в данный момент хосте, так и путем зондирования сетевого окружения. Простейший способ получить данные локально — прочитать файл, содержащий адресную книгу клиента электронной почты1. Помимо почтовых адресов, локатор может найти на узле базирования другие источники информации, такие как таблицы конфигурационных параметров сетевых интерфейсов, ARP-таблицы и таблицы маршрутизации. Зная IP-адреса хоста базирования и шлюзов, локатор достаточно просто может определить IP-адреса других узлов этой сети. Для идентификации узлов локатор может также использовать ICMP-сообщения или запросы ping, указывая в качестве адресов назначения все возможные IP-адреса. Для определения того, какие приложения работают на том или ином хосте, локатор сканирует различные хорошо известные номера TCP- и UDP-портов. Определив тип приложения, локатор пытается получить более детальные характеристики этого приложения.
Например, пусть некоторая программа-червь имеет в своем арсенале средства для атаки на некоторые версии веб-сервера Apache. Для поиска потенциальных жертв локатор этого червя зондирует узлы сети, посылая умышленно ошибочные запросы к веб-серверу:
GET / HTTP/1.1\r\n\r\n
Узел, на котором установлен сервер Apache, отвечает на такой запрос так, как и рассчитывал разработчик червя, то есть сообщением об ошибке, например, это может быть сообщение такого вида:
НТТР/1.1 400 Bad Request
Date: Mon, 23 Feb 2004 23:43:42 GMT
Server: Apache/1.3.19 (UNIX) (Red-Hat/Linux) mod_ssl/2.8.1
0penSSL/0.9.6 DAV/1.0.2 PHP/4.0.4pll mod_perl/1.24_01
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
Из этого ответа локатор узнает о том, что на узле установлен веб-сервер Apache версии 1.3.19. Для червя этой информации может быть достаточно, чтобы внести данный узел в число целей.
Собрав данные об узлах сети, локатор анализирует их подобно тому, как это делает хакер при поиске уязвимых узлов. Для атаки выбираются узлы, удовлетворяющие некоторым условиям, которые говорят о том, что данный узел возможно обладает уязвимостями нужного типа (для них в атакующем блоке есть средства нападения). Понятно, что при таком «предположительном» способе отбора целей не всякая предпринятая атака обязательно приводит к успеху. Неудача рассматривается атакующим блоком червя как штатная ситуация, он просто сворачивает все свои действия, направленные на не поддавшийся атаке узел, и переходит к атаке следующей цели из списка, подготовленного локатором.
Рассмотрим более подробно, как работает атакующий блок червя. Среди механизмов, позволяющих червю передать свою копию на удаленный узел, наиболее длинную историю имеет уязвимость ошибки переполнения буфера. Этот достаточно распространенный вид уязвимости связан с неправильной работой некоторых программ, когда у них переполняется буфер.
При трансляции программ, написанных на многих языках программирования, в исполняемом (объектном) модуле в сегменте локальных переменных отводится место для буферов, в которые будут загружаться данные при выполнении процедур ввода. Например, в программе веб-сервера должен быть предусмотрен буфер для размещения запросов, поступающих от клиентов. Причем размер буфера должен быть равен максимально допустимой для данного протокола длине запроса. В том же сегменте локальных переменных транслятор размещает команду возврата из процедуры, которой будет передано управление при завершении процедуры (рис. 24.6, а).
Для правильной работы программы очень важно, чтобы вводимые данные (в нашем примере — запрос клиента) всегда укладывались в границы отведенного для них буфера. В противном случае эти данные записываются поверх команды возврата из процедуры. А это, в свою очередь, означает, что процедура не сможет завершиться корректно: при передаче управления на адрес команды возврата процессор будет интерпретировать в качестве команды то значение из запроса, которое записано поверх команды возврата. Если такого рода переполнение возникло в результате случайной ошибки, то маловероятно, что значение, записанное поверх команды возврата, окажется каким-либо осмысленным кодом. Иное дело, если это переполнение было специально инициировано злоумышленником.
Рис. 24.6. Схема атаки на уязвимость ошибки переполнения буфера: а — структура адресного пространства программы до поступления злонамеренного запроса; б — после поступления злонамеренного запроса
Злоумышленник конструирует запрос так, чтобы сервер прореагировал на него предсказуемым и желательным для хакера образом. Для этого хакер посылает нестандартный запрос, размер которого превышает размер буфера (рис. 24.6, б). При этом среди данных запроса в том месте, которое приходится как раз на команду возврата, злоумышленник помещает команду перехода на вредоносный код червя. В простейшем случае таким вредоносным кодом может быть совсем небольшая программа, переданная в том же запросе.
Итак, атакующий блок червя посылает некорректный запрос уязвимому серверу, его буфер переполняется, код команды возврата из процедуры замещается кодом команды передачи управления вредоносной программе, которая выполняет копирование всех оставшихся программных модулей червя на вновь освоенную территорию.
Хотя рассмотренный подход применим к самым различным приложениям, для каждого типа приложений хакер должен сформировать специальный атакующий запрос, в котором смещение кода команды передачи управления вредоносной программе точно соответствовало бы местоположению команды возврата в процедуру атакуемого приложения. Именно поэтому для червя при проведении такого вида атак так важно получить информацию о типе и версиях программного обеспечения, установленного на узлах сети.
Помимо локатора и атакующего блока червь может включать некоторые дополнительные функциональные компоненты.
□ Блок удаленного управления и коммуникаций служит для передачи сетевым червям команд от их создателя, а также для взаимодействия червей между собой. Такая возможность позволяет хакеру координировать работу червей для организации распределенных атак отказа в обслуживании. Сетевые черви могут быть также использованы для организации параллельных вычислений при решении таких требующих большого объема вычислений задач, как, например, подбор секретного ключа шифрования или пароля.
□ Блок управления жизненным циклом может ограничивать работу червя определенным периодом времени.
□ Блок фиксации событий используется автором червя для оценки эффективности атаки, для реализации различных стратегий заражения сети или для оповещения других пользователей о повреждениях, нанесенных их компьютерам. Результатом работы данного блока может быть, например, список IP-адресов успешно атакованных машин, посланный хакеру в виде файла или сообщения электронной почты.
Вирусы
Вирус (virus) — это вредоносный программный фрагмент, который может внедряться в другие файлы.
Стремление злоумышленника сделать код вируса как можно более коротким часто ограничивает логику работы вируса очень простыми решениями, которые, однако, иногда приводят к весьма разрушительным последствиям. Так, например, один из реально существовавших вирусов, состоящий всего из 15 (!) байтов, записывал свою копию поверх других файлов в начало каждого сектора диска, в результате система очень быстро терпела крах. Некоторым утешением в таком и подобных ему случаях является то, что одновременно с крахом компьютера прекращает свое существование и вирус.
Вирус может внедрять свои фрагменты в разные типы файлов, в том числе в файлы исполняемых программ (рис. 24.7).
Рис. 24.7. Различные варианты расположения кода вируса в зараженных файлах
При этом возможны самые разные варианты: замещение кода, когда размер инфицированного файла не меняется, вставка вирусного кода целиком в начало или конец исходной программы, замена фрагментов программного кода фрагментами вируса с перестановкой замещенных фрагментов и без перестановки и т. д., и т. п. Более того, код вируса может быть зашифрован, чтобы затруднить его обнаружение антивирусными программами.
В отличие от червей вирусы (так же как и троянские программы) не содержат в себе встроенного механизма активного распространения по сети, они способны размножаться своими силами только в пределах одного компьютера. Как правило, передача копии вируса на другой компьютер происходит с участием пользователя. Например, пользователь может записать свой файл, зараженный вирусом, на сетевой файловый сервер, откуда тот может быть скопирован всеми пользователями, имеющими доступ к данному серверу. Пользователь может также передать другому пользователю съемный носитель с зараженным файлом или послать такой файл по электронной почте. То есть именно пользователь является главным звеном в цепочке распространения вируса за пределы своего компьютера. Тяжесть последствий вирусного заражения зависит от того, какие вредоносные действия были запрограммированы в вирусе злоумышленником. Это могут быть мелкие, но раздражающие неудобства (замедление работы компьютера, уменьшение размеров доступной памяти, трата рабочего времени на переустановку приложений) или серьезные нарушения безопасности, такие как утечка конфиденциальных данных, разрушение системного программного обеспечения, частичная или полная потеря работоспособности компьютерной сети.