Файл: Debian Таненбаум Бос.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 48115

Скачиваний: 190

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

9.9. Вредоносные программы   

751

второго уровня или из самой оперативной памяти. Программа обнаружения может 
без особого труда заставить это значение перемещаться вперед и назад между этими 
состояниями и замерять разницу между показателями времени считывания. Учтите, 
что эта изменчивость вызвана определенными причинами, а не изменением самого 
времени считывания.

Еще одна область, в которой можно провести замеры времени, — это выполнение при-
вилегированных команд, особенно тех, которые на реальном оборудовании требуют всего 
лишь нескольких тактов и сотни или тысячи тактов, когда их требуется эмулировать. 
Например, если считывание значений некоторых защищенных регистров центрального 
процессора на настоящем оборудовании занимает 1 нс, то не существует способа осу-
ществления миллиарда системных прерываний и эмуляций за 1 с. Конечно, гипервизор 
может обмануть программу обнаружения, сообщая об эмулированном, а не о реальном 
времени на всех критичных по времени системных вызовах. Программа обнаружения 
может проигнорировать эмулированное время, подключившись к удаленной машине 
или веб-сайту, предоставляющему точный масштаб времени. Поскольку программе 
обнаружения нужно измерять только интервалы времени (например, сколько времени 
займет выполнение миллиарда считываний значений защищенных регистров), разница 
во времени между локальными и удаленными часами не имеет значения.

Если между аппаратурой и операционной системой не проскользнул какой-нибудь 
гипервизор, руткит может прятаться внутри операционной системы. Его трудно об-
наружить, загружая компьютер, поскольку операционной системе нельзя доверять. 
Например, руткит может установить большое количество файлов, все имена которых 
начинаются на «$$$», и, читая содержимое каталогов от имени пользовательских про-
грамм, никогда не сообщать о существовании таких файлов.

Один из способов обнаружения руткита при таких обстоятельствах заключается в за-
грузке компьютера с надежного внешнего носителя, такого как подлинный DVD или 
флеш-накопитель USB. После этого диск может быть просканирован программой, 
разработанной для борьбы с руткитами, без опасений, что руткит вмешается в скани-
рование. В качестве альтернативы можно сделать криптографический хэш каждого 
файла операционной системы и сравнить его с тем списком, который был сделан при 
установке системы и сохранен вне ее, в недоступном месте. Если такие хэши с ориги-
нала не делались, они могут быть вычислены с установочного флеш-накопителя USB, 
компакт-диска или DVD или можно сравнить сами файлы.

Руткиты в библиотеках и прикладных программах спрятать труднее, но если опера-
ционная система была загружена с внешнего носителя и ей можно доверять, их хэши 
также можно сравнить с заведомо хорошими и сохраненными на флеш-накопителе 
USB или компакт-диске.

До сих пор речь шла о пассивных руткитах, которые не вмешиваются в работу програм-
мы их обнаружения. Но есть еще и активные руткиты, которые отыскивают и уничто-
жают эти программы или по крайней мере модифицируют их, чтобы они всегда объ-
являли: «Руткиты не найдены!». Для этого требуется предпринять более сложные меры 
воздействия, но, к счастью, активные руткиты на нашем горизонте еще не появились.

Обнаружение руткитов

Если нет доверия к аппаратному обеспечению, операционной системе, библиоте-
кам и приложениям, то руткиты обнаружить довольно трудно. Например, вполне 


background image

752  

 Глава 9. Безопасность 

очевидным способом поиска руткитов является создание листингов всех файлов, 
находящихся на диске. Но системные вызовы, читающие каталог, библиотечные 
процедуры, осуществляющие системные вызовы, и программы, осуществляющие 
листинг, — все могут быть частью вредоносного программного обеспечения и про-
верять результат, опуская все файлы, имеющие отношение к руткитам. И все же 
ситуация не безнадежна.

Обнаружить руткиты, запускающие собственный гипервизор, а затем операционную 
систему и все приложения на виртуальной машине под своим управлением, довольно 
сложно, но все же возможно. Для этого нужно внимательно присмотреться к малейшим 
различиям в производительности и функциональности между виртуальной и реальной 
машинами. Гарфинкель (Garfinkel et al., 2007) предложил ряд таких способов, рассмо-
тренных далее. Карпентер (Carpenter et al., 2007) также рассматривал эту тему.

Целый класс методов обнаружения основан на том факте, что гипервизор сам по себе 
потребляет физические ресурсы и потери этих ресурсов могут быть обнаружены. На-
пример, гипервизор нуждается в использовании некоторых записей TLB, конкурируя 
с виртуальной машиной за обладание этими дефицитными ресурсами. Программа 
обнаружения может оказать давление на TLB, понаблюдать за производительностью 
и сравнить ее с ранее замеренной производительностью на «голом» оборудовании.

Существует два мнения о том, что нужно делать с обнаруженными руткитами. Со-
гласно одному из них, системный администратор должен уподобиться хирургу, удаля-
ющему раковую опухоль: вырезать все с максимальной осторожностью. Приверженцы 
другого мнения говорят, что пытаться удалять руткиты слишком опасно. У них могут 
остаться скрытые составляющие. С этой точки зрения единственным решением может 
быть возвращение к последней резервной копии, о которой заведомо известно, что она 
не заражена. Если резервной копии нет, потребуется переустановка системы.

Руткит компании Sony

В 2005 году компания Sony BMG выпустила определенное количество аудиоком-
пакт-дисков, содержащих руткит. Он был обнаружен Марком Руссиновичем (Mark 
Russinovich) (соучредителем веб-сайта, посвященного инструментарию системных 
администраторов Windows, 

www.sysinternals.com

), который работал над разработ-

кой программы по обнаружению руткитов и был очень удивлен, обнаружив руткит 
в собственной системе. Он сообщил об этом в своем блоге, и вскоре эта история 
распространилась по Интернету и средствам массовой информации. Об этом были 
написаны научные статьи (Arnab and Hutchison, 2006; Bishop and Frincke, 2006; Felten 
and Halderman, 2006; Halderman and Felten, 2006; Levine et al., 2006). На то, чтобы 
поднявшаяся волна улеглась, понадобились годы. Далее будет дано краткое описание 
случившегося.

Когда пользователь вставляет компакт-диск в привод компьютера с операционной си-
стемой Windows, эта система ищет файл под названием 

autorun.inf

, который содержит 

перечень предпринимаемых действий, как правило, запуск имеющейся на компакт-дис-
ке программы (например, мастера установки программы). Обычно на компакт-дисках 
нет таких файлов, поскольку автономные проигрыватели компакт-дисков игнорируют 
их присутствие. Вероятно, некий гений в компании Sony подумал, что можно будет по-
умному остановить музыкальное пиратство, поместив файл 

autorun.inf

 на выпускаемые 

ими компакт-диски, которые, будучи вставленными в компьютер, немедленно и молча 


background image

9.9. Вредоносные программы   

753

устанавливают на него руткит размером 12 Мбайт. Затем отображалось лицензионное 
соглашение, в котором об установленном программном обеспечении ничего не гово-
рилось. Во время отображения лицензионного соглашения программа Sony проверяла 
компьютер на наличие какой-нибудь из 200 известных программ копирования, и если 
проверка была удачной, программа требовала их остановки. Если пользователь со-
глашался с лицензионными условиями и останавливал все программы копирования, 
музыка могла воспроизводиться, а если нет, музыка не воспроизводилась. Даже если 
пользователь отказывался соглашаться с условиями лицензии, руткит оставался уста-
новленным.

Руткит работал следующим образом. Он вставлял в ядро Windows определенное 
количество файлов, чьи имена начинались с 

$sys$

. Одним из файлов был фильтр, 

перехватывающий все системные вызовы к приводу компакт-дисков и запрещающий 
всем программам, кроме музыкального плеера Sony, читать компакт-диск. Это делало 
невозможным вполне законное копирование компакт-диска на жесткий диск. Еще 
один фильтр перехватывал все вызовы, предназначенные для чтения файла, процессы 
и листинги реестра и удалял все записи, начинающиеся с 

$sys$

 (даже из программ, 

совершенно не связанных с Sony и музыкой), чтобы скрыть руткит. Это весьма стан-
дартный прием у начинающих разработчиков руткитов.

До того как Руссинович обнаружил руткит, он уже был установлен на многих машинах, 
что неудивительно, поскольку он присутствовал на более чем 20 млн компакт-дисков. 
Дэн Каминский (Dan Kaminsky, 2006) изучил границы его распространения и обна-
ружил, что руткитом были заражены компьютеры в более чем 500 000 сетей по всему 
миру.

Когда новость распространилась по миру, первой реакцией компании Sony стало заяв-
ление, что каждый имеет право на защиту интеллектуальной собственности. В интер-
вью радиостанции National Public Radio Томас Хессе (Thomas Hesse), президент гло-
бального цифрового подразделения Sony BMG, сказал: «Большинство людей, я думаю, 
даже не знают, что такое руткит, так стоит ли им переживать?» Когда сам этот ответ 
вызвал целый шквал возмущений, Sony отступила и выпустила «заплатку», которая 
удаляла замаскировавшиеся 

$sys$

-файлы, но не трогала сам руткит. Под растущим 

давлением Sony в конце концов выложила на своем веб-сайте деинсталлятор, но чтобы 
получить его, пользователи должны были предоставить адрес своей электронной почты 
и согласиться с тем, что Sony сможет посылать им в будущем рекламные материалы 
(которые многие называют спамом).

Когда история стала уже забываться, выяснилось, что предоставленный Sony деин-
сталлятор содержал технические дефекты, делающие зараженный компьютер очень 
уязвимым к атакам через Интернет. Также обнаружилось, что руткит содержал код 
из проектов с открытым кодом в нарушение их авторских прав (которые разрешали 
свободное использование программ при условии свободного распространения их ис-
ходного кода
).

Вдобавок к беспрецедентному общественному скандалу компания Sony понесла юри-
дическую ответственность. Штат Техас предъявил ей иск за нарушение своего закона 
против программ-шпионов, а также законов о честном ведении торговли (поскольку 
руткит устанавливался даже при несогласии с условиями лицензии). Позже были пода-
ны коллективные иски в 39 штатах. В декабре 2006 года эти иски были улажены, когда 
компания Sony согласилась заплатить 4,25 млн долларов, прекратить включать руткит 
в выпускаемые в будущем компакт-диски и предоставить каждому пострадавшему 


background image

754  

 Глава 9. Безопасность 

право скачать три альбома из ограниченного числа музыкальных каталогов. В январе 
2007 года Sony признала, что в нарушение законов США ее программное обеспечение 
также тайно отслеживало пользовательские музыкальные пристрастия и отправляло 
отчеты компании. По условиям сделки с Федеральной торговой комиссией компания 
Sony согласилась выплатить тем людям, чьи компьютеры были повреждены ее про-
граммным обеспечением, компенсацию в размере 150 долларов.

История с руткитом компании Sony была приведена для тех читателей, у которых 
могло сложиться мнение, что руткиты не более чем любопытный учебный материал, 
не имеющий отношения к реальному миру. Большой объем дополнительной инфор-
мации об этом рутките можно получить в Интернете, введя в поисковую строку «Sony 
rootkit».

9.10. Средства защиты

Остается ли какая-нибудь надежда на достижение безопасности систем при повсе-
местно скрывающихся проблемах? Все-таки остается, и в следующих разделах будут 
рассмотрены некоторые способы разработки и реализации систем, позволяющие 
повысить их безопасность. Одним из наиболее важных понятий является глубокая 
эшелонированность обороны

 (defense in depth). Заложенная в основу этого понятия 

идея заключается в наличии нескольких уровней безопасности, при прорыве одного 
из которых будут оставаться другие, их тоже нужно преодолевать. Представьте себе 
дом, обнесенный высоким сплошным железным забором, с детекторами движения во 
дворе, двумя мощными замками во входной двери и компьютеризированной охранной 
системой от проникновения посторонних внутрь дома. Хотя каждая из этих систем 
полезна сама по себе, чтобы обворовать дом, воришка должен преодолеть все системы. 
Защищенная должным образом компьютерная система похожа на этот дом и имеет 
несколько уровней защиты. Рассмотрим некоторые из этих уровней. На самом деле 
средства защиты не имеют иерархической структуры, но мы начнем с тех, которые 
можно отнести к более общим и внешним, и от них проложим путь к специфическим 
средствам.

9.10.1. Брандмауэры

Возможность подключить любой компьютер, находящийся в любом месте, к любому 
другому компьютеру, также находящемуся в любом месте, имеет как свои преимуще-
ства, так и недостатки. Хотя в Интернете имеется множество ценного материала, под-
ключение к нему подвергает компьютер двум видам опасностей: на входе и на выходе. 
Входящие опасности включают взломщиков, пытающихся войти в компьютерную 
систему, а также вирусы, программы-шпионы и другие вредоносные программы. Опас-
ности на выходе включают в себя конфиденциальную информацию, например номера 
кредитных карт, пароли, налоговые декларации и все виды выуживаемой корпоратив-
ной информации.

Следовательно, механизмам необходимо сохранять «хорошие» биты внутри, а «пло-
хие» — снаружи. Один из подходов заключается в использовании брандмауэров 
(firewall), которые являются всего лишь современной адаптацией средневекового 
вспомогательного защитного средства: выкапывания глубокого рва вокруг своего 
замка. Эта конструкция заставляет всех входить или выходить из замка, проходя по 


background image

9.10. Средства защиты   

755

единственному подъемному мосту, где они могут быть проверены полицией, следящей 
за режимом входа-выхода. Тот же прием возможен и при работе в сети: у компании 
может быть множество локальных сетей, соединенных в произвольном порядке, но 
весь информационный поток, направленный в компанию или из нее, принудительно 
направлен через электронный подъемный мост — брандмауэр.

Брандмауэры поставляются в двух основных вариантах: аппаратном и программном. 
Компании, имеющие локальные сети, требующие защиты, обычно выбирают аппа-
ратные брандмауэры, а частные лица зачастую выбирают для домашних условий про-
граммные брандмауэры. Сначала рассмотрим аппаратные брандмауэры. Типичный 
аппаратный брандмауэр представлен на рис. 9.27. Здесь изображено подключение 
(обычный или оптоволоконный кабель) от провайдера сети к брандмауэру, который 
подключен к локальной сети. Никакие пакеты не могут попасть в локальную сеть или 
выйти из нее без санкции брандмауэра. На практике брандмауэры часто объединяются 
с маршрутизаторами, блоками трансляции сетевых адресов, системами обнаружения 
проникновения и другой аппаратурой, но наше внимание будет сосредоточено на 
функциональных возможностях брандмауэра.

Рис. 9.27. Упрощенный вид аппаратного брандмауэра, 

защищающего сеть из трех компьютеров

Брандмауэры конфигурируются по правилам, описывающим, что разрешается вводить 
и что разрешается выводить. Владелец брандмауэра может менять правила, обычно 
через веб-интерфейс (у многих брандмауэров для этих целей имеется встроенный 
мини-веб-сервер). В самых простых брандмауэрах, не анализирующих состояние 
(stateless firewall), проверяется заголовок каждого проходящего пакета и принимается 
решение, пропустить этот пакет или отказать в пропуске, основанное исключительно 
на информации в заголовке и правилах, установленных в брандмауэре. Информация 
в заголовке пакета включает IP-адреса отправителя и получателя, порты отправителя 
и получателя, тип службы и протокол. Доступны также и другие поля, но они фигури-
руют в правилах довольно редко.

В примере, показанном на рис. 9.27, имеется три сервера, у каждого из которых есть 
уникальный IP-адрес, имеющий вид 207.68.160.x, где x равен 190, 191 и 192 соответ-
ственно. Существуют адреса, по которым пакеты должны быть отправлены, чтобы до-
браться до этих серверов. Входящие пакеты также имеют 16-разрядный номер порта
который определяет, какой процесс на машине получает пакет (процесс должен отсле-
живать порт на наличие входящего информационного потока). С некоторыми портами 
связаны стандартные службы. В частности, порт 80 используется для веб-службы, 
порт 25 — для почтовой службы, а порт 21 — для службы FTP (передачи файлов), но 
большинство остальных портов доступны для служб, определяемых пользователем. 
При таких условиях брандмауэр может быть сконфигурирован следующим образом: