- •I. Введение
- •II. Работа с инструментами диагностики и лечения
- •Описание HiJackThis и работа с ней
- •Вступление
- •Предупреждение
- •Назначение
- •Начало работы
- •Раздел Misc Tools.
- •Описание avz и работа с ней
- •Ключевые компоненты avz
- •Главное окно программы
- •Меню «Файл»: avz как единый инструмент
- •1. Функции анализа и восстановления
- •2. Функции скриптового движка
- •3. Обновление баз
- •4. Функции карантина
- •5. Отложенное удаление файла
- •Меню «Сервис»: диспетчеры и менеджеры avz
- •1. Общие характеристики диспетчеров и менеджеров avz
- •2. Подсистемы поиска
- •3. Прочие инструменты
- •AvzGuard
- •Boot Cleaner
- •III. Основы диагностики
- •1. Подготовка
- •2. Протокол hjt
- •3. Протоколы avz
- •Чтение протоколов HiJackThis
- •Анализ лога
- •Чтение протоколов avz
- •1. Цветовая схема
- •2. Состав таблиц
- •1) Список процессов (данные Диспетчера процессов)
- •2) Модули пространства ядра (данные одноименного диспетчера)
- •3) Службы (данные Диспетчера служб и драйверов, часть 1)
- •4) Драйверы (данные Диспетчера служб и драйверов, часть 2)
- •5) Автозапуск (данные Менеджера автозапуска)
- •6) Модули расширения Internet Explorer (bho, панели…) (данные Менеджера расширений ie)
- •7) Модули расширения проводника (данные Менеджера расширений проводника)
- •8) Модули расширения системы печати (данные Менеджера расширений системы печати)
- •9) Задания планировщика задач Task Scheduler (данные Менеджера планировщика задач Task Scheduler)
- •10) Настройки spi/lsp (данные Менеджера Winsock spi)
- •11) Порты tcp/udp (данные диспетчера «Открытые порты tcp/udp»)
- •12) Downloaded Program Files (данные Менеджера Downloaded Program Files)
- •13) Апплеты панели управления (cpl) (данные Менеджера апплетов панели управления)
- •3. Общие сведения
- •4. Поиск RootKit и программ, перехватывающих функции api (в соавторстве с Олегом Зайцевым)
- •1.1 Поиск перехватчиков api, работающих в UserMode
- •1.2 Поиск перехватчиков api, работающих в KernelMode
- •1.2 Поиск перехватчиков api, работающих в KernelMode
- •1.3 Проверка idt и sysenter
- •1.4 Поиск маскировки процессов и драйверов
- •1.4 Поиск маскировки процессов и драйверов
- •1.4 Поиск маскировки процессов и драйверов
- •5. Проверка памяти
- •2. Проверка памяти
- •6. Сканирование дисков
- •3. Сканирование дисков
- •7. Проверка Winsock Layered Service Provider
- •4. Проверка Winsock Layered Service Provider (spi/lsp)
- •4. Проверка Winsock Layered Service Provider (spi/lsp)
- •8. Поиск перехватчиков событий клавиатуры/мыши/окон (Keylogger, троянские dll)
- •5. Поиск перехватчиков событий клавиатуры/мыши/окон (Keylogger, троянские dll)
- •9. Поиск открытых портов tcp/udp, используемых вредоносными программами
- •6. Поиск открытых портов tcp/udp, используемых вредоносными программами
- •10. Эвристическая проверка системы
- •7. Эвристичеcкая проверка системы
- •11. Поиск потенциальных уязвимостей
- •8. Поиск потенциальных уязвимостей
- •8. Поиск потенциальных уязвимостей
- •12. Мастер поиска и устранения проблем
- •9. Мастер поиска и устранения проблем
- •9. Мастер поиска и устранения проблем
- •Критерии вредоносности файла
- •Зоны особого внимания
- •Примечание
- •Дополнительная диагностика
- •Работа со списком заподозренных файлов
- •Извлечение файлов и их анализ
- •Если файл не удается поместить в карантин
- •1) Попытаться выполнить карантин в безопасном режиме.
- •3) Попробовать применить специализированный антируткит (например, IceSword, позволяющий копировать скрытые и защищенные файлы).
- •Vms@drweb.Com
- •Virus_malware@avira.Com
- •IV. Лечение
- •Лечение с помощью HiJackThis
- •Лечение с помощью avz
- •1. Удаление файлов
- •2. Восстановление системы и исправление ошибок
- •1. Настройки spi/lsp
- •1) Ручной.
- •2. Файл hosts
- •3. Эвристическая проверка системы
- •4. Мастер поиска и устранения проблем
- •Восстановление системы по жалобам пользователя
- •3. После лечения
- •Если вредоносное программное обеспечение восстанавливается после удаления
- •1) Убедитесь, что Восстановление системы Windows отключено.
- •Если лечение прошло успешно
- •Чего не следует делать уважающему себя и других антивирусному консультанту
- •3) Выполнять ненужные / бесполезные для обрабатываемого случая операции
- •6) Содействовать поиску и использованию вредоносного и / или взломанного программного обеспечения
- •V. Заключение
Лечение с помощью HiJackThis
В подавляющем большинстве случаев лечение в HJT сводится к следующей операции:
1) Запустить HiJackThis и выполнить обычное сканирование системы (Do a system scan)
2) Установить галочки перед теми строками, которые описывают диагностированное вредоносное ПО или последствия его работы (список строк вы передаете пользователю после отбора вредоносных файлов в логе)
3) Нажать кнопку Fix Checked. Перезагрузиться и сделать повторный протокол для проверки успешности фиксов.
Против неагрессивного программного обеспечения этих мер обычно хватает. Для контроля вы можете перезапустить HJT – если исправленные записи восстановлены, то фикс не успешен и требуются более сильные инструменты.
Если в протоколе обозначена вредоносная служба, то для ее устранения необходима специальная процедура:
перейти Misc Tools – Delete an NT service. В открывшемся окне ввести имя службы и нажать ОК.
Лечение с помощью avz
Для устранения вредоносного ПО с использованием AVZ мы вновь прибегаем к скриптовому языку. Начнем, как и в предыдущем разделе, по порядку, от более простых команд к более сложным.
1. Удаление файлов
Вернитесь к протоколу. Вы уже знаете, какие файлы вам нужно уничтожить, поскольку проверили их на вредоносность; используйте ссылку «Удалить», чтобы добавить в скрипт соответствующие команды. В результате образуется базовый код:
begin
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
DeleteFile('c:\windows\system.exe');
end.
В этом примитивном скрипте используется функция обычного удаления файлов:
DeleteFile(AFileName : string);
Это означает:
DeleteFile('полное имя файла');
Однако такой скрипт еще не готов к запуску. Вредоносное ПО нередко следит за целостностью своих файлов и восстанавливает их при удалении. Поэтому, предотвращая воскрешение удаленных объектов, нажмите на ссылку
Включить AVZGuard
или добавьте в начало скрипта функцию включения AVZGuard:
SetAVZGuardStatus(ANewStatus : boolean);
Это означает:
SetAVZGuardStatus(включить AVZGuard?);
Если параметр ANewStatus = «true», AVZGuard будет включен, если «false» – выключен.
При команде SetAVZGuardStatus(true) AVZGuard будет включен и останется работать до завершения скрипта. Скрипты удаления, в которых используется включение AVZGuard, настоятельно рекомендуется завершать процедурой перезагрузки.
Типовые скрипты удаления включают также процедуру SearchRootkit – с целью снятия перехватов, которые могут помешать удалению. Помните, что при одновременном использовании SearchRootkit и SetAVZGuardStatus первая должна предшествовать последней.
Итак, наш скрипт уже нейтрализует перехваты и включает AVZGuard. Теперь он выглядит так:
begin
SearchRootkit(true,true);
SetAVZGuardStatus(true);
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
DeleteFile('c:\windows\system.exe');
RebootWindows(true);
end.
Но и этого недостаточно. При удалении файла обычно остаются ссылки на него в реестре, которые могут вызывать нежелательные последствия, если обозначенный в них объект не будет обнаружен. Поэтому после операций удаления щелкните по ссылке
Чистка реестра после удаления файлов
или вставьте вручную функцию эвристической чистки следов удаленных файлов:
ExecuteSysClean;
У этой функции нет параметров. Она извлекает список всех файлов, удаленных с помощью функции DeleteFile, и добавляет их в свое задание. После уничтожения файлов AVZ проверит реестр и удалит ссылки на них.
Теперь скрипт таков:
begin
SearchRootkit(true,true);
SetAVZGuardStatus(true);
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
DeleteFile('c:\windows\system.exe');
ExecuteSysClean;
RebootWindows(true);
end.
В таком виде скрипт уже можно передать на исполнение, если инфекция несложна.
***
Если файлы сопротивляются обычному удалению, нам вновь окажет содействие Boot Cleaner.
Для того, чтобы передать в Boot Cleaner список файлов, упомянутых в параметрах функций DeleteFile, щелкните по ссылке
BootCleaner - импорт списка удаленных файлов
или добавьте сразу за последним вызовом DeleteFile функцию импорта списка удаленных файлов в задание Boot Cleaner:
BC_ImportDeletedList;
Свойства этой функции такие же, как у BC_ImportQuarantineList: она требует активации Boot Cleaner, перезагрузки и позволяет логировать работу BC.
Функция ExecuteSysClean никогда не должна стоять в скрипте перед функциями импорта в задание BC, иначе список файлов будет очищен, и Boot Cleaner не выполнит никаких операций.
Новая редакция скрипта выглядит следующим образом:
begin
SearchRootkit(true,true);
SetAVZGuardStatus(true);
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
DeleteFile('c:\windows\system.exe');
BC_ImportDeletedList;
ExecuteSysClean;
BC_LogFile(GetAVZDirectory + 'boot_cleaner.log');
BC_Activate;
RebootWindows(true);
end.
Кроме того, по аналогии с BC_QrFile и BC_QrSvc существуют
функция удаления файла через Boot Cleaner
BC_DeleteFile(AFileName : string);
, означающая
BC_DeleteFile('адрес файла');
, и функция удаления службы / драйвера через BC
BC_DeleteSvc(ASvcName : string);
со значением
BC_DeleteSvc('имя службы');
Эти функции обладают теми же свойствами, что BC_QrFile и BC_QrSvc. Имейте в виду, что при удалении службы уничтожаются и ее регистрация в реестре, и исполняемый файл.
В некоторых случаях консультант проводит одновременно карантин и удаление программного обеспечения. В таких случаях принято располагать функции карантина перед функциями удаления, а для импорта списков файлов в Boot Cleaner используется единая функция BC_ImportALL.
Например, объединим скрипт карантина из предыдущего раздела
begin
SearchRootkit(true, true);
QuarantineFile('Fmctrl.EXE','');
QuarantineFile('C:\WINDOWS\system32\svch6f4.dll','');
QuarantineFile('C:\WINDOWS\libHide.dll','');
QuarantineFile('c:\windows\system.exe','');
BC_ImportQuarantineList;
BC_LogFile(GetAVZDirectory + 'boot_cleaner.log');
BC_Activate;
RebootWindows(true);
end.
с последним скриптом удаления файлов
begin
SearchRootkit(true,true);
SetAVZGuardStatus(true);
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
DeleteFile('c:\windows\system.exe');
BC_ImportDeletedList;
ExecuteSysClean;
BC_LogFile(GetAVZDirectory + 'boot_cleaner.log');
BC_Activate;
RebootWindows(true);
end.
Выстроим команды в надлежащем порядке:
begin
SearchRootkit(true,true);
SetAVZGuardStatus(true);
QuarantineFile('Fmctrl.EXE','');
QuarantineFile('C:\WINDOWS\system32\svch6f4.dll','');
QuarantineFile('C:\WINDOWS\libHide.dll','');
QuarantineFile('c:\windows\system.exe','');
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
DeleteFile('c:\windows\system.exe');
BC_ImportALL;
ExecuteSysClean;
BC_LogFile(GetAVZDirectory + 'boot_cleaner.log');
BC_Activate;
RebootWindows(true);
end.
Если в скрипте соседствуют обычные операции и функции, осуществляемые через Boot Cleaner, логично располагать BC-операции после импорта обычных. Например:
begin
SearchRootkit(true,true);
SetAVZGuardStatus(true);
QuarantineFile('Fmctrl.EXE','');
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
BC_ImportALL;
BC_QrSvc('System Security');
BC_DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
ExecuteSysClean;
BC_LogFile(GetAVZDirectory + 'boot_cleaner.log');
BC_Activate;
RebootWindows(true);
end.
***
Некоторое нежелательное программное обеспечение, изображая из себя нечто полезное для компьютера, создает свою папку, например, в Program Files, где размещает целый набор своих файлов. Таков, например, один из троянских продуктов, который устанавливается под видом кодека для воспроизведения онлайн-видео, известный под многими именами наподобие Trojan/MediaCodec. Сам себя он называет Video Add-On.
В протоколах AVZ вы можете обнаружить процессы, относящиеся к этому ПО, и сгенерировать скрипт их удаления, но после зачистки папка C:\Program Files\Video Add-on\ и те компоненты, которые не запущены постоянно и потому не попали в лог (ну и, соответственно, в скрипт), останутся на своих местах. Очевидно, что в таком случае требуется функция, которая могла бы удалить всю папку нежелательного продукта вместе со всем содержимым.
Знакомьтесь: функция удаления файлов по маске
DeleteFileMask(ADir, AMask : string; ARecurse : boolean);
Значение:
DeleteFileMask('адрес папки','маска',рекурсия?);
Как видно из названия и синтаксиса, эта функция предназначена не только для уничтожения папки; она может также использоваться для удаления файлов по маске в определенном каталоге.
Если значение параметра ARecurse = «true», то функция обработает и все папки, вложенные в заданную директорию. В случае «false» будет обработана только заданная в параметрах функции папка.
Соблюдайте осторожность при использовании функции и тщательно проверяйте задаваемые параметры: при некорректном конфигурировании существует риск повреждения системы.
Немного примеров использования функции:
1) В нашем случае с Video Add-On функцию нужно сконфигурировать следующим образом:
DeleteFileMask('C:\Program Files\Video Add-on','*.*',
true);
В этом случае будут удалены все файлы в заданной папке и вложенных в нее каталогах, после чего опустевшая папка будет также удалена.
2) Один китайский вирус размещал множество своих DLL в папке C:\WINDOWS\Fonts. Так как на здоровой системе никаких DLL в этой директории быть не должно, можно было применить против него рассматриваемую функцию, настроенную следующим образом:
DeleteFileMask('C:\WINDOWS\Fonts','*.dll',true);
Здесь были бы удалены все DLL в заданной директории и вложенных в нее каталогах.
3) Допустим, некий вирус создал множество файлов в папке C:\WINDOWS\ с именами от svchos000.exe до svchos999.exe. В такой ситуации нужно уничтожить вредоносные файлы по маске, не затронув находящиеся во вложенных папках C:\WINDOWS\system32\svchost.exe и C:\WINDOWS\ system32\dllcache\svchost.exe.
Конфигурируем функцию:
DeleteFileMask('C:\WINDOWS','svchos*.exe',false);
Обратите внимание: рекурсия имеет значение false, что предотвращает уничтожение системного svchost.exe.
Вставляя функцию в скрипт, располагайте ее после команд DeleteFile. Например, так:
begin
SearchRootkit(true,true);
SetAVZGuardStatus(true);
QuarantineFile('Fmctrl.EXE','');
DeleteFile('C:\WINDOWS\system32\svch6f4.dll');
DeleteFileMask('C:\Program Files\Video Add-on','*.*',true);
BC_ImportALL;
BC_QrSvc('System Security');
BC_DeleteFile('C:\WINDOWS\system32\0fgr4sj9.sys');
ExecuteSysClean;
BC_LogFile(GetAVZDirectory + 'boot_cleaner.log');
BC_Activate;
RebootWindows(true);
end.
По своей сущности DeleteFileMask – это последовательность определенного множества DeleteFile. Поэтому файлы, уничтожаемые этой функцией, будут импортированы и в список функции ExecuteSysClean, и в задание Boot Cleaner.