2015_лекции / Лекция №3.1_2015
.pdf
Вирусы-паразиты (2)
Запись в начало файла
Код
программы
Код |
|
|
|
Код |
|
вируса |
|
вируса |
|
|
|
|
|
|
Код
программы
вирус
Вирус
Код
программы
Код
программы
a) |
b) Классический вирус-паразит |
Вирусы-паразиты (3)
Запись в середину файла
1) процедура записи в файл (поиск зон, заполненных пробелами (0x20))
2) процедура загрузки (HEAD)
EP |
VEP |
EP |
|
VEP |
|
|
|
|
|
|
|
|
Вирус А |
|
|
В |
EP |
|
|
|
|
|
Вирус В |
Код |
Код |
Код |
|
|
Код |
программы |
программы |
программы |
Вирус |
программы |
|
|
|
|
|
|
|
|
Вирус А |
|
В |
Вирус В |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Вирус В |
|
а |
|
б |
|
|
Вирусы-паразиты (4)
Амеба (W32/Sand.12300)
Код
Вируса
(начало)
Код
программы
Вирус
Код
программы
Код
Вируса (конец)
а |
б |
Вирусы-паразиты (5)
|
Встраивание дешифратора |
|
|
|
|
|
|
|
Начало вируса |
|
|
jmp |
|
|
|
|
|
|
в1 |
|
|
|
|
в1 |
|
Код |
Код |
Код |
Код |
программы |
программы |
программы |
программы |
|
|
|
|
|
тело вируса |
|
|
Вирус |
|
Вирус |
|
|
|
|
в1 |
|
|
Код |
|
в1 |
|
|
|
|
|
|
|
вируса |
|
Сохраненные |
|
|
|
блоки |
|
|
|
|
|
|
|
|
Сохраненн |
|
|
|
|
ые блоки |
|
|
а |
б |
Вирусы-компаньоны
Алгоритм работы
Найти цель
Создать свою копию либо в том же каталоге, либо в другом
Копия должна быть связана с файлом-целью
При выполнении заражённой программы управление передаётся сначала вирусу (дополнительному файлу), потом уже самому файлу
Вирусы-компаньоны
Варианты реализации механизма запуска
Особенности ОС
DOS: приоритет выполнения связан с расширением файла .com→.exe→.bat (уменьшение приоритета)
Windows: иконки файлов, отражающие информацию о расширении файла
Особенности иерархической структуры.
Последовательность загрузки dll
1.каталог, из которого запускает приложение
2.текущий каталог
3.системный каталог (возвращает функция GetSystemDirectory, Win32 обычно …/Windows/System32/) 4.16 -битный системный каталог (…/Windows/System/)
5.Каталог Windows ( возвращает функция GetWindowsDirectory …/Windows/)
6.Каталоги перечисленные в переменной среды PATH
Особенности файловой системы
FAT система: цепочки FAТ
NTFS: потоки
Вирусы, заражающие исходный код
Идея: копирование своего кода Пример: Quine (С)
#include<stdio.h> char*i="\\#include<stdio.h> ",n='\n',q='"',*p= "%s%cchar*i=%c%c%s%c,n='%cn',q='%c',*p=%c%c%s%c,*m=%c%c%s%c%c;%s%c",*m= "int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}" ;int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}
Преимущества
1.Скомпилированный код полностью однороден
2.Возможность обойти все известные техники обнаружения, использующие анализ кода
3.Могут быть эффективны в различных неизвестных средах исполнения
Вирусы, заражающие исходный код
Алгоритм заражения
Создать заголовочный файл вируса
.stdio.h
Заражение исходных файлов:
включить заголовочный файл
#include “.stdio.h” вместо #include <stdio.h>
включить вызовы функций из заголовочного файла вируса
Компиляция исходных кодов
Маскировка точки входа
Форматы исполняемых файлов
|
|
|
|
LE |
|
PE/PE+ |
|
|
NE |
|
|
||
COM |
|
|
32-бит драйвера |
|
32,64-битные |
|
|
16-битные модули |
|
|
|||
DOS |
|
Windows 1.0, |
|
устройств в Win |
|
модули |
|
|
9x |
|
Windows NT |
||
|
|
Windows ME |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COFF |
|
ELF |
*nix ОС |
|
*nix ОС |
|
|
|
|
|
|
Формат PE файла
PE = Portable Executable
В основе лежит формат COFF
Реализует динамическое связывание, импорт/экспорт символов
Может содержать бинарный код микропроцессоров Intel, Alpha, MIPS и даже.NET MSIL
• 64-битная версия называется PE32+
