Защита от хакеров корпоративных сетей Коллектив авторов
Благодарности
Авторы книги хотели бы выразить свою признательность следующим людям, благодаря доброжелательности и поддержке которых стало возможным появление этой книги.
Ральфа Троупа (Ralph Troupe), Ронда Ст. Джона (Rhonda St. John) и коллектив Callisma за бесценную способность вникнуть в суть сложных задач проектирования, развертывания и поддержки сетей учреждений мирового класса.
Карена Кросса (Karen Cross), Ланса Тилфорда (Lance Tilford), Мегхана Канигхэма (Meaghan Cunningham), Кима Вилли (Kim Wylie), Гарри Кирчнера (Harry Kirchner), Кевина Вотела (Kevin Votel), Кента Андерсона (Kent Anderson), Фрида Яра (Frida Yara), Билла Геца (Bill Getz), Джона Мейеса (Jon Mayes), Джона Месджака (John Mesjak), Пега О'Доннелли (Peg O'Donnell), Сандру Паттерсона (Sandra Patterson), Бетти Редмонда (Betty Redmond), Роя Ремера (Roy Remer), Роя Шапиро (Ron Shapiro), Патрисию Келли (Patricia Kelly), Андреа Тетрика (Andrea Tetrick), Дженнифера Паскаля (Jennifer Pascal), Дуга Реила (Doug Reil) и Дэвида Дахла (David Dahl) из Западной группы издателей (Publishers Group West) за обмен потрясающим опытом в области маркетинга и экспертизу.
Жакью Шанахэм (Jacquie Shanahan) и ЭнХелен Линдехолм (AnnHelen Lindeholm) из Elsevier Science за придание нам уверенности в правоте нашего дела.
Анабел Дент (Annabel Dent) и Паулю Барри (Paul Barry) за все то, что они для нас сделали.
Дэвиду Букланду (David Buckland), Венди Вонгу (Wendi Wong), Мэри Чиенгу (Marie Chieng), Люси Чонгу (Lucy Chong), Лесли Лиму (Leslie Lim), Одри Гану (Audrey Gan) и Джозефу Чану (Joseph Chan) из Transquest Publ ishers за энтузиазм, с которым они просматривают наши книги.
Квон Шунг Джун (Kwon Sung June) из Acorn Publishing за поддержку.
Етан Аткин (Ethan Atkin) из Cranbury International за помощь в расширении программы Syngress.
Джекки Гросса (Jackie Gross), Гейла Войсея (Gayle Voycey), Алексия Пенни (Alexia Penny), Аник Робитэйла (Anik Robitaille), Крэга Сиддалла (Craig Siddall), Дарлен Морроу (Darlene Morrow), Иолану Миллер (Iolanda Miller), Джан Макей (Jane Mackay) и Мэри Скелли (Marie Skelly) из Jackie Gross & Associates за помощь и энтузиазм, с которым они представляют книгу в Канаде.
Лоиса Фрасера (Lois Fraser), Конни Макменеми (Connie McMenemy), Шэннона Рассела (Shannon Russell) и других талантливых сотрудников из Jaguar Book Group за их помощь в распространении книг издательства в Канаде.
Я хотел бы посвятить свою работу своей замечательной жене и детям, не будь которых не было бы смысла работать над книгой. Я люблю тебя, Сара, с Днем святого Валентина тебя! Я также хотел бы поблагодарить Брайена Мартина (Brian Martin) за помощь при редактировании и, конечно, авторов, которые нашли время написать книгу. Особенно хочется поблагодарить авторов первого издания за их идеи по улучшению книги.
Райан Рассел
От автора Предисловие (версия 1.5)
Авторы первого издания книги относительно ее содержания единодушны в одном: после первоначального изложения материала у них появилось желание представить материал своих глав по-другому. Объясняется это допущенными ошибками, недостаточным, с точки зрения авторов, пояснениями изложенного в книге материала, нехваткой времени для написания еще одного примера программы или тем, что авторы забыли рассмотреть дополнительные вопросы. Как и в любом другом проекте, время в конечном счете истекло, и пришлось завершить работу.
Предоставленный шанс повторно вернуться к работе над книгой позволил авторам исправить недостатки, выявленные с момента первого ее издания. Большая часть была выявлена благодаря читателям, написавшим авторам: «Вам следовало бы по-другому написать об этом…» В абсолютном большинстве случаев они были правы. В результате была предпринята попытка исправления максимально возможного числа недостатков первого издания книги «Защита от хакеров корпоративных сетей» (Hack Proofing Your Network).
К моменту первого издания книги в продаже было совсем немного книг, посвященных в полном объеме методам преодоления средств компьютерной защиты. Для издательства Syngress Publishing эта книга стала первой в подобной серии. Руководство издательства немного нервничало. Оно не было уверено в том, что обучение хакерским методам – это хорошо. (Похоже, что другие издательства были напуганы. Когда автор говорил с представителями некоторых из них о книге, посвященной методам работы хакеров, то они даже не захотели просмотреть план книги. «Никаких книг о хакерских методах». Конечно, некоторые из них к настоящему времени уже выпустили книги по этой тематике.)
Поэтому в издательстве Syngress полагали, что если будет написана книга Hack Proofing Your Network, то она должна в полном объеме описать мероприятия по защите информации. Так и было сделано. Кто-то может возразить вам, что он не имеет ничего против методов защиты, что он применяет их годами. Но когда в книге упоминается о защите, речь идет о совершенно других технологиях. В первом издании ряд глав был посвящен вопросам защиты, которые трудно реализовать целиком и которые, вообще говоря, неудобны для работы.
По сравнению с первым изданием произошли некоторые изменения. Например, под словосочетанием Hack Proofing теперь понимается серия книг, а не одна книга. Кроме книги, которая перед вами, в серию входят:
• Hack Proofing Your E-commerce Site (ISBN: 1-928994-27-X)
• Hack Proofing Your Web Applications (ISBN: 1-928994-31-8)
• Hack Proofing Sun Solaris 8 (ISBN: 1-928994-44-X)
• Hack Proofing Linux (ISBN: 1-928994-34-2)
• Hack Proofing Windows 2000 Server (ISBN: 1-931836-49-3)
• Hack Proofing Your Wireless Network (ISBN: 1-928994-59-8)
• Hack Proofing ColdFusion 5.0 (ISBN: 1-928994-77-6)
Готовятся к печати и другие книги этой серии, которых объединяет их ориентация на описание методов защиты.
Это версия 1.5 предисловия. С течением времени содержимое данной книги пересматривается (точнее, тщательно проверяется и совершенствуется, но вы поняли идею). Однако слова Мудге все еще остаются в силе. Читая книгу, скоро вы убедитесь в этом сами. Полагайте, что перед вами протокол изменений содержимого книги. Обратите внимание на изменения, внесенные во второе издание, которые заключаются или в добавлении нового материала, или в улучшении старого. В издание добавлено несколько новых глав, включая:
• Хакинг аппаратных средств ЭВМ;
• Туннелирование;
• Уклонение от IDS;
• Атаки, основанные на форматирующей строке.
Эти главы поясняют некоторые сложные темы, включение которых в книгу способно сделать ее содержание актуальнее. Сведения об использовании форматирующей строки стали общедоступны только после завершения работы над первым изданием. В первом издании ничего не рассказано об этом, поскольку в то время были неизвестны методы работы с форматирующей строкой.
Каждая глава второго издания была обновлена, переработана с точки зрения возможных атак, сжата и вообще улучшена. Есть бесконечное число вариантов изложения, но некоторые читатели предложили разбить материал первого издания по темам таким образом, чтобы каждый используемый метод был освещен в одной главе. Это выглядело привлекательно, поэтому и было осуществлено во втором издании. В начале книги пара глав посвящена теории, но сразу за этими «вводными» главами по существу обсуждается каждый тип нападения. Наконец, для большей пользы книгу завершает краткая глава о правилах информирования нас о найденных вами изъянах в системах защиты.
Одно из центральных изменений второго издания состоит в том, что авторы издания оставили попытку объяснить свои действия. В первом издании потрачено много времени и усилий для разъяснения, почему знания о хакерских методах полезны, почему в разное время люди используют слово «хакер» и почему восстановление алгоритмов работы существующих программ (reverse engineering) должно относиться к основным человеческим правам.
После выхода первого издания большинство людей, купивших книгу, уже согласились с тем, что представленная в книге информация должна быть доступна (или, по крайней мере, они захотели ознакомиться с ней). А люди, которые не соглашались со мной. Что ж, они не согласны со мной и после прочтения книги, даже после ознакомления с приведенными в книге доводами ! Говоря искренне, я был потрясен. Я не убедил их своими тщательно подобранными аргументами. Действительно, невозможно всегда всем нравиться.
Возвращаясь к обсуждаемым вопросам, отметим, что люди, которым нравится то, что, мы делаем, могут не читать объяснений, почему мы занимаемся этим. Эти объяснения для тех, кто не разделяет наших позиций. Авторы используют слово хакер для обозначения субъекта, который взламывает компьютер без разрешения. Однако это слово не используется исключительно в данном контексте. Оно также обозначает ряд других «субъективных» понятий. Вы как образованный читатель и профессионал в области безопасности должны, в зависимости от контекста, понять его смысл. Если вы прочтете остальную часть этой книги, то найдете там разные значения этого слова.
Если вы хотите точно знать, что было в первом издании книги и чего нет во втором, то посетите сайт Syngress Solutions по адресу www.Syngress.com/solutions. В дополнение к электронной версии первого и второго издания книги у вас появится возможность задать авторам вопросы по электронной почте о книге и получить ответы на них. Если этого недостаточно, в течение года вам будет предоставлена возможность ознакомиться с периодическими обновлениями содержимого книги в форме официальных изданий. Для издательства это еще один дополнительный способ познакомить вас с новыми материалами, ставшими известными только после выхода издания книги. Сайт Solutions – это ваш ресурс, используйте его. Кроме того, мне интересно узнать мнение читателей.
Я надеюсь, что книга вам понравится.
Райан Рассел (Ryan Russell)
Глава 1
Хакерские методы
В этой главе обсуждаются следующие темы:
• Что понимают под «хакерскими методами»
• Обзор содержимого книги
• Правовое обеспечение хакинга
· Конспект
· Часто задаваемые вопросы
Введение
В этой книге собраны сведения, которые могут пригодиться для преодоления системы безопасности компьютера. Если это шокирует читателя, то, вероятно, он незнаком с разрешенными, с юридической точки зрения, причинами ее вскрытия. Взлом компьютера на законных основаниях допустим при испытании безопасности компьютерных систем, защите прав потребителя и гражданских прав, действий в военных целях. В книге в основном раскрываются хакерские методы, а не причины их применения.
Повсюду на страницах книги умышленно используется словосочетание «хакерские методы». Следует понимать, что у различных людей эти слова обозначают разные понятия. Поэтому в этой главе поясняется смысл, который авторы понимают под ними, а также приведена структура книги и рассмотрены требования к подготовке читателя, необходимой для усвоения приведенных в книге методов. В этой главе рассматривается современный взгляд на хакерство, реинжиниринг, защиту от копирования и действующее законодательство, поскольку не хотелось бы вручить читателю новую игрушку без предупреждения обо всех неприятностях и конфликтах с законом, с которыми он может столкнуться.
Что понимают под «хакерскими методами»
Когда автор был ребенком, диалоговый мир сетевых компьютерных онлайн-систем состоял из электронных досок объявлений (BBS). На многих BBS были текстовые файлы, заголовок которых представлял собой вариацию на тему «Как стать хакером». Почти все эти файлы были бесполезны и содержали советы подобно следующим: «попробуйте приведенные мастер-пароли» или «нажмите на клавиатуре комбинацию клавиш Ctrl + C и посмотрите, не приведет ли это к выходу из программы». Название главы «Хакерские методы» – это способ автора воздать должное подобным файлам. Они стали его источником вдохновения для написания приличного набора инструкций по применению хакерских методов – хакингу.
Итак, какой смысл подразумевается под словом хакерство ? Под ним понимается обход мер безопасности компьютерных систем и вычислительных сетей. Слово хакерство применимо и как существительное, характеризуя умную или быструю программу. В реальной жизни (в выпусках новостей, беседах, списках адресатов почты и т. д.) люди применяют слово хакерство, хакинг или хакер без объяснения вкладываемого в него смысла. Но его можно понять из контекста или чтения между строк. Эта книга не является исключением. Кроме того, авторы иногда используют выражения, как, например, хакер-новичок (script kiddie), для обозначения чего-либо связанного или производного от значения слова хакер. Если читателю не нравится термин, который применяется для рассматриваемой человеческой деятельности, то авторы искренне призывают его мысленно заменить обсуждаемый термин на привычное для читателя слово и далее считать, что именно привычный для него термин используется в книге.
Если читатель действительно хочет познакомиться с философским обсуждением значения слова, то, пожалуйста, посетите Web-сайт Syngress Solutions и загрузите электронную копию первого издания книги. В ее первой главе под названием «Политика» обсуждаются различные значения слова хакер. В этом издании подобное обсуждение опущено, но если читатель хочет пойти своим путем в поисках старой истины, то не говорите, что его не предупреждали.
Вообще говоря, авторы надеются избежать использования слова хакер в значении «плохой программист».
Зачем применяют хакерские методы?
Если читатель хочет услышать длинный рассказ о причинах чьего-либо любопытства о том, как это делается, автор отсылает его к первому изданию книги с длинными рассуждениями о слове хакер. Но кратко: лучшая защита – это нападение. Другими словами, единственный способ остановить хакера заключается в том, чтобы думать как он. И если после этого вы не сможете взломать ваши системы, то кто сможет? Эти фразы звучат банально, но они олицетворяют подход, который, по мнению авторов, позволит наилучшим образом обеспечить безопасность вашей собственной системы (или системы работодателя, или ваших клиентов и т. д.).
Приоткрывая завесу«Мы не нанимаем хакеров»
Вы, возможно, слышали о заявлениях различных компаний безопасности о том, что они «не нанимают хакеров». Очевидно, смысл подобных заявлений заключается в том, что компании имеют в виду исправившихся хакеров-преступников, хакеров, ныне работающих в области безопасности, или что-то другое. В основном это делается из-за опасения отказа некоторых людей от сотрудничества с компанией в случае, если им станет известно о найме подобных работников, поскольку бытует мнение, что преступнику нельзя доверять безопасность систем клиентов. В действительности это дело принципа. Некоторые просто не желают видеть, как хакеры-преступники получают что-либо, напоминающее вознаграждение за их противозаконную деятельность.
Иногда компании полагают, что разумнее сделать наоборот: Если о хакере уже слышали (даже если у него скандальная репутация), то, вероятно, компании испытывают определенное желание принять на работу такого высококлассного профессионала. Будет ли от этого положительный эффект? Это зависит от сферы деятельности компании. Конечно, если вы говорите о компании, предоставляющей сервисные услуги, то люди могут колебаться, но меньше, чем в случае, когда компания тестирует безопасность компьютерных систем.
В целом это палка о двух концах. Ну и конечно, у хакеров всегда есть вопрос к компаниям, которые «не нанимают хакеров»: «Как вы об этом узнали?»
Чтобы рассказать о том, как злоумышленник будет преодолевать нашу защиту, авторам потребуется выступить в его роли. Означает ли это, что, информируя читателя о методах взлома, авторы в то же время сообщают их и «злоумышленникам»? Да. Но авторы полагают, что в этой игре все должны иметь равные права: все стороны должны быть вооружены одними и теми же общедоступными методами. А с другой стороны, как вы сможете отличить законопослушного пользователя от злоумышленника?
Обзор содержимого книги
Теперь, после обсуждения вопросов «как» и «почему», поговорим о том, что найдет читатель далее в этой книге. Оценки начальная, средняя и высокая для каждой главы позволяют определить уровень знаний читателя, необходимых для успешного усвоения изложенного в ней материала.
В трех последующих главах книги представлен минимум теоретического багажа знаний. В главе 2 исследуется сформулированный авторами список законов, которые определяют работу (или отказ) систем компьютерной безопасности. Далее в книге вы увидите, как можно применять эти законы в хакерских технологиях. В главе 3 описываются типы атак и возможный потенциальный ущерб компьютерной системы в случае их успешного осуществления, а также приведены примеры каждого типа атак. В главе 4 рассказывается о различных методологиях, которыми кто-нибудь (например, вы) может руководствоваться при обнаружении проблем безопасности. Первые четыре главы этой книги должны быть доступны читателям любого уровня подготовки. Читатели с высоким уровнем профессиональной подготовки могли бы пропустить эти главы, если они уже знакомы с излагаемой теорией, но мы рекомендуем им, по крайней мере, просмотреть текст и удостовериться в отсутствии для них новой информации в изложенном материале. Раздел «Краткие выводы» хорошо подходит для этих целей.
Начиная с пятой главы мы рассматриваем методы хакинга. Глава 5 описывает простейший метод хакинга – поиск различий (diffing), состоящий в простом сравнении кода до и после осуществления некоторого действия. Это удивительно полезно. Материал данной главы доступен даже новичкам.
Глава 6 – о криптографии и различных средствах обеспечения конфиденциальности информации. В главе исследуются дилетантские попытки шифрования, примеры использования которых в мире наблюдаются почти каждый день. Вы познакомитесь с распознаванием шифров, основами их вскрытия и очень простыми криптоподобными схемами кодирования. Эта глава не рассчитана на уровень подготовки выше среднего (в главе приводится вводный материал для читателей с небольшим опытом в рассматриваемой области).
Глава 7 посвящена проблемам безопасности, возникающим при программных сбоях в результате непредсказуемого ввода данных пользователем. К ним относится хакинг сервера через дефектную программу CGI интерфейса, получение SQL доступа при помощи Web-формы или сценария, позволяющего вскрыть командный процессор операционной системы UNIX обманным путем (tricking scripts). (С технической точки зрения сюда же можно отнести переполнение буфера и ошибки форматирования строк (format string holes), но этим вопросам посвящены отдельные главы.) Глава по уровню предполагаемой подготовки читателя заслуживает оценки от средней до высокой. Это обусловлено обсуждением различных языков программирования и необходимостью понимания принципов работы командной оболочки.
В главах 8 и 9 показаны методы использования машинно-ориентированного языка для максимального использования преимуществ переполнения буфера или ошибок форматирования строк. Эти главы предполагают высокий уровень подготовки читателя. Но написаны они вполне доступно, с подробным объяснением изложенного материала. Для усвоения материала потребуются определенные знания языка C и ассемблера.
Глава 10 описывает возможности применения мониторинга сетевых коммуникаций sniffing методами в интересах хакинга. Приведены простые примеры. Описано, при помощи каких протоколов лучше всего получить доступ к паролям, и даже приведены основы программирования мониторинга сетевых коммуникаций методами sniffing. Эта глава ориентирована на читателей с начальным и средним уровнями подготовки.
Глава 11 представляет тему, посвященную пиратским подключениям (hijacking connections). В большинстве случаев эта разновидность взлома является расширенным применением мониторинга сетевых коммуникаций методами sniffing за счет активного участия злоумышленника. В главе описан тип атак «злоумышленник посередине» (man-in-the-middle). Для изучения приведенного материала требуется средний уровень квалификации читателя.
Глава 12 обсуждает концепцию доверия и то, как ниспровергать ее при помощи имитации соединения (spoofing). Эта глава обсуждает ряд потенциальных нападений и требует уровеня подготовки читателя от среднего до высокого.
Глава 13 описывает механизм туннелирования для перехвата сетевого трафика посредством враждебного сетевого окружения (настолько надежным способом, что при перегрузке перехват возобновляется). Приводится подробное обсуждение SSH, для которого требуется уровень подготовки от среднего до высокого.
Глава 14 – о хакерстве аппаратных средств компьютера. Эта глава приводит основные сведения о хакерстве аппаратных средств ЭВМ с целью получения максимальной безопасности. Это ознакомительная глава, потому что фактическая реализация приведенных методов потребует высокой подготовки.
Глава 15 посвящена вирусам, Троянским коням и червям. Описано, не только чем они являются и как работают, но также принципы их построения, используемые ими методы и что ожидать в будущем. Это глава по сложности излагаемого материала занимает промежуточный уровень.
В главе 16 описаны способы, при помощи которых системы обнаружения вторжения уклоняются от атак или обезвреживают их. Также описаны уловки (ловкие приемы), которые эффективны на уровнях от сетевого до уровня приложений. Разобраны такие темы, как фрагменты и использование полиморфизма. Уровень сложности обсуждаемого материала – от среднего до сложного (читатель должен хорошо знать протокол TCP/IP).
В главе 17 обсуждается автоматизация некоторых из задач читателя при помощи автоматизированного обозревания безопасности и инструментов нападения (после того как читатель познакомится с правилами их написания). Обсуждение охватывает коммерческие и свободно распространяемые программные средства. Это позволяет хорошо представить следующее поколение программных средств, которые будут не только определять уязвимости тестируемой системы, но и позволят укрепить ее.
Последнее, но не менее важное. В главе 18 сообщается о действиях читателя при обнаружении проблем безопасности. Не подумайте, что авторы книги не поощряют обнаружение брешей в системе защиты информации. Поощряют, но при условии, что читатель несет полную ответственность за свои действия.
Правовое обеспечение хакинга
Автор – не юрист: грубо говоря, это означает следующее: «Он не может дать вам никакого уместного юридического совета, а читатель не обязан ему следовать. Если читатель что-то сделает, то не подумайте, что его не предупреждали о последствиях. Но автор попытается заставить читателя прислушаться к своему мнению тем или иным способом».
В этой книге читатель узнает о методах, которые в случае неправильного их применения приведут его к нарушению законодательства и связанным с этим последствиям. Слова автора подобны словам инструктора по вождению автомобиля: «Я собираюсь научить вас ездить на автомобиле, но если вы водите плохо, то можете кого-нибудь сбить». В обоих случаях вам придется отвечать за причиненный ущерб.
Автор использует очень простое правило, заключающееся в ответе на вопрос: «У меня есть разрешение сделать это на этом компьютере?» Если ответ – нет, то не делайте этого. Ваши действия принесут вред и почти наверняка будут противозаконны. Но если ответ не столь очевиден, то, возможно, есть исключения, ну и т. д. Например, в большинстве мест (нет, не в вашей организации, по этому поводу проконсультируйтесь у юриста) сканирование порта разрешено. Хотя это рассматривается как предпосылка к незаконному проникновению в систему со злым умыслом, но это законно – кроме тех случаев, когда сканирование портов запрещено.
Самый простой способ обезопасить себя заключается в хакинге своей собственной сети (автор подразумевает домашнюю сеть читателя, а не сеть на работе, потому что иначе у вас могут быть неприятности). Вы хотите освоить тонкости сложной программы, работающей на платформе Sun Sparc? Идите и купите старый Sparc за 100$. Вы хотите заняться хакерством на многомиллионной универсальной ЭВМ? Хорошо, но, вероятно, вас постигнет неудача.
Можно было бы склониться к предположению о полной безопасности хакерских действий на собственном оборудовании. Но, строго говоря, это не так в случае действий, направленных на вскрытие программного обеспечения. Много людей думают также, то есть если я купил копию программы, то я имею естественное право делать с ней все, что я захочу на своем собственном компьютере. Право интеллектуальной собственности так не считает. В Соединенных Штатах, а также в соответствии с международным соглашением в ряде других стран обход средств недопущения копирования материалов, защищенных авторским правом, противозаконен. Это – часть акта DMCA. Формально противозаконно заниматься этим даже у себя дома, но если вы все-таки сделали это и пользуетесь результатами своих действий только сами, то кажется маловероятным, что у вас появятся проблемы. Но при попытке поделиться полученными результатами с другими людьми вам следует проявить осторожность.
Предупреждая о безопасности, автор хотел бы рассказать о чрезвычайной истории, произошедшей в результате нарушения новых законов. Это касается российской компании – разработчика программного обеспечения ElcomSoft Co. Ltd., специализирующейся на вскрытии паролей, снятии защиты от копирования и восстановлении поврежденных файлов. Имейте в виду, что на тот момент времени в России не было никакого закона против восстановления алгоритма работы программы по ее коду. Один из программистов компании ElcomSoft Co. Ltd., Дмитрий Скляров, прибыл на конференцию DEF CON 9 в Лас-Вегасе и сделал доклад относительно формата электронных документов eBook компании Adobe. Формат содержит некоторые смехотворные попытки безопасности. На следующий день Дмитрий был арестован и обвинен в «распространении изделия, предназначенного для обхода средств защиты авторского права». При этом упоминалась программа его компании, которая конвертировала формат eBook документа в стандартный формат Adobe Acrobat.PDF файлов. Выполнение подобного конвертирования покупателем одного из этих средств eBooks для себя юридически законно, поскольку пользователю разрешается делать резервные копии.
Короче говоря, Дмитрий был арестован 17 июля 2001 года и отпущен домой только 31 декабря 2001 года. Компания Adobe отозвала свою жалобу из-за повсеместных протестов, но американское правительство отказалось снять обвинения. Поскольку вопрос не закрыт до сих пор, Дмитрий все еще полностью не освобожден от ответственности.
Относительно сказанного хочется добавить, что используемые им методы для разгадывания системы безопасности изделия были относительно просты. Мы осветим подобные методы декодирования в главе 6.
Пожалуйста, будьте осторожны с информацией, которая изложена в книге.
Конспект
В этой книге авторы собираются рассказать о подробностях поиска брешей в системе безопасности и их использования на основании таких методов, как анализ пакетов, пиратское подсоединение, имитация соединения для получения доступа, схем раскрытия шифров, уклонение от систем обнаружения атак и даже хакинг аппаратных средств ЭВМ. Это не книга о проектировании безопасности, политике, архитектуре, управлении рисками или планировании. Если читатель так думает, то его ввели в заблуждение.
Все обнаруженные бреши в системе защиты должны быть преданы огласке. Публичное сообщение об ошибках приносит пользу каждому, включая вас самих, поскольку это может способствовать вашему признанию.
Вы должны научиться хакерским методам, для того чтобы знать, как защитить вашу сеть или сеть вашего работодателя. Вы должны это знать, потому что это интересно. Если вы не соглашаетесь с чем-либо, о чем говорится в этой главе или книге, то это хорошо! Первое, что хакеры должны уметь делать, – это самостоятельно думать. Нет никаких причин для слепой веры в изложенный авторами книги материал. Если у вас есть замечания к книге, то зайдите на Web-сайт www.syngress.com/solutions, найдите адрес электронной почты авторов и пошлите им письмо. Возможно, ваше опровержение будет помещено на сайт.
Часто задаваемые вопросы
Вопрос: Могу ли я назвать себя хакером?
Ответ: Существует два ответа на этот вопрос. Первый, созвучный мыслям многих: хочешь быть хакером – будь им. Второй: если вы называете себя хакером, то будьте готовы к широкому диапазону оценок вследствие большого количества определений слова «хакер» и их двусмысленности. Одни будут думать, что вы только что сказали им, что вы – преступник. Другой, кто сам себя считает хакером, осмеет вас, если вы будет заподозрены в недостаточной квалификации. Некоторые не будут знать, что и подумать, но затем попросят вас о хакерской услуге для себя… Автор советует вам сначала приобрести необходимые навыки и практику. Лучше всего, если кто-либо другой назовет вас хакером.
Вопрос: Законно ли написание вирусов, Троянских коней и червей?
Ответ: Фактически (в большинстве случаев) да. Пока. Это утверждение заслуживает серьезного разъяснения. Существует ряд программистов, которые открыто пишут вирусы и делятся результатами своей работы. До сих пор они, кажется, никому не мешали. Однако если хотя бы часть написанного ими кода выйдет из-под контроля и привлечет к себе внимание, то дело примет серьезный оборот. Если вы пишете программы вирусов, будьте осторожны, чтобы не потерять контроль над ними. Вы можете захотеть ограничить их способность к распространению, проявляя необходимую предосторожность. В этой связи задумайтесь, как вы будете выглядеть, если кто-то доработает ваш вирус и выпустит его на волю. Также обратите внимание на то, не противоречит ли отправление по почте подобного кода правилам, установленным вашим Интернет-провайдером, особенно если вы – учащийся. Ваши действия могут и не противоречить установленным правилам, но могут легко привести к разрыву соединения с вашим Интернет-провайдером, получения предупреждения или лишения вас прав пользователя.
Вопрос: Несете ли вы ответственность за хакинг систем?
Ответ: Вообще, если вы санкционированный (авторизованный) пользователь, нет. Пожалуйста, примите во внимание если. Когда есть сомнения, получите письменное разрешение от юридического лица – владельца компьютерной системы, например школы или работодателя. Множество людей, отвечающих за безопасность компьютерных систем, регулярно тестируют их хакерскими методами. Дополнительные сведения и примеры вы сможете найти по адресу www.lightlink.com/spacenka/fors.
Глава 2
Законы безопасности
В этой главе обсуждаются следующие темы:
• Обзор законов безопасности
• Закон 1. Невозможно обеспечить безопасность клиентской части
• Закон 2. Нельзя организовать надежный обмен ключами шифрования без совместно используемой порции информации
• Закон 3. От кода злоумышленника нельзя защититься на 100 %
• Закон 4. Всегда может быть создана новая сигнатура кода, которая не будет восприниматься как угроза
• Закон 5. Межсетевые экраны не защищают на 100 % от атаки злоумышленника
• Закон 6. От любой системы обнаружения атак можно уклониться
• Закон 7. Тайна криптографических алгоритмов не гарантируется
• Закон 8. Без ключа у вас не шифрование, а кодирование
• Закон 9. Пароли не могут надежно храниться у клиента, если только они не зашифрованы другим паролем
• Закон 10. Для того чтобы система начала претендовать на статус защищенной, она должна пройти независимый аудит безопасности
• Закон 11. Безопасность нельзя обеспечить покровом тайны
· Резюме
· Конспект
· Часто задаваемые вопросы
Введение
Для обнаружения уязвимостей в безопасности компьютерных систем используется ряд экспресс-методов (shortcuts). Один из них основан на мысленном составлении списка требований, которым должна удовлетворять исследуемая система. Каждое требование из этого списка несет информацию о безопасности системы и может быть проанализировано. Выявление при подобном анализе специфических особенностей в работе системы позволяет подозревать ее в ненадежности еще до начала детального тестирования.
Этот список назван законами безопасности. Причем под законами понимаются руководящие принципы, которые должны использоваться для того, чтобы не упустить из виду вопросы безопасности при анализе или проектировании системы. Система в этом случае может состоять как из единственной программы, так и полномасштабной сети компьютеров, включая сетевые экраны (firewalls), фильтрующие шлюзы (filtering gateways) и вирусные сканеры. Не важно, в чьих интересах исследуется система: в интересах защиты или нападения. Важно понять, где у нее уязвимости.
Законы безопасности помогают распознать слабые места и сосредоточить на них внимание. Эта глава познакомит читателя с законами безопасности. Большая часть остальной части книги посвящена подробному рассмотрению методов использования уязвимостей, выявленных при помощи законов безопасности.
Если читатель достаточно квалифицирован в области информационной безопасности, то он может пропустить эту главу. Хотя авторы рекомендуют, по крайней мере, бегло просмотреть ее, чтобы удостовериться в том, что читатель знает эти законы и согласен с ними.
Обзор законов безопасности
Начав с обзора законов, авторы детально обсудят их по ходу книги. При обсуждении будет рассмотрено содержание законов, способы их применения для поиска слабых мест, а также разрешаемые с их помощью вопросы. В список входят следующие законы безопасности.
1. Невозможно обеспечить безопасность клиентской части.
2. Нельзя организовать надежный обмен ключами шифрования без совместно используемой порции информации.
3. От кода злоумышленника нельзя защититься на 100 %.
4. Всегда может быть создана новая сигнатура кода, которая не будет восприниматься как угроза.
5. Межсетевые экраны не защищают на 100 % от атаки злоумышленника.
6. От любой системы обнаружения атак можно уклониться.
7. Тайна криптографических алгоритмов не гарантируется.
8. Шифрование без ключа является кодированием.
9. Пароли не могут надежно храниться у клиента, если только они не зашифрованы другим паролем.
10. Для того чтобы система начала претендовать на статус защищенной, она должна пройти независимый аудит безопасности.
11. Безопасность нельзя обеспечить покровом тайны.
Известны различные точки зрения на законы безопасности. В этой главе авторы решили обратить особое внимание на теоретические основы безопасности систем или, другими словами, на строгие формулировки законов. (По крайней мере, настолько, насколько это возможно. Такой сложный предмет исследования, как безопасность систем, плохо поддается строгому математическому описанию.) Существует и иной способ построения списка законов: в список включается не то, что является возможным, а то, что применяется на практике. Естественно, что отчасти эти два принципа перекрываются: если что-то невозможно, то это нереализуемо на практике. Скотт Кулп (Scott Culp), менеджер консультационного центра по вопросам безопасности компании Микрософт (Microsoft's Security Response Center Manager), сформулировал десять законов на основе своего опыта и опыта клиентов. Он назвал этот список как «Десять абсолютных законов безопасности». К ним относятся следующие:
1. Закон № 1: Если злоумышленник смог убедить вас запустить его программу на вашем компьютере, то компьютер уже не ваш.
2. Закон № 2: Если злоумышленник может изменить операционную систему на вашем компьютере, то компьютер уже не ваш.
3. Закон № 3: Если злоумышленник имеет неограниченный физический доступ к вашему компьютеру, то компьютер уже не ваш.
4. Закон № 4: Если вы позволяете злоумышленнику загружать программы на ваш Web-сайт, то Web-сайт уже не ваш.
5. Закон № 5: Слабые пароли сводят на нет хорошую систему безопасности.
6. Закон № 6: Компьютерная система защищена настолько, насколько заслуживает доверия обслуживающий ее администратор.
7. Закон № 7: Безопасность зашифрованных данных определяется безопасностью ключа их расшифровки.
8. Закон № 8: Устаревший сканер вирусов ненамного лучше никакого.
9. Закон № 9: Абсолютная анонимность практически недостижима ни в реальной жизни, ни в Web-пространстве.
10. Закон № 10: Технология – не панацея.
Полный список (с разъяснениями смысла каждого правила) может быть найден на сайте www.microsoft.com/technet/columns/security/10imlaws.asp. Этот список приведен для иллюстрации подхода к теме с точки зрения администратора безопасности. По большей части читатель найдет, что приведенные законы – обратная сторона исследуемых авторами законов безопасности.
Перед применением законов для обнаружения потенциальных проблем следует сформулировать их рабочее определение. В следующих разделах рассмотрены законы безопасности и их значение для обеспечения безопасности вычислительных сетей и систем.
Закон 1. Невозможно обеспечить безопасность клиентской части
В первом законе безопасности следует определить пару понятий. Что именно имеется в виду, когда говорят о клиентской части (client-side)? Рассматривая сетевое (клиент-серверное) окружение, авторы определили бы клиента как приложение, которое инициирует запрос на обслуживание или соединение, а сервер – как приложение, которое или ожидает запрос на обслуживание и установление связи, или способно выполнять эти запросы. Термин «клиентская часть» применительно к вычислительным сетям используется для обозначения компьютера, за которым работает пользователь и при помощи которого пользователь (или злоумышленник) получает контроль над системой. В сформулированном законе отличие в использовании термина «клиентская часть» заключается в том, что он применяется без связи с какой-либо сетью или сервером, то есть авторы говорят о безопасности клиентской части даже в случае одного компьютера с частью программного обеспечения на дискете. Главное состоит в том, что подчеркивается мысль о возможности получения контроля пользователей (или злоумышленников) над собственными компьютерами и их способности сделать с ними все, что они захотят.
После определения термина клиентской части выясним, что понимается под ее безопасностью. Безопасность клиентской части – это некоторый механизм безопасности, работающий исключительно у клиента. В одних случаях его реализация допускает привлечение сервера, как в традиционной архитектуре клиент-сервер. В других – это может быть частью программного обеспечения, которое выполняется на компьютере клиента в интересах предотвращения действий пользователя, нежелательных с точки зрения безопасности.
Основная проблема безопасности клиентской части состоит в том, что человек, физически сидящий за клиентским компьютером, имеет абсолютный контроль над ним. Закон № 3 Скотта Кулпа (Scott Culp) иллюстрирует это более упрощенным способом: Если у злоумышленника неограниченный физический доступ к вашему компьютеру, то компьютер уже не ваш. Для полного понимания тонких моментов этого вопроса требуются дополнительные разъяснения. Вы не сможете разработать механизм безопасности клиентской части, который пользователи не смогли бы, если они этого захотят, преодолеть. В лучшем случае вы сможете усложнить им эту задачу. Проблема состоит в том, что поскольку большинство программного обеспечения и аппаратных средств ЭВМ – результат массового производства, то один профессионал, разгадавший, как обойти механизм безопасности, может, вообще говоря, рассказать кому-либо об этом или часто пользоваться результатами своего решения. Посмотрите на пакет программ, в котором предусмотрено ограничение его использования тем или иным способом. Какие инструменты нападающий имеет в его или ее распоряжении? Он или она могут использовать отладчики, дизассемблеры, редакторы шестнадцатеричного кода, модификацию операционной системы и системы мониторинга, не говоря уже о неограниченных копиях программного обеспечения.
А если программное обеспечение обнаружит, что оно было модифицировано? Тогда удалите часть кода, которая обнаруживает модификацию. Что, если программное обеспечение скрывает информацию где-нибудь в компьютере? Контролирующие механизмы немедленно найдут это изменение. Имеется ли защита аппаратных средств ЭВМ от преступного использования? Нет. Если нарушитель может потратить неограниченное время и ресурсы, атакуя аппаратные средства вашего компьютера, то любое средство защиты в конечном счете признает себя побежденным. Это особенно справедливо для аппаратуры массового производства. Поэтому в общем случае следует полагать, что безопасность клиентской части невозможно обеспечить.
Примечание
Этот закон используется в главах 5 и 14.
Закон 2. Нельзя организовать надежный обмен ключами шифрования без совместно используемой порции информации
Для человека, знакомого с криптографией, этот закон может показаться очевидным. Тем не менее закон является уникальным вызовом защите данных и процедур обмена информацией. Основная проблема обмена зашифрованными данными заключается в надежности ключей сеансов обмена. Обмен ключами между клиентом и сервером обязателен и происходит до обмена данными (для дополнительной информации см. главу 6).
Для иллюстрации этого давайте рассмотрим процесс установления зашифрованной связи через Интернет. Пусть как на вашем компьютере, как и на компьютере, с которым вы, как предполагается, соединяетесь, установлена ныне модная программа CryptoX. Вы вводите известный вам IP-адрес другого компьютера и ударяете на клавишу Connect (установить соединение). Программное обеспечение сообщает вам об установке соединения и обмене ключами. Теперь вам доступна надежная связь с 1024-битным шифрованием. Следует ли вам верить этому? Да, следует. Ведь за простым интерфейсом работы этой программы скрывается сложная криптоинфраструктура, обеспечивающая описанный процесс соединения (позднее в этой главе будет объяснено, что это означает). К сожалению, похитить IP-связь не только не невозможно, но даже не слишком трудно (см. главу 11).
Проблема состоит в том, как узнать, с каким компьютером вы обменялись ключами. Вы могли установить соединение именно с тем компьютером, с которым вы и хотели осуществить обмен, так и со злоумышленником, ожидающим ваших действий по установке соединения, для того чтобы попытаться подменить IP-адрес компьютера, с которым вы соединяетесь, на свой. Единственный способ удостовериться в факте соединения с требуемым компьютером состоит в наличии на обоих компьютерах порции информации, которая позволила бы удостовериться в идентичности друг друга. Как это осуществить? Сразу приходит на ум пара методов. Во-первых, можно воспользоваться открытыми ключами, распространяемыми сертификационными центрами в Интернете. Во-вторых, можно использовать разделяемый секретный ключ или средства аутентификации протокола защищенных сокетов SSL, гарантирующего безопасную передачу данных по сети в результате комбинирования криптографической системы с открытым ключом и блочного шифрования данных. Конечно, все перечисленное является разделяемыми порциями информации, необходимой для проверки отправителя информации.
Отсюда следует необходимость решения задачи управления ключами, поэтому исследуем некоторые аспекты этого процесса, ответив на следующие вопросы. Как переслать ключи туда, где они необходимы? Защищен ли маршрут распространения ключей от злоумышленника, готового к атаке типа «злоумышленник посередине» (man-in-the-middle – MITM)? Какие затраты ресурсов необходимы и насколько оправдано их использование по отношению к ценности защищаемой информации? Участвует ли доверенное лицо в обмене ключей? Может ли оно быть атаковано? Какие методы используются для обмена ключей и насколько они уязвимы?
Давайте рассмотрим некоторые способы распределения и обмена ключами. После обмена ключами шифрования нужна дополнительная информация, чтобы удостовериться в том, что обмен состоялся именно с тем, с кем нужно, и ключи не стали добычей злоумышленника в результате его успешной атаки типа MITM. Доказать это трудно потому, что доказательство сводится к рассмотрению всевозможных протоколов обмена ключами, которые когда-либо могли быть изобретены, и поиску уязвимости каждого из них к атакам типа MITM.
Как и в случае большинства нападений, может быть, разумнее всего положиться на то, что люди, как правило, не следуют хорошим советам по обеспечению безопасности, или на то, что результат шифрования обычно менее криптостоек, чем примененный алгоритм шифрования.
Давайте проанализируем часть документации, посвященной обмену общедоступными ключами, для того чтобы получить представление о реализации одного из способов их обмена. Подробнее познакомиться с документацией можно в Интернете: www.cisco.com/univercd/cc/td/doc/product/software/ios113ed/113ed_cr/secur_c/scprt4/scencryp.htm#xtocid211509.
Это – документ компании Cisco Systems, Inc., который описывает, помимо всего прочего, как обмениваться ключами стандарта цифровой подписи DSS. DSS – стандарт открытых/секретных ключей (public/private key standard), который Cisco использует для аутентификации одноранговых маршрутизаторов. Шифрование с использованием открытых/секретных ключей обычно считается слишком медленным для шифрования в реальном масштабе времени, поэтому для обмена информацией применяются симметричные сеансовые криптографические ключи (типа ключей DES или 3DES алгоритмов). DES – американский правительственный стандарт алгоритма шифрования, принятый в 70-х годах. 3DES – улучшенная версия алгоритма DES, связывающая вместе три отдельных выполнения алгоритма DES для двукратного или трехкратного, в зависимости от реализации, повышения криптостойкости алгоритма. Для успешной работы по описываемой схеме у каждого маршрутизатора должен быть правильный открытый ключ другого маршрутизатора. Если в случае атаки типа MITM злоумышленнику удастся обмануть каждый маршрутизатор, подсунув свой ключ вместо открытого ключа другого маршрутизатора, то сначала он сможет узнать все ключи сессии, а затем контролировать любой трафик сети.
Cisco признает это и идет дальше, заявляя, что вы «должны устно проверить» открытые ключи. В документации описан сценарий, по которому два администратора маршрутизатора, имея безопасную связь с маршрутизатором (возможно, при помощи терминала, физически подключенного к консоли), связываются друг с другом по телефону. Во время обмена ключей они должны сообщить друг другу по телефону полученный ключ. Безопасность этого сценария основывается на предположении, что, во-первых, эти два администратора узнают голос друг друга, а во-вторых, трудно фальсифицировать чей-либо голос.
Если администраторы хорошо знают друг друга и каждый из них сможет получить ответы на свои вопросы, если они оба зарегистрированы на консоли маршрутизаторов и маршрутизаторы не скомпрометированы, если нет ошибок в алгоритме шифрования, то эта процедура безопасна.
Никто не собирается учить вас подражанию чьему-либо голосу или как захватывать коммутаторы телефонных компаний для неправильного соединения незнакомых друг с другом администраторов. В первую очередь критически разберем предположение о достижении безопасности при использовании двух администраторов и рассмотренного механизма безопасности.
Есть подозрение, что вопреки документации компании Cisco большинство обменов ключами между маршрутизаторами этой компании осуществляются одним администратором с использованием двух Telnet-окон. Если дело обстоит именно так и если злоумышленник в состоянии сыграть роль «нарушителя посередине» и похитить Telnet-окна и ключевой обмен, то он сможет взломать зашифрованную передачу данных.
Сформулируем выводы. Безопасность сети не может быть обеспечена в большей степени, чем безопасность наиболее уязвимого соединения. Если в нашем примере маршрутизатор может быть взломан и похищены секретные ключи, то не нужно никаких атак типа MITM. Кажется, в настоящее время компания Cisco уделяет большое внимание совершенствованию защиты секретных ключей. Их не могут просматривать даже уполномоченные администраторы. Однако ключи хранятся в памяти. Тот, кто захочет вскрыть маршрутизатор и воспользоваться той или иной разновидностью циклического опроса, сможет легко восстановить секретный ключ. К тому же до последнего времени в IOS Cisco не было проведено открытого изучения вопросов переполнения буфера и т. п. Авторы уверены, что когда-нибудь это произойдет, поскольку ряд известных нападений убедительно свидетельствует о возможности переполнения буфера.
Другой способ реализации обмена заключается в использовании протокола SSL вашим браузером. При нормальном режиме обмена информацией, если от вас не запросили никакой информации, криптозащита должна быть отключена. Как в этом случае работает протокол SSL? Когда вы посещаете защищенную Wed-страницу, то от вас не требуется никаких действий по обеспечению безопасности. Подразумевает ли это, что SSL – жульничество? Нет, некоторая часть информации действительно используется совместно. Прежде всего это открытый ключ основного сертификата полномочий. Всякий раз, когда вы загружаете программное обеспечение браузера, оно активизирует встроенные в программу сертификаты. Эти сертификаты содержат необходимую информацию для обеспечения безопасности. Да, сохраняется вероятность атаки типа MITM во время загрузки файла. Если кто-то подпортил файл во время его нахождения на сервере, с которого файл был загружен, или во время загрузки по пути к вашему компьютеру, то теоретически весь ваш трафик по протоколу SSL может быть скомпрометирован.
SSL особенно интересен, так как это один из лучших работающих образцов массового рынка средств обеспечения защиты, поскольку он управляет ключами и т. д. Конечно, протокол не без недостатков. Если вам интересны технические детали работы SSL, посетите сайт: www.rsasecurity.com/standards/SSL/index.html.
Примечание
Этот закон используется в главе 6.
Закон 3. От кода злоумышленника нельзя защититься на 100 %
В течение последних лет зафиксировано увеличивающееся число атак, которые использовали слабые места в операционных системах и прикладном программном обеспечении для получения доступа к системам пользователя. Недавно мы стали свидетелями широкомасштабных разрушений сервисов и потери данных в результате быстрой модификации ряда программ и их повторной загрузки в Интернет. Почему это произошло? Потому, что нельзя на 100 % защититься от разрушительного кода, когда он изменяется так быстро, как теперь. Авторы рассмотрят некоторые примеры на эту тему в следующем разделе и обсудят в качестве примера способ защиты против вирусов.
Если, подобно большинству людей, вы работаете с Windows-подобной операционной системой, то вы запускаете антивирусные программы. Возможно, вы даже прилежно обновляете ваши средства обнаружения вирусов современными копиями. Вы полностью защищены от вирусов? Конечно, нет.
Давайте посмотрим, какими бывают вирусы и Троянские кони (программы, которые выдают себя за другие программы с целью получения информации) и как они попадают на ваш компьютер. Вирусы и Троянские кони – просто программы, каждая из которых имеет специфическую характеристику. Вирусы размножаются, и им нужны другие программы, к которым они присоединяются. Троянские кони выдают себя не за то, чем они на самом деле являются. В основном это программы, которые программист разработал для выполнения чего-то такого, чего бы вы вообще никогда не допустили, если бы знали про это. Эти программы обычно попадают на ваш компьютер обманным путем. Они скрывают свое истинное предназначение, присоединяясь к нужным вам программам или, находясь на носителях информации, которыми вы пользуетесь, не зная об их инфицировании. Они могут попасть к вам и в результате действий удаленного злоумышленника, вскрывшего вашу систему безопасности.
Как работает антивирусное программное обеспечение? Перед выполнением программы антивирусные средства сканируют ее код или носитель информации для определения «вредных штучек», которые обычно состоят из вирусов, Троянских коней и даже потенциального инструментария хакера. Тем не менее имейте в виду, что только разработчик вашего антивирусного программного обеспечения определяет, что именно проверяется. Это справедливо при условии, что у вас нет ни времени, ни инструментария для формирования собственных файлов сигнатур. Файлы сигнатур – основа большинства антивирусных программ. Они обычно состоят, как хочется верить, из уникальных для отдельного вируса или Троянского коня порций двоичных данных. Поэтому если на ваш компьютер попадает не зафиксированный в базе данных вирус, то ваше антивирусное программное обеспечение вам помочь не сможет.
Почему процесс обезвреживания новых вирусов такой медленный? Чтобы сформировать файл сигнатур, разработчик антивирусного программного обеспечения должен получить копию вируса или Троянского коня, проанализировать ее, сформировать уникальную для нового вируса сигнатуру, модернизировать файл сигнатур (а иногда еще и антивирусную программу) и опубликовать обновления – скорректированную версию программного обеспечения. После этого конечный пользователь должен установить и применить обновленную программу. Вы можете себе представить, насколько большими могут оказаться задержки времени от момента получения информации о новом вирусе до его обезвреживания. И все это время пользователи уязвимы.
Из-за контролирующих действий антивирусного программного обеспечения вы не сможете вслепую запустить на выполнение какую-либо программу или просто так загрузить любое приложение. Не так давно на антивирусное программное обеспечение обычно можно было положиться из-за медленной скорости размножения вирусов по вине людей, переносящих их на дискетах, или при помощи зараженных общих программ. Сейчас, в связи с ростом числа подключенных к Интернету компьютеров, возможность соединения компьютеров между собой стала очень привлекательным транспортным средством для вирусов. Они распространяются через Web-страницы, электронную почту и загрузку приложений по каналам связи. Сейчас намного больше шансов увидеть новый вирус прежде, чем производитель вашего антивирусного программного обеспечения опубликует обновления. И не забудьте, что сделанный на заказ вирус или Троянский конь может быть написан специально для инфицирования вашего компьютера в любое время. При этих обстоятельствах ваше антивирусное программное обеспечение никогда не спасет вас.
Поскольку целая глава этой книги посвящена вирусам и Троянским коням, то авторы опустят многие детали написания вирусов или обмана людей посредством Троянского коня во время его выполнения. Будет лучше, если авторы приведут их любимый пример на тему вирусов. В апреле 2000 года пользователи Интернета впервые познакомились с вирусом «I love you». Это был еще один представитель вирусных червей (программ, самостоятельно распространяющих свои копии по сети). Вирус «I love you» выполнялся совместно с программой электронной почты Microsoft Outlook. Он обладал гораздо большим разрушительным эффектом в результате рассылки самого себя всем адресатам адресной книги, а не первым пятидесяти, как более ранний вирус «Мелисса». Но, несмотря на усилия разработчиков антивирусного программного обеспечения и других специалистов по сдерживанию вируса, он быстро распространялся и порождал множество имитаторов вирусов за короткий промежуток времени после своего возникновения. Почему его не смогли остановить быстрее? В случае ряда моих клиентов – из-за слишком большого числа служащих, которые не смогли сопротивляться желанию узнать, кто их так сильно любит! Ограничение распространения вирусов не всегда входит в компетенцию вашей безопасности или программного обеспечения, следящего за безопасностью вашего компьютера.
От Троянских коней и вирусов фактически можно было бы полностью защититься, если бы пользователи изменили свое поведение. Хотя после этого они, вероятно, не смогли бы многого от своего компьютера. Пользователи были бы вынуждены установить только то программное обеспечение, которое было получено непосредственно от доверенного производителя. (Однако было несколько случаев коммерческой продажи программ с вирусами на носителях информации.) Вероятно, пользователи должны были бы воздержаться от применения сети и никогда не обмениваться информацией с кем-либо еще. И конечно, должна быть обеспечена физическая безопасность компьютера.
Примечание
Этот закон используется в главе 15.
Закон 4. Всегда может быть создана новая сигнатура кода, которая не будет восприниматься как угроза
Этот закон сравнительно нов в обсуждении вопросов безопасности, но за последний год он стал очень популярен. Это новая реальность, поскольку теперь у злоумышленников появилась возможность изменять существующие вирусы, Троянские кони и удаленно управляемые приложения почти одновременно с моментом выпуска их на волю. Это приводит к необходимости обсуждать новые проблемы. Если продолжить обсуждение на примере антивирусной защиты, то можно обнаружить, что даже незначительное изменение в коде вируса дает ему шанс стать невидимым для антивирусного программного обеспечения. Эти проблемы ранее доставляли гораздо меньше беспокойства. Несомненно, кто-то должен был заразиться вирусом первым, после чего их системы переставали работать, но были большие шансы, что это случится не с вами. К тому времени, когда вас заражал тот же вирус, производители ваших антивирусных программ имели нужную копию, и вы обновляли свои файлы.
Теперь это не так. Ряд новейших вирусов размножается намного быстрее. Многие из них используют электронную почту для рассылки себя среди пользователей. Некоторые даже маскируются под вас и используют грубую форму социотехники для обмана ваших друзей и проникновения в их компьютеры. В этом году многие стали свидетелями подобного происшествия, наблюдая за различными версиями вируса «Code Red», который распространился по всему миру. Если вспомните, первоначальная версия имела возможность запуска по времени и дате с запрограммированным нападением на Web-сайт американского правительства. В ряде различных модификаций вируса его поведение было успешно изменено, что привело к быстрому увеличению числа атак и потребовало дополнительного времени для их отражения. Почему это оказалось настолько эффективным? Потому что возможности для модификации кода вируса бесконечны и для этого существуют многочисленные методы. Например, можно модифицировать первоначальный код, чтобы создать новую сигнатуру кода, сжать файл, зашифровать файл, защитив его паролем или иначе изменить, для того чтобы избежать обнаружения кода вируса. В результате будет получена новая сигнатура кода, которая еще не будет признана вирусными сканерами, межсетевыми экранами и системами обнаружения вторжения как угроза, что позволит модифицированному вирусу беспрепятственно их преодолевать.
Примечание
Этот закон используется в главах 15 и 16.
ИнструментарийХотите проверить межсетевой экран?
Есть невероятное число свободно распространяемых инструментальных программных средств, доступных вам для проверки собственной уязвимости. Конечно, основные средства включают в себя основные команды протокола TCP/IP, встроенные в протокол: ping, tracert, pathping, Telnet и nslookup помогут быстро оценить уязвимость вашей системы. Наряду с ними у авторов есть пара любимых инструментальных средств, позволяющих быстро исследовать и проверить информацию о различных IP-адресах:
• SuperScan от компании Foundstone Corporation: www.Foundstone.com/knowledge/free_tools.html (щелкните мышкой на SCANNER);
• Sam Spade от компании SamSpade.org: www.samspade.org.
Эти два инструментальных средства с богатыми функциональными возможностями позволят вам, по крайней мере, увидеть некоторые из уязвимостей, которые могут существовать на вашей системе.
Закон 5. Межсетевые экраны не защищают на 100 % от атаки злоумышленника
Межсетевые экраны могут защитить сеть от некоторых типов нападений. Они обеспечивают полезную регистрацию сетевого трафика. Однако, во многом подобно антивирусному программному обеспечению, межсетевые экраны никогда не обеспечат стопроцентную защиту. Фактически они часто обеспечивают гораздо меньшую защищенность.
Прежде всего, даже если бы межсетевые экраны были бы на 100 % эффективны и отражали бы все проходящие через них атаки, следует понимать, что не все направления нападений проходят через межсетевой экран. Недобросовестные служащие, физическая безопасность, модемы и инфицированные дискеты все еще представляют различные угрозы безопасности. В интересах обсуждения не рассматриваются угрозы безопасности, не связанные с необходимостью их прохождения через сетевые экраны.
Межсетевые экраны – это устройства и/или программное обеспечение, разработанное для выборочного разделения двух или более сетей. Они предназначены для того, чтобы разрешить прохождение одних потоков информации и запретить другие. Что именно разрешать или запрещать, обычно контролирует человек, управляющий межсетевым экраном. Что разрешено или запрещено, должно быть отражено в письменной форме в политике безопасности, которая разрабатывается в каждой организации.
До тех пор, пока какому-либо трафику разрешено проходить через межсетевой экран, сохраняется потенциальная угроза нападения. Например, большинство межсетевых экранов разрешают тот или иной доступ к заранее определенным Web-узлам, из защищаемой сети к Web-узлам и обратно или только к Web-серверам. Простейшая реализация подобного варианта доступа основана на фильтрации порта, которая может быть осуществлена маршрутизатором со списками доступа. Простой фильтр трафика по протоколу ICMP, блокируя трафик внешнего интерфейса, запретит прохождение ответов от вашей системы к другой при выдаче команды ping. Для примера воспользуйтесь командами ping или tracert, указав в качестве параметра адрес www.microsoft.com. Вы получите сообщение о превышении интервала ожидания ответа на запрос. Узел компании Микрософт вышел из строя? Вряд ли. Скорее всего, при настройке системы обеспечения безопасности была заблокирована, помимо всего прочего, передача информации по протоколу ICMP. Есть несколько уровней защиты, которые могут предоставить межсетевые экраны для работы в Интернет. Простое конфигурирование маршрутизатора позволит хостам внутренней сети, защищенной межсетевым экраном, получить доступ к любой машине в Интернете по порту 80 протокола TCP, а также любой машине в Интернете послать ответ c 80 порта на любую машину защищенной сети. Более «осторожные» межсетевые экраны могут понимать протокол HTTP, пропуская только разрешенные команды HTTP. Это поможет сравнить сайт, посещаемый пользователем в данный момент, со списком сайтов, запрещенных к посещению. Тем самым можно сразу передавать программе сканирования вирусов файлы, полученные с этих сайтов, для проверки.