Механизмы реализации программных атак
Прослушивание каналов информационного обмена
Непосредственной целью применения данного механизма является раскрытие конфиденциальной информации.
В общих чертах, можно выделить три типичные варианта реализации прослушивание информационного обмена, который осуществляется через компьютерную сеть:
- путем подключения к линии связи специального прослушивающего устройства;
- путем переведения сетевого адаптера какого-то из узлов сети в смешанный (promiscuous) режим (т.е. режим, в котором сетевой адаптер принимает и передает операционной системе все пакеты, которые передаются в сегменте сети, к которому он подключен, а не только те, что направленные ему);
- путем установления контроля над маршрутизатором или другим устройством, которое выполняет функции ретранслятора информационного обмена.
В любом случае прослушивание каналов информационного обмена осуществляется с помощью специальных программ, которые называют анализаторами сетевого трафика или снифферами (от англ. sniffer) (следует иметь в виду, также называют и программно-аппаратные комплексы, в составе которых функционируют эти программы, в целом). Основной функцией таких программ является динамическая семантическая селекция потока информации, которая прослушивается.
Прослушивание информационного обмена особенно эффективно, если информационный обмен осуществляется по протоколу, который не предусматривает шифрования. Типичными примерами таких протоколов являются протоколы telnet и ftp, которые не предусматривают даже шифрования аутентификационных данных (паролей). Если информационный обмен шифруется, некоторых результатов атакующий может достичь, применяя методы криптоанализа.
Прослушивание информационного обмена в сегментах с коммутацией сложнее (звучит почти также сложно, как договор аренды нежилого помещения).
Очевидно, что для того, чтобы реализовать этот механизм, атакующий должен иметь доступ к линии связи, по которой осуществляется информационный обмен. Например, контролировать один из узлов, подключенных к одному сегменту, одну из сторон обмена, или контролировать один из маршрутизаторов, с помощью которых осуществляется обмен. Преодолеть это ограничение атакующий может, модифицируя (перенаправляя) маршруты передачи информации таким образом, чтобы они проходили через линию связи, к которой атакующий имеет возможность подключить сниффер. В IP-Сетях перенаправить маршруты можно, например, с помощью фиктивного ARP- или DNS-Сервера, передачи фиктивных ICMP-Сообщений Redirect Message (см. дальше).
Прослушивание каналов информационного обмена может дополняться модификацией (подменой) информации, которая передается, если атакующий контролирует ретранслятор информационного обмена (например, маршрутизатор).
Модификация или подмена информации
Модификация информации — это частичное ее преобразование (искажение); подмена — полное изменение (граница между этими понятиями часто расплывчатая). Непосредственной целью применения этого механизма в программных атаках является нарушения целостности или аутентичности информации, которая, соответственно, модифицируется или подменяется.
Широко применяется модификация (подмена) как данных, так и программного кода.
Модификация и подмена программного кода осуществляется, как правило, с целью введения в объект программных закладок (см. дальше). Модификация программного кода осуществляется или как введение в программный код посторонних фрагментов (как при введении программного вируса), или как изменение логики работы программного кода (например, программы регистрации пользователей). Если первая технология не нуждается в заблаговременном исследовании работы программного кода, который модифицируется, то другая нуждается в таком исследовании. При подмене программного кода исходный программный код заменяется другим, с другой логикой работы.
Существуют две принципиально разные возможности модифицировать (подменить) данные или программный код объекта атаки. Во-первых, во время их хранения в объекте атаки (для этого нужно предварительно получить соответствующие полномочия в объекте атаки); во-вторых, во время их передачи через сеть (если атакующий контролирует какой-либо из ретрансляторов (маршрутизаторов), из-за которых передается информация).
Создание направленного шторма сообщений
Это довольно распространенный механизм реализации программных атак, направленных на нарушение доступности серверов сетевых служб объекта атаки (так называемых атак DoS (Denial of Service)), который заключается в направлении атакующим на объект атаки потока сообщений довольно большей интенсивности, чтобы исчерпать ресурсы объекта атаки по обработке этих сообщений. В результате на некоторое время объект может потерять способность обслуживать своих пользователей. Распространенной формой этого механизма является так называемый mail-bombing – “бомбежка” объекта атаки большим количеством электронных писем. Вторая распространенная форма – создание направленного шторма запросов на установление соединения (в IP-Сетях – пакетов с установленным флажком TCP SYN).
Создание направленного шторма запросов на установление соединения
Первый вариант реализации данного механизма заключается в направлении атакующим на объект атаки потока запросов на установление соединения, по возможности, большей интенсивности. При этом операционная система объекта атаки, в зависимости от вычислительной мощности компьютера, или перестает реагировать на легальные запросы на подключение, или, в наиболее плохом случае, практически зависает. Это случается потому, что система должна, во-первых, сохранить в памяти полученную в фиктивных запросах информацию, а, во-вторых, выработать и отослать ответ на каждый запрос. В результате операционная система вынуждена заниматься только обработкой фиктивных запросов. Эффективность этой атаки тем выше, чем больше пропускная способность канала связи между источником и объектом атаки, и тем ниже, чем больше вычислительная мощность компьютера, который атакуется. Мощным средством повышения эффективности таких атак является одновременное применение, для создания направленного шторма, нескольких (многих) узлов; при этом каждый из атакующих узлов может быть связан с объектом атаки линией с довольно низкой пропускной способностью.
Второй вариант применяется против объектов, операционная система которых имеет ограниченную очередь запросов на установление соединения (например, Windows NT). При этом на объект атаки направляется относительно небольшой поток запросов на установление соединения, но достаточно большой, чтобы исчерпать его очередь запросов (мина-шторм). Это приводит к временной (до 10 минут в IP-Сетях) невозможности объекта атаки отвечать на другие запросы на установление соединения, поскольку для каждого запроса, что попал в очередь, объект атаки некоторое время будет ждать подтверждения.
Такие атаки, как правило, сопровождаются подменой обратного адреса пакетов, которые передаются (с целью сокрытия источника атаки, а также, возможно, проникновение через межсетевой экран).
Подмена доверенного субъекта или объекта взаимодействия
Доверенными субъектами и объектами взаимодействия с компьютерной (программной) системой будем называть лиц или другие компьютерные (программные) системы, которые имеют определенные полномочия по отношению к ней. При этом субъектами взаимодействия будем называть тех из них, кто выступает инициатором сеанса взаимодействия с данной компьютерной (программной) системой; объектами взаимодействия – тех, по отношению к кому инициатором сеанса взаимодействия выступает данная компьютерная (программная) система (т.е. в разных сеансах та самая компьютерная (программная) система может выступать как субъектом, так и объектом взаимодействия).
Подменив доверенный субъект или объект взаимодействия с объектом атаки, атакующий получает возможность, во-первых, воспользоваться его полномочиями для нанесения убытка объекту атаки, во-вторых, скрыть свое лицо и/или пункт расположения.
Любая компьютерная (программная) система обозначает своих доверенных субъектов и объектов идентификаторами – числовыми и/или символьными кодами, которые однозначно соответствуют доверенным субъектам или объектам. Процедура присвоения доверенным субъектам и объектам идентификаторов и процедура определения идентификатора того или иного доверенного субъекта или объекта в начале сеанса работы с ним называются процедурами идентификации (или просто идентификацией) доверенного субъекта или объекта (т.е., слово идентификация – двузначное; дальше будем употреблять его исключительно во втором значении). Процедура подтверждения действительности того, что субъект или объект взаимодействия действительно является тем, за кого себя выдает, называется процедурой аутентификации (или просто аутентификацией) доверенного субъекта или объекта. Если та или иная компьютерная (программная) система предусматривает размежевание полномочий возможных субъектов и объектов взаимодействия, каждый сеанс работы такой системы с любым доверенным субъектом или объектом начинается с идентификации. Кроме того, во многих случаях в начале сеанса выполняется также аутентификация. Данные, что применяются для подтверждения действительности доверенного субъекта или объекта, называют аутентификационными данными.
Подмена доверенного субъекта или объекта возможна лишь только посредством обмана соответствующих процедур идентификации и аутентификации (если последняя применяется).
Рассмотрим дальше некоторые формы, в которых реализуется подмена доверенного субъекта или объекта (формы обмана систем идентификации и аутентификации).
Вход в объект атаки под чужим именем
Входом пользователя в компьютерную (программную) систему будем называть процесс инициализации сеанса работы данного пользователя с этой компьютерной (программной) системой. Войдя в объект атаки под чужим именем, атакующий получает возможность воспользоваться чужими полномочиями и скрыть свое лицо. Очевидно, что предварительно атакующему нужно выяснить идентификатор (имя) пользователя, за которого он имеет намерение себя выдать, и соответствующие аутентификационные данные. Эти сведения атакующий может получить путем прослушивания информационного обмена, введения программных закладок или каким-нибудь другим путем (например, украв записную книжку, в которой записанный пароль данного пользователя).
Подмена источника сообщений
Подменив источник сообщений, т.е. получив возможность передавать сообщение от лица доверенного субъекта или объекта, атакующий получает вместе с тем возможность передавать объекту атаки управляющие сообщения, фиктивные ответы на запросы объекта атаки, или, например, скрывать свой адрес при передаче деструктивных нестандартных пакетов или создании направленного шторма сообщений.
Существует два разных варианта данного механизма:
- когда сообщения передаются в рамках виртуального соединения;
- когда сообщения передаются без установления виртуального соединения.
О виртуальном соединении говорят, когда сеанс обмена сообщениями включает процедуру аутентификации принадлежности сообщений источнику, от лица которого они поступают. Эта процедура реализуется на транспортном уровне модели OSI. По обыкновению при этом в начале сеанса (при установлении соединения) стороны обмениваются данными, которые уникально идентифицируют данный сеанс (данное соединение) и выполняют роль аутентификационных данных для сообщений, которые передаются в рамках данного сеанса (соединения). Заголовки транспортного уровня всех пакетов, из которых составляются сообщения, формируются таким образом, чтобы можно было однозначно установить, владеет ли их источник аутентификационными данными, присланными ему пунктом назначения при установлении соединения.
Примером протокола транспортного уровня, который предусматривает установление при передаче сообщений виртуальных соединений, является протокол TCP.
Примерами протоколов транспортного уровня, которые не предусматривают установления при передаче сообщений виртуальных соединений, является протоколы ICMP и UDP.
Подмена источника сообщений, которые передаются без установления виртуального соединения
Аутентификации источника сообщений в этом случае не предполагается. Идентификация источника сообщений осуществляется, по обыкновению, за указанным в заголовках сообщений обратным адресом (например, в поле “Обратный адрес” (‘Source Address’) IP-Пакетов).
Чтобы подменить источник сообщения, достаточно подменить его обратный адрес (что часто довольно легко сделать).
В качестве примера применения данного механизма при проведении программных атак можно привести передачу объекту атаки от лица маршрутизатора ICMP-Сообщение Redirect Message, благодаря чему удается несанкционированно перенаправить маршруты передачи сообщений объекта атаки (см. ниже).
Подмена одной из сторон виртуального соединения
Неустойчивые реализации процедур установления виртуального соединения иногда дают возможность предусмотреть (с той или иной точностью) или перехватить во время передачи по каналам связи аутентификационную информацию, которая генерируется при установлении виртуального соединения и, таким образом, получить возможность присылать фиктивные сообщения. Фиктивное сообщение может быть передано или в рамках уже установленного соединения, или в результате установления фиктивного соединения.
Подмена одной из сторон TCP-Соединения
Для идентификации TCP-Соединения и аутентификации сообщений, которые передаются в рамках данного соединения, применяются два 32-битных поля TCP-Заголовка: ‘Sequence Number’ (SN) и ‘Acknowledgment Number’ (AN) (которые, кстати, используются также как счетчики соответственно переданных и принятых байтов).
Рассмотрим схему установления TCP-Соединения. Обозначим узел, который инициирует соединение, как “хост A”, а узел, который разрешает соединение, как “хост B”.
На первом этапе (“запрос соединения”) хост A передает хосту B пакет с установленным флажком TCP SYN и некоторым начальным значением поля ‘Sequence Number’ ISNa.
На втором этапе (“запрос подтверждения”) хост B передает хосту A пакет с установленными флажками TCP SYN и TCP ACK, проинициализированными некоторым начальным значением ISNb полем ‘Sequence Number’ и полем ‘Acknowledgment Number’, которое содержит число ISNa+1.
На третьем этапе (“подтверждение”) хост A передает хосту B пакет с установленным флажком TCP ACK, полем ‘Sequence Number’, что содержит число ISNa+1, и полем ‘Acknowledgment Number’, что содержит число ISNb+1.
На этом этапе соединение считается установленным.
Дальше хосты A и B могут обмениваться пакетами с данными. В пакетах, которые будет присылать хост A, в поле ‘Sequence Number’ будет число, разность которого с ISNa будет равняться числу переданных хостом A байтов. В поле ‘Acknowledgment Number’ – число, разность которого с ISNb будет равняться числу принятых от хоста B байтов. Аналогично будет формировать свои пакеты хост B.
Заметим, что для того, чтобы хост B воспринял пакет как такой, что поступил от хоста A в рамках установленного соединения, достаточно, чтобы, во-первых, обратный адрес этого пакета равнялся IP-Адресу хоста A (т.е. обратный IP-Адрес пакета, который поступил хосту B на этапе запроса соединения), во-вторых, величины ‘Sequence Number’ — ISNa и ‘Acknowledgment Number’ — ISNb были допустимыми.
Таким образом, чтобы прислать фиктивный пакет в рамках установленного TCP-Соединения, атакующему достаточно знать, кроме IP-Адреса сторон соединения, текущие значения ‘Sequence Number’ и ‘Acknowledgment Number’.
Чтобы установить фиктивное соединение, например, из хостом B от лица хоста A, атакующему достаточно знать, кроме IP-Адреса хостов A и B, какое значение будет иметь число ISNb (поскольку он не получит этого числа, оно будет прислано по адресу хоста A).
Если атакующий имеет возможность прослушивать информационный обмен между сторонами соединения, задача получения значений ‘Sequence Number’ и ‘Acknowledgment Number’ (или только ISNb при установлении фиктивного соединения) является довольно тривиальной.
Если у атакующего нет возможности прослушивать информационный обмен между сторонами соединения, то ему остается только попробовать предсказать эти значения. Если ставится задача установления фиктивного соединения, иногда это целиком возможно, благодаря тому, что для генерации чисел ISN часто применяются (по крайней мере, еще недавно применялись) довольно простые времязависимые алгоритмы.
Для предсказания числа ISN достаточно, во-первых, довольно точно представлять алгоритм генерации этого числа, которое используется объектом атаки, во-вторых, знать, какое значение имело это число, когда объект атаки последний раз устанавливал виртуальное соединение. Первая задача решается или путем установления типа и версии ОС объекта атаки, или путем экспериментального исследования этого алгоритма с помощью последовательных попыток установления соединения с объектом атаки. Вторая задача решается с помощью попытки установления соединения с объектом атаки непосредственно перед атакой.
Подбор паролей
Пароли пользователей операционных систем и прикладных программ, как правило, шифруются с помощью необратимых алгоритмов, т.е. таких, что не допускают расшифровки. В базах аутентификационных данных сохраняются именно зашифрованные таким образом пароли — хэши паролей. Во время аутентификации пользователя предоставленный им пароль тоже хэшируется (с помощью того же алгоритма), и полученный хэш сравнивается с тем, что сохраняется в базе аутентификационных данных. Если хэши совпадают, пользователь считается действительным, если нет – недействительным.
Получив тем или иным способом хэш пароля, атакующий не может его расшифровать, но может подобрать.
Можно выделить два метода подбора:
- прямой перебор вариантов (метод «грубой силы»);
- подбор по словарю.
Первый метод дает гарантию того, что рано или поздно пароль будет раскрыт. Но, в большинстве случаев такой подбор длится довольно долго, часто слишком долго.
Второй метод не гарантирует раскрытия пароля, но дает возможность быстро подобрать пароль, который является довольно типичным, например, является каким-нибудь общеупотребляемым словом.
Возможные вариации второго метода, когда, например, общеупотребляемые слова при подборе частично модифицируются по тому или иному алгоритму (например, из слова выделяются гласные, изменяется регистр отдельных букв, буквы перемешиваются с цифрами или другими символами).
Для подбора паролей по обыкновению применяются специализированные программные средства — взломщики паролей (password crackers).
Твитнуть