virii-h2f

поиск малвари своими лапами и хвостом

крис касперски, ака мыщъх, no-email

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

Антивирусы это фигня! Срань господняя! А хвост это рулез! Особенно при наличии хорошей травы. Да только где сейчас траву достать? Ведь по всему видно, что не сезон. Все, что надербанили по осени уже давно скурили. Никаких развлечений. Разве что малварь погонять. Развели тут, понимаешь! Бардак! Это же непорядок конкретный! А непорядок надо разгребать.

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

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

Операционные системы семейства Windows помимо атрибута времени последней модификации файла, так же поддерживают атрибуты времени создания и времени последнего обращения. Как это можно использовать на практике? А вот как — после установки системы все файлы в каталогах Windows и System32 имеют идентичные (ну, практические идентичные) атрибуты времени создания, позволяя отслеживать файлы, установленные позднее.

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

А как быть, если мы беспорядочно устанавливали новые программы и удаляли старые? В этом случае в каталогах Windows и System32 появляется множество файлов, принадлежащих честным программам, с различными датами создания и малвари ничего не следует затеряться среди них. На самом деле, практически каждому честному файлу из каталогов Windows и System32 соответствует «своя» программа из каталога Program Files, представленная одним или несколькими файлами и ярлыками на рабочем столе или в меню «пуск».

Просматривая файлы в каталогах Windows и System32 смотрим на время их создания, пытаясь найти файлы с близким временем создания в каталоге Program Files и, если этот поиск завершился успешно, считаем, что с файлом все ОК, в противном случае устраиваем суровые разборки на предмет того откуда он взялся и кто его установил.

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

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

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

Рисунок 1 просмотр даты создания в «проводнике» Windows

Ой, сколько здесь всего интересного (см. рис. 1)! На мыщъхином компьютере в каталоге System32 обнаруживается множество файлов preflib_Prefdata*, автоматически создаваемых системой и хранящих данные о счетчиках производительности. Пропускам их и идем дальше. Видим пару подозрительных файлов: pdfcmnt.dll и MSMPIDE.DLL, дата создания которых совпадает с датой создания каталога PDFCreator в Program Files. Ага, значит, это динамические библиотеки, принадлежащие одноименной программе, установленной мыщъем в обозначенное время.

Затем опять идут счетчики производительности и динамические библиотеки кодека FFShow – ff_vfw.dll и ff_vfw.manifest, а за ними… подозрительный исполняемый файл epinh.exe, не соответствующий никакому каталогу из Program Files.

Идем на www.virustital.com (или любую другую on-line службу аналогичного типа) и прогоняем epinh.exe через кучу антивирусов, некоторые из которых начинают ругаться на неизвестного вируса (см. рис. 2). Следовательно, вину обвиняемого можно считать полностью доказанной без права на оправдание.

Рисунок 2 результат проверки epinh.exe на on-line службе Virus Total, прогоняющей файл через множество антивирусов

Еще удобнее осуществлять поиск файл с помощью FAR'а (консоль рулит, причем совершенно без руля), выбрав детальный режим отображения панелей Right/Left Control – 5 (не путать с F5!), и нажав Ctrl-F8 для сортировке по дате создания (см. рис. 3).

Рисунок 3 просмотр даты создания в FAR'e

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

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

Рисунок 4 поиск файлов, созданных за последние сутки, позволяет обнаружить малварь по «горячим» следам

В данном случае, в каталоге System32 обнаружился «свежеиспеченный» файл hldrrr.exe, маскирующийся под самораспаковывающийся rar-архив, который мы не создавали и который, очевидно, является зловредной программой подлежащей проверке на Virus Total с последующим удалением.

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

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

Одной из таких утилит является условно-бесплатная программа Anti-Spy Info, которую можно загрузить с одноименного сайта (http://anti-spy.info/) и пользовать 30 дней, а затем громко сказать «кря» или (о ужас!) приобрести платную версию, впрочем, это уже не относится к обсуждаемой проблеме.

Короче, запускам Anti-Spy Info (см. рис. 5) и на экран тут же выводится список активных процессов и автоматически загружаемых объектов (тип запуска того или иного объекта приведен в графе «запуск»). Все, что нам нужно сделать — это следить за списком автозагрузки на предмет появления в нем новых объектов. А чтобы не запутаться в программе предусмотрен вывод информации в файл («файл»  «экспорт в…»), просто сохраняем отчет при каждом запуске, а затем сличаем его с предыдущей версией. Если никаких приложений мы не устанавливали, а список автозагрузки обогатился новыми жильцами — это малварь.

Рисунок 5 внешний вид программы 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, который, действительно, присутствует на мыщъхном компьютере и, следовательно, на счет вирусов можно не волноваться (см. рис. 6).

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

Рисунок 6 «база знаний», содержащая сведения о различных файлах, как вредоносных, так и вполне «законопослушных»

Достаточно большое количество малвари распространяется в виде расширений к браузерам, преимущественно к IE (малварь, поражающая Горящего Лиса и Оперу мыщъху до сих пор не встречалась), что обеспечивает высокую степень скрытности, поскольку в этом случае отпадает необходимость порождать новый процесс, а как найти расширения знает далеко не каждый хакер, не говоря уже за пользователей.

Касательно IE: чтобы обезвредить малварь достаточно зайти в меню «сервис», найти там «свойства обозревателя» (см. рис. 7) и сбросить галочку напротив пункта «включать сторонние расширения обозревателя» (она находится в разделе «обзор» вкладки «дополнительно»). Если этот пункт отсутствует, значит, вы используете слишком древнюю версию браузера – срочно обновляйтесь!!! Ведь через не заткнутые дыры черви лезут только так! Устроили, тут понимаешь. Зоопарк!!!

Рисунок 7 отключение сторонних расширений в IE

Однако, следует помнить, что при отключении сторонних расширение отвалится панель Google Toolbar и перестанет работать контекстное меню многих менеджеров закачки, с чем смириться никак нельзя. К счастью, Anti-Spy Info умеет отображать сторонние расширения IE, что существенно упрощает поиск малвари.

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

Rootkit'ом называют продвинутую мальварь, скрывающую свое присутствие на компьютере. В эпоху господства MS-DOS такие программы называли «стелс-вирусами» (Stealth), но сейчас эта терминология признана устаревшей, к тому же от стелс-вирусов, ныкающих свою тушу в заражаемых файлах, rootkit'ы отличаются тем, что используются для сокрытия произвольных файлов, процессов и сетевых соединений. Тех, которые им укажет разработчик малвари. В исполняемые объекты они внедряются редко. Можно даже сказать, что rootkit'ы вообще никуда не внедряются, но легче от этого не становится. Сокрытые файлы не отображаются ни в «проводнике», ни в FAR'е, а сокрытые процессы отсутствуют в «диспетчере задач», поэтому, ни Anti-Spy Info, ни поиск по дате создания не покажут ничего интересного. Ну как дальше жить?!

На самом деле, Rootkit'ы обнаружить легче всего. Активная маскировка _демаскирует_ факт внедрения! Достаточно получить список файлов/процессоров/сетевых соединений, обратившись напрямую к внутренним функциям ядра и сравнить полученный результат с данными, возвращенными высокоуровневыми API-функциями операционной системы. Всякое расхождение между ними будет свидетельствовать о заражении. Намерения rootkit'а определить сложнее (некоторые «легальные» защитные механизмы устроены по принципу rootkit'ов), однако, нам этого и не требуется. Хорошие программы не маскируются!!! Даже если rootkit не собирается причинять нам вред, используемые им методики стелсирования — это потенциальный глюкодром, нарушающий нормальную работу операционной системы. А кому нужны лишние критические ошибки и голубые экраны смерти?!

Для поиска rootkit'ов можно воспользоваться бесплатной программой Rootkit Revealer, написанной знаменитым исследователем Windows NT Марком Руссиновичем, занимающую (в упакованном виде) чуть больше двухсот килобайт (причем половину объема отъедает помощь) — http://download.sysinternals.com/Files/RootkitRevealer.zip, но несмотря на свою простоту обнаруживающую (по утверждению ее создателя) все rootkit'ы, представленные на сайте www.rootkit.com – основном источнике rootkit'ов для пионером и прочих парнокопытных.

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

RootkitRevealer — единственная утилита, работающая с файловой системой/реестром на физическом уровне, и способная обнаруживать обнаруживать практически все rootkit'ы уровня ядра, которые KAV, Dr.Web и другие коммерческие антивирусы даже не пытаются обнажить. NOD32 обнаруживает большинство rootkit'ов прикладного уровня и некоторые rootkit'ы уровня ядра, однако, во-первых, он требует предварительной установки на компьютер (да и весит до хрена), во-вторых, представляет собой платный продукт, и, в-третьих, NOD32 намного более известен, что отнюдь не идет ему на пользу и качественные rootkit'ы учатся обходить его еще в зародыше. Все это делает RootkitRevealer практически безальтернативным средством, с которым мы сейчас и познакомимся.

Рисунок 8 внешний вид RootkitRevealer'а

Запускаем RootkitRevealer.exe, нажимаем кнопку «Scan» и сидим ждем, пока программа сканирует ветви реестра и дисковые файлы на предмет поиска сокрытой заразы (см. рис.8). Поиск сокрытых сетевых соединений не осуществляется, что не есть гуд, поскольку, черви все чаще и чаще прибегают к маскировке «левого» трафика. Визуально это выглядит приблизительно так: все приложения закрыты, но модем оживленно мигает своими огоньками. Тут уже никакого RootkitRevealer'а не нужно, чтобы заподозрить наличие непрошеной заразы или AddWare, загружающего баннеры для их пока в «бесплатной» программе, сознательно установленной нами на компьютер.

Если зловредная программа в дополнение к сетевым соединениям скрывает и свой исполняемый файл (динамическую библиотеку) и/или процесс, она будет обнаружена RootkitRevealer'ом на «общих основаниях», в противном случае, вредоносный процесс легко обнаружить с помощью Anti-Spy Info.

А что делать, если Anti-Spy Info молчит как партизан на допросе, RootkitRevealer не показывает ничего интересного, а модем все-таки мигает, указывая на наличие заразы? Приходится прибегать к «тяжелой артиллерии» — отладчику soft-ice, работающему с операционной системой на самом низком уровне и цепляющему все (ну или практически все), что шевелится. Только не спрашивайте меня где его взять! Официально он уже давно не продается, так что призывать к покупке лицензионной версии мыщъх никого не собирается. Так же не приставайте ко мне с вопросами «как установить soft-ice на компьютер». Эта тема постоянно всплывает на всех хакерских форумах и включена в кучу faq. Так что Google вам в помощь! Типа дерзайте!

Ладно, все это лирика. Будем считать, что soft-ice уже установлен. Вызываем его нажатием <Ctrl-D> (комбинация по умолчанию, которая при желании может быть изменена) и даем команду «PROC» для вывода списка процессов (см. рис. 9), после чего сравниваем полученный результат с данными, возвращенными «Диспетчером Задач».

В данном случае soft-ice обнаружил процесс sysrtl, который не зацепил «диспетчер задач», что свидетельствует о факте активной маскировки. Безотносительно, впрочем, его зловредности.

Рисунок 9 обнаружение сокрытых процессов с помощью soft-ice

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

Зачем переименовывать? А затем, что Windows блокирует удаление запущенных файлов и загруженных динамических библиотек, но допускает переименование. Переименование же файла препятствует его запуску после перезагрузки (ведь путь в реестре остался тем же самым!) и с ним можно делать все, что угодно.

Если же малварь прячет файл, то побороть его становится уже сложнее. Продвинутая малварь просто не позволит себя удалит (и, в общем-то, правильно сделает). Самое простое, что только можно предпринять в обозначенное ситуации — это загрузиться с LiveCD, поддерживающего NTFS-разделы (у вас ведь диск размечен под NTFS, верно?) и удалить все левые файлы на хрен. Этому малварь уже не сможет никак противостоять! Подойдет Window PE (в свободную продажу не поступала, но найти ее не проблема), Knoppix (довольно популярный клон Linux'а) или подключение винчестера с инфицированной системой «вторым» к стерильной XP и с последующими удалением нехороших файлов уже оттуда.

Как вариант, можно переустановить систему с нуля. Способ радикальный, зато действенный. Но сначала необходимо скачать все Service Pack'и вместе с самыми последними заплатками, поскольку выходить в сеть на незаштопанной системе — небезопасно. К счастью, Microsoft помимо автоматического обновления поддерживает и ручное. Порядок установки заплаток должен совпадать с датами их выпуска (Windows его, увы, не проверяет), в противном случае более древние обновления, установленные последними, могут затереть один или несколько системных файлов со всеми вытекающими отсюда последствиями.

Сохранив обновления на локальном диске и записав на бумажке даты их выхода (или просто скачивая обновления один за другим в порядке возрастания их даты, а перед их установкой отсортировав файлы по времени создания), загружаемся с LiveCD (или стерильной XP, к которой зараженный винчестер подключен «вторым») и удаляем каталоги Windows и Program Files, после чего вынимаем LiveCD (отключаем зараженный диск от стерильной XP, вновь подключая его «первым») и устанавливаем Windows с дистрибутивного CD. Вероятность выживания малвари — минимальна, однако, время, потраченное на переустановку системы, довольно значительно, а потому этот способ годится лишь в качестве последнего средства, когда остальные уже исчерпаны.

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