Windows NT - краткий обзор и безопасность
Предпосылки создания Локальной Вычислительной Сети
Задачи, поставленные при создании Windows NT.
Модульная структура Windows NT
Методы защиты от дизассемблера
Принципы построения систем защиты
Моделирование обращений к ключевой дискете
Снятие программы из памяти и методы защиты
Передача фрагментированных IP пакетов с общим объемом более 64KB
Нестандартные протоколы, инкапсулированные в IP
Внедрение в сеть Internet ложного DNS-сервера путем перехвата DNS-запроса
Sniffing - прослушивание канала (возможно только в локальной сети)
Перехват пакетов на маршрутизаторе
Навязывание хосту ложного маршрута с помощью протокола ICMP
Обнаружение атак и защита от них
Сканирование сети посредством DNS
Сканирование сети методом ping sweep
Приглашение системы и опасность содержащейся в нем информации
Несколько советов при исследования сети
Некоторые другие способы получения информации
Дыры и ошибки администрирования в Windows NT
В настоящее время во всем мире активно развивается компьютерная индустрия. Производительность и возможности компьютерных систем возрастают, а, следовательно, возрастают и возможности обработки больших объёмов информации.
Также уже получили довольно широкое распространение Локальные Вычислительные Сети (ЛВС, LAN - Local Area Network). При написании данной работы передо мной стояла задача создания такой небольшой локальной сети размерами порядка 50-70 компьютеров в 4-х этажном здании. И я решил создать проект организации ЛВС небольшого предприятия, включающей в себя сервер и пользовательские компьютеры.
Сначала я решил провести небольшой обзор операционных систем, которые возможно использовать.
Операционные системы класса MS-DOS`а уже не справляются с таким потоком данных и не могут целиком использовать ресурсы современных компьютеров. Поэтому в последнее время происходит переход на более мощные и совершенные операционные системы, примером которых и являются уже получившие широкое распространение Windows 3.xx и Windows 9x, Windows Millenium, Windows NT Server и Workstation 3.0, 4.0 и последняя разработка Windows 2000 Server, Professional и Advanced, выполненные на ядре Windows NT и выпущенные корпорацией Microsoft, а также OS/2 и системы класса UNIX - Linux RedHat, BlackCat, Mandrake и т.д.
Прежде, чем выбрать систему, на которой будет основываться сеть, я хотел бы провести небольшой анализ вышеперечисленных операционных систем. Windows 3.xx скорее можно отнести к оболочке, нежели к операционной системе, т.к. он устанавливается под ОС MS-DOS, либо PC-DOS и запускается уже после загрузки DOS`а, зато работает даже на AT 286 с 1Mb RAM и имеет графический интерфейс. Windows 95 ставится минимум на AT 386 с 4Mb RAM, но его уже можно справедливо назвать операционной системой. Windows 98 и 98 SE больше адаптированы для работы с Internet (имеют Internet Explorer 4.x), но устанавливаются только минимум на AT 486 с 16Mb RAM, хотя и работают с 8Mb. Windows Millenium - последняя операционная система из "клана" 9x (она еще на ядре 9х). Windows NT Server и Workstation, на мой взгляд, наиболее удачная разработка Microsoft, выполненная уже на ядре NT и ориентированная на работу с сетью (в отличие от выше упомянутых) операционная система, которую мы и рассмотрим подробнее немного позже (т.к. она привлекла мое внимание), а пока только отмечу, что название говорит само за себя (Server и Workstation) и эта ОС "работает" всего с 12Mb RAM на AT 486. Windows 2000 Server, Professional и Advanced считаются продвинутыми ОС и устанавливаются на Р166 с 32Mb RAM, но работают ужасно медленно и, по-моему, являются некоторым "гибридом" Windows NT и 98, а названия также говорят сами за себя (Server, Professional и Advanced). Professional в 2000`ом является аналогом Workstation в NT 4.0. О OS/2. Многого сказать не могу, т.к. нет опыта работы, но следует отметить, что эта операционная система, выпущенная в начале 90-х годов, опередила свое время и является вполне конкурентно-способной операционной системой для компьютеров порядка Pentium`а и ниже. Linux RedHat, BlackCat, Mandrake - операционная система, принципиально отличающаяся от всех вышеперечисленных и, не вдаваясь в подробности, могу сказать, что эта ОС, как и Windows NT, привлекла мой интерес и завоевала симпатии. Linux - это, можно сказать, операционная система, вобравшая в себя все самое лучшее от вышеназванных, т.е. у нее есть и текстовый, и графический режимы, такие, как Gnome и GDE и, что самое удивительное, она работает практически на любой машине порядка AT 386 с 2Mb RAM и выше. Она сочетает в себе завидную безглючность и надежность, при установке может занимать от 15Mb до 1,5Gb.
Предпосылки создания Локальной Вычислительной Сети
Отталкиваясь от финансовых соображений и соображений здравого смысла, было решено поставить сервером Pentium Pro 200 Proliant Q1000 с 32Mb RAM, HDD 2Gb, CD-ROM 24x, etc. Cоединительным кабелем была выбрана неэкранированная витая пара (UTP - Unshielded Twisted Pair) 5-ой категории (Category), т.к. полоса рабочих частот до 100Mhz вполне достаточна и импеданс порядка 100 Ом. С межхабным кабелем были сомнения (коаксиал или витая пара), но после некоторых раздумий была выбрана витая пара, т.к. разнос хабов (HUB) не превышал 70 метров. Сетевые карты (Net Cards) было решено взять PCI`ные Ethernet`овские (3COM) и хабы (тоже 3COM) на 16 RJ-45 (коннектор витой пары) + 1 Coax (коннектор коаксиала).
Задачи, стоящие при создании сети:
Перейдем сразу к последнему пункту.
По объективным и субъективным причинам я решил выбрать операционную систему для сервера Windows NT 4.0 Server, а для пользовательских компьютеров (по возможности) Windows NT 4.0 Workstation. Эти причины оглашены ниже в кратком структурном осмотре этой ОС.
Задачи, поставленные при создании Windows NT.
Система Windows NT не является дальнейшим развитием ранее существовавших продуктов Microsoft. Её архитектура создавалась с нуля с учётом предъявляемых к современной операционной системе требований. То, что Windows NT имеет интерфейс, похожий на обычный Windows, говорит лишь о том, что разработчики позаботились о пользователях, привыкших к интерфейсу Windows 9x. Особенности новой системы, разработанной на основе этих требований, перечислены ниже.
Модульная структура Windows NT
Windows NT представляет из себя модульную (более совершенную, чем монолитная) операционную систему, которая состоит из отдельных взаимосвязанных, относительно простых модулей.
Краткое описание компонентов Windows NT представлено далее.
Ядро (Kernel) является основным модулем (“сердцем”) системы и координирует выполнение большинства базовых операций Windows NT. Этот компонент специальным образом оптимизирован для максимальной эффективности функционирования системы и, в первую очередь, занимается планированием действий компьютерного процессора, синхронизацией работы нескольких процессоров (если они установлены), обработкой аппаратных прерываний и нештатных ситуаций. Оно осуществляет диспетчеризацию нитей управления (threads, иногда называемых подзадачами, ответвлениями или потоками), которые являются основными объектами в планируемой модульной операционной системе.
Нити управления определяются в контексте выполняемого процесса; процесс включает адресное пространство, набор доступных процессу объектов и совокупность выполняемых в контексте процесса нитей управления. Объектами являются управляемые операционной системой ресурсы. Ядро производит диспетчеризацию нитей управления таким образом, чтобы максимально загрузить процессоры системы и обеспечить первоочередную обработку нитей с более высоким приоритетом (Всего существует 32 значения приоритета, которые сгруппированы в два класса приоритетов: real-time и variable). Подобный подход позволяет достичь максимальной эффективности операционной системы.
Подкомпоненты исполняющей системы, такие как диспетчер ввода - вывода и диспетчер процессов, используют ядро для синхронизации действий. Они также взаимодействуют с ядром для более высоких уровней абстракции, называемых объектами ядра; некоторые из этих объектов экспортируются внутри пользовательских вызовов интерфейса прикладных программ (API). Ядро управляет двумя типами объектов.
Уровень аппаратных абстракций (HAL - Hardware Abstraction Layer) представляет собой создаваемый производителями аппаратных средств слой программного обеспечения, который скрывает (или абстрагирует), особенности и различия аппаратуры от верхних уровней операционной системы. Таким образом, благодаря обеспечиваемому HAL`ом фильтру, различные аппаратные средства выглядят аналогично с точки зрения операционной системы; снимается необходимость специальной под настройки операционной системы под используемое оборудование.
При создании уровня аппаратных абстракций ставилась задача подготовки процедур, которые позволяли бы единственному драйверу конкретного устройства поддерживать функционирование этого устройства для всех платформ. HAL ориентирован на большое число разновидностей аппаратных платформ с однопроцессорной архитектурой; таким образом, для каждого из аппаратных вариантов не требуется отдельной версии операционной системы.
Процедуры HAL называются как средствами операционной системы (включая ядро), так и драйверами устройств. При работе с драйверами устройств уровень аппаратных абстракций обеспечивает поддержку различных технологий ввода - вывода (вместо традиционной ориентации на одну аппаратную реализацию или требующей значительных затрат адаптации под каждую новую аппаратную платформу). Подобный подход позволяет обеспечить легкую переносимость Windows NT с одной аппаратной платформы на другую при инсталляции, но, например, к сожалению, Windows NT 4.0 Workstation "теряет" память, т.е., если после установки на 32Mb RAM оставить только 16Mb, то он откажется загружаться, в Server`е это происходило только при скачке с 64Mb до 16Mb RAM, однако в Windows 2000 этой проблемы у меня не было.
Уровень аппаратных абстракций позволяет также “скрывать” от остальных уровней операционной системы особенности аппаратной реализации симметричных мультипроцессорных систем.
Исполняющая система Windows NT
Исполняющая система (executive), в состав которой входит ядро и уровень аппаратных абстракций (HAL), обеспечивает общий сервис системы, который могут использовать все подсистемы среды. Каждая группа сервиса находится под управлением одной из отдельных составляющих исполняющей системы (подробно рассматриваться не будут):
Монитор безопасности совместно с процессом входа в систему (Logon) и защищёнными подсистемами реализует модель безопасности Windows NT (рассмотрено далее).
Архитектура ввода - вывода содержит единственный диспетчер кэша (Cache Manager), который осуществляет кэширование для всей системы ввода - вывода. Кэширование (Caching) - метод, используемый файловой системой для увеличения эффективности работы. Вместо непосредственной записи и считывания с диска часто используемые файлы временно сохраняются в кэш - памяти, таким образом, работа с этими файлами выполняется в памяти. Операции с данными, находящимися в памяти, производятся значительно быстрее операций с данными на диске.
Диспетчер кэша использует модель отображения файла, которая интегрирована с диспетчером виртуальной памяти Windows NT. Диспетчер кэша обеспечивает службу кэширования для всех файловых систем и сетевых компонентов, функционирующих под управлением диспетчера ввода - вывода. В зависимости от объёма доступной оперативной памяти диспетчер кэша может динамически увеличивать или уменьшать размер кэша. Когда процесс открывает файл, который уже находился в кэше, диспетчер кэша просто копирует данные из кэша в виртуальное адресное пространство.
Диспетчер кэша поддерживает службы типа ленивой записи (lazy write) и ленивой фиксации (lazy commit), которые могут значительно увеличить эффективность файловой системы. В процессе ленивой записи изменения регистрируются в кэше файловой структуры, обеспечивающем более быстрый доступ данным. Позднее, когда загрузка центрального процессора снижена, диспетчер кэша заносит изменения на диск. Ленивая фиксация подобна ленивой записи. Вместо немедленной маркировки события, как успешно завершившегося, переданная информация кэшируется и позднее в фоновом режиме записывается в журнал файловой системы.
Windows NT имеет 32-битное линейное пространство памяти (здесь "линейное" означает линейность адресов памяти, примером нелинейного адресного пространства является сегментная организация памяти Intel x86). Каждому приложению доступно собственное адресное пространство размером 4 гигабайта. Обычно, верхние два гигабайта зарезервированы для системных нужд и доступны только процессам, работающим в привилегированном режиме (privileged mode). В Windows NT 4.0 Server существует возможность увеличить адресное пространство, доступное пользовательским приложениям, путем уменьшения максимального размера памяти, отводимого ядру с 2Gb до 1Gb.
Как нетрудно догадаться, менеджер памяти (memory manager) управляет памятью в Windows NT. Физическая память разделена на блоки - страницы (pages) размером по 4Kb для Intel, PPC и MIPS платформ и 8Kb для DEC Alpha. Страница является в некотором смысле неделимым объектом для менеджера памяти: все его операции над памятью сводятся к операциям над страницами.
В Windows NT страницы памяти могут быть сброшены на диск (paged), при этом они помещаются в файл подкачки (page file). Однако, не каждая страница может быть сброшена на диск: в NT все системные объекты хранятся в так называемых пулах (pools).: Сбрасываемый пул (paged pool) хранит объекты, которые могут быть при необходимости сброшены на диск. Несбрасываемай пул (non-paged pool) хранит объекты, которые не могут быть сброшены на диск ни при каких обстоятельствах.
В несбрасываемом пуле хранятся, например, ядро системы и драйвера, если в реестре в ключе: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management параметр DisablePagingExecutive имеет значение 1. Пользовательские приложения используют обычно сбрасываемый пул.
С каждым процессом ассоциирован рабочий набор (working set) - множество страниц, находящихся в физической памяти, доступных процессу. С ростом потребностей процеса в ресурсах объемы физической памяти в системе и рабочие наборы растут, а при уменьшении, соответственно, уменьшаются. Если процесс в ходе выделения памяти превысил максимальный размер рабочего набора, то его рабочий набор урезается (trim), в ходе чего наиболее "старые" страницы сбрасываются на диск.
Выделение памяти в NT аналогично UNIX. Когда процесс запрашивает память, то фактически, выделения памяти не происходит, а менеджер памяти просто резервирует какое-то количество адресов за процессом. Это множество адресов называют зарезервированной памятью (reserved memory). При попытке процесса впервые воспользоваться полученным адресным пространством, память выделяется процессу и для нее резервируется место в файле подкачки. Такая память называется выделенной (committed).
Память, которая не является выделенной или зарезервированной, называется доступной памятью (available memory). Если процесс обращается к некоторой странице, и она не может быть найдена в рабочем наборе процесса, то возникает исключение (сбой) страницы (page fault). При этом, если нужная страница была найдена в физической памяти, то эта ситуация называется легким сбоем страницы (soft page fault). Если же нужная страница должна быть подгружена с диска, то ситуация называется тяжелым сбоем страницы (hard page fault).
Файл подкачки (pagefile.sys) хранит либо сброшенные страницы, либо зарезервированное место для страниц выделенной памяти. Этим он отличается от файла подкачки в Windows 9x, где при выделении памяти для нее не резервируется место в файле подкачки, и, поэтому, можно иметь файл подкачки нулевого размера.
В архитектуре ввода - вывода Windows NT управление драйверами файловой системы осуществляет диспетчер ввода - вывода. Windows NT допускает использование множества файловых систем (Linux поддерживает использование более 230 файловых систем), включая существующие файловые системы типа FAT12, FAT16, etc. для обеспечения совместимости снизу вверх с операционными системами MS-DOS, Windows 3.x и Windows 9x (к сожалению, Windows NT 4.0 не поддерживает FAT32 (FAT - File Allocation Table) т.к. был выпущен до появления в широком пользовании этой файловой системы, и мне не попадались патчи для поддержки этой таблицы размещения файлов).
Кроме того, Windows NT также поддерживает NTFS - новую файловую систему, разработанную специально для использования с этой ОС. NTFS обеспечивает множество возможностей, включая средства восстановления файловой системы, поддержку Unicode, длинных имён файлов и в отличие от FAT в NTFS информация о файле находится непосредственно рядом с самим файлом.
Архитектура ввода - вывода Windows NT не только поддерживает традиционные файловые системы, но и обеспечивает функционирование сетевого редактора и сервера в качестве драйверов файловой системы. С точки зрения диспетчера ввода - вывода, нет никакой разницы между работой с файлом, сохранённым на удалённом компьютере сети, и работой с файлом на локальном жёстком диске. Редиректоры и серверы могут быть загружены и выгружены динамически, так же, как и любые другие драйверы; на одном компьютере может одновременно находиться большое число редиректоров и серверов.
Также, по-моему, заслуживает упоминания и администратор дисков (Disk Administrator). Что мне особенно понравилось - это возможность "на ходу" изменять конфигурацию основных и дополнительных разделов, конфигурацию логических дисков и назначение активного раздела DOS, а также то, что он может создавать диски размером более 2Gb с FAT16, которые (как ни странно) работают корректно, но только под NT. Обычный Windows видит диск, но не может работать с файлами (что не удивительно). Хоть и задумывалось, что NTFS будет поддерживать диски размером до 16 гексабайт, но Windows NT откажется устанавливаться на системный раздел размером больше 4Gb, но, опираясь на собственный опыт, я не рекомендую ставить Windows NT на раздел емкости больше 2Gb т.к. возможны сбои при загрузке системы, хотя NTFS корректно работает с файлами размером до 18Gb.
Следующим типом драйверов, присутствующих в качестве компонента в архитектуре ввода - вывода, являются сетевые драйверы. Windows NT включает интегрированные возможности работы с сетями и поддержку распределённых приложений. Работа с сетями в Windows NT обеспечивается рядом сетевых драйверов и программным обеспечением.
Редиректоры и серверы функционируют как драйверы файловой системы и выполняются на уровне интерфейса поставщика или ниже, где находятся NetBIOS и Windows - сокет.
Драйверы транспортного протокола общаются с редиректорами и серверами через уровень, называемый интерфейсом транспортного драйвера (TDI - Transport Driver Interface). Windows NT включает следующие транспортные средства:
В нижней части сетевой архитектуры находится драйвер платы сетевого адаптера. Windows NT в настоящее время поддерживает драйверы устройств, выполненные в соответствии со спецификацией NDIS (Network Device Inerface Specification) версии 3.0. NDIS предоставляет гибкую среду обмена данными между транспортными протоколами и сетевыми адаптерами. NDIS 3.0 позволяет отдельному компьютеру иметь несколько установленных в нём плат сетевого адаптера. В свою очередь, каждая плата сетевого адаптера может поддерживать несколько транспортных протоколов для доступа к различным типам сетевых станций. Если же рассматривать сетевые ресурсы в обычном Windows 9x, то сразу видно, что возможна поддержка лишь одного типа серверов, т.е. если сеть выполнена на домене (DOMAIN) NT, то вход в Microsoft сеть будет весьма затруднителен, т.к. придется переопределять тип системных ресурсов.
Windows NT может работать и через службу удаленного доступа к сети (RAS - Remote Access Service), которая подразумевает использование модема и телефонной линии для доступа к ресурсам удаленной системы или сети. Не вдаваясь в подробности, скажу, что сценарии работы с модемом в Windows NT принципиально не отличаются от сценариев обычного Windows.
В любых программных средствах: браузере, операционной системе (в том числе и в NT), были и, очевидно, будут обнаруживаться ошибки, позволяющие часто выудить информацию о пользователе и о его системе больше, чем он бы этого хотел.
Все средства взлома и изучения программного кода можно разделить на три класса:
Для защиты от этих средств используются различные методы, и большинство из них базируется на использовании принципа фон Неймана, который заключается в том, что программы и данные выглядят и хранятся одинаково, в результате чего программа может модифицировать саму себя. Этого бывает достаточно для подавления средств статического анализа (поэтому они обычно и непригодны для исследования защищенных программ). В случае защиты от динамических средств может быть использован тот факт, что изучаемая программа запускается в возмущенной самим средством операционной среде и может это распознать.
Сейчас мы рассмотрим общие положения по защите данных, которые вполне актуальны и в Windows NT (в NTFS5 используется дополнительное кодирование при затиси на диск).
Методы защиты от дизассемблера
Неважно, насколько мощной сделана защита от отладчика, но эта защита ничего не значит при использовании дизассемблера. Вполне объяснимо желание подавляющего большинства программистов работать с твердой копией исследуемой программы. Вследствии этого первоочередной проблемой, с которой сталкивается злоумышленник при взломе практически любой защиты является дизассеблирование исполняемого кода программы и получение листинга с мнемоническим изображением ассемблерных команд.
Для защиты от дизассемблеров приходится использовать специальные методы, которые приведены ниже:
Принципы построения систем защиты
Система защиты - это комплекс программных средств, обеспечивающих затруднение или запрещение нелегального распространения, использования и/или изменения программных продуктов и файлов.
Надежность системы защиты - это способность противостоять попыткам проникновения в алгоритм ее работы и обхода механизмов защиты.
Код системы защиты не должен содержать операций сравнения. Если операций сравнения нельзя избежать, то нужно использовать не контрольные значения, а необратимую функцию от них.
Любую систему защиты от трассировки можно представить в виде:
В начале программы должны быть выполнены действия, которые невозможно скрыть от трассировки. Поэтому программа всегда начинается с несекретной части, в которой выполняются действия, не являющиеся принципиальными для понимания логики работы программы. Перед тем как перейти к выполнению "секретной" части, необходимо подключить процедуру, предотвращающую возможность дальнейшей трассировки.
Недостатки:
Нет защиты от дизассемблирования.
Эти проблемы можно решить, зашифровав коды привратника и секретной части программы перед тем, как передать ей управление. Для большей надежности можно шифровать и вторую несекретную часть программы.
Расшифровка может выполняться по заложенному в алгоритму, использующему ключ, который определяется основной программой. В результате для каждой программы будет получена уникальная гамма шифра.
Моделирование обращений к ключевой дискете
Если не удается скопировать ключевую дискету, можно попробовать имитировать необходимый формат с помощью специальной программы, возвращающей в программу защиты все те коды завершения и ошибки, как при нормальной работе. Чаще всего такой метод применяется когда защита проверяет наличие какого-либо повреждения на поверхности дискеты, причем делает это через функции BIOS/INT 13h. В этом случае весь процесс тоже длится не более нескольких минут. Хотя даже обращения к контроллеру гибкого диска через порты можно отследить, отлаживая программу в защищенном режиме. В конце-концов может помочь и IRQ 6/INT 0Eh вырабатываемый контроллером по выполнении команды. Также (или почти также) можно имитировать обращения к электронному ключу на LPT или COM порту.
Снятие программы из памяти и методы защиты
В последнее время появилось множество программ, снимающих навесные защиты методом снятия из памяти. Принцип здесь очень прост. После того как защита отработала и дала "ОК" на выполнение, в памяти находится исходная программа в таком же виде, как будто ее запустили обычным образом, без всяких защит. Если в этот момент содержимое ОЗУ записать на диск, то из получившегося dump'а можно извлечь первоначальную программу. В лучшем случае получается работоспособный EXE-файл, практически идентичный первоначальной программе (правда для этого процесс получения dump'а нужно будет повторить два раза, для нахождения элементов таблицы перемещений).
От снятия из памяти основной программы может защитить лишь:
Эмулирующие отладчики и виртуальные машины
В дополнение к обычным отладчикам существует особый класс программ, называемых эмулирующими отладчиками. Они не пытаются корректно выполнять трассировку работающей программы, которая, к тому же, активно этому сопротивляется, а сами интерпретируют и выполняют ее машинные инструкции. Существуют также отладчики с неполной эмуляцией, которые эмулируют только "опасные" команды, а остальные выполняют на реальном процессоре.
Такие отладчики нейтрализуют практически все методы противодействия отладке:: блокировку прерываний и устройств, работу с контроллерами через порты, подсчеты контрольных сумм для выявления контрольных точек, контроль стека, а также, методы основанные на особенностях процессора и OС. Плюс ко всему, эти отладчики имеют просто фантастические возможности для отладки: можно поставить контрольную точку по записи/чтению/или еще чему угодно на любую область памяти или ряд портов ввода/вывода, на несоответствие конвейера команд и ОЗУ.
Единственное, что пока можно им противопоставить (насколько я знаю), - это временные измерения, "параллельные процессы" и т. д., но и это до тех пор, пока не появится эмулятор микросхемы таймера - 8254 - способный синхронно работать с эмулятором процессора.
Повышение интереса к TCP/IP-сетям обусловлено бурным ростом сети Internet. Однако это заставляет задуматься над тем, как защитить свои информационные ресурсы от атак из внешней сети. Если вы подключены к Internet, Ваша система может быть атакована. Это на прямую связано со структурой безопасности Windows NT т.к. эта ОС ориентирована на работу с сетью (в том числе и Internet).
Протоколы семейства IP являются основой построения сетей Intranet и глобальной сети Internet. Несмотря на то, что разработка TCP/IP финансировалась Министерством обороны США, TCP/IP не обладает абсолютной защищенностью и допускает различные типы атак, рассмотренные ниже.
Для осуществления подобных атак “злоумышленник” должен иметь контроль хотя бы над одной системой, подключенной к Internet.
Одним из подходов к анализу угроз безопасности компьютерных систем является выделение в отдельный класс угроз, присущих только компьютерным сетям. Данный класс угроз называется классом удаленных атак. Этот подход к классификации представляется правомочным из-за наличия принципиальных особенностей в построении сетевых ОС. Основной особенностью любой сетевой операционной системы является то, что ее компоненты распределены в пространстве, и связь между ними физически осуществляется при помощи сетевых соединений (рассмотрено ранее) и программно - при помощи механизма сообщений. При этом все управляющие сообщения и данные, пересылаемые одной компонентой сетевой ОС другой компоненте, передаются по сетевым соединениям в виде пакетов обмена. Эта особенность и является основной причиной появления нового класса угроз - удаленных атак. К сожалению и Windows NT, как и другие ОС, ориентированные на работу с сетью, использует этот же алгоритм.
При данном типе атак “злоумышленник” взаимодействует с получателем информации, отправителем и/или промежуточными системами, возможно, модифицируя и/или фильтруя содержимое TCP/IP-пакетов. Данные типы атак часто кажутся технически сложными в реализации, однако для нормального программиста не составляет труда реализовать соответствующий инструментарий. Возможность формирования произвольных IP-пакетов является ключевым пунктом для осуществления активных атак.
Удаленные атаки можно классифицировать по типу воздействия на активные или пассивные.
Активные атаки можно разделить на две части. В первом случае “злоумышленник” предпринимает определенные шаги для перехвата и модификации сетевого потока или попыток “притвориться” другой системой. Во втором случае протокол TCP/IP используется для того, чтобы привести “систему-жертву” в нерабочее состояние.
При пассивных атаках “злоумышленник” никаким образом не обнаруживает себя и не вступает напрямую во взаимодействие с другими системами. Фактически все сводится к наблюдению за доступными данными или сессиями связи. Хотя пассивные атаки могут нарушать политику безопасности сети.
Идея выявления атаки проста: любой атаке соответствует определённый сетевой трафик, поэтому, анализ трафика позволяет определить атаку и засечь "следы" атакующего, т.е. определить IP-адреса с которых осуществлялось информационное воздействие. Таким образом, выявление атак осуществляется методом контроля информационных потоков.
Следует помнить, что грубые методы типа пингования большими пакетами, могут заваливать любую Internet-машину или подсеть, независимо от конфигурации.
При передачи пакета данных протокола IP по сети может осуществляться деление этого пакета на несколько фрагментов. В последствии, при достижении адресата, пакет восстанавливается из этих фрагментов. “Злоумышленник” может инициировать посылку большого числа фрагментов, что приводит к переполнению программных буферов на приемной стороне и, возможно, к аварийному завершению системы.
Передача фрагментированных IP пакетов с общим объемом более 64KB
Количество реализаций атак, использующих возможность фрагментации IP пакетов, достаточно велико. На компьютер-жертву передается несколько фрагментированных IP пакетов, которые при сборке образуют один пакет размером более 64К (максимальный размер IP пакета равен 64К минус длина заголовка). Данная атака была эффективна против компьютеров с ОС Windows. При получении такого пакета Windows NT, не имеющая специального патча icmp-fix, "зависает" или аварийно завершается. Другие варианты подобных атак используют неправильные смещения в IP фрагментах, что приводит к некорректному выделению памяти, переполнению буферов и, в конечном итоге, к сбоям в работе систем.
Противодействие: для выявления таких атак необходимо осуществлять и анализировать сборку пакетов "на лету", а это существенно повысит требования к аппаратному обеспечению.
Появился он потому, что программа ping, предназначенная для оценки качества линии, имеет ключ для "агрессивного" тестирования. В этом режиме запросы посылаются с максимально возможной скоростью и программа позволяет оценить, как работает сеть при максимальной нагрузке.
Данная атака требует от “злоумышленника” доступа к быстрым каналам в Internet.
Вспомним, как работает ping. Программа посылает ICMP-пакет типа ECHO REQUEST, выставляя в нем время и его идентификатор. Ядро машины-получателя отвечает на подобный запрос пакетом ICMP ECHO REPLY. Получив его, ping выдает скорость прохождения пакета.
При стандартном режиме работы пакеты высылаются через некоторые промежутки времени, практически не нагружая сеть. Но в "агрессивном" режиме поток ICMP echo request/reply-пакетов может вызвать перегрузку небольшой линии, лишив ее способности передавать полезную информацию.
Естественно, случай с ping является частным случаем более общей ситуации, связанный с перегрузкой каналов. Например, “злоумышленник” может посылать множество UDP-пакетов на 19-й порт машины-жертвы, и если она, следуя общепринятым правилам, имеет на 19-м UDP-порту знакогенератор, отвечающий на пакеты строчками по 80 байт.
Заметим, что “злоумышленник” может также подделывать обратный адрес подобных пакетов, затрудняя его обнаружение. Отследить его поможет разве что скоординированная работа специалистов на промежуточных маршрутизаторах, что практически нереально.
Один из вариантов атаки - посылать ICMP echo request-пакеты с исходным адресом, указывающим на жертву, на broadcast-адреса крупных сетей. В результате каждая из машин ответит на этот фальшивый запрос, и машина-отправитель получит большое количество ответов. Посылка множества broadcast-echo requests от имени "жертвы" на broadcast-адреса крупных сетей, может вызвать резкое заполненение канала "жертвы".
Приметы затопления - резко возросшая нагрузка на сеть (или канал) и повышение количества специфических пакетов (таких, как ICMP).
В качестве защиты можно использовать настройку маршрутизаторов, при которых они будут фильтровать тот же ICMP трафик, превышающий некоторую заданную заранее величину (пакетов/ед. времени). Для того чтобы убедиться, что Ваши машины не могут служить источником ping flood'а, ограничьте доступ к ping.
Сущность его в следующем: на машину “жертвы” посылается сильно фрагментиpованный ICMP пакет большого pазмеpа (64KB). Реакцией Windows-систем на получение такого пакета является безоговорочное повисание, включая мышь и клавиатуру. Программа для атаки широко доступна в сети в виде исходника на C++ и в виде запускаемых файлов для некоторых версий Unix. Любопытно, что в отличие от WinNuke жертвой такой атаки могут стать не только Windows и Windows NT машины, атаке подвержены MacOS и некоторые веpсии Unix. Преимущества такого способа атаки в том, что обычно firewall пропускает ICMP пакеты, а если firewall и настроен на фильтрацию адресов посылателей, то, используя нехитрые приемы spoofing, можно обмануть и такой firewall. Недостаток PingOfDeath в том, что для одной атаки надо переслать более 64KB по сети, что делает его вообще говоря малопpименимым для шиpокомасштабных дивеpсий.
Передаваемый пакет UDP содержит неправильный формат служебных полей. Некоторые старые версии сетевого программного обеспечения приводят при получении подобного пакета к аварийному завершению системы.
Затопление SYN-пакетами - самый известный способ "забить" информационный канал.
Вспомним, как работает TCP/IP в случае входящих соединений. Система отвечает на пришедший C-SYN-пакет S-SYN/C-ACK-пакетом, переводит сессию в состояние SYN_RECEIVED и заносит ее в очередь. Если в течении заданного времени от клиента не придет S-ACK, соединение удаляется из очереди, в противном случае соединение переводится в состояние ESTABLISHED.
Рассмотрим случай, когда очередь входных соединений уже заполнена, а система получает SYN-пакет, приглашающий к установке соединения. По RFC он будет молча проигнорирован.
Затопление SYN-пакетами основано на переполнении очереди сервера, после чего сервер перестает отвечать на запросы пользователей. Самая известная атака такого рода - атака на Panix, нью-йоркского провайдера. Panix не работал в течение 2-х недель.
В различных системах работа с очередью реализована по разному. Так, в BSD-системах, каждый порт имеет свою собственную очередь размером в 16 элементов. В системах SunOS, напротив, такого разделения нет и система просто располагает большой общей очередью. Соответственно, для того, чтобы заблокировать, к примеру, WWW-порт на BSD достаточно 16 SYN-пакетов, а для Solaris 2.5 их количество будет гораздо больше.
После истечения некоторого времени (зависит от реализации) система удаляет запросы из очереди. Однако ничего не мешает “злоумышленнику” послать новую порцию запросов. Таким образом, даже находясь на соединение 2400 bps, злоумышленник может посылать каждые полторы минуты по 20-30 пакетов на FreeBSD-сервер, поддерживая его в нерабочем состоянии (естественно, эта ошибка была скорректирована в последних версиях FreeBSD).
Как обычно, “злоумышленник” может воспользоваться случайными обратными IP-адресами при формировании пакетов, что затрудняет его обнаружение и фильтрацию его трафика.
Детектирование несложно - большое количество соединений в состоянии SYN_RECEIVED, игнорирование попыток соединиться с данным портом. В качестве защиты можно использовать патчи, которые реализуют автоматическое "прорежение" очереди. Для того, чтобы узнать, есть ли у Вашей системы защита от SYN-затопления, обратитесь к поставщику системы.
Другой вариант защиты - настроить firewall так, что бы все входящие TCP/IP-соединения устанавливал он сам, и только после этого перебрасывал их внутрь сети на заданную машину. Это позволит Вам ограничить SYN-затопление и не пропустить его внутрь сети.
Эта атака относится к атакам запрещения обслуживания, результатом которой является невозможность предоставления услуг. Атака обычно направлена на определённую, конкретную службу, например telnet или ftp. Она заключается в передаче пакетов установления соединения на порт, соответствующий атакуемой службе.
При получении запроса система выделяет ресурсы для нового соединения, после чего пытается ответить на запрос (послать "SYN-ACK") по недоступному адресу. По умолчанию NT версий 3.5-4.0 будет пытаться повторить подтверждение 5 раз - через 3, 6, 12, 24 и 48 секунд. После этого еще 96 секунд система может ожидать ответ, и только после этого освободит ресурсы, выделенные для будущего соединения. Общее время занятости ресурсов - 189 секунд.
Нестандартные протоколы, инкапсулированные в IP
Пакет IP содержит поле, определяющее протокол ин-капсулированного пакета (TCP, UDP, ICMP). Злоумышленники могут использовать нестандартное значение данного поля для передачи данных, которые не будут фиксироваться стандартными средствами контроля информационных потоков.
Данный протокол не содержит механизмов аутентификации, вследствие чего является привлекательным для “злоумышленников”.
Атака smurf заключается в передаче в сеть широковещательных ICMP запросов от имени компьютера-жертвы. В результате компьютеры, принявшие такие широковещательные пакеты, отвечают компьютеру-жертве, что приводит к существенному снижение пропускной способности канала связи и, в ряде случаев, к полной изоляции атакуемой сети. Атака smurf исключительно эффективна и широко распространена.
Противодействие: для распознавания данной атаки необходимо анализировать загрузку канала и определять причины снижения пропускной способности.
Атака Land использует уязвимости реализаций стека TCP/IP в некоторых ОС. Она заключается в передаче на открытый порт компьютера-жертвы TCP-пакета с установленным флагом SYN, причем исходный адрес и порт такого пакета соответственно равны адресу и порту атакуемого компьютера. Это приводит к тому, что компьютер-жертва пытается установить соединение сам с собой, в результате чего сильно возрастает загрузка процессора и может произойти "подвисание" или перезагрузка.
Противодействие: защититься от данной атаки можно, например, установив фильтр пакетов между внутренней сетью и Internet, задав на нём правило фильтрации, указывающее подавлять пакеты, пришедшие из Internet, но с исходными IP адресами компьютеров внутренней сети.
Внедрение в сеть Internet ложного сервера путем создания направленного "шторма" ложных DNS-ответов на атакуемый хост
Другой вариант осуществления удаленной атаки, направленной на службу DNS, основан на второй разновидности типовой удаленной атаки "ложный объект вычислительной сети". В этом случае атакующий осуществляет постоянную передачу на атакуемый хост заранее подготовленного ложного DNS-ответа от имени настоящего DNS-сервера без приема DNS-запроса. Другими словами, атакующий создает в сети Internet направленный "шторм" ложных DNS-ответов. Это возможно, так как обычно для передачи DNS-запроса используется протокол UDP, в котором отсутствуют средства идентификации пакетов. Единственными критериями, предъявляемыми сетевой ОС хоста к полученному от DNS-сервера ответу, является, во-первых, совпадение IP-адреса отправителя ответа с IP-адресом DNS-сервера, во-вторых, чтобы в DNS-ответе было указано то же имя, что и в DNS-запросе, в-третьих, DNS-ответ должен быть направлен на тот же UDP-порт, с которого был послан DNS-запрос (в данном случае это первая проблема для атакующего), и, в-четвертых, в DNS-ответе поле идентификатора запроса в заголовке DNS (ID) должно содержать то же значение, что и в переданном DNS-запросе (а это вторая проблема).
В данном случае, так как атакующий не имеет возможности перехватить DNS-запрос, то основную проблему для него представляет номер UDP-порта, с которого был послан запрос. Но номер порта отправителя принимает ограниченный набор значений (1023 ?), поэтому атакующему достаточно действовать простым перебором, направляя ложные ответы на соответствующий перечень портов. На первый взгляд второй проблемой может быть двухбайтовый идентификатор DNS-запроса, но в данном случае он либо равен единице, либо имеет значение близкое к нулю (один запрос - ID увеличивается на 1).
Поэтому для осуществления данной удаленной атаки атакующему необходимо выбрать интересующий его хост (А), маршрут к которому требуется изменить так, чтобы он проходил через ложный сервер - хост атакующего. Это достигается постоянной передачей (направленным "штормом") атакующим ложных DNS-ответов на атакуемый хост от имени настоящего DNS-сервера на соответствующие UDP-порты. В этих ложных DNS-ответах указывается в качестве IP-адреса хоста А IP-адрес атакующего. Далее атака развивается по следующей схеме. Как только цель атаки (атакуемый хост) обратится по имени к хосту А, то от данного хоста в сеть будет передан DNS-запрос, который атакующий никогда не получит, но этого ему и не требуется, так как на хост сразу же поступит постоянно передаваемый ложный DNS-ответ, который и будет воспринят ОС атакуемого хоста как настоящий ответ от DNS-сервера. Атака состоялась и теперь атакуемый хост будет передавать все пакеты, предназначенные для А, на IP-адрес хоста атакующего, который, в свою очередь, будет переправлять их на А, воздействуя на перехваченную информацию по схеме "ложный объект распределенной ВС".
Рассмотрим функциональную схему предложенной удаленной атаки на службу DNS:
Таким образом, реализация данной удаленной атаки, использующей пробелы в безопасности службы DNS, позволяет из любой точки сети Internet нарушить маршрутизацию между двумя заданными объектами. То есть данная удаленная атака осуществляется межсегментно по отношению к цели атаки и угрожает безопасности любого хоста Internet, использующего обычную службу DNS.
Внедрение в сеть Internet ложного сервера путем перехвата DNS - запроса или создания направленного "шторма" ложных DNS - ответов на атакуемый DNS - сервер
Из схемы удаленного DNS-поиска следует, что в том случае, если указанное в запросе имя DNS-сервер не обнаружил в своей базе имен, то запрос отсылается сервером на один из корневых DNS-серверов, адреса которых содержатся в файле настроек сервера root.cache. То есть, в том случае, если DNS-сервер не имеет сведений о запрашиваемом хосте, то он пересылает запрос далее, а значит, теперь сам DNS-сервер является инициатором удаленного DNS-поиска. Поэтому ничто не мешает атакующему, действуя описанными в предыдущем пункте методами, направить свою атаку на DNS-сервер. То есть, в качестве цели атаки теперь будет выступать не хост, а DNS-сервер и ложные DNS-ответы будут направляться атакующим от имени корневого DNS-сервера на атакуемый DNS-сервер. При этом важно учитывать следующую особенность работы DNS-сервера. Для ускорения работы каждый DNS-сервер кэширует в области памяти свою таблицу соответствия имен и IP-адресов хостов. В том числе в кэш заносится динамически изменяемая информация об именах и IP-адресах хостов, найденных в процессе функционирования DNS-сервера. То есть, если DNS-сервер, получив запрос, не находит у себя в кэш-таблице соответствующей записи, он пересылает ответ на следующий сервер и, получив ответ, заносит найденные сведения в кэш-таблицу в память. Таким образом, при получении следующего запроса DNS-серверу уже не требуется вести удаленный поиск, так как необходимые сведения уже находятся у него в кэш-таблице.
Из анализа только что подробно описанной схемы удаленного DNS-поиска становится очевидно, что в том случае, если в ответ на запрос от DNS-сервера атакующий направит ложный DNS-ответ (или в случае "шторма" ложных ответов будет вести их постоянную передачу), то в кэш-таблице сервера появится соответствующая запись с ложными сведениями и, в дальнейшем, все хосты, обратившиеся к данному DNS-серверу, будут дезинформированы и при обращении к хосту, маршрут к которому атакующий решил изменить, связь с ним будет осуществляться через хост атакующего по схеме "ложный объект ВС". И с течением времени эта ложная информация, попавшая в кэш DNS-сервера, будет распространяться на соседние DNS-серверы высших уровней, а, следовательно, все больше хостов в Internet будут дезинформированы и атакованы.
Очевидно, что в том случае, если атакующий не может перехватить DNS-запрос от DNS-сервера, то для реализации атаки ему необходим "шторм" ложных DNS-ответов, направленный на DNS-сервер. При этом возникает следующая основная проблема, отличная от проблемы подбора портов в случае атаки, направленной на хост. Как уже отмечалось ранее DNS-сервер, посылая запрос на другой DNS-сервер, идентифицирует этот запрос двухбайтовым значением (ID). Это значение увеличивается на единицу с каждым передаваемым запросом. Узнать атакующему это текущее значение идентификатора DNS-запроса не представляется возможным. Поэтому, ничего кроме перебора 216 возможных значений ID предложить что-либо достаточно сложно. Зато исчезает проблема перебора портов, так как все DNS-запросы передаются DNS-сервером на 53 порт.
Следующая проблема, являющаяся условием осуществления этой удаленной атаки на DNS-сервер при направленном "шторме" ложных DNS-ответов состоит в том, что атака будет иметь успех, только в том случае, если DNS-сервер пошлет запрос на поиск определенного имени (которое содержится в ложном DNS-ответе). DNS-сервер посылает этот столь необходимый и желанный для атакующего запрос в том случае, если на него прийдет DNS-запрос от какого-либо хоста на поиск данного имени и этого имени ни окажется в кэш-таблице DNS-сервера. В принципе этот запрос может прийти когда угодно и атакующему может быть придется ждать результатов атаки сколь угодно долго. Однако ни что не мешает атакующему, не дожидаясь никого, самому послать на атакуемый DNS-сервер подобный DNS-запрос и спровоцировать DNS-сервер на поиск указанного в запросе имени. Тогда эта атака с большой вероятностью будет иметь успех практически сразу же после начала ее осуществления.
Внедрение в сеть Internet ложного DNS-сервера путем перехвата DNS-запроса
В данном случае это удаленная атака на базе стандартной типовой удаленной атаки, связанной с ожиданием поискового DNS-запроса. Перед тем, как рассмотреть алгоритм атаки на службу DNS необходимо обратить внимание на следующие тонкости в работе этой службы. Во-первых, по умолчанию служба DNS функционирует на базе протокола UDP (хотя возможно и использование протокола TCP) что, естественно, делает ее менее защищенной, так как протокол UDP в отличие от TCP вообще не предусматривает средств идентификации сообщений. Для того, чтобы перейти от UDP к TCP администратору DNS - сервера прийдется очень серьезно изучить документацию. Кроме того, этот переход несколько замедлит систему, так как, во-первых, при использовании TCP требуется создание виртуального соединения и, во-вторых, конечные сетевые ОС вначале посылают DNS-запрос с использованием протокола UDP и в том случае, если им в придет специальный ответ от DNS-сервера, то тогда сетевая ОС пошлет DNS-запрос с использованием TCP. Во-вторых, следующая тонкость, на которую требуется обратить внимание, состоит в том, что значение поля "порт отправителя" в UDP-пакете вначале принимает значение 1023(?) и, затем увеличивается с каждым переданным DNS-запросом. В-третьих, значение идентификатора (ID) DNS-запроса ведет себя следующим образом. В случае передачи DNS-запроса с хоста его значение зависит от конкретного сетевого приложения, вырабатывающего DNS-запрос. Эксперименты автора показали, что в случае передачи запроса из оболочки командного интерпретатора операционных систем Linux и Windows '95 (например, ftp nic.funet.fi) это значение всегда равняется единице. В том случае, если DNS-запрос передается из Netscape Navigator, то с каждым новым запросом сам броузер увеличивает это значение на единицу. В том случае, если запрос передается непосредственно DNS-сервером, то сервер увеличивает это значение идентификатора на единицу с каждым вновь передаваемым запросом. Все эти тонкости имеют значение в случае атаки без перехвата DNS-запроса.
Для реализации атаки путем перехвата DNS-запроса атакующему необходимо перехватить DNS-запрос, извлечь из него номер UDP-порта отправителя запроса, двухбайтовое значение ID идентификатора DNS-запроса и искомое имя и, затем, послать ложный DNS-ответ на извлеченный из DNS-запроса UDP-порт, в котором указать в качестве искомого IP-адреса настоящий IP-адрес ложного DNS-сервера. Это позволит в дальнейшем полностью перехватить и активно воздействовать по схеме "Ложный объект РВС" на трафик между "обманутым" хостом и сервером.
Рассмотрим обобщенную схему работы ложного DNS - сервера:
Необходимым условием осуществления данного варианта атаки является перехват DNS-запроса. Это возможно только в том случае, если атакующий находится либо на пути основного трафика либо в сегменте настоящего DNS-сервера. Выполнение одного из этих условий местонахождения атакующего в сети делает подобную удаленную атаку трудно осуществимой на практике (попасть в сегмент DNS-сервера и тем более в межсегментный канал связи атакующему скорее всего не удастся). Однако в случае выполнения этих условий возможно осуществить межсегментную удаленную атаку на сеть Internet.
Отметим, что практическая реализация данной удаленной атаки выявила ряд интересных особенностей в работе протокола FTP и в механизме идентификации TCP-пакетов. В случае, если FTP-клиент на хосте подключился к удаленному FTP-серверу через ложный DNS-сервер, то оказывалось, что каждый раз после выдачи пользователем прикладной команды FTP (например, ls, get, put и т. д.) FTP-клиент вырабатывал команду PORT, которая состояла в передаче на FTP-сервер в поле данных TCP-пакета номера порта и IP-адреса клиентского хоста (особый смысл в этих действиях трудно найти - зачем каждый раз передавать на FTP-сервер IP-адрес клиента)! Это приводило к тому, что если на ложном DNS-сервере не изменить передаваемый IP-адрес в поле данных TCP-пакета и передать этот пакет на FTP-сервер по обыкновенной схеме, то следующий пакет будет передан FTP-сервером на хост FTP-клиента, минуя ложный DNS-сервер и, что самое интересное, этот пакет будет воспринят как нормальный пакет, и, в дальнейшем, ложный DNS-сервер потеряет контроль над трафиком между FTP-сервером и FTP-клиентом! Это связано с тем, что обычный FTP-сервер не предусматривает никакой дополнительной идентификации FTP-клиента, а перекладывает все проблемы идентификации пакетов и соединения на более низкий уровень - уровень TCP.
DNS flooding - это атака, направленная на сервера имён Internet. Она заключается в передаче большого числа DNS запросов и приводит к тому, что у пользователей нет возможности обращаться к сервису имен и, следовательно, обеспечивается невозможность работы обычных пользователей.
Противодействие: для выявления данной атаки необходимо анализировать загрузку DNS сервера и выявлять источники запросов.
Результатом данной атаки является внесение навязываемого соответствия между IP адресом и доменным именем в кэш DNS сервера. В результате успешного проведения такой атаки все пользователи DNS севера получат неверную информацию о доменных именах и IP адресах. Данная атака характеризуется большим количеством DNS пакетов с одним и тем же доменным именем. Это связано с необходимостью подбора некоторых параметров DNS обмена.
Противодействие: для выявления такой атаки необходимо анализировать содержимое DNS трафика.
Большое количество атак в сети Internet связано с подменой исходного IP адреса. К таким атакам относится и syslog spoofing, которая заключается в передаче на компьютер жертву сообщения от имени другого компьютера внутренней сети. Поскольку протокол syslog используется для ведения системных журналов, путем передачи ложных сообщений на компьютер-жертву можно навязать информацию или замести следы несанкционированного доступа.
Противодействие: выявление атак, связанных с подменой IP адресов, возможно при контроле получения на одном из интерфейсов пакета с исходным адресом этого же интерфейса или при контроле получения на внешнем интерфейсе пакетов с IP адресами внутренней сети.
Злоумышленник отправляет в сеть пакеты с ложным обратным адресом. С помощью этой атаки злоумышленник может переключать на свой компьютер соединения, установленные между другими компьютерами. При этом права доступа злоумышленника становятся равными правам того пользователя, чье соединение с сервером было переключено на компьютер злоумышленника.
Sniffing - прослушивание канала (возможно только в локальной сети)
Практически все сетевые карты поддерживают возможность перехвата пакетов, передаваемых по общему каналу локальной сети. При этом рабочая станция может принимать пакеты, адресованные другим компьютерам того же сегмента сети. Таким образом, весь информационный обмен в сегменте сети становится доступным злоумышленнику. Для успешной реализации этой атаки компьютер злоумышленника должен располагаться в том же сегменте локальной сети, что и атакуемый компьютер.
Перехват пакетов на маршрутизаторе
Сетевое программное обеспечение маршрутизатора имеет доступ ко всем сетевым пакетам, передаваемым через данный маршрутизатор, что позволяет осуществлять перехват пакетов. Для реализации этой атаки злоумышленник должен иметь привилегированный доступ хотя бы к одному маршрутизатору сети. Поскольку через маршрутизатор обычно передается очень много пакетов, тотальный их перехват практически невозможен. Однако отдельные пакеты вполне могут быть перехвачены и сохранены для последующего анализа злоумышленником. Наиболее эффективен перехват пакетов FTP, содержащих пароли пользователей, а также электронной почты.
Навязывание хосту ложного маршрута с помощью протокола ICMP
В сети Internet существует протокол ICMP (Internet Control Message Protocol), одной из функцией которого является информирование хостов о смене текущего маршрутизатора. Данное управляющее сообщение носит название redirect. Существует возможность посылки с любого хоста в сегменте сети ложного redirect-сообщения от имени маршрутизатора на атакуемый хост. В результате у хоста изменяется текущая таблица маршрутизации и, в дальнейшем, весь сетевой трафик данного хоста будет проходить, например, через хост, отославший ложное redirect-сообщение. Таким образом возможно осуществить активное навязывание ложного маршрута внутри одного сегмента сети Internet.
Hаpяду с обычными данными пеpесылаемыми по TCP соединению cтандаpт пpедустатpивает также пеpедачу сpочных (Out Of Band) данных. Hа уpовне фоpматов пакетов TCP это выpажается в ненулевом urgent pointer. У большинства PC с установленным Windows пpисутствует сетевой пpотокол NetBIOS, котоpый использует для своих нужд 3 IP поpта: 137, 138, 139. Как выяснилось, если соединиться с Windows машиной в 139 поpт и послать туда несколько байт OutOfBand данных, то pеализация NetBIOS-а не зная что делать с этими данными попpосту подвешивает или пеpезагpужает машину. Для Windows 9x это обычно выглядит как синий текстовый экpан, сообщающий об ошибке в дpайвеpе TCP/IP и невозможность pаботы с сетью до пеpезагpузки ОC. Windows NT 4.0 без сеpвис паков пеpезагpужается, NT 4.0 со втоpым сеpвис паком выпадает в синий экpан.
Аналогичная посылка данных в 135 и некоторые другие порты приводит к значительной загрузке процессора RPCSS.EXE. На NTWS это приводит к существенному замедлению работы, NTS практически замораживается.
В сети Internet каждый хост имеет уникальный IP-адрес, на который поступают все сообщения из глобальной сети. Однако протокол IP это не столько сетевой, сколько межсетевой протокол обмена, предназначенный для связи между объектами в глобальной сети. На канальном уровне пакеты адресуются по аппаратным адресам сетевых карт. В сети Internet для взаимно однозначного соответствия IP и Ethernet адресов используется протокол ARP (Address Resolution Protocol). Первоначально хост может не иметь информации о Ethernet-адресах других хостов, находящихся с ним в одном сегменте, в том числе и о Ethernet-адресе маршрутизатора. Соответственно, при первом обращении к сетевым ресурсам хост отправляет широковещательный ARP-запрос, который получат все станции в данном сегменте сети. Получив данный запрос, маршрутизатор отправляет на запросивший хост ARP-ответ, в котором сообщает свой Ethernet-адрес. Данная схема работы позволяет злоумышленнику послать ложный ARP-ответ, в котором объявить себя искомым хостом, (например, маршрутизатором), и, в дальнейшем, активно контролировать весь сетевой трафик "обманутого" хоста.
Предсказание TCP sequence number (IP-spoofing)
В данном случае цель злоумышленника - притвориться другой системой, которой, например, "доверяет" система-жертва. Метод также используется для других целей - например, для использовании SMTP жертвы для посылки поддельных писем.
Установка TCP-соединения происходит в три стадии: клиент выбирает и передает серверу sequence number (назовем его C-SYN), в ответ на это сервер высылает клиенту пакет данных, содержащий подтверждение (C-ACK) и собственный sequence number сервера (S-SYN). Теперь уже клиент должен выслать подтверждение (S-ACK). После этого соединение считается установленным и начинается обмен данными. При этом каждый пакет имеет в заголовке поле для sequence number и acknowledge number. Данные числа увеличиваются при обмене данными и позволяют контролировать корректность передачи.
Предположим, что злоумышленник может предсказать, какой sequence number (S-SYN по схеме) будет выслан сервером. Это возможно сделать на основе знаний о конкретной реализации TCP/IP. Например, в 4.3BSD значение sequence number, которое будет использовано при установке следующего значения, каждую секунду увеличивается на 125000. Таким образом, послав один пакет серверу, злоумышленник получит ответ и сможет (возможно, с нескольких попыткок и с поправкой на скорость соединения) предсказать sequence number для следующего соединения. Если реализация TCP/IP использует специальный алгоритм для определения sequence number, то он может быть выяснен с помощью посылки нескольких десятков пакетов серверу и анализа его ответов.
Итак, предположим, что система A доверяет системе B, так, что пользователь системы B может сделать "rlogin A" и оказаться на A, не вводя пароля. Предположим, что злоумышленник расположен на системе C. Система A выступает в роли сервера, системы B и C - в роли клиентов.
Первая задача злоумышленника - ввести систему B в состояние, когда она не сможет отвечать на сетевые запросы. Это может быть сделано несколькими способами, в простейшем случае нужно просто дождаться перезагрузки системы B. Нескольких минут, в течении которых она будет неработоспособна, должно хватить. После этого злоумышленник может попробовать притвориться системой B, для того, что бы получить доступ к системе A (хотя бы кратковременный). Злоумышленник высылает несколько IP-пакетов, инициирующих соединение, системе A, для выяснения текущего состояния sequence number сервера. Злоумышленник высылает IP-пакет, в котором в качестве обратного адреса указан уже адрес системы B. Система A отвечает пакетом с sequence number, который направляется системе B. Однако система B никогда не получит его (она выведена из строя), как, впрочем, и злоумышленник. Но он на основе предыдущего анализа догадывается, какой sequence number был выслан системе B. Злоумышленник подтверждает "получение" пакета от A, выслав от имени B пакет с предполагаемым S-ACK (заметим, что если системы располагаются в одном сегменте, злоумышленнику для выяснения sequence number достаточно перехватить пакет, посланный системой A). После этого, если злоумышленнику повезло и sequence number сервера был угадан верно, соединение считается установленным. Теперь злоумышленник может выслать очередной фальшивый IP-пакет, который будет уже содержать данные. Например, если атака была направлена на rsh, он может содержать команды создания файла .rhosts или отправки /etc/passwd злоумышленнику по электронной почте.
Противодействие: простейшим сигналом IP-spoofing будут служить пакеты с внутренними адресами, пришедшие из внешнего мира. Программное обеспечение маршрутизатора может предупредить об этом администратора. Однако не стоит обольщаться - атака может быть и изнутри Вашей сети. В случае использования более интеллектуальных средств контроля за сетью администратор может отслеживать (в автоматическом режиме) пакеты от систем, которые в находятся в недоступном состоянии. Впрочем, что мешает злоумышленнику имитировать работу системы B ответом на ICMP-пакеты? Какие способы существуют для защиты от IP-spoofing? Во-первых, можно усложнить или сделать невозможным угадывание sequence number (ключевой элемент атаки). Например, можно увеличить скорость изменения sequence number на сервере или выбирать коэффициент увеличения sequence number случайно (желательно, используя для генерации случайных чисел криптографически стойкий алгоритм). Если сеть использует firewall (или другой фильтр IP-пакетов), следует добавить ему правила, по которым все пакеты, пришедшие извне и имеющие обратными адресами из нашего адресного пространства, не должны пропускаться внутрь сети. Кроме того, следует минимизировать доверие машин друг другу. В идеале не должно существовать способа напрямую попасть на соседнюю машину сети, получив права суперпользователя на одной из них. Конечно, это не спасет от использования сервисов, не требующих авторизации, например, IRC (злоумышленник может притвориться произвольной машиной Internet и передать набор команд для входа на канал IRC, выдачи произвольных сообщений и т.д.). Шифрование TCP/IP-потока решает в общем случае проблему IP-spoofing'а (при условии, что используются криптографически стойкие алгоритмы). Для того, чтобы уменьший число таких атак, рекомендуется также настроить firewall для фильтрации пакетов, посланных нашей сетью наружу, но имеющих адреса, не принадлежащие нашему адресному пространству.
Сделаем небольшое отступление в сторону реализации TCP/IP и рассмотрим "локальные бури" на пример UDP-бури. Как правило, по умолчанию системы поддерживают работу таких UDP-портов, как 7 ("эхо", полученный пакет отсылается назад), 19 ("знакогенератор", в ответ на полученный пакет отправителю выслается строка знакогенератора) и других (date etc).
В данном случае злоумышленник может послать единственный UDP-пакет, где в качестве исходного порта будет указан 7, в качестве получателя - 19-й, а в качестве адреса получателя и отправителя будут указаны, к примеру, две машины вашей сети (или даже 127.0.0.1). Получив пакет, 19-й порт отвечает строкой, которая попадает на порт 7. Седьмой порт дублирует ее и вновь отсылает на 19.. и так до бесконечности.
Бесконечный цикл съедает ресурсы машин и добавляет на канал бессмысленную нагрузку. Конечно, при первом потерянном UDP-пакете буря прекратиться.
Противодействие: в качестве защиты стоит еще раз порекомендовать не пропускать в сети пакеты с внутренними адресами, но пришедшие извне. Также рекомендуется закрыть на firewall использование большинства сервисов.
Метод является комбинацией 'подслушивания' и IP-spoofing'а.
Необходимые условия - злоумышленник должен иметь доступ к машине, находящейся на пути сетевого потока и обладать достаточными правами на ней для генерации и перехвата IP-пакетов.
Напомним, что при передаче данных постоянно используются sequence number и acknowledge number (оба поля находятся в IP-заголовке). Исходя из их значения, сервер и клиент проверяют корректность передачи пакетов.
Существует возможность ввести соединение в "десинхронизированное состояние", когда присылаемые сервером sequence number и acknowledge number не будут совпадать с ожидаемым значениеми клиента, и наоборот. В данном случае злоумышленник, "прослушивая" линию, может взять на себя функции посредника, генерируя корректные пакеты для клиента и сервера и перехватывая их ответы.
Метод позволяет полностью обойти такие системы защиты, как, например, одноразовые пароли, поскольку злоумышленник начинает работу уже после того, как произойдет авторизация пользователя.
Есть два способа рассинхронизировать соединение.
Соединение десинхронизируется на стадии его установки. Злоумышленник прослушивает сегмент сети, по которому будут проходить пакеты интересующей его сессии. Дождавшись пакета S-SYN от сервера, злоумышленник высылает серверу пакет типа RST (сброс), конечно, с корректным sequence number, и, немедленно, вслед за ним фальшивый C-SYN-пакет от имени клиента Сервер сбрасывает первую сессию и открывает новую, на том же порту, но уже с новым sequence number, после чего посылает клиенту новый S-SYN-пакет. Клиент игнорирует S-SYN-пакет, однако злоумышленник, прослушивающий линию, высылает серверу S-ACK-пакет от имени клиента.
Итак, клиент и сервер находятся в состоянии ESTABLISHED, однако сессия десинхронизирована. Естественно, 100% срабатывания у этой схемы нет, например, она не застрахована от того, что по дороге не потеряются какие-то пакеты, посланные злоумышленником. Для корректной обработки этих ситуаций программа должна быть усложнена.
В данном случае злоумышленник прослушивает сессию и в какой-то момент посылает серверу пакет с "нулевыми" данными, т.е. такими, которые фактически будут проигнорированы на уровне прикладной программы и не видны клиенту (например, для telnet это может быть данные типа IAC NOP IAC NOP IAC NOP...). Аналогичный пакет посылается клиенту. Очевидно, что после этого сессия переходит в десинхронизированное состояние.
Одна из проблем IP Hijacking заключается в том, что любой пакет, высланный в момент, когда сессия находится в десинхронизированном состоянии вызывает так называемый ACK-бурю. Например, пакет выслан сервером, и для клиента он является неприемлимым, поэтому тот отвечает ACK-пакетом. В ответ на этот неприемлимый уже для сервера пакет клиент вновь получает ответ. И так до бесконечности.
К счастью современные сети строятся по технологиям, когда допускается потеря отдельных пакетов. Поскольку ACK-пакеты не несут данных, повторных передачи не происходит и "буря стихает".
Как показали опыты, чем сильнее ACK-буря, тем быстрее она "утихомиривает" себя - на 10MB ethernet это происходит за доли секунды. На ненадежных соединениях типа SLIP - ненамного больше.
Есть несколько путей. Например, можно реализовать TCP/IP-стек, который будут контролировать переход в десинхронизированное состояние, обмениваясь информацией о sequence number/acknowledge number. Однако в данном случае мы не застрахованы от злоумышленника, меняющего и эти значения.
Поэтому более надежным способом является анализ загруженности сети, отслеживание возникающих ACK-бурь. Это можно реализовать при помощи конкретных средств контроля за сетью.
Если злоумышленник не потрудиться поддерживать десинхронизированное соединение до его закрытия или не станет фильтровать вывод своих команд, это также будет сразу замечено пользователем. К сожалению, подавляющее большинство просто откруют новую сессию, не обращаясь к администратору.
Стопроцентную защиту от данной атаки обеспечивает, как всегда, шифрование TCP/IP-трафика (на уровне приложений - secure shell) или на уровн протокола - IPsec). Это исключает возможность модификации сетевого потока. Для защиты почтовых сообщений может применяться PGP.
Следует заметить, что метод также не срабатывает на некоторых конкретных реализациях TCP/IP. Так, несмотря на [rfc...], который требует молчаливого закрытия сесии в ответ на RST-пакет, некоторые системы генерируют встречный RST-пакет. Это делает невозможным раннюю десинхронизацию.
Обнаружение атак и защита от них
Данный тип запросов может быть использован злоумышленниками для определения функционирующих систем в сегментах локальной сети.
Сканирование сети посредством DNS
Известно, что прежде чем начинать атаку, злоумышленники осуществляют выявление целей, т.е. выявление компьютеров, которые будут жертвами атаки, а также компьютеров, которые осуществляют информационный обмен с жертвами. Одним из способов выявления целей заключается в опросе сервера имён и получение от него всей имеющейся информации о домене.
Противодействие: для определения такого сканирования необходимо анализировать DNS-запросы (адрес в имя) приходящие, быть может, от разных DNS серверов, но за определенный, фиксированный промежуток времени. При этом необходимо просматривать, что за информация в них передаётся и отслеживать перебор адресов.
Сканирование сети методом ping sweep
Ping sweep или выявление целей с помощью протокола ICMP является эффективным методом.
Противодействие: для определения факта ping-сканирования целей, находящихся внутри подсети, необходимо анализировать исходные и конечные адреса ICMP пакетов.
Сканирование портов представляет собой известный метод распознавания конфигурации компьютера и доступных сервисов. Существует несколько методов TCP сканирования, часть из них называется скрытными (stealth), поскольку они используют уязвимости реализаций стека TCP/IP в большинстве современных ОС и не обнаруживаются стандартными средствами.
Противодействие: противодействие можно осуществлять, например, передавая TCP пакеты с установленным флагом RST от имени сканируемого компьютера на компьютер злоумышленника.
Другой вид сканирования портов основывается на использовании протокола UDP и заключается в следующем: на сканируемый компьютер передаётся UDP пакет, адресованный к порту, который проверяется на предмет доступности. Если порт недоступен то в ответ приходит ICMP сообщение о недоступности (destination port unreachable), в противном случае ответа нет.
Данный вид сканирования достаточно эффективен. Он позволяет за короткое время сканировать все порты на компьютере-жертве.
Противодействие: противодействовать сканированию данного рода возможно путём передачи сообщений о недоступности порта на компьютер злоумышленника.
Метод основан на некорректном сетевом коде, поэтому нельзя поручиться что он будет нормально работать в какой-либо конкретной обстановке. Используются TCP-пакеты с установленными ACK- и FIN-флагами. Их надо использовать, т.к. если такой пакет послать в порт при неоткрытом соединении, всегда возвратиться пакет с флагом RST. Существует несколько методов, использующих этот принцип:
Сканирование часто применяется злоумышленниками для того, чтобы выяснить, на каких TCP-портах работают демоны, отвечающие на запросы из сети. Обычная программа-сканер последовательно открывает соединения с различными портами. В случае, когда соединение устанавливается, программа сбрасывает его, сообщая номер порта злоумышленнику.
Данный способ легко детектируются по сообщениям демонов, удивленных мгновенно прерваным после установки соединением, или с помощью использования специальных программ. Лучшие из таких программ обладают некоторыми попытками внести элементы искусственного элемента в отслеживание попыток соединения с различными портами.
Однако злоумышленник может воспользоваться другим методом - пассивным сканированием (английский термин "passive scan"). При его использовании злоумышленник посылает TCP/IP SYN-пакет на все порты подряд (или по какому-то заданному алгоритму). Для TCP-портов, принимающих соединения извне, будет возвращен SYN/ACK-пакет, как приглашение продолжить 3-way handshake. Остальные вернут RST-пакеты. Проанализировав данные ответ, злоумышленник может быстро понять, на каких портах работают программа. В ответ на SYN/ACK-пакеты он может также ответить RST-пакетами, показывая, что процесс установки соединения продолжен не будет (в общем случае RST-пакетами автоматический ответит TCP/IP-реализация злоумышленника, если он не предпримет специальных мер).
Метод не детектируется предыдущими способами, поскольку реальное TCP/IP-соединение не устанавливается. Однако (в зависимости от поведения злоумышленника) можно отслеживать резко возросшее количество сессий, находящихся в состоянии SYN_RECEIVED. (при условии, что злоумышленник не посылает в ответ RST) прием от клиента RST-пакета в ответ на SYN/ACK.
К сожалению, при достаточно умном поведении злоумышленника (например, сканирование с низкой скоростью или проверка лишь конкретных портов) детектировать пассивное сканирование невозможно, поскольку оно ничем не отличается от обычных попыток установить соединение.
В качестве защиты можно лишь посоветовать закрыть на firewall все сервисы, доступ к которым не требуется извне.
Приглашение системы и опасность содержащейся в нем информации
Необходимо убирать "приглашения системы", отображаемые центральными компьютерами на терминалах удаленного доступа для входа пользователя в систему. Данное требование обусловлено следующими причинами:
Несколько советов при исследования сети
Некоторые другие способы получения информации
Дыры и ошибки администрирования в Windows NT
Спаммеры подыщут для начала рассылки своего почтового мусора не просто ISP, а, скорее всего, выберут корпорацию, т.к. провайдеру Internet легче понять, что произошло, и он, вероятно, сможет быстрее избавиться от таких сообщений.
Периодически повторяющийся спамминг может нарушить работу законных пользователей из-за перегрузки сервера электронной почты.
Проблема состоит в том, что подключиться к SMTP-серверу не так уж трудно. Для этого необходимо знать лишь 7-8 команд, чтобы SMTP-сервер стал распространять Ваши сообщения.
Для ограждения от этого можно осуществлять проверку адресов поступающих сообщений по базе данных зарегистрированных пользователей сервера. Если адрес посылающего сообщение или один из запрошенных им адресов в списке отсутствует, электронная почта передаваться не будет.
Как уберечь почтовую систему от спаммеров
В данной работе рассматривается положение дел с безопасностью в самой передовой, на мой взгляд, ОС фирмы Microsoft - Windows NT 4.0. Тот факт, что она может использоваться не только как клиентская, но и как сетевая ОС (в том числе и в глобальных сетях) в сочетании с ее молодостью, отсутствием исходных текстов и претензией на защищенность, вызвал повышенный интерес к ней не только с моей стороны, но и со стороны хакеров.
Этот интерес усугубляется тем, что сертификация Windows NT в соответствии с классом C2 носила довольно формальный характер. При этом можно отметить не только явное несоответствие некоторых требований к системе класса С2 с истинной реализацией данной ОС, но и то, что спроектированная как сетевая ОС, она оценивалась в соответствии с требованиями к локальным системам. Также вызывает удивление тот факт, что оценка системы проводилась в конфигурации без дисковода. (Условия эксплуатации без сетевой карты и дисковода по крайней мере снизили бы коммерческий успех данной ОС, и, естественно, она так никогда не используется).
Предметом настоящей работы является рассмотрение недороботок, приводящих к несанкционированному доступу к защищенной информации в Windows, хотя их наличие ставит под сомнение претензии фирмы Microsoft на роль Windows NT, как сервера масштаба предприятия. Можно отметить, что отказ в обслуживании может быть вызван как локальным пользователем системы, так и незарегистрированным удаленным (иначе говоря, с любого компьютера, подключенного к Internet). Также авторы не рассматривают уязвимости, связанные с вирусами и уязвимости, вызванные некорректным функционированием приложений, "чемпионом" по ошибкам из которых является Internet Explorer фирмы Microsoft.
Рассмотреним уязвимость ОС Windows NT по аналогии с UNIX-системами. Я начну с уязвимостей парольной системы.
Информация о всех пользователях Windows NT и их паролях хранится в базе данных системы (registry), а физически расположена в файле %SystemRoot%\SYSTEM32\CONFIG\SAM - базе данных безопасности системы. Данный файл является по умолчанию читаемым, но "запертым", т.к. используется прочими компонентами системы. Копия данного файла содержится в директории %SystemRoot%\REPAIR\ после создания администратором восстановительного (repair) диска и легко может быть скопирована оттуда. После инсталляции ОС база данных безопасности системы содержит только пользователей Administrator и Guest.
Однако сами пароли в открытом виде, естественно, не содержатся в данном файле. Пароль пользователя (в кодировке UNICODE) с использованием хэш-алгоритма MD4 превращается в 16-байтное значение, которое и находится в файле SAM.
Таким образом, для того, чтобы сломать пароль в Windows NT, злоумышленнику необходимо выделить из базы данных безопасности системы имя пользователя и соответствующее ему хэш-значение. Данная процедура может быть выполнена с использованием программы PWDUMP (о которой уже упоминалось ранее), разработанной Jeremy Allison и свободно распространяемой. Использование данной программы требует привилегий Administrator (для того, чтобы иметь доступ по чтению к соответствующим значениям registry), но она может использоваться в том случае, если с атакуемой системы удалось получить копию базы данных безопасности системы.
После выделения паролей и соответствующих им хэш-значений может быть использована одна из многих программ взлома пароля методом перебора или атаки по словарю - скорость перебора составляет примерно 2500 паролей/сек на компьютере класса Pentium. При этом, в отличие от UNIX, в Windows NT отсутствует понятие salt, вследствие чего словарь может быть предварительно схэширован и скорость тем самым может быть поднята на несколько порядков. В Service Pack 3 хэш-значения зашифрованы алгоритмом DES, причем ключом является значение, легко выводимое из атрибута пользователя RID.
Как было отмечено в начале, Windows NT оценивалась в конфигурации "без дисковода". Существуют нарушения безопасности системы, связанные с получением злоумышленником доступа к консоли, если дисковод все же есть. Может быть получен доступ к любым файлам в системе при загрузке с дискеты ОС MS-DOS, если используется файловая система VFAT. При использовании же файловой системы NTFS возможен беспрепятственный доступ по чтению с помощью утилиты NTFSDOS. Аналогично, загрузка с дискеты ОС Linux с последующим монтированием раздела NTFS обеспечивает доступ к нему по чтению и записи.
Как также было отмечено, ОС Windows NT сертифицировалась в конфигурации не только без дисковода, но и в отсутствии сетевого окружения. При этом использование ее как ОС, подключенной к сетям TCP/IP автоматически приводит к успеху типовых удаленных атак, которые уже были рассотрены ранее.
Более того, Windows NT оказалась не только не лучше отражающей эти атаки, чем UNIX, а даже хуже - в частности, она подвержена атаке, связанной с IP-фрагментацией. Эта атака предназначена для проникновения через файрвол (firewall), путем разбиения IP-пакета на пакеты меньшей длины и последующим его восстановлением на атакуемом хосте. Из-за ошибки в ОС, которая не отслуживает накладывающиеся друг на друга фрагменты, может быть получен такой пакет, который иначе был бы не пропущен файрволом.
Существуют также удаленные атаки, специфичные только для Windows NT. В результате атаки, называемой Red Button, база данных registry становится доступной для незарегистрированного пользователя. При этом может быть получен список пользователей системы и список разделяемых объектов системы. Это происходит из-за того, что в системе имеется встроенный пользователь anonymous, обычно используемый при связи между двумя машинами. Данный пользователь является членом группы Everyone. Следовательно:
Если группа Everyone имеет доступ к приложениям, в систему может быть встроен троянский конь.
В результате всего выше сказанного можно сделать вывод, что операционная система Windows NT фирмы Microsoft вполне имеет право на жизнь и повсеместное использование. Не смотря на то, что в этой ОС есть приличное колличество ошибок и недоработок, но их численность не слишком велика по сравнению с другими програмными продуктами фирмы Microsoft.
Итак, объективное и мое субъективное мнение полностью совпадают:
API (Automatic Priority Interrupt) автоматическое прерывание по приоритету. Режим, в котором выполнение программы прерывается другой программой, имеющей более высокий приоритет.
ARP (Address Resolution Protocol) протокол определения адреса. Преобразует адрес IP в специальный аппаратный адрес. Используется совместно с протоколом TCP/IP.
AT–bus (Advanced Technology bus) шина усовершенствованной технологии. Вариант системной шины компьютеров, построенных на базе процессора Intel 80286 и выше. Пропускная способность до 10 Мбайт/с и более. Тактовая частота передачи данных 8, 19,32 и более МГц совместима снизу вверх с шиной ХТ- bus.
BIOS (Basic Input Output System) базовая система ввода вывода. Программы, хранящиеся в ПЗУ и использующиеся при загрузке компьютера.
BISAM (Basic Indexed Sequential Access Method) базисный индексно-последовательный метод доступа. Позволяет обращатся к записям файла как последовательно, так и по ключу.
CISC (Complex Instruction Set Computing) процессор с набором сложных команд. Архитектура процессоров, использующих обширный набор достаточно сложных команд (200-300 базовых команд).
CPU (central processing unit) центральный процессор. Процессор, выполняющий основные функции по обработке данных.
CR (call request) запрос, вызов
CR (control register) управляющий регистр
CRC (cyclic redundancy check) контроль с использованием циклического избыточного кода. Метод обнаружения ошибок.
DNS (Domain Name System(Service)) система именования доменов. Протокол обслуживания каталогов ТСР/IP.
DOS (Disk Operating System) дисковая операционная система.
DP (data processing) обработка данных
EDT (electronic data transmission) электронная передача данных
ES (extra segment) регистр дополнительного сегмента
ESCD (Extended System Configuration Data) расширенная информация о конфигурации системы.
FAT (File Allocation Table) таблица размещения файлов. Файловая система, используемая в операционной системе DOS и Windows.
FTP (File Transfer Protocol) протокол передачи файлов
GM (global memory) глобальная память
GPS (Global Positioning System) система глобального позиционирования
HAL (Hardware Abstraction Layer) абстрактный уровень аппаратных средств. Механизм позволяющий полностью симметричной многопроцессорной системе в среде Windows NT сбалансировать нагрузку, распределяя все входящие задачи по процессорам и сохраняя при этом целостность данных.
HDD (Hard Disk Drive) жесткий диск, винчестер. Накопитель на жестком диске.
ICMP (Internet Control Message Protocol) протокол управляющих сообщений в сети Internet. Составная часть протокола IP, обеспечивающая обработку управляющих сообщений
IMP (Internal Message Protocol) протокол внутренних сообщений. Протокол, описывающий обмен служебными сообщениями.
ISO (International Standards Organization) международная организация по стандартизации, основанная в 1946 году. Включает более 70 национальных организаций по стандартизации. Занимается выработкой стандартов в области телекоммуникаций. Наиболее известный стандарт OSI.
IUS (image-understanding system) система распознавания изображения.
JCL (Job Control Language) язык управления заданиями. Набор команд, используемый операционными системами мэйнфреймов для управления выполнением специфических задач.
KIP (knowledge information processing) обработка знаний
LADT (local area data transport) передача данных в локальной сети
LAN (local area network) локальная вычислительная сеть
MIPS (Million of Instruction per Second) миллион операций в секунду. Среднее число операций выполняемых компьютером за одну секунду.
MS (message store) хранилище сообщений.
NDIS (Network Driver Interface Specification) спецификация интерфейса сетевого драйвера. Спецификация интерфейса уровня МАС, разработанная фирмой Microsoft. Скрывает особенности реализации сетевого адаптера от сетевой операционной среды. Такой драйвер может одновременно работать с протоколами разных сетевых операционных систем.
NTFS (New Technology File System) файловая система для новой технологии. Файловая система, разработанная специально для Windows NT. Позволяет работать со сверхбольшими информационными томами (максимальный размер файла 18 Гбайт), использовать имена файлов длиной до 255 символов. Имеет средства автоматического исправления ошибок и замены дефектных секторов. Обеспечивает возможность контроля доступа к определенным файлам. Может выполнять откаты в случае ошибочных операций ввода-вывода.
NT (New Technology) Новая технология.
NOP (Network Operational Protocol) рабочий протокол обслуживания сети
NOP (no operation) пустая команда
OC (office communication) учрежденческая связь.
OC (office computer) офисный компьютер.
OC (operational computer) функционирующий компьютер.
OC (optical carrier) оптоволоконная линия связи.
OS (operating system) операционная система.
PC ( Personal computer) персональный компьютер
PGP (Pretty Good Privacy) надежная конфиденциальность. Алгоритм шифрования информации
PSP (program segment prefix) префикс сегмента программы
RAM (Random Access Memory) ЗУ с произвольной выборкой (ЗУПВ), оперативное запоминающее устройство(ОЗУ). Память для временного хранения данных, например результатов вычислений, произведенных процессором.
RAM (Real Address Mode) режим реальной адресации.
RAM (Resident Access Method) резидентный метод доступа.
RCP (remote communication processor) дистанционный связной процессор
RCP (restore cursor position) восстановить позицию курсора.
RFС (Requests for Comments) запросы на комментарии. Серия документов ,в которых описываются различные аспекты деятельности сети Internet,например проекты стандартов и утвержденные стандарты протоколов TCP/IP. Выпускаются группой IETF.
RFT (Revisable Form Text) текст в редактируемой форме. Формат файлов для хранения документов.
RI (Relational Indexing) реляционное индексирование.
RI (Ring Indicator) кольцевой индикатор. Один из сигналов управления модемом. Используется в интерфейсе RS–232C.
RISC (Reduced Instruction Set Computer) процессор с уменьшенным числом инструкций. В основе концепции лежит применение в процессоре простых и эффективных команд (около 100 базовых команд, большинство из которых однотактные). Преимущества архитектуры RISC, по сравнению с CISC, особенно явно проявляются в вычислениях с плавающей точкой (например, в мультимедиа, трехмерной графике и САПР).
RPC (Remote Procedure Call) вызов удаленных процедур. Метод межпрограммной связи, реализующийся в модели клиент–сервер, .удаленная процедура является под программой. Скомпилированной, хранящейся и выполняемой на сервере. При вызове приложением – клиентом удаленной процедуры автоматически формируется сообщением посылается на сервер, который и реализует все действия.
RAS (Reliability, Availability and Serviceability) надежность, работоспособность, и удобство в эксплуатации. Критерии функционирования аппаратуры.
RAS (Remote Access Server)сервер удаленного доступа
SS (Sampled Servo) шаблонное слежение.
SS (Single-sided) односторонний.
SS (speed switch) переключатель скорости.
SS (spreadsheet simulation) эмулятор электронных таблиц.
SS (stack segment) сегмент стека.
SE (Second Edition) вторая редакция. Версия программного продукта.
SE (Standard Edition) стандартная редакция .Версия программного продукта.
SAM (System Administrator Means) инструментальные средства системного администратора
SAP (Service Advertising Protocol) протокол извещения об услугах. Протокол используемый сервером NetWar и основанный на передаче широковещательных сообщений, содержащих информацию об услугах, предоставляемых сервером
SMTP (Simple Mail Transfer Protocol) простой протокол электронной почты. Прикладная служба передачи текстовых сообщений в сетях ТСР/IP.
TCP/IP (Transmission Control Protocol/Internet Protocol) протокол управления передачей/межсетевой протокол. Протокольный набор разработанный министерством обороны США. Входит в ОС Unix, однако может использоваться в любой среде. Кроме TCP и IP включает в себя протоколы сетевого уровня SNMP, транспортного уровня UDP, а также протоколы прикладного уровня.
TFTP (Trivial Fail Transfer Protocol) тривиальный протокол передачи файлов. Версия FTP,предназначенная только для копирования файлов в сетях TCP/IP. Не требует аутентификации пользователя. Программа реализации имеет небольшой размер и может быть записана в ПЗУ и использоваться для начальной загрузки бездисковых рабочих станций.
TTM (thin transistor matrix) тонкопленочная транзисторная матрица
VAN (Value-Added Network) сеть с дополнительными услугами
VINES (Virtual Networking System) виртуальная сетевая система
VPN (virtual private network) виртуальная частная сеть
WWW (World Wide Web) Всемирная паутина Веб.