Современная электронная библиотека ModernLib.Net

Записки исследователя компьютерных вирусов

ModernLib.Net / Крис Касперски / Записки исследователя компьютерных вирусов - Чтение (Ознакомительный отрывок) (Весь текст)
Автор: Крис Касперски
Жанр:

 

 


Крис Касперски

Записки исследователя компьютерных вирусов

…червю Love San, разрушительной силой своей эпидемии побудившего меня написать эту книгу, посвящается…

Крис Касперски ака мыщъх

Введение

…знайте: пока вы читаете эти строки, какой-нибудь парень на планете уже отлаживает очередной вирус, который не сегодня-завтра нанесет удар, и одной из жертв вирусного террора окажетесь вы. Не пытайтесь отмахнуться от проблемы и не надейтесь, что на этот раз вас «пронесет»! Вирусные атаки стали слишком интенсивными, и никто не может чувствовать себя в безопасности. Использование антивирусов ничего не решает, – если вы администрируете локальную сеть крупной организации, персонально для вас может быть написан специальный вирус (троянская программа, шпион), проходящий сквозь антивирусные заслоны, как нож сквозь масло. Причем если до недавнего времени вирусы были нетехнической проблемой «грязных рук», которая решалась элементарным выламыванием дисководов и раздачей по ушам всем любителям левого «софта», то основная масса современных вирусов проникает в целевые компьютеры самостоятельно, не требуя никаких действий со стороны пользователя.

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

Постепенно статьи выродились в огромных монстров, разваливающихся под собственной тяжестью, но все-таки принимаемых «Системным администратором» без цензуры, дробления и каких бы то ни было «скипаний» и урезаний. Пользуясь случаем, хочу поблагодарить редакцию журнала, отдав должное смелости его ответственного секретаря – Натальи Хвостовой, которую никогда не останавливал объем очередной статьи, хотя остальные издатели не стали бы даже ее и рассматривать, потребовав для начала сократить раз эдак в пять. Без свободного духа «Системного администратора» и лояльности Натальи Хвостовой, этой книги просто бы не существовало! Это действительно очень интересный и горячо любимый мной журнал, публикующий большое количество полезных и увлекательных статей, и я очень рад, что оказался в хорошей компании!

Но… журнальные номера приходят и уходят, а «кушать хочется даже по ночам». Даже хорошие статьи зачастую остаются незамеченными и недоступными широкой читательской аудитории. Самостоятельный сборник статей имеет намного больше шансов найти своего читателя, что подтверждает динамика продаж «Укрощения Интернет» и «ПК: решение проблем», созданных на основе ранее опубликованных статей.

Собранная по кускам, эта книга лишена внутренней целостности и не может похвастаться ни выдержанностью стиля, ни отсутствием повторов, ни единством глубины изложения, что и определяет ее название – «Записки…». Такой прием обеспечивает большую литературную свободу и дает пространство для маневра, позволяя комбинировать различные ингредиенты в произвольной пропорции. Но что получается в результате? Правильно – fast food – своеобразный творческий hot dog нашего времени, основная еда студентов, программистов, хакеров и бизнесменов. Так что не стоит относиться ко всему прочитанному здесь слишком серьезно….

СОГЛАШЕНИЯ О НАИМЕНОВАНИЯХ

Под Windows, если только не оговорено обратное, здесь подразумевается вся линейка 32-разрядных систем этого семейства, а именно: Windows 95/98/Ме/NT/2000/XP/2003. Под Windows NT подразумевается вся линейка систем на базе NT, а именно: сама Windows NT, Windows 2000/XP/2003.

Под операционной системой UNIX подразумевается любая UNIX-подобная операционная система, включая LINUX, которую следует отметить особо. LINUX – это некоммерческая экспериментальная система, ориентированная преимущественно на исследовательскую деятельность в области программирования и самообучение. Что-то вроде ZX SPECTRUM, в который каждый может залезть паяльником и со всех сторон которого торчат кишки наружу. Для «промышленного» употребления она непригодна. Да, при желании из нее можно сконструировать все что угодно, но, если вы не собираетесь пересобирать систему каждый божий день, лучше обратите свой взор на Free BSD, от которой, по меткому выражению одного из администраторов, «ни добавить, ни отнять».

Агрессивная политика распространения LINUX привела к тому, что в умах обывателях пингвин превратился чуть ли не в безальтернативного клона UNIX. Неудивительно, что, познакомившись с LINUX'om поближе, среднестатистический пользователь в сердцах кричит «да в гробу я видел этот ваш UNIX» и навсегда теряет интерес ко всем UNIX-подобным системам. А жаль… Начни он с той же Free BSD – все могло оказаться совсем иначе…

КТО ПИШЕТ ВИРУСЫ?

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

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

Словом, мотивов выпустить написанный вирус в свет – предостаточно. Будучи же выпущенным на просторы Интернета, вирус, уже не подконтрольный своему создателю, начинает жить своей жизнью, и удалить его, поверьте, очень и очень трудно…

РАСПЛАТА ЗА БЕЗДУМНОСТЬ

Ущерб, наносимый вирусами, троянскими конями и прочими зловредными программами, трудно оценить. И дело здесь не только в разрушенной информации (при своевременном резервировании данные всегда можно восстановить). Гораздо большие убытки наносит панический страх перед самой возможностью заражения, выливающийся в настоящую вирусную истерию. Точно такой же страх вызывает вирус СПИДа, хотя, чтобы заразиться им при половом контакте, надо еще очень сильно постараться!

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

Использование антивирусов также не решает проблемы. Чтобы там ни говорила реклама, а качество антивирусных программ все еще оставляет желать лучшего. Зачастую вирусы не распознаются совсем или распознаются, но… не удаляются. Мягкая переустановка системы (т. е. переустановка «поверх» ранее установленной версии) не гарантирует удаления заразы, и многие зловредные программы ее вполне благополучно переживают! Форматирование диска – вообще безумный способ лечения, сродни сжиганию больных на костре, – жестокий и крайне неэффективный. До тех пор пока не будут перекрыты все каналы проникновения вируса в систему, повторные заражения будут происходить вновь и вновь!

Основной недостаток подавляющего большинства антивирусов как раз и состоит в том, что, удаляя вирус из системы, они даже не пытаются заткнуть те дыры, которые он использует для своего распространения. Как следствие, «лечение» компьютера, подключенного к сети, превращается в перегон тараканов из одной казармы в другую, а затем обратно. Ладно, заражение локальной сети – это еще полбеды («останавливаем» сеть, лечим все машины, «запускаем» сеть), но вот заражение Интернета представляет собой весьма нетривиальную проблему. Вылечить все машины глобальной сети за раз просто нереально… Можно (и нужно!) установить очередное обновление от Microsoft, заткнув брешь в системе безопасности, но… кто даст голову на отсечение, что этот способ действительно сработает? Ряд обнаруженных дыр парням из Microsoft удалось заткнуть лишь со второй-третьей попытки, а некоторые дыры остаются незаткнутыми и до сих пор (или заплатки были выпущены не для всех ОС). Причем наблюдается ярко выраженная тенденция к ухудшению поддержки четвертой версии Windows NT. Хоть и древней – но до сих пор работающей.

В идеале каждый из нас должен быть готов к самостоятельному отражению вирусной атаки, не надеясь на помощь извне. Существование подобных отрядов самообороны, рассредоточенных по всей сети, сделало бы развитие глобальных эпидемий практически невозможным и свело убытки от хакерских атак к разумному минимуму. В свое время существовала замечательная книга «Компьютерные вирусы в MS-DOS» Евгения Касперского, доходчиво объясняющая методики рукопашной борьбы с вирусами, доступные для освоения любому специалисту средней руки. Однако с появлением Windows и развитием глобальных сетей стратегия заражения существенно изменилась и старые рецепты перестали работать, а новых книг по этой тематике с тех пор так не выходило.

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

ПОЧЕМУ АНТИВИРУСЫ СТАЛИ ПЛОХОЙ ИДЕЕЙ

Существуют по меньшей мере шесть причин, по которым не стоит доверять антивирусам.

Первое (и самое главное) – приобретая антивирус, вы платите живые деньги, но ровным счетом ничего не получаете взамен. В лучшем случае антивирус предотвращает потерю информации, но не более того!

Во-вторых, вероятность успешного обнаружения вирусной заразы относительно невелика, а о гарантиях ее корректного лечения говорить и вовсе не приходится. Судите сами – новые вирусы появляются едва ли не каждый день, а ведь на поиск и выявление заразы, ее анализ и разработку противодействующей вакцины неизбежно уходит какое-то время, в течение которого вы остаетесь уязвимы! Причем фирмы-производители антивирусов просто физически не в состоянии оперативно отслеживать появление новых, мутированных или модифицированных, штаммов. Статистика показывает, что все крупные эпидемии как раз и вызываются вот такими до поры до времени незамеченными вирусами (и нашумевшая атака на SQL-серверы – лучшее тому подтверждение) (см. главу 3 «Жизненный цикл червей»).

В-третьих, даже если зараза формально известна антивирусу, не факт, что он сможет ее «опознать». Техника детектирования полиморфных и шифрованных вирусов очень сложна, и малейшая небрежность разработчиков, допущенная при анализе вирусного кода и/или разработке вакцины, приводит к тому, что один или несколько вирусных штаммов остаются незамеченными. К тому же, любой ламер, вооруженный hex-редактором, может «отрихтовать» любой известный вирус, сделав из него десяток-другой неизвестных, – делов-то! Короче говоря, качество распознавания заразы все еще оставляет желать лучшего.

В-четвертых, антивирусы способны выдавать ложные срабатывания, ругаясь на присутствие вирусов там, где в действительности их и в помине нет. Шутки шуткою, но убытки от такой чрезмерной подозрительности просто грандиозны! Сколько начинающих программистских контор разорились только из-за того, что распространяли «зараженную» (по мнению антивирусов) продукцию! А паника, поднятая антивирусом? Судорожное отключение машин, вызов специалистов, изматывающий поиск черной кошки в черной комнате? Черт с ними, с нервными клетками (они хоть и не восстанавливаются, но на их место приходят новые), кто нам бесцельно прожитые секунды вернет?! Какой антивирус их восстановит?

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

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

Что же касается червей, то антивирусы не справляются с ними в принципе. Обнаружить и удалить данный конкретный экземпляр червя – не проблема, но червь будет приходить из сети вновь и вновь, каждый раз отстраивая свое, разрушенное антивирусом, логово заново. Так будет продолжаться до тех пор, пока пользователь не установит заплатку и не заткнет дыру, через которую распространяется червь, или не оградит себя со всех сторон брандмауэром (впрочем, хитрый червь сумеет просочиться и через брандмауэр) (см. главу 5 «Побег через брандмауэер плюс терминализация всей NT»).

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

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

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

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

Чтобы стать настоящим исследователем, надо послать всех нахрен и забить на все остальное, без исключения, абсолютно все. При этом вы должны быть полны надеждой и стремлением; немного мозгов и везения также не помешают. И если ваше упорство будет беспредельным, а помыслы совпадут с тем, что нужно миру компьютеров, вы сольетесь с киберпространством, и знание придет и останется с вами. Те, кто чувствовал это, поймут меня: вы оставляете частичку своей души киберпространству, а часть его принимаете в себя; как два порезанных пальца, приложенных друг к другу, вы теперь одной крови; и в вас тоже горит бессмертный огонь, искра, что в силах зажечь этот мир. Это чувство причастности к великому; особое мироощущение, которое делает вас настоящим. Ищите же его!

© ZOmbie

…страсть к вирусам вытеснила все – голод, интерес к девушкам, друзей, учебу, родителей, смысл жизни. Это был дракон, сжигающий все на своем пути, оставляющий лишь запах напалма и смутные картинки прошлого в памяти. Когда я включал компьютер, я испытывал чувства знакомые, наверное, только заядлому наркоману, который, наконец, ширнулся после двухмесячного «голода»…

© Аноним

ЧТО МОГУТ И НЕ МОГУТ ВИРУСЫ

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

Вы уже смеетесь? А напрасно! Фортуне стало скучно, и она решила немного подшутить. Держитесь за кресла, – сказка начинает сбываться! Вывести современный компьютер из строя вирусы уже могут. Да, судя по сообщениям пострадавших, они его и выводят. Печально известного «Чиха» представлять, я думаю, нет необходимости? И если с угрозой потери данных еще можно как-то бороться (тем же резервным копированием, например), то против возможности потери оборудования (подчас весьма дорогого, кстати) уже не попрешь, а потому имеет смысл поговорить об этом поподробнее. В конечном счете единственное средство защиты – покупка такого оборудования, которое программным поломкам просто не поддается.

С ЧЕГО ВСЕ НАЧИНАЛОСЬ

Исторически правильным будет начать наш разговор с FLASH-BIOS. Еще во времена господства 8-битных компьютеров типа ZX-Spectrum меня угораздило приобрести одну продвинутую машину, которая среди прочих наворотов имела возможность программной перешивки содержимого BIOS. Машины классом попроще держали все свои прошивки в ПЗУ – микросхемах постоянной памяти, стираемой путем засветки ультрафиолетовым лучом и перепрограммируемой в специальном устройстве с неоригинальным названием «программатор». Достоинство такого подхода заключалось в том, что, какие бы эксперименты ни проводились с компьютером, вы были неспособны вывести его из строя. Правда, при желании сменить прошивку на ее более современную версию приходилось развинчивать корпус (если только агрегат не стоял на гарантии), извлекать ПЗУ из панельки (если только производитель намертво не впаял ее в материнскую плату), переставлять микросхему в программатор (если он у вас был) и, предварительно облучив поверхность кристалла ультрафиолетовой лампой (которую тоже надо было иметь)… Но не слишком ли много «если», вы не находите? Вот производители и решили предоставить возможность программного перепрограммирования BIOS, меняя прошивку, что называется, «не отходя от кассы». Забавно, но это оказалось удобно не только (и не столько) пользователям, сколько самим производителям, – действительно, если раньше «глюки» материнской платы были хорошим поводом для возврата ее продавцу, то теперь вам просто предложат обновить версию BIOS, и все! Причем даже если такое обновление ничем не поможет, плату у вас все равно не примут (точнее, могут не принять), а посоветуют подождать выхода новой прошивки и попытать счастья еще разок, а потом еще и еще..

Обратной стороной удобства стала возможность непреднамеренной порчи компьютера. К слову сказать, упомянутая мной навороченная машинка на первой же неделе своей эксплуатации скоропостижно умерла из-за неудачной попытки чуть-чуть «усовершенствовать» код BIOS. Но если во времена ZX-Spectrum найти человека с программатором не было проблемой, то сейчас вдохнуть жизнь в дохлый BIOS могут лишь единичные, специализирующиеся на этом фирмы! (Известный «изврат» с перестановкой микросхем «на лету» не предлагать – при этом существует реальный риск уничтожить сразу обе «материнки» – и донора, и акцептора.)

Нашествие «Чиха» заставило производителей материнских плат пересмотреть концепцию безопасности и оснастить выпускаемую ими продукцию хоть какими-то средствами защиты. Первыми на рынке появились материнские платы с перемычкой FLASH write protect, защищающей содержимое BIOS от уничтожения и/или перезаписи. Несмотря на то, что данное средство на 100 % надежно, далеко не на всех материнских платах защита по умолчанию включена. К тому же открывать компьютер всякий раз, когда у вас возникает желание перешить BIOS, удовольствие отнюдь не из приятных. А пользователь по определению – создание небрежное и беспечное, – перезаписать BIOS он перезапишет, а вот вернуть перемычку на место – забудет…

Более совершенная защита типа boot-BLOCKподдерживает прошивку с дискеты даже при «запоротом» FLASH-BIOS. Вставляете в дисковод дискету с прошивкой и… Стоп! А есть ли у вас такая дискета? Если нет, – прямо сейчас и создайте, причем не в единственном экземпляре, – дискетам, как известно, при хранении свойственно «сыпаться». (Подробнее о технике создания прошивочных дискет читайте в руководстве к своей материнской плате.)

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

СОВЕТ

При покупке компьютера выбирайте только те модели, которые поддерживают технологию dual-BIOS, ну или хотя бы boot-BLOCK, наконец! Материнские платы без какой-либо защиты вообще (а такие все еще встречаются) лучше сразу отправить на свалку.

Теперь перейдем к мониторам. Во времена тех же восьмидесятых (того же прошлого века) существовали мониторы типа Hercules, которые легко выводились из строя, в буквальном смысле «вспыхивая синим пламенем». Для этого было достаточно перевести их в специальный видеорежим. Пришедшие им на смену VGA и SVGA так просто уже не сдавались, но при продолжительной работе в неподдерживаемых режимах наивысшего разрешения (характерный писк и косые полосы по экрану), некоторые мониторы от no-name производителей не выдерживали подобных издевательств и все-таки ломались. Правда, особой проблемы это не вызывало, поскольку не заметить длительные мучения монитора очень трудно. Такой вирус (даже если бы он и существовал) тут же выдал бы себя с головой!

Но мало-помалу мониторы все умнели и оснащались теми же самыми перепрограммируемыми ПЗУ, хранящими текущие настройки монитора в энергозависимой памяти, причем некоторые модели современных мониторов поддерживают управление не только посредством кнопок меню, расположенных на лицевой панели, но и программно – т. е. через компьютер. Автору известно несколько случаев, когда отладчик soft-ice от NuMega (низкоуровневая программа такая) при попытке установки неправильного драйвера экрана ломал некоторые модели мониторов фирмы Sony так, что они после этого даже не включались. (Монитор выходил из строя именно в момент активации драйвера, – поэтому эти сообщения никак нельзя списать на случайность.) Не стоит отмахиваться от этой проблемы, равно как не стоит надеяться на то, что у не-Sony-мониторов ее нет. И единственное, что в такой ситуации можно посоветовать, – внимательнее относиться к вирусной безопасности (ну, вдруг появятся вирусы, ломающие мониторы).

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

С жесткими дисками ситуация еще хуже. Практически все они поддерживают программное включение/выключение питания, и приблизительно половина из них обнаруживает одну очень неприятную особенность: если циклически «щелкать» выключателем питания, подгоняя момент включения так, чтобы он пришелся на еще не полностью остановившиеся «блинчики», винчестер уже на сотой итерации в буквальном смысле слова рассыпается на запчасти! А еще многие жесткие диски допускают возможность перепрошивки или редактирования служебных таблиц, искажение которых может привести к тому, что контроллер винчестера наотрез откажется запускаться!

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

ПРИМЕЧАНИЕ

Кстати говоря, многие приводы (в частности, мой PHILIPS CDRW2412, относящийся к весьма недешевому классу «продвинутых» приводов) механически выходят из строя при считывании оглавления некорректно «размеченного» диска.

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

Короче говоря, современный компьютер со всей своей периферией представляет собой достаточно уязвимое устройство, легко выводимое из строя на программном уровне. Отсутствие массовых «выгораний» комплектующих объясняется тем, что создатели вирусов совсем не лишены чувства сострадания и движет ими отнюдь не жажда вселенской мести и разрушений планетарного масштаба. Если бы LoveSan или любой другой из расплодившихся в последнее время вирусов хотя бы частично выводил компьютеры из строя, мы с вами сейчас грелись у костра, сидя на медвежьих шкурах, а компьютеры использовали в качестве декоративного украшения, напоминающего о былых временах…

КЛАССИФИКАЦИЯ КОМПЬЮТЕРНЫХ ВИРУСОВ

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

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

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

Программы, способные к самостоятельному размножению, протекающему без участия пользователя, принято называть червями. Подавляющее большинство червей – это сетевые вирусы, распространяющиеся сквозь дыры в программном обеспечении и полностью автоматизирующие процесс поиска и заражения жертв, не закладываясь на человеческий фактор. Фактически черви являются высоко автономными роботами и предъявляют к своему создателю ничуть не менее жесткие требования, чем космические станции, посылаемые на Марс. Во всяком случае, дефекты проектирования червей наносят мировому сообществу урон, вполне сопоставимый со стоимостью космической станции.



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

ОТ ИЗДАТЕЛЬСТВА

Ваши замечания, предложения и вопросы отправляйте по адресу электронной почты comp@piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

Все исходные тексты, приведенные в книге, вы можете найти по адресу http://www.piter.com/download.

Подробную информацию о наших книгах вы найдете на веб-сайте издательства: http://www.piter.com.

Часть I

Локальные вирусы

Глава 1

БОРЬБА С WINDOWS – ВИРУСАМИ – ОПЫТ КОНТРТЕРРОРИСТИЧЕСКИХ ОПЕРАЦИЙ,

из которой читатель узнает, чем зараженный файл отличается от незараженного

Глава 2

ВИРУСЫ В UNIX, ИЛИ ГИБЕЛЬ ТИТАНИКА II,

из которой читатель узнает, что в UNIX-системах вирусы не только живут, но даже очень бурно размножаются, пожирая скрипты и демонстрируя с десяток различных способов внедрения Belf/coff/a.out файлы


Локальные вирусы образуют многочисленную и весьма устойчивую популяцию, захватившую практически все стратегические уровни – от старушки MS-DOS, дожившей до наших дней разве что в виде эмуляторов (да и то больше по недоразумению, чем по потребности), до современных операционных систем, базирующихся на последних клонах Windows NT и UNIX.

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

Вирусов, уверенно функционирующих под UNIX и NT, пока немного, но с каждым годом их количество растет, причем чем дальше – тем стремительнее. Действительно, сначала идея приходит в голову кому-то одному – высококвалифицированному и опытному программисту, сочетающему в себе талант разработчика с кучей свободного времени (что встречается, прямо-таки скажем, нечасто) и знающему «задний двор» операционной системы как свои пять пальцев. Затем, по мере размножения вируса, его вылавливают десятки программистов с квалификацией пониже и «потрошат» ключевые алгоритмы дизассемблером, окультуривая ассемблерные листинги разъясняющими комментариями, доступными даже начинающим, а иногда и переводя их на языки высокого уровня… Для особо тупых создаются конструкторы вирусов, полностью автоматизирующие процесс разработки и низводящие свободный полет творческой мысли до простого тыканья мышью куда попало.

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

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

Здесь вы не найдете ни технологий полиморфизма, ни способов захвата RING0 с пользовательского уровня, ни антиотладочных или stealth-приемов. Каждая из этих тем заслуживает отдельного разговора и отдельной книги. Может быть, как-нибудь в другой раз…

Глава 1

Борьба с windows-вирусами – опыт контртеррористических операций,

из которой читатель узнает, чем зараженный файл отличается от незараженного

Не рой яму другому, чтобы он не использовал ее как окоп!

Солдатская мудрость
<p>Что нам потребуется?</p>

Анализ вирусного кода требует обширных знаний из различных областей программирования, а также специализированного инструментария, без которого исследовательская работа рискует превратиться в орудие средневековой пытки. По этому поводу вспоминается один анекдот: «Наташа, вас по точке схождения двух прямых веслом не били? Ну тогда вы нас навряд ли поймете». Все это отпугивает новичков, порой даже и не пытающихся взять в руки дизассемблерный меч, полагая, что борьба с вирусами слишком сложна для них. Однако это предположение неверно. Бесспорно, наивно надеяться на то, что искусству дизассемблирования можно научиться за одну ночь, но вот пары недель упорного труда для достижения поставленной цели должно оказаться достаточно.

Знание ассемблера – древнейшего языка программирования – обязательно. И одних лишь учебников в стиле «Assembler» Юрова и «Программируем на языке ассемблера IBM PC» Рудакова для его освоения катастрофически недостаточно, поскольку всякий язык познается лишь при общении «в живую». Сходите на любой системно-ориентированный сайт (например, www.wasm.ru) и попытайтесь ухватить суть ассемблера извне, а не изнутри. На форумах, где дикие люди произносят непонятные слова, ругаются матом и обсуждают репродуктивные свойства вирусов, витает особый системный дух, делающий все сложное таким простым и понятым.

В конечном счете ассемблер – это всего лишь язык, причем очень и очень простой. Некоторые даже сравнивают его с эсперанто – десяток команд, и вы уже можете сносно говорить. Единственная сложность состоит в том, что вирусы, в отличие от нормальных программ, содержат множество ассемблерных извращений, смысл которых понятен только посвященным. Для непосвященных же это – интеллектуальный вызов! Это увлекательные логические (и психологические!) головоломки; это бессонные ночи, горы распечаток, яркие озарения и ни с чем не сравнимые радости найденных вами решений! Хотя, если говорить честно… все уже украдено до нас, тьфу, все головоломки давным-давно разгаданы, а задачки – решены. Ресурсы глобальной сети к вашим услугам! Посетите сайт удивительного человека и исследователя программ Марка Русиновича – http://www.sysinternals.com, а также отыщите его книгу «Внутреннее устройство Windows 2000». Еще вам пригодится знаменитый Interrupt List Ральфа Брауна – хорошо структурированный справочник по портам, ячейкам памяти и прерываниям (включая недокументированные). Наличие последних версий Platform SDK и DDK от Microsoft и Basic Architecture/Instruction Set Reference/System Programming Guide от Intel предполагается по умолчанию. Русские переводы технической документации, заполонившие книжные магазины, годятся разве что для студентов, работающих над очередным рефератом, который после написания идет в /dev/null (т. е. в архив на полку). Для реальной же работы они непригодны.

Из инструментария вам прежде всего понадобится хороший отладчик и дизассемблер. Конечно, свой выбор каждый волен делать самостоятельно, но ничего лучше soft-ice от NuMega (www.numega.com) и IDA PROот Ильфака Гуильфанова (www.idapro.com) до сих пор не придумано. Оба этих продукта относятся к классу тяжелой артиллерии и по сложности своего управления ничуть не уступают таким софтверным монстрам, как, например, Photoshop или CorelDRAW! Равно как изучение интерфейса Photoshop'a не заменяет собой освоение техники рисования, так и искусство владения отладчиком/дизассемблером не сводится к чтению штатной документации. Ищите в магазинах «Отладка Windows-приложений» Джона Роббинса, «Отладчик soft-ice» Романа Айрапетяна, «Образ мышления – дизассемблер IDA» Криса Касперски и «Фундаментальные основы хакерства – искусство дизассемблирования» его же.

<p>Источники угрозы</p>

По данным сайта VX.NETLUX.ORG на начало сентября 2003 года, рейтинг «популярности» вирусов и троянских коней выглядел так:

– I-Worm.Sobig.f

– Worm.Win32.Lovesan

– Worm.Win32.Welchia

– I-Worm.Sobig.a

– Worm.Win32.Ladex

– Win32. Paritй

– I-Worm.FireBurn

– Trojan.Win32.Filecoder

– I-Worm.Mimail

– I-Worm.Klez.a-h

– 33.525

– Worm.P2P.Harex.a

– I-Worm.Tanatos.a

– TrojanProxy.Win32.Webber

– MBA. First

– AJ family

– Worm.P2P.Tanked

– Andrey.932

– Worm.Win32.0pasoft

– Worm.Win32.Autorooter

Все двадцать вирусов из двадцати «сильнейших» – чрезвычайно примитивные и неспособные к качественной мимикрии твари, легко обнаруживемые даже при поверхностном анализе исследуемых файлов по методикам, описанным ниже.

<p>Критическая ошибка в svchost.exe</p>

Если, работая под Windows 2000/Windows XP, вы поймаете сообщение о критической ошибке приложения в модуле SVCHOST.EXE и эта критическая ошибка с завидной регулярностью будет повторяться вновь и вновь, – не торопитесь переустанавливать систему, не несите ваш компьютер в ремонт! Источник ошибки сидит отнюдь не в нем, а приходит к вам по сети своим шагом и имя ему – DCOM RPCbug (рис. 1.1).

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

Конец бесплатного ознакомительного фрагмента.

  • Страницы:
    1, 2