Зачистка следов из секции [Модули расширения системы печати]

Тема в разделе "Рекомендации и инструкции", создана пользователем Drongo, 3 мар 2011.

Статус темы:
Закрыта.
  1. Drongo
    Оффлайн

    Drongo Ассоциация VN/VIP Разработчик

    Сообщения:
    7.905
    Симпатии:
    8.222
    На данный момент в логе AVZ не умеет зачищать в реестре следы видные по секции Модули расширения системы печати (мониторы печати, провайдеры). Пример такой записи виден в логе:

    fc9aafa97672.png

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

    Мы решили автоматизировать процесс нахождения этих строк и удаления в один этап. Для этого был написан такой скрипт. Прежде чем его давать, посмотрите какие значения будут у файла esp***.tmp где *** - это различная цифробуквенная комбинация. Подставьте её вместо звёздочек.
    Код (Text):
    var ListRegSearch : TStringList;
      i : Integer;
      FileName, RegKeyName : string;
    begin
      ClearLog;
      FileName := 'c:\avz00.log';
      RegSearch('HKLM', '', 'esp****.tmp'); // Указываем строку поиска esp*** - где *** буквы\цифры
      SaveLog(FileName);
      ClearLog;
      ListRegSearch := TStringList.Create;
      ListRegSearch.LoadFromFile(FileName);
      AddToLog('Найдено записей: ' + IntToStr(ListRegSearch.Count));
      for i := 0 to ListRegSearch.Count - 1 do
       begin
        RegKeyName := ListRegSearch.Strings[i];
        if Pos('\esp', RegKeyName) > 0 then
          begin
            Delete(RegKeyName, 1, Pos('\\', RegKeyName) + 1);
            Delete(RegKeyName, Pos(' Name=', RegKeyName), Length(RegKeyName));
            RegKeyDel('HKLM', RegKeyName);
            AddToLog('Удален ключ реестра HKLM\' + RegKeyName);
          end;
       end;
    ListRegSearch.Free;
    SaveLog('c:\avz01.log');
    end.
    Также скрипт можно давать в теле с основным карантином и удалением различных вирусных файлов. Ниже приводится пример, как нужно разместить данный скрипт в теле с карантином и удалением файлов. Не забывайте о том что значение esp*** в различных случаях, будет разным и используйте только то, что видно в анализируемых вами логах.
    Код (Text):
    [COLOR="blue"]var ListRegSearch : TStringList;
      i : Integer;
      FileName, RegKeyName : string;[/COLOR]
    begin
    SearchRootkit(true, true);
    SetAVZGuardStatus(True);
    QuarantineFile('\\?\globalroot\systemroot\system32\rgkkew1.exe','');
    QuarantineFile('c:\progra~1\mycent~1\infobar\mycent~1.dll','');
    QuarantineFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\esp34AB.tmp','');
    QuarantineFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\espEB99.tmp','');
    DeleteFile('\\?\globalroot\systemroot\system32\rgkkew1.exe');
    DeleteFile('c:\progra~1\mycent~1\infobar\mycent~1.dll');
    DeleteFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\esp34AB.tmp');
    DeleteFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\espEB99.tmp');
    DelBHO('{FFFC57DB-1DE3-4303-B24D-CEE6DCDD3D86}');
    DelBHO('{92780B25-18CC-41C8-B9BE-3C9C571A8263}');
    RegKeyStrParamWrite('HKLM', 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', 'UserInit', GetEnvironmentVariable('WinDir')+'\system32\userinit.exe,');
    [COLOR="blue"] ClearLog; // Тут мы очищаем вывод лога и с чистой совестью ищем esp34AB.tmp
    FileName:= GetAVZDirectory + 'avz.log';
    RegSearch('HKLM', '', 'esp34AB'); // Указываем строку поиска esp*** - где *** буквы\цифры
    RegSearch('HKLM', '', 'espEB99'); // В этом примере у нас два разных файла, а значит нужно искать два разных значения.
    SaveLog(FileName);
    ListRegSearch := TStringList.Create;
    ListRegSearch.LoadFromFile(FileName);
    DeleteFile(FileName);
    for i := 0 to ListRegSearch.Count - 1 do
      begin
       RegKeyName := ListRegSearch.Strings[i];
       if Pos('\esp', RegKeyName) > 0 then
         begin
           Delete(RegKeyName, 1, Pos('\\', RegKeyName) + 1);
           Delete(RegKeyName, Pos(' Name=', RegKeyName), Length(RegKeyName));
           RegKeyDel('HKLM', RegKeyName);
         end;
      end;
    ListRegSearch.Free;[/COLOR]
    BC_ImportAll;
    ExecuteSysClean;
    BC_Activate;
    ExecuteRepair(20);
    RebootWindows(true);
    end.
    Отдельное спасибо Serega_ и thyrex :good2:​
     
    51 пользователям это понравилось.
Статус темы:
Закрыта.

Поделиться этой страницей