03.03.2000 Игры с сигнатурами [Deviator]

 Привет.
  В общем подал Януш Миловски очень неплохую идею - обламывать DrWeb'a,
 путем подсовывания ему сигнатур. Все его успехи булы опубликованны в 
 IV#15,но он был платным,да еще и печатным :). Вобщем Януш сказал,что он
 такое сделал,но как признаваться не хотел..Вот и пришлось убить день на
 расковыривание DrWeb'a.
 Будем надеятся,что я его (c) не подпорчу :)
  И так...

	1. Как работает DrWeb
  DrWeb себе спокойно грузится,загружает базы данных и начинает проверять
 файлы (бут-сектора и тп). Проверка делится на три этапа - эмуляция кода,
 проверка эвристикой и сигнатурный поиск. 
		a) Эмуляция кода. Ну...это уже и так всем извеcтно.
	Достаточно много в этом направлении сделал SSR и Януш,а я только
	немного довел до ума саму идею (см. WebBugger+). Сделано для 
	расшифровки шифрованных вирусов
		b) Эвристика. Ну...это тоже всем известно.. Читайте доки.
		c) А вот на сигнатурном поиске я хочу остановится
	И так,DrWeb имеет некоторые базы данных. В них находятся записи
	о вирусах. Вообще сама сигнатура занимает 16 байт,но остальные
	байты оной заполнены различной информацией - как лечить файл и
 	тп. 
( cтруктура в Сишном формате )

	struct	sig
	{
	byte	sig1_byte;    // Байт сигнатуры
	word	sig1_ofs;     // Смещ. от текущ. позиции до данного байта
	byte	sig1_len;     // Длина CRC кода начиная с позиции sig1_ofs
	word	sig1_CRCL;    // Собственно сам CRC код
	word	sig2_CRCH;

	byte	sig2_byte;    // Аналогично sig1_xx,но если sig2_len = 0,
	byte	sig2_ofs;     // то данная часть отсутствует
	byte	sig2_len;
	word	sig2_CRCL;
	word	sig2_CRCH;
	
	...	some	useless	shit	;)
	};
	
	Так вот,DrWeb открывает файл,в зависимости от формата указывает
	на начало программы и проходит все сигнатуры. Если совпало , 
	осведомляет user'a. Если нет,то DrWeb пропускает одну комманду 
	и проверяет снова.
	Так несколько раз (сколько - я не определял)

	2. Что же со всем этим делать ?
	Да все что угодно - от прикалывания над начинающими трейдерами
	:),до скрывания под чем угодно. 

	3. Приложение
	Да,я написал пару утилит,которые помогут немного облегчить жизнь
	И так,это:

		a) Откомментированные куски кода отвечающие за сравнение 
		сигнатур DrWeb'a (директория CODE)

		b) Программа "Радость коллекционера",которая просто
		создает файл с сигнатурой. Но (!) данная программа не 
		заполняет оный мусором - файл на выходе состоит из 
		одних нулей и с некоторыми вкраплениями сигнатуры. 
		(директория LAME) 

		c) Небольшая выдиралка сигнатур. (директория sniff)
			1) Распаковаете DrWeb для DOS (CUP386'ым напр.)
			2) Запускаете patcher.com
			3) если все успешно - запускаете sniffer.com,
			запускаете DrWeb и тестируете один (!) файл.

		  ВНИМАНИЕ:	Так как один файл тестируется на 
			сигнатуры многократно,то прийдется взять то число,
			которое DrWeb пишет внизу (кол-во вирусов),
			умножить на 16 и в hiew'e (или написать прогу)
			урезать размер до данного числа. Иначе у вас 
			будут многократные вхождения одной и той-же 
			сигнатуры . 

		d) Пример вирусов (директория Vir)

Deviator/HAZARD.