Чтение онлайн

ЖАНРЫ

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

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

Шрифт:

Глава 1
Борьба с windows-вирусами – опыт контртеррористических операций,
из которой читатель узнает, чем зараженный файл отличается от незараженного

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

Солдатская мудрость

Что нам потребуется?

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

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

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

В конечном счете ассемблер – это всего лишь язык, причем очень и очень простой. Некоторые даже сравнивают его с эсперанто – десяток команд, и вы уже можете сносно говорить. Единственная сложность состоит в том, что вирусы, в отличие от нормальных программ, содержат множество ассемблерных извращений, смысл которых понятен только посвященным. Для непосвященных же это – интеллектуальный вызов! Это увлекательные логические (и психологические!) головоломки; это бессонные ночи, горы распечаток, яркие озарения и ни с чем не сравнимые радости найденных вами решений! Хотя, если говорить честно… все уже украдено до нас, тьфу, все головоломки давным-давно разгаданы, а задачки – решены. Ресурсы глобальной сети к вашим услугам! Посетите сайт удивительного человека и исследователя программ Марка Русиновича –а также отыщите его книгу «Внутреннее устройство 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» Криса Касперски и «Фундаментальные основы хакерства – искусство дизассемблирования» его же.

 

Источники угрозы

По данным сайта 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

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

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

Если, работая под Windows 2000/Windows XP, вы поймаете сообщение о критической ошибке приложения в модуле SVCHOST.EXE и эта критическая ошибка с

завидной регулярностью будет повторяться вновь и вновь, – не торопитесь переустанавливать систему, не несите ваш компьютер в ремонт! Источник ошибки сидит отнюдь не в нем, а приходит к вам по сети своим шагом и имя ему – DCOM RPCbug (рис. 1.1).

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



Рис. 1.1. Это – не признак нестабильности системы. Это – признак вирусной атаки! Если нажать ОК – перестанет работать буфер обмена и некоторые другие функции системы, если нажать Отмена – запустится отладчик (если он у вас есть) и система полностью встанет. Если же не делать ни того, ни другого – система успешно продолжит свою работу…


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

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

Места наиболее вероятного внедрения вирусов

Объектом вирусного поражения могут выступать исполняемые файлы (динамические библиотеки, компоненты ActiveX, плагины), драйверы, командные файлы операционной системы (bat, cmd), загрузочные сектора (MBR и BOOT), оперативная память, файлы сценариев (Visual Basic Script, Java Script), файлы документов (Microsoft Word, Microsoft Excel) и… и это далеко не все! Фантазия создателей вирусов поистине безгранична, и потому угрозы следует ожидать со всех сторон.

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

Основные признаки вирусного внедрения

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

Количество всевозможных «родимых пятен», прямо или косвенно указывающих на зараженность файла, весьма велико, и ниже перечислены лишь наиболее характерные из них. Но даже они позволяют обнаружить до 4/5 всех существующих вирусов, а по некоторым оценкам и более того (по крайней мере, все «лауреаты» вирусного ТОР-20 – обнаруживаются).

Текстовые строки

Прежде чем приступать к тотальному дизассемблированию исследуемого файла, нелишне пролистать его дамп на предмет выявления потенциально небезопасных текстовых строк, к которым, в частности, относятся команды SMTP – сервера и командного интерпретатора операционной системы (HELO/MAIL FROM/MAIL TO/RCPT ТО и DEL/COPY/RD/RMDIR соответственно), ветвей автозапуска реестра (RunServices, Run, RunOnce), агрессивные лозунги и высказывания («легализуем марихуану», «сам дурак») и т. д.

Поделиться с друзьями: