Выживание в системах с жестоким квотированием

Захват чужих ресурсов


Вот мы и подошли к паразитам вплотную. Вместо того, чтобы плодить зомби, рискуя быть обнаруженным и создавая никому ненужную активность, напрягающую систему, не лучше ли тайком внедриться в чужую программу, используя ее ресурсы как свои собственные? Великолепная идея, вот только... любой известный механизм внедрения легко распознается антивирусами и персональными брандмауэрами. И нам, чтобы выжить, необходимо предложить радикально новый способ, который не удастся проконтролировать никому.

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



Содержание раздела