Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ЛЕЧЕНИЯ ОПЕРАЦИОННЫХ СИСТЕМ MICROSOFT WI...doc
Скачиваний:
29
Добавлен:
29.08.2019
Размер:
1.25 Mб
Скачать
  1. Лечение с помощью HiJackThis

В подавляющем большинстве случаев лечение в HJT сводится к следующей операции:

1) Запустить HiJackThis и выполнить обычное сканирование системы (Do a system scan)

2) Установить галочки перед теми строками, которые описывают диагностированное вредоносное ПО или последствия его работы (список строк вы передаете пользователю после отбора вредоносных файлов в логе)

3) Нажать кнопку Fix Checked. Перезагрузиться и сделать повторный протокол для проверки успешности фиксов.

Против неагрессивного программного обеспечения этих мер обычно хватает. Для контроля вы можете перезапустить HJT – если исправленные записи восстановлены, то фикс не успешен и требуются более сильные инструменты.

Если в протоколе обозначена вредоносная служба, то для ее устранения необходима специальная процедура:

перейти Misc Tools – Delete an NT service. В открывшемся окне ввести имя службы и нажать ОК.

  1. Лечение с помощью 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.