Главная » Статьи » Защита » Основное |
Удаляем вирус из системы
В последнее время, одним из основных направлений развития вредоносных программ стало применение в них всевозможных способов защиты от обнаружения антивирусными средствами - так называемые руткит (rootkit) - технологии. Такие программы часто или не обнаруживаются антивирусами или не удаляются ими. В этой статье я попытаюсь описать более или менее универсальную методику обнаружения и удаления вредоносного программного обеспечения из зараженной системы. Сначала пару слов, о признаках современного качественного вируса. Он работает в режиме ядра (kernel mode) и имеет неограниченные возможности по перехвату и модификации системных функций. Другими словами - вирус имеет возможность скрыть от пользователя (и антивируса) свои файлы, ключи реестра, сетевые соединения, - все, что может быть признаком его наличия в зараженной системе. Он может обойти любой брандмауэр, системы обнаружения вторжения и анализаторы протоколов. И, кроме всего прочего, он может работать и в безопасном режиме загрузки Windows. Иными словами, современную вредоносную программу очень непросто обнаружить и обезвредить. Развитие антивирусов тоже не стоит на месте, - они научились находить и обезвреживать руткитов, но рано или поздно, найдется модификация вируса, которая какое-то время будет "не по зубам" любому антивирусу. Для примера я взял вирус, ссылку на который получил в спам-письме, следующего содержания: Здравствуйте. Нас заинтересовала ваша кандидатура, однако предлагаем вам заполнить наш фирменный бланк резюме и отправить его по адресу job@altervista.org Ответ не гарантируется, однако если Ваше резюме нас заинтересует, мы позвоним Вам в течение нескольких дней. Не забудьте указать телефон, а также позицию, на которую Вы претендуете. Желательно также указать пожелания по окладу. Наш фирменный бланк вы можете скачать по нижеуказанной ссылке. http://verano-konwektor.pl/resume.exe Анализ заголовков письма показал, что оно было отправлено с компьютера в Бразилии через сервер, находящийся в США. А фирменный бланк предлагается скачать с сервера в Польше. И это с русскоязычным-то содержанием. Ясное дело, что никакого фирменного бланка вы не увидите, и скорее всего, получите троянскую программу на свой компьютер. Скачиваю файл resume.exe. Размер - 159744 байта. Пока не запускаю. Копирую файл на другие компьютеры, где установлены различные антивирусы - просто для очередной проверки их эффективности. Результаты не ахти - антивирус Avast 4.8 Home Edition деликатно промолчал. Подсунул его Symantec'у - та же реакция. Сработал только AVG 7.5 Free Edition. Похоже, этот антивирус, в самом деле, не зря набирает популярность. Название вируса на тот момент мне ничего не говорило, и искать его описание я не стал, чтобы не сбиваться на проторенный кем-то путь. Одно ясно - это довольно "свежий" троянец. Короче, у меня имеется образец неплохой вредоносной программы, как раз - то, что нужно. Все эксперименты выполняю на виртуальной машине с операционной системой Windows XP. Учетная запись с правами администратора, поскольку, чаще всего вирусы успешно внедряются в систему только, если пользователь является локальным администратором. Запускаю. Через какое-то время зараженный файл исчез, похоже, вирус начал свое черное дело. Поведение системы внешне не изменилось. Очевидно, нужна перезагрузка. На всякий случай, запрещаю в брандмауэре соединения по протоколу TCP. Оставляю разрешенными только исходящие соединения по UDP:53 (DNS) - надо же оставить вирусу хоть какую-то возможность проявить свою активность. Как правило, после внедрения, вирус должен связаться с хозяином или с заданным сервером в интернете, признаком чего будут DNS-запросы. Хотя, опять же, в свете сказанного выше, умный вирус может их замаскировать, кроме того, он может и обойти брандмауэр. Забегая вперед, скажу, что в данном конкретном случае этого не произошло, но для надежного анализа сетевой активности весь трафик зараженной машины лучше пустить через другую, незараженную, где можно быть уверенным, что правила брандмауэра выполняются, а анализатор трафика (я пользовался Wireshark'ом) выдает то, что есть на самом деле. Перезагружаюсь. Внешне ничего не изменилось, кроме того, что невозможно выйти в интернет, поскольку я сам отключил такую возможность. Ни в путях автозапуска, ни в службах, ни в системных каталогах не появилось ничего нового. Просмотр системного журнала дает только одну наводку - системе не удалось запустить таинственную службу grande48. Такой службы у меня быть не могло, да и по времени это событие совпало с моментом внедрения. Что еще наводит на мысль об успешном внедрении - так это отсутствие в реестре записи о службе grande48 и отсутствие второго сообщения в журнале системы об ошибке запуска службы после перезагрузки. Это, скорее всего, некоторая недоработка вирусописателей. Хотя и несущественная, ведь большинство пользователей журнал событий не просматривают, да и на момент возникновения подозрения на заражение эта запись в журнале уже может и отсутствовать. Определяем наличие вируса в системе.1. Наверняка должен быть "левый" трафик. Определить можно с помощью анализаторов протокола. Я использовал Wireshark. Сразу после загрузки первым запускаю его. Все правильно, есть наличие группы DNS-запросов (как потом оказалось - один раз за 5 минут) на определение IP-адресов узлов ysiqiyp.com, irgfqfyu.com, updpqpqr.com и т.п. Вообще-то все ОС Windows любят выходить в сеть, когда надо и не надо, антивирусы могут обновлять свои базы, поэтому определить принадлежность трафика именно вирусу довольно затруднительно. Обычно требуется пропустить трафик через незараженную машину и серьезно проанализировать его содержимое. Но это отдельная тема. В принципе, косвенным признаком ненормальности сетевой активности системы могут быть значительные значения счетчиков трафика провайдера, в условиях простоя системы, счетчики из свойств VPN-соединения и т.п. 2. Попробуем использовать программы для поиска руткитов. Сейчас таких программ уже немало и их несложно найти в сети. Мне больше всего нравится простая и быстрая утилита RootkitRevealer (Скачать, 231кб) Марка Руссиновича. Можно скачать отсюда:(Скачать, 231кб) Инсталляция не требуется. Разархивируем и запускаем. Жмем "Scan". После непродолжительного сканирования видим результаты: Кстати, даже не вникая в содержания строк, можно сразу заметить, что имеются очень "свежие" по времени создания/модификации записи или файлы (колонка "Timestamp"). Нас в первую очередь должны заинтересовать файлы с описанием (колонка "Description") - "Hidden from Windows API". Два из них - grande48.sys и Yoy46.sys - это как раз то, что мы ищем. Это и есть прописавшийся под видом драйверов искомый руткит или его часть, обеспечивающая скрытность . Наличие в списке остальных было для меня сюрпризом. Ведь это нормальные драйверы Windows XP, при чем размеры их совпадали с размерами аналогичных драйверов на незараженной машине. Кроме того, вирус скрывал их наличие только в папке \system32, а их копии в \system32\dllcache остались видимыми. Напомню, что в Windows XP применяется специальный механизм защиты системных файлов, называемый Windows File Protection (WFP). Задача WFP - автоматическое восстановление важных системных файлов при их удалении или замене устаревшими или неподписанными копиями. Все системные файлы Windows XP имеют цифровую подпись и перечислены в специальной базе данных, используемой WFP. Для хранения копий файлов используется папка \system32\dllcache и, отчасти, \Windows\driver cache. При удалении или замене одного из системных файлов, WFP автоматически копирует "правильную" его копию из папки \dllcache. Если указанный файл отсутствует в папке \dllcache , то Windows XP просит вставить в привод компакт-дисков установочный компакт-диск Windows XP. Попробуйте удалить vga.sys из \system32, и система тут же его восстановит, используя копию из dllcache. А ситуация, когда, при работающей системе восстановления файлов, файл драйвера есть в \dllcache и его не видно в \system32 - это тоже дополнительный признак наличия руткита в системе. Зачем нужно было скрывать файлы нормальных драйверов, осталось загадкой. Удаляем вирус из системы.Осталось выполнить самое важное действие - удалить вирус. Самый простой и надежный способ - загрузиться в другой, незараженной операционной системе и запретить старт драйверов руткита. Воспользуемся стандартной консолью восстановления Windows. Берем установочный диск Windows XP и загружаемся с него. На первом экране выбираем 2-й пункт меню - жмем R. Выбираем систему (если их несколько): Вводим пароль администратора. Список драйверов и служб можно просмотреть с помощью команды listsvc: В самом деле, в списке присутствует Yoy46, правда отсутствует grande48, что говорит о том, что файл драйвера grande48.sys скрытно присутствует в системе, но не загружается: Консоль восстановления позволяет запрещать или разрешать запуск драйверов и служб с помощью команд disable и enable. Запрещаем старт Yoy46 командой: disable Yoy46 Водим команду EXIT и система уходит на перезагрузку. После перезагрузки драйвер руткита не будет загружен, что позволит легко удалить его файлы и очистить реестр от его записей. Можно проделать это вручную, а можно использовать какой-нибудь антивирус. Наиболее эффективным, с моей точки зрения, будет бесплатный сканер на основе всем известного антивируса Dr.Web Игоря Данилова. Скачать можно отсюда - http://freedrweb.ru Там же можно скачать "Dr.Web LiveCD" - образ диска, который позволяет восстановить работоспособность системы, пораженной действиями вирусов, на рабочих станциях и серверах под управлением Windows\Unix, скопировать важную информацию на сменные носители либо другой компьютер, если действия вредоносных программ сделали невозможным загрузку компьютера. Dr.Web LiveCD поможет не только очистить компьютер от инфицированных и подозрительных файлов, но и попытается вылечить зараженные объекты. Записываете образ на CD, загружаетесь и руководствуетесь простым и понятным меню. Антивирусный сканер, кстати, можно запустить и при заугрузке с использованием Winternals ERD Commander. Используйте режим выборочной проверки, выбрав для нее системный диск. Сканер поможет вам найти файлы вируса, и вам останется лишь удалить связанные с ним записи из реестра. Поскольку вирусы научились прописываться на запуск в безопасном режиме загрузки, не мешает проверить ветку реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot Разделы: Minimal - список драйверов и служб запускаемых в безопасном режиме (Safe Mode) Network - то же, но с поддержкой сети. Добавлю, что существует новый класс rootkit, представителем которого является BackDoor.MaosBoot, появившийся в конце 2007г. Эта троянская программа прописывает себя в загрузочный сектор жесткого диска и обеспечивает скрытую установку своего драйвера в памяти. Сам Rootkit-драйвер напрямую записан в последние секторы физического диска, минуя файловую систему, чем и скрывает свое присутствие на диске. В общем-то, принцип не новый, лет десять назад вредоносные программы подобным образом маскировались на резервных дорожках дискет и жестких дисков, однако оказался очень эффективным, поскольку большинство антивирусов с задачей удаления BackDoor.MaosBoot до сих пор не справляются. Упоминаемый выше RootkitRevealer загрузочный сектор не проверяет, а секторы в конце диска для него никак не связаны с файловой системой и , естественно, такой руткит он не обнаружит. Правда, Dr.Web (а, следовательно, и Cureit) с BackDoor.MaosBoot вполне справляется. Если у вас возникли сомнения относительно какого-либо файла, то можно воспользоваться бесплатной онлайновой антивирусной службой virustotal.com. Через специальную форму на главной странице сайта закачиваете подозрительный файл и ждете результатов. Сервисом virustotal используются консольные версии множества антивирусов для проверки вашего подозреваемого файла. Результаты выводятся на экран. Если файл является вредоносным, то с большой долей вероятности, вы сможете это определить. В какой-то степени сервис можно использовать для выбора "лучшего антивируса". Здесь ссылка на одну из веток форума сайта virusinfo.info, где пользователи выкладывают ссылки на различные ресурсы посвященные антивирусной защите, в т.ч. и онлайн - проверок компьютера, браузера, файлов... Иногда, в результате некорректных действий вируса (или антивируса) система вообще перестает загружаться. Приведу характерный пример. Вредоносные программы пытаются внедриться в систему, используя различные, в том числе, довольно необычные способы. В процессе начальной загрузки, еще до регистрации пользователя, запускается "Диспетчер сеансов" (\SystemRoot\System32\smss.exe) , задача которого - запустить высокоуровневые подсистемы и сервисы (службы) операционной системы. На этом этапе запускаются процессы CSRSS (Client Server Runtime Process), WINLOGON (Windows Logon), LSASS (LSA shell), и оставшиеся службы с параметром Start=2 из раздела реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services Информация, предназначенная для диспетчера сеансов, находится в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager Одним из способов внедрения в систему, является подмена dll-файла для CSRSS. Если вы посмотрите содержимое записи HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems то найдете значения ServerDll=basesrv, ServerDll=winsrv. Библиотеки basesrv.dll и winsrv.dll - это "правильные" файлы системы, загружаемые службой CSRSS на обычной (незараженной) системе. Эту запись в реестре можно подправить на запись, обеспечивающую загрузку, например, вместо basesrv.dll, вредоносной basepvllk32.dll: ServerDll=basepvllk32 (или какую либо другую dll, отличную от basesrv и winsrv) Что обеспечит, при следующей перезагрузке, получение управления вредоносной программе. Если же ваш антивирус обнаружит и удалит внедренную basepvllk32, оставив нетронутой запись в реестре, то загрузка системы завершится "синим экраном смерти" (BSOD) с ошибкой STOP c000135 и сообщением о невозможности загрузить basepvllk32. Поправить ситуацию можно так: - загрузится в консоль восстановления (или в любой другой системе), и скопировать файл basesrv.dll из папки C:\WINDOWS\system32 в ту же папку под именем basepvllk32.dll. После чего система загрузится и можно будет вручную подправить запись в реестре. - загрузиться с использованием Winternals ERD Commander и исправить запись в реестре на ServerDll=basesrv. Или выполнить откат системы с использованием точки восстановления. Еще один характерный пример. Вредоносная программ регистрируется как отладчик процесса explorer.exe, создавая в реестре запись типа: HKM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\explorer.exe "Debugger"="C:\Program Files\Microsoft Common\wuauclt.exe" Удаление wuauclt.exe антивирусом без удаления записи в реестре приводит к невозможности запуска explorer.exe. В результате вы получаете пустой рабочий стол, без каких-либо кнопок и ярлыков. Выйти из положения можно используя комбинацию клавиш CTRL-ALT-DEL. Выбираете "Диспетчер задач" - "Новая задача" - "Обзор" - находите и запускаете редактор реестра regedit.exe. Затем удаляете ключ HKM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\explorer.exe и перезагружаетесь. В случае, когда вы точно знаете время заражения системы, откат на точку восстановления до этого события, является довольно надежным способом избавления от заразы. Иногда есть смысл выполнять не полный откат, а частичный, с восстановлением файла реестра SYSTEM, как это описано в статье "Проблемы с загрузкой ОС" раздела "Windows" Это дополнение возникло через год после написания основной статьи. Здесь я решил разместить наиболее интересные решения, возникшие в процессе борьбы с вредоносным программным обеспечением. Что-то вроде коротких заметок. Случай интересен тем, что способ блокировки антивирусного программного обеспечения можно использовать и в борьбе с исполняемыми файлами вирусов. Началось все с того, что после удаления довольно примитивного вируса не заработал лицензионный "Стрим Антивирус". Переустановки с чисткой реестра не помогли. Попытка установки Avira Antivir Personal Free закончилась успешно, но сам антивирус не запустился. В системном журнале было сообщение о таймауте при запуске службы "Avira Antivir Guard". Перезапуск вручную заканчивался той же ошибкой. Причем, никаких лишних процессов в системе не выполнялось. Была стопроцентная уверенность - вирусов, руткитов и прочей гадости (Malware) в системе нет. В какой-то момент попробовал запустить антивирусную утилиту AVZ. Принцип работы AVZ во многом основан на поиске в изучаемой системе разнообразных аномалий. С одной стороны, это помогает в поиске Malware, но с другой вполне закономерны подозрения к компонентам антивирусов, антишпионов и прочего легитимного ПО, активно взаимодействующего с системой. Для подавления реагирования AVZ на легитимные объекты и упрощения анализа результатов анализа системы за счет отметки легитимных объектов цветом и их фильтрации из логов применяется база безопасных AVZ. С недавнего времени запущен полностью автоматический сервис, позволяющий всем желающим прислать файлы для пополнения этой базы. Но : исполняемый файл avz.exe не запустился ! Переименовываю avz.exe в musor.exe - все прекрасно запускается. В очередной раз AVZ оказался незаменимым помощником в решении проблемы. При выполнении проверок в результатах появилась строки: Опасно - отладчик процесса "avz.exe"="ntsd-d" Опасно - отладчик процесса "avguard.exe"="ntsd-d" :. Это была уже серьезная зацепка. Поиск в реестре по контексту "avz" привел к обнаружению в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options раздела с именем avz.exe, содержащем строковый параметр с именем "Debugger" и значением "ntsd -d". И, как выяснилось позже, в указанной ветке присутствовал не только раздел "avz.exe", но и разделы с именами исполняемых модулей практически всех известных антивирусов и некоторых утилит мониторинга системы. Сам ntsd.exe - вполне легальный отладчик Windows, стандартно присутствующий во всех версиях ОС, но подобная запись в реестре приводит к невозможности запуска приложения, имя исполняемого файла которого совпадает с именем раздела ???.exe. После удаления из реестра всех разделов, c именем ???.exe и содержащих запись "Debugger" = "ntsd -d" работоспособность системы полностью восстановилась. В результате анализа ситуации с использованием параметра "ntsd -d" для блокировки запуска исполняемых файлов, появилась мысль использовать этот же прием для борьбы с самими вирусами. Конечно, это не панацея, но в какой-то степени может снизить угрозу заражения компьютера вирусами с известными именами исполняемых файлов. Для того, чтобы в системе невозможно было выполнить файлы с именами ntos.exe, file.exe, system32.exe и т.п. можно создать reg-файл для импорта в реестр: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\NTOS.EXE] "Debugger"="ntsd -d" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\FILE.EXE] "Debugger"="ntsd -d" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\SYSTEM32.EXE] "Debugger"="ntsd -d" :.. и т.д. Обратите внимание, на то, что имя раздела не содержат пути файла, поэтому данный способ нельзя применять для файлов вирусов, имена которых совпадают с именами легальных исполняемых файлов, но сами файлы нестандартно размещены в файловой системе. Например, проводник Explorer.exe находится в папке \WINDOWS\, а вирус располагается где-то в другом месте - в корне диска, в папке \temp, \windows\system32\ Если вы создадите раздел с именем "Explorer.exe" - то после входа в систему вы получите пустой рабочий стол, поскольку проводник не запустится. Хуже того, если вы создадите раздел, имя которого совпадает с именем системной службы (winlogon.exe, csrss.exe, smss.exe, services.exe, lsass.exe), то получите рухнувшую систему. Если вирус находится в C:\temp\winlogon.exe, а легальный модуль входа в систему C:\WINDOWS\SYSTEM32\winlogon.exe, создание раздела с именем winlogon.exe приведет к невозможности запуска службы winlogon и краху системы с синим экраном смерти (BSOD). По этой ссылке вы можете скачать .reg-файл с подборкой из имен файлов, наиболее часто используемых актуальными вирусами. После импорта в реестр, в случае попытки выполнения файла с именем, присутствующем в заготовке, вы получите подобное окно: Если у вас возникнут проблемы с легальной программой, имя исполняемого файла которой совпало с именем, используемым вредоносным ПО, откройте раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options и удалите подраздел с данным именем. Для удобства, имена с параметром "ntsd -d" я выделил заглавными буквами. | |
Просмотров: 16174 | Комментарии: 6 | |
Всего комментариев: 6 | |||||
|