Введение в объект атаки вредных программ
Рассмотрим в общих чертах три типичные разновидности вредных программ, которые могут быть введены в объект программной атаки:
- программные закладки;
- компьютерные вирусы;
- злонамеренный мобильный код.
Программные закладки
Программные закладки – это такие программы, которые скрыто размещаются в компьютерной системе и создают угрозу ее безопасности (т.е., с их помощью может быть реализована какая-то из угроз безопасности компьютера).
Практически любая угроза безопасности КС, которая может быть реализована программными средствами, может быть реализованной с помощью программных закладок. Программные закладки могут, например, выполнять разнообразные деструктивные действия (так называемые “логические бомбы”), собирать и переправлять атакующему конфиденциальную информацию (разведывательные программные закладки) или открывать скрытые каналы отдаленного управления объектом атаки (утилиты скрытого отдаленного администрирования). В последнем случае атакующий получает возможность не только собрать конфиденциальную информацию, которая содержится в объекте атаки, а еще и использовать объект атаки в качестве промежуточного пункта для осуществления деятельности, при которой атакующему желательно скрыть свой адрес (для выполнения других программных атак, контрабанды программного обеспечения и т.п.).
Программные закладки могут выступать или как отдельные программы, или как фрагменты других программ.
Программные закладки в большинстве случаев создаются кем-то сознательно. В последнем случае введения программных закладок в программное обеспечение КС может осуществляться как на этапе разработки программного обеспечения, так и позднее, во время эксплуатации программного обеспечения КС.
Утилиты скрытого отдаленного администрирования
Это, возможно, опаснейший вид программных закладок.
Эти программы состоят из двух частей: сервера и клиента.
Сервер, следует только запустить его на компьютере — объекте атаки, делает себя резидентным и таким, что автоматически запускается при инициализации ОС. Дальше сервер открывает скрытый канал связи (постоянно слушает один из портов) и ожидает команд от клиента. Получив команду, сервер ее выполняет и передает результаты клиенту. По обыкновению применяются специальные приемы, чтобы скрыть присутствие сервера в компьютере: сервер размещается, как правило, в системном каталоге файловой системы; для него выбирается имя, по которому его тяжело отличить от системных программ и др. Сервер часто распространяется как фрагмент какой-то другой программы.
Клиент запускается на компьютере атакующего и служит для управления сервером (т.е. для передачи серверу команд и отображение результатов выполнения этих команд). Клиент может иметь графический интерфейс.
Опасность этих программ заключается, прежде всего в том, что они не используют для размежевания доступа базу аутентификационных данных ОС объекта атаки, поэтому разрешают осуществлять отдаленное управление и тем, кто не является легальным пользователем (администратором) объекта атаки.
Возможности утилит скрытого отдаленного администрирования рассмотрим на примере известнейшего, возможно, их представителя – программы Back Orifice 2000, серверная часть которой может быть установлена на компьютере под управлением ОС MS Windows 9.X, MS Windows NT/2000. Она предоставляет такие возможности атакующему (в случае, когда объект атаки функционирует под управлением ОС MS Windows NT/2000, если серверная часть запущена с правами администратора):
- произвольно выбирать имя выполняемого файла сервера;
- произвольно выбирать номер порта, который слушает сервер, и протокол (TCP или UDP), за которым осуществляется обмен информацией между клиентом и сервером;
- шифровать информационный обмен между клиентом и сервером;
- ограничивать доступ к серверу с помощью паролей;
- отдаленно перезагружать и блокировать объект атаки;
- изымать из памяти объекта атаки пароли пользователей;
- регистрировать нажатие клавиш локальными пользователями объекта атаки;
- передавать на клиентскую сторону файлы;
- осуществлять отдаленное управление процессами (приостанавливать, уничтожать);
- отдаленно просматривать и редактировать реестр объекта атаки;
- отдаленно захватывать экран объекта атаки;
- отдаленно получать полный доступ к дискам объекта атаки.
Компьютерные вирусы
Дать целиком точное определение компьютерным вирусам (т.е. такое, которое дало бы четко различие между вирусом и не вирусом) довольно сложно. Приблизительно компьютерные вирусы можно определить как программы, которые имеют свойство саморазмножения (это свойство можно считать необходимым свойством любого вируса). Нужно только иметь в виду, что существуют программы, которые формально имеют свойство саморазмножения, но не считаются вирусами. С программными закладками компьютерные вирусы роднит то, что вирусы в подавляющем большинстве случаев тоже скрывают свое существование и во многих случаях тоже создают угрозу безопасности компьютера (при выполнении этих условий вирусы можно считать разновидностью программных закладок).
Классификация компьютерных вирусов
В общем случае выделяют следующие классификационные признаки компьютерных вирусов (далее также просто “вирусов”):
- среда существования;
- операционная система;
- особенности алгоритма работы;
- деструктивные возможности.
В зависимости от среды существования вирусы разделяют на:
- файловые вирусы;
- загрузочные вирусы;
- макровирусы;
- сетевые вирусы (черви).
Файловые вирусы заражают файлы или файловые системы. При размножении они или внедряют себя в исполняемые файлы (наиболее распространенный тип вирусов), или создают файлы-двойники (вирусы-компаньоны), или используют особенности организации файловой системы (link-вирусы).
Загрузочные вирусы заражают загрузочные сектора дисков (boot-сектора, Master Boot Record).
Макровирусы заражают файлы-документы некоторых популярных редакторов (например, MS Word, MS Excel).
Сетевые вирусы заражают сетевые службы. Для размножения они используют команды и протоколы сетевых служб (например, электронной почты).
Существует большое количество объединений, например, файлово-загрузочные вирусы, которые заражают как файлы, так и загрузочные сектора дисков, или сетевые макровирусы, которые не только заражают документы, но и рассылают свои копии по электронной почте.
Выделение такого классификационного признака, как операционная система (точнее, операционная система, объекты которой могут быть заражены) оправданное потому, что каждый файловый или сетевой вирус заражает объекты какой-нибудь одной или нескольких ОС. Макровирусы заражают файлы только одного или нескольких редакторов. Загрузочные вирусы также ориентированы на конкретные форматы размещения служебной информации на дисках.
Среди особенностей алгоритма работы вирусов выделяют следующие:
- резидентность;
- использование специальных приемов сокрытия своего присутствия;
- использование специальных приемов, которые усложняют лечение от вирусов.
Резидентные вирусы после активизации оставляют в оперативной памяти свою резидентную часть, которая потом перехватывает обращение операционной системы к объектам заражения и внедряет себя в них. Резидентные вирусы, как правило, остаются активными вплоть до выключения компьютера или перезагрузки ОС. Резидентными можно считать макровирусы, поскольку они тоже присутствуют в памяти на протяжении всего сеанса работы зараженного редактора. При этом редактор выступает аналогом операционной системы. В многозадачных операционных системах время “жизни” резидентного DOS-Вируса может быть ограниченно моментом закрытия зараженного DOS-Окна. Активность резидентных загрузочных вирусов в некоторых операционных системах ограничивается моментом инициализации дисковых драйверов операционной системы.
Распространенным приемом сокрытия является такой: вирус перехватывает запросы операционной системы на чтение зараженных объектов, после чего или временно лечит эти объекты, или подставляет вместо себя незараженные фрагменты кода.
В случае макровирусов распространенным приемом сокрытия является запрет вызовов меню просмотра макросов.
Практически все типы вирусов могут применять такой прием сокрытия как самошифрование. При заражении вирус шифрует свое тело и прибавляет к нему программу-розшифровщик. Алгоритм шифрования постоянно изменяется, поэтому изменяется и зашифрованное основное тело, и программа-розшифровщик. В результате вирус получает свойство полиморфичности (становится так называемым полиморфик-вирусом). Такие вирусы достаточно сложно подвергаются выявлению, так как не имеют постоянных фрагментов, не имеют и сигнатур, которые служат главным признаком вирусов при выявлении автоматизированными средствами (с помощью программ-антивирусов).
Среди приемов, которые усложняют лечение от вирусов, можно выделить способность записывать свою копию в Flash-BIOS.
За деструктивными возможностями вирусы можно разделить на:
- безвредные, т.е. такие, что никаким образом не влияют на работу компьютера (кроме уменьшения свободного дискового пространства вследствие их распространения);
- безопасные, влияние которых ограничивается уменьшением свободного дискового пространства и графическими, звуковыми и другими эффектами;
- опасные, которые могут привести к серьезным сбоям в работе компьютера;
- очень опасные, в алгоритм работы которых нарочно заложены деструктивные возможности.
Следует иметь в виду, что даже если в алгоритме вируса не найдены элементы, которые наносят убытки компьютеру, вирус нельзя с уверенностью назвать безвредным, поскольку его код может иметь ошибки, которые, в случае его проникновения в компьютер, могут вызвать непредусмотренные и иногда катастрофические последствия.
Злонамеренный мобильный код
Документы некоторых форматов могут содержать так называемый активное содержание – фрагменты кода, интерпретируя которые соответствующий редактор или программа просмотра (браузер) автоматически выполняет какие-то действия. С учетом того, что эти документы могут передаваться по каналам связи, этот код называют также мобильным кодом (т.е., активное содержание и мобильный код – это одно и то же, просто у них разный контекст).
Примерами документов, которые могут иметь активное содержание, являются документы PostScript, Web-Страницы, все документы, которые могут содержать макросы (например, документы MS Word, MS Excel), электронные письма.
Документы с активным содержанием являются, возможно, наиболее популярным средством распространения вредных программ. Документы, которые используются в качестве такого средства, можно считать одним из разновидностей “троянских коней”.
“Троянские кони”
“Троянские кони” – это вредные программы или документы с активным содержанием, которые выдаются теми, кто их распространяет, как безвредные, хотя они и сознают их вредность.
“Троянский конь” может содержать в себе программную закладку, может создавать программные закладки (или превращаться в программную закладку), но сам не является программной закладкой (это, быстрее, форма распространения и введение в объект атаки программных закладок и других вредных программ). В добавок, “троянский конь” может не иметь ни какого отношения к программным закладкам, если, будучи запущенным на объекте атаки, не скрывает своих вредных действий.
Использование ошибок реализации (дыр) программного обеспечения
Дырами называют такие ошибки реализации программного обеспечения, которые создают угрозы безопасности компьютерной системы, в которой это программное обеспечение эксплуатируется. Дыры бывают разнообразными, механизмы их использования тоже. Рассмотрим наиболее типичные из них.
Использование ошибок при обработке “нештатных” ситуаций
Возможно, наиболее распространенным видом ошибок реализации программного обеспечения является ошибки при обработке “нештатных” ситуаций, т.е. таких ситуаций, которые не должны встречаться или редко встречаются при нормальной эксплуатации этого программного обеспечения. Часто такие ошибки создают угрозы безопасности компьютерной системы (т.е. являются дырами).
Передача объекту атаки нестандартных пакетов
Это еще один распространенный механизм реализации атак DoS.
Нестандартные пакеты – это пакеты, которые имеют формат, не предусмотренный стандартами на соответствующие коммуникационные протоколы. При нормальной работе транспортной службы такие пакеты совсем не должны появляться. Поэтому разработчики программного обеспечения не всегда уделяют достаточно внимания обеспечению корректной обработки таких пакетов. В результате получения одного единого нестандартного пакета операционная система компьютера может существенно замедлить свою работу вследствие зацикливания, повиснуть или перезагрузиться.
Рассмотрим несколько примеров применения данного механизма в программных атаках.
До сих пор актуальной остается очень простая атака, которая называется Land: на объект, подключенный к IP-Сети, направляется пакет, у которого обратный адрес и адрес назначения, а также номер порта источника и номер порта пункта назначения совпадают. Существуют операционные системы (например, Windows 95, Windows NT с Service Pack 4.0 включительно), которые некорректно обрабатывают такую ситуацию, т.е. отвечают на такой пакет сами себе, в результате чего зацикливаются. Повысить эффективность такой атаки можно с помощью создания направленного шторма таких пакетов.
По эффективности и популярности применения (хотя есть и противники) актуальной является атака Ping of Death, механизм реализации которой заключается в передаче на объект атаки IP-Пакета, размер которого превышает максимально допустимый (65535 байт). Для многих операционных систем, получение такого пакета оказывается “смертельным” – ОС зависает или перезагружается.
Типичными ошибками в программах, которые обеспечивают передачу сообщений в IP-Сетях, являются ошибки в модулях, которые отвечают за обработку фрагментированных IP-Пакетов.
Переполнение буфера
Переполнение буфера (точнее, переполнение буфера в стеке) — это, возможно, наиболее распространенный механизм проникновения в объект атаки и увлечение полномочий. Возможно, он также использоваться для нарушения доступности сервисов объекта атаки.
Ошибка разработчика чувствительной программы заключается, в основном, в том, что он не уделяет достаточно внимания обеспечению корректной обработки ситуации, когда данные, что поступают от пользователя, имеют больший размер, чем нужно.
Рассмотрим технологию переполнения буфера.
Часто в процедурах программисты определяют локальный буфер фиксированного размера, в котором размещают какой-либо из переданных процедуре параметров. Размер буфера определяется таким образом, чтобы в нем полностью помещался соответствующий параметр. Например, если параметр – это строка экрана, программист может ограничить размер буфера 80 символами, если это имя файла — 255 символами и т.д.
Рассмотрим, например, такую процедуру на С:
process_data (char * data) { char buf[FIXED]; … strcopy (buf, data); … return; }
Локальные переменные (к которым относится и буфер buf), по обыкновению, размещаются в стеке, куда чуть раньше помещаются адреса возврата в процедуру, из которой была вызванна process_data(). При часто используемой реализации стека, когда он растет “вниз” (т.е. в сторону меньших адресов), оказывается, что адреса возврата находятся в стеке “выше” (т.е. имеет больший адрес), чем локальный буфер.
Передав процедуре process_data() в качестве параметра строку, которая имеет больший размер, чем у отведенного под него буфера, можно затереть данные, что содержатся в памяти выше, чем этот буфер (в том числе и адрес возврата), поскольку функция strcopy() будет копировать данные до тех пор, пока не встретит ноль-символ.
Затерев адрес возврата, в простом случае можно достичь сбоя программы, которой принадлежит чувствительная процедура. В более сложном – атакующий может подобрать входную строку таким образом, чтобы новый адрес возврата указывал на, раньше времени, подготовленный им код (который, например, может содержаться в той же строке, которая вызвала переполнение буфера). Код атакующего будет выполнен с привилегиями, которые имеет атакованная программа.
Особо опасной данная уязвимость является в тех случаях, когда чувствительная процедура получает параметр извне (например, через сеть).
“Социальная инженерия”
Этим термином обозначают группу приемов привлечения людей, которые имеют отношение к объекту атаки, к несознательному пособничеству в проведении атаки. “Социальная инженерия” базируется на тех или иных формах обмана (мошенничества). Классическим примером “социальной инженерии” является телефонный звонок администратору объекта атаки от лица пользователя, который забыл свой пароль. Формой “социальной инженерии” можно считать и разнообразные приемы заманивания пользователя на Web-Сайт со злонамеренным мобильным кодом или побуждение его к запуску “троянского коня”.
Собственно, для введения в объект атаки вредных программ и добывание информации про объект атаки чаще всего и применяется “социальная инженерия”.
Твитнуть