Эвристический анализ семейства вирсусов

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

d.doc

— 264.00 Кб (Скачать файл)

   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.vbs";

      put="d:\\windows\\system\\*.vbs";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Ищем файл mskernel32.vbs

   str1="MSKernel32.vbs";

      put="d:\\windows\\system\\*.vbs";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Ищем файл Win32Dll.vbs

   str1="Win32Dll.vbs";

      put="d:\\windows\\*.vbs";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Ищем файл Winfat32.exe

      str1="Winfat32.exe";

      put="d:\\windows\\system\\*.exe";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Ищем файл love-letter-for-you.htm

      str1="love-letter-for-you.htm";

      put="d:\\windows\\system\\*.htm";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Ищем файл win-bugsfix.exe

      str1="win-bugsfix.exe";

      put="d:\\windows\\system\\*.exe";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Ищем файл mothersday.vbs

    str1="mothersday.vbs";

      put="d:\\windows\\system\\*.vbs";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Ищем файл very funny.vbs

    str1="very funny.vbs";

      put="d:\\windows\\system\\*.vbs";

      temp=poisk_f(str1,put,temp);

      if (temp==0) kol_fail=kol_fail+1;

Сбор информации о ключах реестра

Ищем HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKERNEL32.VBS

      str1="MSKERNEL32.VBS";

      put="Software\\Microsoft\\Windows\\CurrentVersion\\Run";

      temp=poisk_reg(str1,put,temp);

   if (temp==0) kol_kluch=kol_kluch+1;

Ищем  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices \WIN32DLL.VBS

      str1="WIN32DLL.VBS";

      put="Software\\Microsoft\\Windows\\CurrentVersion\\RunServices";

      temp=poisk_reg(str1,put,temp);

    if (temp==0) kol_kluch=kol_kluch+1;

Ищем отсутствие HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\HideSharePwds

      str1="HideSharePwds";

      put="Software\\Microsoft\\Windows\\CurrentVersion\\Network";

      temp=poisk_reg(str1,put,temp);

    if (temp!=0) kol_kluch=kol_kluch+1;

Ищем отсутствие HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Network\

DisablePwdCaching

      str1="DisablePwdCaching";

      put="Software\\Microsoft\\Windows\\CurrentVersion\\Network";

      temp=poisk_reg(str1,put,temp);

    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;c=40

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=90;c=100;

sozd(t2,80,80,90,100);fclose(t2);

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=60;

sozd(t4,20,20,40,60);

Вирус есть; x=60; a=60;b=80;c=100;

sozd(t4,60,60,80,100);fclose(t4);

Этап  фаззификации

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); 

Информация о работе Эвристический анализ семейства вирсусов