Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Жизнь и смерть беспозвоночных в системе

Крис Касперски

Хакер, номер #089, стр. 089-050-5


[захват чужих ресурсов]

Вот мы и подошли к паразитам вплотную. Вместо того чтобы плодить зомби, рискуя быть обнаруженным и создавая никому ненужную активность, напрягающую систему, не лучше ли тайком внедриться в чужую программу, используя ее ресурсы как свои собственные? Великолепная идея, вот только... любой известный механизм внедрения легко распознается антивирусами и персональными брандмауэрами. И нам, чтобы выжить, необходимо предложить радикально новый способ, который не удастся проконтролировать никому. Большинство вирусов внедряет свой код посредством функции WriteProcessMemory, которую контролируют всякие сторожа. А как они могут ее контролировать? Обычно используется тривиальный примем: правится (в памяти) таблица экспорта KERNEL32.DLL так, чтобы WriteProcessMemory указывал на антивирусную насадку, проверяющую, кто и зачем эту функцию вызывает. В других случаях правится непосредственно сам код функции WriteProcessMemory (например, в ее начало ставиться jump на антивирусный thunk). Короче, вызывать WriteProcessMemory может только самоубийца, тем более что WriteProcessMemory - это только "обертка" вокруг ZwProtectVirtualMemory, экспортируемой NTDLL.DLL, которую контролирует значительное меньшее количество антивирусов/брандмауэров.

В свою очередь, ZwProtectVirtualMemory обращается непосредственно к ядру операционной системы через прерывание int 24h со значением 77h в регистре EAX (начиная с XP, интерфейс взаимодействия с ядром осуществляется через специальную машинную команду systenter, но прерывание INT 2Eh по-прежнему поддерживается и работает в целях сохранения обратной совместимости).

Назад на стр. 089-050-4  Содержание  Вперед на стр. 089-050-6