8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 13 14 15 16 17 18 19 ... 102

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

Процесс размножения вирусов в общем случае сводится к модификации нспщ няемых объектов с таким расчетом, чтобы хоть однажды в жизни получНТь управление. Операционные системы семейства UNIX по умолчанию запреца ют пользователям модифицировать исполняемые файлы, предоставляя эту при. вилегию лишь rooty. Это чрезвычайно затрудняет размножение вирусов, но отнюдь не делает его невозможным! Во-первых, далеко не все пользователи UNIX осознают опасность регистрации с правами roota, злоупотребляя eii безо всякой необходимости. Во-вторых, некоторые приложения только под rootoM и работают, причем создать виртуального пользователя, изолированного от всех остальных файлов системы, подчас просто не получается. В-третьих, наличие дыр в программном обеспечении позволяет вирусу действовать в обход установленных ограничений.

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

Черви могут вообще подолгу не задерживаться в одном компьютере, используя его лишь как временное пристанище для рассылки своего тела на другие машины. Однако большинство червей все же предпочитает оседлый образ жизни кочевому, внедрясь в оперативную и/или долговременную память. Для своего размножения черви обычно используют дефекты операционной системы и/иЛ" ее окружения, обеспечивающие возможность удаленного выполнения программ ного кода. Ряд вирусов распространяется через прикрепленные к письму ФаИ лы (в курилках именуемые аттачами от английского attachment — «вложение*/ в надежде, что доверчивый пользователь запустит их. К счастью, UNIX-польз ватели в своей массе не настолько глупы, чтобы польститься на столь очен"-ную заразу.

Откровенно говоря, причина низкой активности вирусов кроется отнюдь не и шищенности UNIX, но в принятой схеме распространения программного о» печения. Обмена исполняемыми файлами между пользователи UNIX праь1" чески не происходит. Вместо этого они предпочитают скачивать требуют"14 им программы с оригинального источника, зачастую в исходных текс!


ВИРУСЫ В СКРИПТАХ

Как уже отмечал ось выше, скрипты выглядят достаточно привлекательной средой для обитания вирусов и вот почему:

•в мире UNIX скрипты вездесущи;

•модификация большинства скриптовых файлов разрешена;

•скрипты зачастую состоят из сотен строк кода, в которых очень легко затеряться;

•скрипты наиболее абстрагированы от особенностей реализации конкретной версии UNIX;

•возможности скриптов сопоставимы с языками высокого уровня (Си, Бейсик, Паскаль);

•скриптами пользователи обмениваются более интенсивно, чем исполняемыми файлами.

Большинство администраторов крайне пренебрежительно относятся к скрин-товым вирусам, считая их «ненастоящими». Между тем системе, по большому счету, все равно, каким именно вирусом быть атакованной — настоящим или нет. При кажущейся игрушечности скрипт-вирусы представляют собой достаточно серьезную угрозу. Ареал их обитания практически безграничен — они успешно поражают компьютеры с процессорами как Intel Pentium, так и DEC Alpha/SUN SPARC. Они внедряются в любое возможное место (конец/нача-ло/середину) заражаемого файла. При желании они могут оставаться резидентно в памяти, поражая файлы в фоновом режиме. Ряд скрипт-вирусов используют те или иные Stealth-технологии, скрывая факт своего присутствия в системе. Гений инженерной мысли вирусописателей уже освоил полиморфизм, уравняв тем самым скрипт-вирусы в правах с вирусами, поражающими Двоичные файлы.

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

Несмотря на имеющиеся прецеденты взлома web/ftp серверов и троянизации их содержимого, ни одной мало-мальски внушительной эпидемии еще не случилось, хотя локальные очаги «возгорания» все-таки были. Агрессивная политика продвижения LINUX вероломно проталкивает эту ось на рынок домашних и офисных IIК - то есть в те сферы, где UNIX не только не сильна, но н попросту не нужна. Оказавшись в кругу неквалифицированных пользователей, UNIX автоматически теряет звание свободной от вирусов системы, и опустошительные эпидемии не заставят себя ждать. Встретим ли мы их во всеоружии или в очередной раз дадим маху, вот в чем вопрос...


54Глава 2.

Вирусы в UNIX, или Гибель ТитанИка,

Единственное, что вирус не может подделать — это стиль оформления лиащ га. Почерк каждого программиста строго индивидуален. Одни используют т. буляцию, другие предпочитают выравнивать строки посредством пробел Одни разворачивают конструкции if — else на весь экран, другие умещают в одну строку. Одни дают всем переменным осмысленные имена, Другие ц(. пользуют одно-, двухсимвольную абракадабру в стиле «А», «X», «FN» и т Даже беглый просмотр зараженного файла позволяет обнаружить инородщ-вставки (конечно, при том условии, что вирус не переформатирует поражу мый объект) (листинг 2.1).

Листинг 2.1. Пример вируса, обнаруживающего себя по стилю

/usr/bin/perl #?erlDemo

open(File.SO): @Virus=<File>: @Virus=@Virus[0. .6]: close(File); foreach SFileName (<*>) { if CC-r SFileName) && (-w $4ieName) && (-f SFileName)) { operKFile. "SFileNane"): @Temp=<File>: close(F~:"e): if ((@femp[l] =- "PerlDemo") or (@Temp[2J =- "PerlDemo"))

( if ((@Tero[0J =- "perl") or (@Tenp[l] =~ "perl")) { open(File. ">SFiieNane"): print Fie @Vis:

print File premp: close (File); } \ } }

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

Существует по меньшей мере две методики такого определения: отождествление командного интерпретатора и эвристический анализ. Начнем с первого из них. Если в начале файла стоит магическая последовательность "#!", то остаток строки содержит путь к программе, обрабатывающей данный скрипт. Д-1Я интерпретатора Бориа эта строка обычно имеет вид "#! /bin/sh", а для Perl а -"#! /usr/bin/perl". Таким образом, задача определения тина файла в общемсл> чае сводится к чтению его первой строки и сравнению ее с одним или несколь кими эталонами. Если только вирус не использовал хеш-сравнение, эталонна строки будут явно присутствовать в зараженном файле, легко обнаруживаясь* тривиальным контекстным поиском (листинги 2.2, 2.3). Девять из десяти скрипт-вирусов ловятся на этот незамысловатый при остальные же тщательно скрывают эталонные строки от посторонних глаз С* пример, шифруют их или же используют посимвольное сравнение). в любом случае перед сравнением строки с эталоном вирус должен ее счит< В командных файлах для этой пели обычно используются команды greep • head. Конечно, их наличие в файле еще не свидетельствует о зараженности следпего, однако позволяет локализовать жизненно важные центры вируса- ветственпые за определения типа файла-жертвы, что значительно ускоряет• лиз. В Perl-скриптах чтение файла чаще всего осуществляется через опер "< >", реже используются функции read/read! ine/getc. Тот факт, что практ"



0 ... 13 14 15 16 17 18 19 ... 102