Как антивирусы детектят заразу, всем хорошо известно. Ни фига они ее не детектят! Даже когда последнему ламеру ясно, что с компьютером что-то не то, живность резвится и размножается, а разные там KAV'ы и NOD'ы молчат и только успокаивают: все хорошо. Короче, отправляем антивирусы в топку и включаем свой мозг, зарываясь в недра операционной системы и проверяя на стерильность все злачные места обитания малвари. Развели тут зоопарк, понимаешь. Это же непорядок конкретный! А непорядок надо разгребать. Конечно, наивно надеяться, что в интеллектуальном состязании с зловредной малварью можно справиться по готовым рецептам. Существует тысяча и один способ внедрения в систему, и с каждым днем появляются все новые и новые, учитывающие ошибки своих предшественников и умело маскирующиеся так, что хрен их найдешь. Но крутой малвари очень немного. Она стоит нехилых денег (от десяти килобаксов) и пишется строго под заказ для целенаправленных атак на конкретные организации. Выпускать ее в живую природу никто не собирается, и 99% заразы, с которой нам приходится иметь дело, - это примитивные пионерские вирусы, написанные в процессе изучения Delphi или Visual Basic’а и органически неспособные к маскировке. Обнаружить их присутствие в системе — все равно что два байта переслать. Главное — это научиться основам анализа, освоить пару-тройку простых, но эффективных приемов, после чего технику боя можно шлифовать и самостоятельно, уже без помощи автора. Хронология вирусного внедрения, или машина времени Операционные системы семейства Windows, помимо атрибута времени последней модификации файла, также поддерживают атрибуты времени создания и времени последнего обращения. Как это можно использовать на практике? А вот как: после установки системы все файлы в каталогах Windows и System32 имеют идентичные (ну или практические идентичные) атрибуты времени создания, позволяя отслеживать файлы, установленные позднее. Допустим, мы установили систему со всеми необходимыми программами и больше ничего не ставили. Тогда все исполняемые файлы и динамические библиотеки из каталогов Windows и System32, созданные позднее этого срока, с высокой степенью вероятности являются троянскими программами. Естественно, дату создания файла легко изменить, и умной малвари ничего не стоит замаскироваться. Но, как показывает практика, очень редкая малварь заботится об этом и на времени создания вредоносные программы палятся косяками. А как быть, если мы беспорядочно устанавливали новые программы и удаляли старые? В этом случае в каталогах Windows и System32 появляется множество файлов с различными датами создания, принадлежащих честным программам, и малвари ничего не стоит затеряться среди них. На самом деле, практически каждому честному файлу из каталогов Windows и System32 соответствует своя программа из каталога Program Files, представленная одним или несколькими файлами и ярлыками на рабочем столе или в меню «Пуск». Проглядывая файлы в каталогах Windows и System32, смотрим на время их создания и пытаемся найти файлы с близким временем создания в каталоге Program Files. И если этот поиск завершается успешно, считаем, что с файлом все ОК. В противном случае устраиваем суровые разборки на предмет того, откуда он взялся и кто его установил. Некоторые программы (например, хранители экрана) устанавливают себя только в каталог Windows, не касаясь остальных, что делает их похожими на малварь. Остается лишь смотреть на дату создания и мучительно вспоминать, что мы устанавливали на свой жесткий диск и когда. Описанная методика может показаться кому-то слишком утомительной и ненадежной, однако она выручала автора не раз и не два, в то время как технически более продвинутые приемы отдыхали, не показывая никакого позитивного результата. Самое главное – анализ даты создания файлов не требует никаких навыков и доступен каждому, в то время как дизассемблированием владеют единицы. ОК, будем считать, что мыщъх тебя уговорил. А раз так, то переходим от слов к делу. Для просмотра даты создания открываем проводник Windows, в меню «Вид» выбираем «Таблица», затем «Вид -> Настройка столбцов» и взводим галочку напротив «Создан». Щелкнув мышью по шапке таблицы, выбираем сортировку по убыванию даты создания, после чего самые свежие файлы окажутся в начале списка. Ой, сколько здесь всего интересного! На компьютере в каталоге System32 обнаруживается множество файлов preflib_Prefdata*, автоматически создаваемых системой и хранящих данные о счетчиках производительности. Пропускаем их и идем дальше. Видим пару подозрительных файлов - pdfcmnt.dll и MSMPIDE.DLL, дата создания которых совпадает с датой создания каталога PDFCreator в Program Files. Ага, значит, это динамические библиотеки, принадлежащие одноименной программе, установленной в обозначенное время. Затем опять идут счетчики производительности и динамические библиотеки кодека FFShow – ff_vfw.dll и ff_vfw.manifest, а за ними - подозрительный исполняемый файл epinh.exe, не соответствующий ни одному каталогу из Program Files. Идем на online-службу и прогоняем epinh.exe через кучу антивирусов, часть из которых начинает ругаться на неизвестный вирус. Соответственно, вину подследственного можно считать полностью доказанной, без права на оправдание. Часто после посещения сайтов «клубничной» тематики или запуске файлов, полученных из ненадежных источников (например, самостоятельно пришедших со свежим мылом), приходится гадать: поимели нас или нет? Поиск файлов, созданных за последние сутки, является идеальным средством выявления заразы. Нажимаем «Пуск -> Найти -> Файлы и папки», указываем диски, на которых следует осуществлять поиск (как минимум необходимо указать диск, содержащий операционную систему), в «Параметрах поиска» взводим галочку напротив «Даты» и говорим искать файлы, созданные за последний день, после чего давим кнопку «Найти» и ждем результатов. В нашем случае в каталоге System32 обнаружился свежеиспеченный файл hldrrr.exe, маскирующийся под самораспаковывающийся rar-архив, который мы не создавали и который, очевидно, является зловредной программой, подлежащей проверке на Virus Total с последующим удалением Объекты автозагрузки В уже существующие исполняемые файлы современная малварь внедряется крайне редко, предпочитая прописывать себя в автозагрузку (условно), запускаясь вместе с загрузкой операционной системы. Появление программы, которую мы не устанавливали, в объектах автозагрузки свидетельствует о вирусном заражении. Причем, в отличие от даты создания файла, которую ничего не стоит изменить, замаскироваться в объектах автозагрузки сложно - на это способна только самая продвинутая малварь, именуемая руткитом, но о руткитах мы поговорим позднее. Проблема в том, что объектов автозагрузки очень много. Они живописно разбросаны по ветвям реестра, полный перечень которых занял бы целую страницу, а может быть, даже две. Однако нет никакой необходимости в том, чтобы держать весь этот легион технических подробностей у себя в голове. Существует множество утилит, самостоятельно сканирующих список автоматически загружаемых объектов с учетом последних веяний времени (Microsoft добавляет все больше и больше веток реестра с прописанными путями к файлам и/или динамическим библиотекам, которые необходимо загрузить при старте операционной системы). Одной из таких утилит является условно бесплатная программа Anti-Spy Info, которую можно загрузить с одноименного сайта (http://anti-spy.info) и использовать 30 дней, а затем громко сказать «Кря!» или (о ужас!) приобрести платную версию, впрочем, это уже не относится к обсуждаемой проблеме. Короче, запускаем Anti-Spy Info, и на экран тут же выводится список активных процессов и автоматически загружаемых объектов (тип запуска того или иного объекта приведен в графе «Запуск»). Все, что нам нужно делать, — это следить за списком автозагрузки на предмет появления в нем новых объектов. А чтобы не запутаться в программе, предусмотрен вывод информации в файл («Файл -> Экспорт в…»); просто сохраняем отчет при каждом запуске, а затем сличаем его с предыдущей версией. Если никаких приложений мы не устанавливали, а список автозагрузки пополнился новыми жильцами, это малварь. В Anti-Spy Info заложен достаточно мощный эвристический механизм, анализирующий активные процессы и автоматически загружаемые объекты и определяющий вероятность их принадлежности к вирусам. К сожалению, эвристика очень часто ошибается, в результате чего честные программы классифицируются как «потенциально опасные», а малварь получает рейтинг «похожа на безвредную». Изюминка Anti-Spy Info (до которой не догадался ни KAV, ни NOD32) в том, что она поддерживает базу знаний, включающую в себя множество файлов, чья вредоносность оценивается опытными пользователями Anti-Spy Info самостоятельно. Возьмем, например, файл SSSensor.dll, найденный в компьютере автора, которому Anti-Spy Info присвоила рейтинг 82%, что есть бэд. Заходим на http://anti-spy.info/file/index.html, вводим «SSSensor.dll» в строку поиска и через несколько секунд узнаем, что SSSensor.dll представляет собой компонент SyGate Personal Firewall, который действительно установлен на компьютере, а следовательно, на счет вирусов можно не волноваться. К сожалению, поиск в базе знаний осуществляется только по имени, без учета содержимого, и грамотной малвари ничего не стоит прикинуться честной программой. Однако подавляющее большинство современных вирусов написано пионерами, которые не научились даже генерировать случайные имена, и самое большее, на что они способы, — это зашить внутрь малвари несколько имен, выбираемых наугад. Как следствие, поиск по именам дает надежные позитивные результаты, то есть если в базе знаний такой-то файл отнесен к вирусам, в его агрессивной природе можно не сомневаться. А вот на негативный результат полагаться нельзя, и все «неопасные» файлы необходимо прогнать через антивирусы, чтобы удостовериться, что мы имеем дело с честной программой, а не маскирующейся малварью. Также обращай внимание и на дату создания. Если файл представляет собой компонент какого-то приложения, то время его создания должно совпадать со временем создания всех остальных принадлежащих приложению файлов. Игры с руткитами в прятки Руткитом называют продвинутую мальварь, скрывающую свое присутствие на компьютере. В эпоху господства MS-DOS такие программы называли «стелс-вирусами» (Stealth), но сейчас эта терминология признана устаревшей. К тому же от стелс-вирусов, ныкающих свою тушу в заражаемых файлах, руткиты отличаются тем, что используются для сокрытия произвольных файлов, процессов и сетевых соединений - тех, которые им укажет разработчик малвари. В исполняемые объекты они внедряются редко. Можно даже сказать, что руткиты вообще никуда не внедряются, но легче от этого не становится. Сокрытые файлы не отображаются ни в проводнике, ни в FAR'е, а сокрытые процессы отсутствуют в диспетчере задач, поэтому ни Anti-Spy Info, ни поиск по дате создания не покажут ничего интересного. Ну как дальше жить?! На самом деле, руткиты обнаружить легче всего. Активная маскировка выдает факт внедрения! Достаточно получить список файлов/процессоров/сетевых соединений, обратившись напрямую к внутренним функциям ядра, и сравнить полученный результат с данными, возвращенными высокоуровневыми API-функциями операционной системы. Всякое расхождение между ними будет свидетельствовать о заражении. Намерения руткита определить сложнее (некоторые легальные защитные механизмы устроены по принципу руткитов), однако нам этого и не требуется. Хорошие программы не маскируются! Даже если руткит не собирается причинять нам вред, используемые им методики стелсирования — это потенциальный глюкодром, нарушающий нормальную работу операционной системы. А кому нужны лишние критические ошибки и голубые экраны смерти?! Для поиска руткитов можно воспользоваться бесплатной программой Rootkit Revealer, написанной знаменитым исследователем Windows NT Марком Руссиновичем. Она занимает (в упакованном виде) чуть больше двухсот килобайт (причем половину объема отъедает помощь): http://download.sysinternals.com/Files/RootkitRevealer.zip, но, несмотря на свою простоту, обнаруживает (по утверждению ее создателя) все руткиты, представленные на сайте www.rootkit.com – основном источнике руткитов для пионеров и прочих парнокопытных. Впрочем, серьезные руткиты в публичный доступ не выкладываются и стоят от 10k-15k денег в баксах. Среди них есть и такие, которые знают о существовании Rootkit Revealer и блокируют его запуск с невнятным сообщением об ошибке или же используют специальные алгоритмы обхода, с которыми Rootkit Revealer уже не справляется. Однако вероятность словить такую продвинутую заразу крайне мала, и потому результатам работы Rootkit Revealer можно вполне доверять. Rootkit Revealer — единственная утилита, работающая с файловой системой/реестром на физическом уровне и способная обнаружить практически все руткиты уровня ядра, которые KAV, Dr. Web и другие коммерческие антивирусы даже не пытаются искать. NOD32 обнаруживает большинство руткитов прикладного уровня и некоторые руткиты уровня ядра. Однако, во-первых, он требует предварительной установки на компьютер (да и весит до хрена), во-вторых, представляет собой платный продукт, а в-третьих, он намного более известен, что отнюдь не идет ему на пользу, и качественные руткиты учатся обходить его еще в зародыше. Все это делает Rootkit Revealer практически безальтернативным средством, с которым мы сейчас и познакомимся. Запускаем RootkitRevealer.exe, нажимаем кнопку «Scan» и ждем, пока программа просканирует ветви реестра и дисковые файлы на предмет сокрытой заразы. Поиск сокрытых сетевых соединений не осуществляется, что не есть гуд, поскольку черви все чаще и чаще прибегают к маскировке левого трафика. Выглядит это приблизительно так: все приложения закрыты, но модем оживленно мигает своими огоньками. Тут уже никакого Rootkit Revealer не нужно, чтобы заподозрить наличие непрошенной заразы или AdWare, загружающего баннеры. Если зловредная программа в дополнение к сетевым соединениям скрывает и свой исполняемый файл (динамическую библиотеку) и/или процесс, она будет обнаружена Rootkit Revealer на общих основаниях, в противном случае вредоносный процесс легко обнаружить с помощью Anti-Spy Info. А что делать, если Anti-Spy Info молчит, как партизан на допросе, RootkitRevealer не показывает ничего интересного, а модем все-таки мигает, указывая на наличие заразы? Приходится прибегать к «тяжелой артиллерии» — к отладчику SoftICE, работающему с операционной системой на самом низком уровне и цепляющему все (ну или практически все), что шевелится. Вызываем его нажатием (комбинация по умолчанию, которая при желании может быть изменена) и даем команду PROC для вывода списка процессов, после чего сравниваем полученный результат с данными, возвращенными диспетчером задач. В данном случае SoftICE обнаружил процесс sysrtl, который не зацепил диспетчер задач, что свидетельствует о факте активной маскировки (впрочем, ничего не говоря о его зловредности). Стерилизация системы Обнаружив подозрительный объект, лучше поскорее избавиться от него. Если мы знаем путь к файлу объекта и он не предпринимает никаких усилий по своей маскировке, то проще всего переименовать его во что-нибудь типа goodbye-malware.dat и тут же перезагрузиться, после чего отправить разработчикам антивирусов на трепанацию или удалить. Зачем переименовывать? А затем, что Windows блокирует удаление запущенных файлов и загруженных динамических библиотек, но допускает переименование. Переименование же файла препятствует его запуску после перезагрузки (ведь путь в реестре остался тем же самым!), и с ним можно делать все что угодно. Если же малварь прячет файл, то побороть его становится уже сложнее. Продвинутая малварь просто не позволит себя удалить (и, в общем-то, правильно сделает). Самое простое, что только можно предпринять в обозначенной ситуации, — это загрузиться с LiveCD, поддерживающего NTFS-разделы (у тебя ведь диск размечен под NTFS, верно?) и удалить все левые файлы. Этому малварь уже никак не сможет противостоять! Подойдет Window PE (в свободную продажу не поступала, но найти ее не проблема), Knoppix (довольно популярный клон Linux) или подключение винчестера с инфицированной системой вторым к стерильной XP с последующим удалением нехороших файлов уже оттуда. Как вариант - можно переустановить систему с нуля. Способ радикальный, зато действенный. Но сначала необходимо скачать все последние заплатки, поскольку выходить в сеть на незаштопанной системе небезопасно. К счастью, Microsoft помимо автоматического обновления поддерживает и ручное. Порядок установки заплаток должен совпадать с датами их выпуска (Windows его, увы, не проверяет), в противном случае более древние обновления, установленные последними, могут затереть один или несколько системных файлов со всеми вытекающими отсюда последствиями. Сохраняем обновления на локальном диске и записываем на бумажке даты их выхода (или просто скачиваем обновления один за другим в порядке возрастания их даты, а перед их установкой отсортировываем файлы по времени создания). Затем загружаемся с LiveCD (или стерильной XP, к которой зараженный винчестер подключен вторым) и удаляем каталоги Windows и Program Files, после чего вынимаем LiveCD (отключаем зараженный диск от стерильной XP, вновь подключая его первым) и устанавливаем Windows с дистрибутивного CD. Вероятность выживания малвари минимальна, однако время, потраченное на переустановку системы, довольно значительно, а потому этот способ годится лишь в качестве последнего средства, когда остальные уже исчерпаны. Заключение Страх перед вирусами высаживает на конкретную измену, заставляя искать черную кошку, которой нет, в темной комнате, которой никогда не было. Малварь далеко не так вездесуща и отнюдь не всемогуща. Большинство странностей в поведении компьютера обуславливается дефектами железа, кривизной рук и прочими подобными факторами. Существует только один способ побороть страх —разобраться в устройстве вирусов, освоить ассемблер, научиться держать в руках отладчик с тем, чтобы при малейших подозрениях можно было провести полную ревизию системы. Мы боимся того, что не контролируем, чем не можем управлять, что не знаем… А не знаем потому, что не утруждаем себя этим. Рядовые пользователи предпочитают отмахиваться от проблемы, мол, пользоваться тостером можно, даже не будучи инженером. Верно. Тостером — можно. Но компьютер — это все-таки не тостер. Это сложная электронно-вычислительная машина, требующая от оператора определенной квалификации и жестоко карающая за нежелание думать. Плагины к браузерам Достаточно большое количество малвари распространяется в виде расширений к браузерам, преимущественно к IE. Это обеспечивает высокую степень скрытности, поскольку в этом случае отпадает необходимость порождать новый процесс, а как найти расширения, знает далеко не каждый хакер, не говоря уже о пользователях. Касательно IE: чтобы обезвредить малварь, достаточно зайти в меню «Сервис», найти там «Свойства обозревателя» и сбросить галочку напротив пункта «Включать сторонние расширения обозревателя» (она находится в разделе «Обзор» вкладки «Дополнительно»). Если этот пункт отсутствует, значит, ты используешь слишком древнюю версию браузера – срочно обновляйся! Ведь через незаткнутые дыры черви лезут только так! Однако следует помнить, что при отключении сторонних расширений отвалится панель Google Toolbar и перестанет работать контекстное меню многих менеджеров закачки, с чем смириться никак нельзя. К счастью, Anti-Spy Info умеет отображать сторонние расширения IE, что существенно упрощает поиск малвари. Горящий Лис и Опера выгодно отличаются от IE тем, что самостоятельно выводят список расширений, позволяя выборочно отключать те из них, которые мы не устанавливали. Поэтому прибегать к помощи утилит для решения этой задачи нет никакой необходимости. INFO Еще удобнее осуществлять поиск файла с помощью FAR'а (консоль рулит, причем совершенно без руля), выбрав детальный режим отображения панелей Right/Left Control – 5 (не путать с F5!) и нажав для сортировки по дате создания. Крис Касперски