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

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

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

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

Добавлен: 29.10.2018

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

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

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

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

741

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

virus.h

 

(хотя файл 

proj.h

 может привлечь меньше внимания, если кто-нибудь его увидит).

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

virus.h

. Чтобы вирус работал на удаленной 

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

Для неискушенного читателя все эти способы могут показаться слишком сложными. 
Кто-то может вполне резонно сомневаться в том, что все они могут работать на прак-
тике. Не сомневайтесь, могут. Вирджил — прекрасный программист, и у него уйма 
свободного времени. Хотите убедиться — откройте местную газету и найдите там 
подтверждение.

Как распространяются вирусы

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

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

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


background image

742  

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

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

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

Еще одна разновидность атаки заключается в инфицировании документа с последую-
щей его пересылкой по электронной почте множеству людей или помещением в список 
рассылки в конференции сети USENET, как правило, в виде приложения к сообщению. 
Даже люди, совершенно не склонные к запуску программы, отправленной им каким-то 
незнакомцем, могут не понимать, что щелчок на ссылке для открытия приложения мо-
жет открыть путь вирусу на их машину. Чтобы еще больше усугубить ситуацию, вирус 
может заглянуть в адресную книгу пользователя, а затем разослать себя по найденным 
там адресам, используя в качестве содержимого поля Тема (Subject) что-нибудь вполне 
логичное или интересное, например:

 

 Тема: Корректировка планов;

 

 Тема: Re: О последнем сообщении;

 

 Тема: Собака вчера вечером околела;

 

 Тема: Я серьезно болен;

 

 Тема: Я тебя люблю.
Когда приходит такое письмо, получатель думает, что отправитель письма — его друг 
или коллега по работе, и ни о чем не подозревает. А когда письмо открыто, уже слишком 
поздно. Вирус «I LOVE YOU», распространившийся по всему миру в июне 2000 года, 
действовал именно таким образом и нанес ущерб в несколько миллиардов долларов.

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

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

Чтобы меньше высовываться, Вирджил может пойти в интернет-кафе в отдаленном 
городе и там войти в систему. Он может принести вирус на флеш-накопителе USB и са-


background image

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

743

мостоятельно его считать или, если машина не оборудована портами USB, попросить 
молодую симпатичную девушку за стойкой считать файл 

book.doc

, чтобы он мог его 

распечатать. После того как файл попадет на жесткий диск, он его переименует в 

virus.

exe

 и запустит на выполнение, заражая всю локальную сеть вирусом, который акти-

визируется месяц спустя на тот случай, если полиция вздумает сделать запрос в ави-
акомпании на получение списка всех пассажиров, прилетавших на прошлой неделе.

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

О вирусах можно еще долго рассказывать. В частности, о том, как они стараются спря-
таться и как антивирусы стараются от них избавиться. Они могут даже прятаться вну-
три вполне здоровых животных. Не верите — посмотрите работу Rieback et al. (2006). 
Мы еще вернемся к этим темам, когда перейдем к рассмотрению вопросов защиты от 
вредоносных программ.

9.9.3. Черви

Первое широкомасштабное посягательство на безопасность компьютеров, подключен-
ных к Интернету, произошло вечером 2 ноября 1988 года, когда аспирант Корнелльско-
го университета Роберт Таппан Моррис запустил в Интернет написанного им червя. 
Это привело к сбою нескольких тысяч компьютеров в университетах, корпорациях 
и правительственных лабораториях по всему миру, продившемуся до тех пор, пока 
червь не был отслежен и удален. Это событие также породило спор, продолжающийся 
и поныне. Далее мы рассмотрим подробности этих событий. Более подробную техни-
ческую информацию можно получить в статье Spafford (1989). Эта же история в жанре 
полицейского триллера изложена в книге Hafner and Markoff (1991).

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

 (worm), которая должна была воспользоваться этими ошибками и буквально 

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

Неизвестно, была ли версия от 2 ноября 1988 года тестовой или окончательной, но 
в любом случае она поставила на колени большинство систем Sun и VAX, подклю-
ченных к Интернету, за считанные часы после своего выпуска. Мотивация поступка 
Морриса также неизвестна, возможно, он относился ко всей этой затее как к высоко-
технологичному розыгрышу, который вследствие ошибки программирования вышел 
из-под контроля.

Технически червь состоял из двух программ: программы самозагрузки и собственно 
червя. Загрузчик представлял собой 99 строк на языке C, помещенных в файл с име-
нем 

l1.c

. Этот загрузчик компилировался и исполнялся на атакуемой машине. Будучи 


background image

744  

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

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

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

Метод 2 использовал программу, присутствующую на всех UNIX-системах под назва-
нием finger. Она позволяет пользователю, подключенному к Интернету, ввести команду

finger name@site

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

Программа finger работает следующим образом. На каждой UNIX-машине посто-
янно работает фоновый процесс под названием finger daemon, который отвечает на 
запросы, поступающие со всего Интернета. Червь обращался к программе finger со 
специально разработанной 536-байтовой строкой в качестве параметра. Эта строка 
вызывала переполнение буфера демона и переписывала содержимое его стека, как 
было показано на рис. 9.19, в. В данном случае использовался дефект программы-
демона, заключавшийся в отсутствии проверки переполнения буфера. Когда про-
грамма-демон возвращалась из процедуры, та к тому моменту уже получала запрос 
и управление возвращалось не в основную программу, а в процедуру, находящуюся 
внутри 536-байтовой строки в стеке. Эта процедура пыталась запустить программу sh. 
Если ей это удавалось, червь получал в свое распоряжение оболочку, работающую 
на атакуемой машине.

Метод 3 использовался при наличии ошибки в почтовой системе sendmail, позволяв-
шей червю послать по почте копию начального загрузчика и запустить его.

Попав в систему, червь пытался взломать систему паролей. Для этого Моррису не пона-
добилось предпринимать собственные исследования. Ему нужно было лишь обратиться 
к своему отцу, эксперту в области безопасности в Управлении национальной безопас-
ности США, который работал в отделе по взлому кодов, чтобы получить перепечатку 
классической статьи по этой теме, написанной десятилетием раньше Моррисом-стар-
шим и Кеном Томпсоном (Morris and Thompson, 1979) в лаборатории Bell Labs. Каждый 
взломанный пароль позволял червю войти в систему любой машины, на которой был 
зарегистрирован владелец пароля.

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


background image

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

745

большого количества червей, что и стало причиной остановки всех зараженных ма-
шин: они все были забиты червями. Если бы Моррис оставил эту затею и червь просто 
выходил бы, обнаружив другого червя (или соотношение было 1/50), то этот червь, 
возможно, оставался бы незамеченным.

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

Моррис был признан виновным и осужден федеральным судом. Он был приговорен 
к штрафу в 10 000 долларов, 3 годам лишения свободы (условно) и 400 часам обще-
ственно полезных работ. А его судебные издержки, наверное, превысили 150 000 дол-
ларов. Это осуждение породило массу споров. Многие в компьютерном сообществе 
считали, что он был блестящим аспирантом, чья безобидная шалость вышла из-под 
контроля. Ничего в черве не наводило на мысль о том, что Моррис пытался что-то 
украсть или повредить. Были также мнения, что он опасный преступник и должен си-
деть в тюрьме. Позже Моррис получил в Гарварде степень магистра и теперь является 
профессором Массачусетского технологического института.

В результате этого инцидента была создана группа компьютерной скорой помощи 
CERT

 (Computer Emergency Response Team), которая уделяет основное внимание 

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

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

9.9.4. Программы-шпионы

Все более привычной становится такая разновидность вредоносных программ, как 
программы-шпионы

 (spyware). Проще говоря, шпионы — это программы, которые 

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