Жизнь без антивируса. Как побороть малварь голыми руками и обезопасить себя на будущее

Жизнь без антивируса. Как побороть малварь голыми руками и обезопасить себя на будущее

NoNaMe Club

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

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


INFO

Мы вовсе не настаиваем на сносе твоего любимого Internet security, но прочитать статью «На малварь без антивируса» и советы из этого материала очень рекомендуем.

Что делать в случае заражения?

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

  • отключить хост от сети (вытащить UTP-кабель, погасить Wi-Fi);
  • вынуть из портов все внешние девайсы (HDD- и USB-устройства, телефоны и прочее).

Все эти действия связаны с необходимостью изолировать нашего пациента от внешнего мира. Отключать хост нужно обязательно и от доступа во внешний мир через интернет и локалку, поскольку малварь практически со стопроцентной вероятностью будет пытаться себя распространить на весь доступный ей сегмент. К тому же если зловред является частью ботнет-сети или содержит компоненты RAT, то он может бездействовать до того момента, как поступит управляющая команда с C&C-сервера из внешней сети. Также это страхует нас и от утечки локальных данных во внешний мир, к примеру через DNS-туннелированные или подобные хакерские фичи. Следуя этой же логике, рекомендуют как можно скорее вытащить все подключенные к пациенту девайсы: к примеру, если это вирус-шифровальщик, то он может просто не успеть добраться до данных на внешних HDD и USB-флешках.

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


WARNING

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


Поиск процессов и обезвреживание малвари в памяти

Любая малварь, чтобы выполнять свои действия, должна быть запущена в оперативной памяти. И неважно, как именно бинарный код был загружен в RAM — из exe-файла, вложенного в письмо, скрипта из инфицированной HTML-странички или был собран только из сетевых пакетов, как нашумевший в начале 2000-х годов бестелесный червь Slammer, поразивший тысячи серверов за несколько десятков минут. Поэтому ключевой задачей на первом этапе становится поиск и идентификация процесса зловреда в памяти. И стандартный менеджер задач Windows тут нам не помощник. Почему? Да потому, что даже начинающий кодер на Delphi может использовать функции, позволяющие скрывать из области видимости штатного Task Manager’а запущенный процесс. Я еще молчу о том, что зловред может содержать руткит, который будет скрывать его действия в системе.

Итак, к нам на помощь придут утилиты — самостоятельные и комплексные менеджеры задач. Первая тулза, которую мы рассмотрим, — это Process Monitor, бесплатная утилитка из набора SysInternals Suite. По сути, она объединяет в себе сразу две другие утилиты — FileMon (мониторинг файловой системы) и RegMon (мониторинг реестра). Тулза предоставляет мощный инструмент для мониторинга файловой системы, системного реестра, а также всех процессов в оперативной памяти в реальном времени.

На панели есть несколько интересных кнопок, позволяющих выполнять фильтрацию процессов и действий системы по нужным нам критериям:

  • show registry activity — просмотр активности реестра (чтение, запись ключей);
  • show file system activity — просмотр действия с файлами (чтение, запись);
  • show network process activity — аналогично по процессам, использующим сеть;
  • show process and thread — просмотр процессов и нитей.
Рабочее окно утилиты Process Monitor

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

Рабочее окно утилиты Process Explorer

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

Просмотр списка процессов в System Explorer

В утилиту встроена база данных — можно проверить наличие вредоносного кода в конкретном файле и отправить на сервер отчет VirusTotal.

Проверка процесса на безопасность в System Explorer

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

Режим Explorer с более наглядной формой вкладок

Тулза четвертая — это AnVir Task Manager, полноценный менеджер задач, который позволяет контролировать все, что запущено на компьютере, а также предоставляет удобные инструменты для настройки компьютера. Тулза позволяет управлять автозагрузкой, запущенными процессами, сервисами и драйверами и заменяет диспетчер.

Список процессов в AnVir Task Manager
Список инсталлированных в систему драйверов в AnVir Task Manager

В самом простом случае имя процесса совпадает с именем исходного exe-файла, который был запущен. Поэтому и самый простой способ найти малварь — это просмотреть весь список запущенных процессов и обратить внимание на те, которые вызывают подозрения. Но есть и более сложные ситуации, когда вирмейкеры используют системные имена, к примеру системных служб Svchost.exe, или, хуже того, не создают новый процесс, а инжектируют код зловреда в легитимный! Если такой процесс завершит часть функций, ОС может стать недоступна или вовсе возникнет RPC-ошибка, приводящая к перезагрузке. Такую фичу использовал небезызвестный червь Blaster. На глаз тут вредоносный процесс, конечно же, не определишь, нужны инструменты посерьезнее.

На выручку нам придет утилита AVZ, разработанная Олегом Зайцевым. Это не антивирус, но программа содержит в себе набор сигнатур наиболее известных червей, бэкдоров и руткитов.

Основное окно утилиты AVZ

Поэтому тулза может сканировать оперативную память и детектировать скомпрометированные процессы. Помимо этого, она имеет ряд крутых фич: собственный драйвер для обнаружения руткитов (kernel-mode), кейлоггеров и троянских DLL, прямой доступ к диску для работы с заблокированными файлами на томах NTFS, в том числе помещения их в карантин, анализатор открытых портов TCP/UDP с целью обнаружения RAT, анализатор Winsock SPI/LSP корректности сетевых настроек, анализатор мусорных настроек Internet Explorer, а также модуль проверки целостности системного реестра, BHO, расширений IE и проводника (Explorer) и анализатор всех доступных видов автозапуска.

Опции восстановления системы в AVZ
Просмотр сетевых соединений в AVZ

Охота на невидимок

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

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

  • RkUnhooker — одна из самых мощных тулз для обнаружения руткитов и борьбы с другими вредоносами. Позволяет обнаруживать и снимать перехваты таблицы SDT и программного кода, показывает скрытые драйверы, процессы и файлы. Помимо этого, RkUnhooker позволяет убивать файлы, залоченные выполняющимся процессом, в том числе с перезаписью пустыми данными (чтобы предотвратить их повторный запуск). А еще можно снимать дампы процессов из памяти и анализировать их.
Окно с результатами поиска руткитов в RkUnhooker
  • GMER — довольно известная утилита, которая, помимо основной своей функции, включает набор инструментов, таких как мощный редактор реестра, показывающий скрытые ветки, редактор жесткого диска, редактор автозапуска системы. Часто вместе с GMER используют RootRepeal. Эта тулза анализирует все запущенные драйверы и процессы в системе, ищет аномалии и другие особенности, присущие зловредным программам.
Окно с результатами поиска руткитов в GMER
  • UnHackMe — тоже известная тулза для обнаружения и эффективного удаления новых поколений троянов, использующих технологию руткит. Как заявляют разработчики, она имеет уникальные методы детекта. Ищет нежелательные настройки поиска в браузере, проверяет автозапуск на наличие посторонних программ.
Окно с результатами поиска руткитов в UnHackMe
  • HijackThis — небольшая программа для обнаружения и удаления простейших типов вредоносного ПО. Сейчас распространяется по лицензии GPLv2 и принадлежит антивирусной компании Trend Micro.
Окно с результатами поиска руткитов в HijackThis
  • TDSSKiller — отечественный антируткит от «Лаборатории Касперского». Изначально создавался для лечения систем, зараженных вредоносами семейства Rootkit.Win32.TDSS. Сейчас утилита может найти и обезвредить такие известные руткиты, как TDSS, SST, Pihar, ZeroAccess, Sinowal, Whistler, Phanta, Trup, Stoned, Rloader, Cmoser, Cidox, и руткит-аномалии.
Главное окно программы TDSSKiller
Обнаружение руткитов в TDSSKiller
  • SpyDllRemover — эффективный инструмент для обнаружения и удаления шпионских программ из системы. Использует свой алгоритм сканера, который быстро находит скрытые процессы Rootkit, а подозрительные DLL — во всех запущенных процессах. Выводит процессы разными цветами в зависимости от уровня угрозы, что очень помогает идентифицировать вредоносные DLL.
Просмотр подозрительных процессов в SpyDllRemover

Чистим автозапуск

Одна из функций малвари — обеспечить себе повторный запуск после выключения или перезагрузки машины. Наиболее часто используемый метод — это прописать исполняемый файл зловреда в автозапуск. Варианты здесь различны: это может быть и подмена пути в ярлыке, уже лежащем в автозапуске по пути %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, и назначение автоматически выполняемого задания в Планировщике Windows, и создание ключей на автозапуск в системном реестре:

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] — программы, которые запускаются только один раз, когда пользователь входит в систему;
  • [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] — программы, которые запускаются при входе текущего пользователя в систему;
  • [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce] — программы, которые запускаются только единожды при входе текущего пользователя в систему.

Что у нас есть из тулз для этого случая? Первое — это программа Autoruns, которая позволяет управлять автозагрузкой в Windows. С ее помощью можно увидеть все программы, службы, драйверы и командные файлы, которые будут запускаться вместе с системой, а при необходимости — отключить их.

Главное окно утилиты Autoruns

Скажем пару слов об интерфейсе и вкладках:

  • Everything — отображает все файлы, которые будут запускаться автоматически при загрузке Windows;
  • Logon — содержит все программы, которые будут запускаться автоматически;
  • Explorer — автозапуск всех элементов проводника Windows;
  • Internet Explorer — все надстройки и дополнения, которые установлены в Internet Explorer;
  • Scheduled Tasks — процессы, которые запускаются автоматически из диспетчера задач;
  • Services — файлы служб, автоматически запускаемые при загрузке машины;
  • Drivers — все файлы, относящиеся к драйверам.

Восстанавливаем реестр

Реестр Windows, начиная с самых первых версий ОС, остается критически важным компонентом системы, по сути представляя собой базу данных для хранения различных параметров и настроек рабочего окружения, установленного ПО и самой Windows. Логично, что нарушение работы реестра или его повреждение грозит неработоспособным состоянием ОС. Сам реестр, который открывается штатной утилитой regedit, физически представлен несколькими файлами, хранящимися по пути %SystemRoot%\System32\config\. Это файлы с именами SYSTEM, SOFTWARE, SECURITY, SAM, DEFAULT без расширений и доступные только для системных процессов NT AUTHORITY\SYSTEM, LocalSystem. Но если реестр открывать через штатный редактор, то эти файлы предстанут в виде большого иерархического дерева.

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

Штатные инструменты Windows для восстановления реестра

«Из коробки» Windows, к сожалению, не имеет отдельного инструмента, позволяющего делать резервные копии реестра. Все, что может дать система, — это функциональность морально устаревшей NTBackUp родом из эпохи Windows XP / 2003 Server или в новых ОС Windows 7, 8, 10 ее реинкарнацию в виде «программы архивирования и восстановления Windows», предлагающей создать целиком образ системы (всей системы — не реестра!). Поэтому рассмотрим лишь небольшой пример действий в консоли восстановления, позволяющих восстановить реестр вручную. По сути это операции замены битых файлов на инфицированной системе оригинальными файлами реестра из заранее сделанной резервной копии.

Интерфейс утилиты NTBackUp

Загрузившись в Live CD режиме с установочного диска или с локально установленной консоли восстановления (для XP/2003), необходимо выполнить следующие команды, описанные самой Microsoft:

// Создаем резервные копии реестра системы
md tmp
copy c:\windows\system32\config\system c:\windows\tmp\system.bak
copy c:\windows\system32\config\software c:\windows\tmp\software.bak
copy c:\windows\system32\config\sam c:\windows\tmp\sam.bak
copy c:\windows\system32\config\security c:\windows\tmp\security.bak
copy c:\windows\system32\config\default c:\windows\tmp\default.bak

// Удаляем битые файлы из системной директории ОС
delete c:\windows\system32\config\system
delete c:\windows\system32\config\software
delete c:\windows\system32\config\sam
delete c:\windows\system32\config\security
delete c:\windows\system32\config\default

// Копируем работоспособные файлы реестра из теневой копии
copy c:\windows\repair\system c:\windows\system32\config\system
copy c:\windows\repair\software c:\windows\system32\config\software
copy c:\windows\repair\sam c:\windows\system32\config\sam
copy c:\windows\repair\security c:\windows\system32\config\security
copy c:\windows\repair\default c:\windows\system32\config\default


Все, перезагружаем машину и смотрим на результат!

Продвинутые методы восстановления реестра

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

  • Registry Backup представляет собой бесплатную утилиту резервного копирования, которая использует службу Windows Volume Shadow Copy Service для резервного копирования системного реестра. Позволяет создавать резервную копию и восстанавливать из нее реестр.
  • WinRescue — программа не бесплатна, но нам все же хотелось бы о ней рассказать. Основная ее функция — полное восстановление операционной системы Windows в случае ее крушения. Помимо этого, она позволяет делать резервные копии важных системных файлов и других пользовательских данных. Несмотря на устаревший интерфейс в стиле девяностых, софтина хорошо справляется со своими обязанностями.
Интерфейс утилиты WinRescue for Windows 7
  • ERUNT — возможности данной программы весьма обширны. Тулза позволяет восстанавливать реестр независимо от работы ОС. После запуска программы следует указать разделы реестра, которые нужны для сохранения в backup-файле, и подождать, пока утилита выполнит все необходимые действия. Для восстановления, к примеру, незагружающейся Windows 7 понадобится внешний аварийный загрузочный диск — тот же BartPE или Alkid Live CD. Но также можно использовать и среду восстановления. В этих случаях программа должна быть заранее установлена на жестком диске, а резервная реестра копия реестра уже создана. Бэкап реестра неплохо описан в этом мануале.
GUI-интерфейс утилиты ERUNT

Береженого MBR бережет

Теперь мы поговорим о MBR. Ты помнишь, что это вообще такое? Чересчур углубляться в теорию не станем. В двух словах, MBR (master boot record) — это набор кода и данных, необходимых для первоначальной загрузки операционной системы с жесткого диска. Поэтому MBR в русскоязычном варианте часто называют просто загрузочными секторами. MBR указывает переход в тот раздел жесткого диска, с которого следует исполнять дальнейший код, в нашем случае — загружать ОС.

Почему нам это важно? Да потому, что малварь еще с эпохи MS-DOS девяностых годов умела инфицировать не только исполняемые файлы, но и загрузочные сектора, обеспечивая таким образом себе запуск при старте системы. Для защиты от подобного вида атак в BIOS даже появилась специальная опция Boot Virus Detection, позволяющая защитить загрузочный сектор жесткого диска от изменений на уровне микрокода базовой системы ввода-вывода. Если алгоритм зловреда содержал ошибки, то MBR повреждался, и загрузка системы становилась невозможной. Но существовали и зловреды, которые специально могли потереть загрузочные сектора.

Дело в том, что MBR находится в «невидимой области» жесткого диска и не всеми стандартными средами резервирования можно сделать его бэкап.

Фиксим MBR в консоли

В эпоху Windows XP для восстановления системы без переустановки часто использовалась консоль восстановления. Ее можно было проинсталлировать на хард и выбирать как вариант запуска при загрузке машины или запускать с установочного диска данной ОС. Консоль выручала, когда при загрузке появлялось сообщение NTLDR is missing или были побиты системные файлы bootfont.bin, ntbootdd.sys, ntdetect.com и boot.ini. Независимо от причины в консоли подряд прописывались команды

Fixmbr
Fixboot


Команда fixmbr позволяла найти и автоматически исправить ошибки в MBR. Команда fixboot помечала раздел как bootable, прописывала загрузчик ntloader в boot-сектор, копировала на раздел необходимые системные файлы и генерировала файл boot.ini. При следующем старте система, как правило, возвращалась в работоспособное состояние.

Вызов справки по командам восстановления MBR в консоли восстановления Windows

Продвинутые средства для восстановления MBR

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

Comodo Backup — бесплатная утилита, предназначенная для того, чтобы создавать образы хардов, их разделов и, конечно же, MBR. Нас в данном случае будет интересовать именно MBR.

Окно мастера резервного копирования в Comodo Backup

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

Если ты юзаешь Linux в качестве ОС, то можешь воспользоваться встроенными утилитами, имеется неплохой гайд по бэкапу MBR под Linux на примере Ubuntu.

Путь от MBR до UEFI и GPT

В 2010 году на смену много лет существовавшей классической BIOS пришла новая технология, получившая название UEFI, а вместе с ней и изменения процесса загрузки, подталкивающие нас отказываться от MBR и использовать GPT. UEFI — это, по сути, обертка или интерфейс между ОC и микрокодом, вшитым в чипы материнской платы. Поэтому UEFI при инициализации загрузки использует не классический MBR, а GPT. В теорию вопроса мы опять же не полезем, для тех, кто хочет побольше узнать, есть материал «Сравнение структур разделов GPT и MBR».

Поскольку структура GPT отличается от структуры классического MBR, сохранить его описанным выше способом не удастся. Выходом станет создание цельного образа системы, например штатной утилитой «Резервное копирование и восстановление данных Windows», бесплатным набором из Paragon Backup & Recovery Free Edition или коммерческой программой Acronis True Image. Но более подробно о том, как сделать бэкапы системы, мы поговорим чуть ниже.

Спасение системных файлов

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

Проверка и восстановление системных файлов Windows

Штатная утилита SFC.EXE (System Files Checker) существует во всех версиях Windows, начиная еще с Windows 2000, и предназначена она для проверки состояния и восстановления системных файлов. Механизмы защиты важных системных файлов (обычно исполняемых *.exe, файлов библиотек *.dll и *.sys-файлов драйверов) проверяют целостность указанных файлов и, если те повреждены или отсутствуют, восстанавливают их до состояния по умолчанию.

На практике проверить целостность системных файлов Windows можно с помощью команды консоли

sfc /scannow


Но у sfc /scannow может не получиться исправить ошибки в системных файлах. В этом случае, как вариант, ты можешь ввести в командной строке

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfc.txt"


Эта команда создаст текстовый файл sfc.txt на твоем рабочем столе со списком файлов, исправить которые не удалось. Ты можешь его просмотреть и при необходимости вручную скопировать нужные файлы с другого компьютера с той же версией Windows или с оригинального дистрибутива ОС.

Окно консоли Windows с результатами выполнения команды sfc

Наиболее критичные системные файлы:

  • Ntoskrnl.exe — файл ядра операционных систем семейства Windows NT;
  • Hal.dll, или слой аппаратных абстракций, реализованный в системном ПО, находится между физическим уровнем аппаратного обеспечения и программным обеспечением, запускаемым на этом компьютере;
  • kernel32.dll — динамически подключаемая библиотека, ядро всех версий ОС Microsoft Windows. Содержит базовые APIWin32, такие как управление памятью, операции ввода-вывода, создание процессов и потоков и функции синхронизации;
  • NTLDR, а чуть позднее IA64ldr и Winload — загрузчик операционных систем Windows NT;
  • ntdetect.com — компонент операционных систем Microsoft семейства Windows NT, который используется в процессе запуска Windows NT до версии 6.0.

Продолжение ►

Report Page