Автор работы: Пользователь скрыл имя, 28 Декабря 2010 в 13:28, курсовая работа
Цель
1. Анализ семейства вирусов Email-Worm.VBS.LoveLetter.
2. Реализация эвристического анализатора семейства вирусов Email-Worm.VBS.LoveLetter
Задача
1. Проанализировав семейство вирусов Email-Worm.VBS.LoveLetter выделить классы эвристик
2. Реализовать эвристический анализатор методом нечеткого логического вывода Цукамота в программной среде Microsoft Visual C++ 6.0.
Введение 3
Цель 4
Задача 4
1 Семейство вирусов Email-worm.VBS.LoveLetter 5
1.1 Общее описание 5
1.2 Описание модификаций вируса 7
1.2.1 LoveLetter.A 7
1.2.2 LoveLetter.B 8
1.2.3 LoveLetter.C 9
1.2.4 LoveLetter.E 9
2 Метод нечеткого вывода Цукамото 10
2.1 Основные понятия 10
2.2 Алгоритм Цукамото 17
3 Реализация эвристического анализатора методом нечеткого вывода Цукамото 18
3.1 Эвристики семейства вирусов Email-worm.VBS.LoveLetter 18
3.2 Реализация 19
Заключение 37
Библиографический список 38
fclose(t1); fclose(t4); fclose(t5);
return f1;}
В качестве параметра а передается экспертное значение терма конкретного условия. В качестве параметров b и c передается интервал значений терма конкретного заключения. В качестве параметров р1 передается имя файла, в котором хранится значения входной переменной. В качестве p2 передается имя файла, куда будут записаны значения заключений по соответствующему правилу. Функция возвращает значение подусловия каждого правила.
Процедура активизации
void activiz(float f1, char *p1)
{ FILE *t5; float masX[100], float masY[100]; float x,y; int i=0;
t5=fopen(p1,"r");
while(!feof(t5))
{fscanf(t5,"%f %f",&x,&y); masX[i]=x; masY[i]=y; i++;
}
fclose(t5);
t5=fopen(p1,"w");
for (int j=0;j<i-1;j++)
{ if(masY[j]>f1) fprintf(t5, "%.0f %.2f\n",masX[j],f1);
else fprintf(t5, "%.0f %.2f\n",masX[j],masY[j]);
}
fclose(t5);
}
В качестве параметра f1 передается значение полученное на этапе фаззификации. В качестве параметра р1 передается имя файла, где хранятся значения заключений по конкретному правилу. Процедура записывает в файл функция принадлежности каждого из заключений.
Основная программа
Сбор информации о наличии определенных файлов
Ищем файл love-letter-for-you.txt.vbs
str1="love-letter-for-you.txt.
put="d:\\windows\\
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Ищем файл mskernel32.vbs
str1="MSKernel32.vbs";
put="d:\\windows\\
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Ищем файл Win32Dll.vbs
str1="Win32Dll.vbs";
put="d:\\windows\\*.vbs"
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Ищем файл Winfat32.exe
str1="Winfat32.exe";
put="d:\\windows\\
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Ищем файл love-letter-for-you.htm
str1="love-letter-for-
put="d:\\windows\\
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Ищем файл win-bugsfix.exe
str1="win-bugsfix.exe";
put="d:\\windows\\
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Ищем файл mothersday.vbs
str1="mothersday.vbs";
put="d:\\windows\\
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Ищем файл very funny.vbs
str1="very funny.vbs";
put="d:\\windows\\
temp=poisk_f(str1,put,
if (temp==0) kol_fail=kol_fail+1;
Сбор информации о ключах реестра
Ищем HKEY_LOCAL_MACHINE\Software\
str1="MSKERNEL32.VBS";
put="Software\\
temp=poisk_reg(str1,put,
if (temp==0) kol_kluch=kol_kluch+1;
Ищем
HKEY_LOCAL_MACHINE\Software\
str1="WIN32DLL.VBS";
put="Software\\
temp=poisk_reg(str1,put,
if (temp==0) kol_kluch=kol_kluch+1;
Ищем отсутствие
HKEY_LOCAL_MACHINE\Software\
str1="HideSharePwds";
put="Software\\
temp=poisk_reg(str1,put,
if (temp!=0) kol_kluch=kol_kluch+1;
Ищем отсутствие
HKEY_LOCAL_MACHINE\Software\
DisablePwdCaching
str1="DisablePwdCaching";
put="Software\\
temp=poisk_reg(str1,put,
if (temp!=0) kol_kluch=kol_kluch+1;
Создание базы правил
t1=fopen("f1.txt","a");
x=0;y=0;
Наличие определенных строк низкое;x=0;a=0;b=15;c=30
sozd(t1,0,0,15,30);
Наличие определенных строк среднее; x=30;a=30;b=55;c=80
sozd(t1,30,30,55,80);
Наличие определенных строк высокое; x=80;a=80;b=90;c=100
sozd(t1,80,80,90,100); fclose(t1);
t2=fopen("f2.txt","a");
x=0;y=0;
Наличие
ключей в реестре низкое;x=0;a=0;b=20;
sozd(t2,0,0,20,40);
Наличие ключей в реестре среднее;x=40;a=40;b=60;c=80;
sozd(t2,40,40,60,80);
Наличие
ключей в реестре высокое;x=80;a=80;b=
sozd(t2,80,80,90,100);fclose(
t3=fopen("f3.txt","a");
x=0;y=0;
Наличие определенных файлов низкое;x=0;a=0;b=15;c=30
sozd(t3,0,0,15,30);
Наличие определенных файлов среднее;x=30;a=30;b=50;c=70
sozd(t3,30,30,50,70);
Наличие определенных файлов высокое;x=70;a=70;b=85;c=100;
sozd(t3,70,70,85,100); fclose(t3);
t4=fopen("f4.txt","a");
x=0; y=0;
Вируса нет;x=0;a=0;b=10;c=20;
sozd(t4,0,0,10,20,);
Вирус
скорее всего есть;x=20;a=20;b=40;c=
sozd(t4,20,20,40,60);
Вирус есть; x=60; a=60;b=80;c=100;
sozd(t4,60,60,80,100);fclose(
Этап фаззификации
switch(kol_srk)
{
case 0: p1="f1.txt";
p2="f5.txt";
Нашли 0 определенных строк. Экспертная оценка равна 0.Соответствующее правило - "Если наличие определенных строк низкое, то вируса нет"
f1=fazific(0,0,20,p1,p2);
break;
case 1: p1="f1.txt";
p2="f5.txt";
Нашли 1 определенную строку. Экспертная оценка равна 10.Соответствующее правило - "Если наличие определенных строк низкое, то вируса нет "
f1=fazific(10,0,20,p1,p2);
break;
case 2: p1="f1.txt";
p2="f5.txt";
Нашли 2 определенные строки. Экспертная оценка равна 25.Соответствующее правило - "Если наличие определенных строк низкое, то вируса нет "
f1=fazific(25,0,20,p1,p2);
break;
case 3: p1="f1.txt";
p2="f5.txt";
Нашли 3 определенные строки. Экспертная оценка равна 50.Соответствующее правило - "Если наличие определенных строк среднее, то вирус скорее всего есть "
f1=fazific(50,20,60,p1,p2);
break;
case 4: p1="f1.txt";
p2="f5.txt";
Нашли 4 определенных строк. Экспертная оценка равна 70.Соответствующее правило - "Если наличие определенных строк среднее, то вирус скорее всего есть "
f1=fazific(70,20,60,p1,p2);
break;
case 5: p1="f1.txt";
p2="f5.txt";
Нашли 5 определенных строк. Экспертная оценка равна 90.Соответствующее правило - "Если наличие определенных строк высокое, то вирус есть "
f1=fazific(90,60,100,p1,p2);
break;
}
switch(kol_kluch)
{
case 0: p1="f2.txt";
p2="f6.txt";
Нашли 0 определенных ключей реестра. Экспертная оценка равна 0.Соответствующее правило - "Если наличие определенных ключей реестра низкое, то вируса нет "
f2=fazific(0,0,20,p1,p2);
break;
case 1: p1="f2.txt";
p2="f6.txt";
Нашли 1 определенный ключ реестра. Экспертная оценка равна 20.Соответствующее правило - "Если наличие определенных ключей реестра низкое, то вируса нет "
f2=fazific(20,0,20,p1,p2);
break;
case 2: p1="f2.txt";
p2="f6.txt";
Нашли 2 определенных ключа реестра. Экспертная оценка равна 55.Соответствующее правило - "Если наличие определенных ключей реестра среднее, то вирус скорее всего есть "
f2=fazific(55,20,60,p1,p2);
break;
case 3: p1="f2.txt";
p2="f6.txt";
Нашли 3 определенных ключа реестра. Экспертная оценка равна 70.Соответствующее правило - "Если наличие определенных ключей реестра среднее, то вирус скорее всего есть "
f2=fazific(70,20,60,p1,p2);
break;
case 4: p1="f2.txt";
p2="f6.txt";
Нашли 4 определенных ключей реестра. Экспертная оценка равна 90.Соответствующее правило - "Если наличие определенных ключей реестра высокое, то вирус есть "
f2=fazific(90,60,100,p1,p2);
break;
}
switch(kol_fail)
{
case 0: p1="f3.txt";
p2="f7.txt";
Нашли 0 определенных файлов. Экспертная оценка равна 0.Соответствующее правило - "Если наличие определенных файлов низкое, то вируса нет "
f3=fazific(0,0,20,p1,p2);