Жизнь и смерть беспозвоночных в системе Крис Касперски Хакер, номер #089, стр. 089-050-2 Многие компании, предоставляющие услуги хостинга или торгующие процессорным временем кластерной системы, активно используют механизмы квотирования, без которых данная затея лишена всякого смысла. [как размножаются ежики, или как образуются зомби] Квоты, привязанные к PID'у, легко обойти. Достаточно периодически (например, один раз в минуту, или даже секунду!) порождать новый процесс, термируя предыдущий. Новорожденный процесс получает полную порцию свежей квоты, а когда она иссякает, трюк с "перерождением" повторяется вновь. Это очень древний прием, используемый самим Червь Морриса, но известный задолго до него. Конечно, подобная "активность" является ненормальным явлением, притягивающим внимание персональных брандмауэров и антивирусов, но этих простофиль легко обхитрить. Свой запуск антивирус начинает с проверки памяти. Он получает список активных процессов, тщательно проверяя каждый из них на вшивость. Легальными средствами список процессов можно получить с помощью функций TOOLHELP32, экспортируемых библиотекой KERNEL32.DLL, которую перехватывают многие вирусы, не желающие быть замеченными. Сама по себе техника перехвата предельно тривиальна и к тому же описана в куче хакерских статей, так что не будем на ней останавливаться, тем более что существует другой источник информации — недокументированная функция NtQueryInformationProcess, экспортируемая NTDLL.DLL, но фактически реализованная в NTOSKRNL.EXE, и перехватить ее "прямой" вызов уже труднее. Без знания ассемблера и умения писать драйвера, тут уже не обойтись, но, к счастью, существуют и другие пути, работающие на всех операционных системах и не требующие напряжения мозговых извилин. Проведем простой эксперимент. Запустим FAR (если он только не был запущен ранее), нажмем <F11> и в списке плагинов найдем "Process list", вываливающий список процессов в текущую панель. Для получения более подробной информации о процессе подводим к нему курсор и давим <F3> или <F4>. Ага, говорим мы голосом Тигры, неожиданно обнаружившего у себя под хвостом непочатую банку пива. Вот оно! Ass of the Dragon! Имя процесса, путь к исполняемому файлу, PID материнского процесса, время запуска и прочая информация перед глазами. Полный путь — это нехорошо. Любой пользователь (антивирус) может считать файл с диска и посмотреть, что это за зараза такая! Как бы его преодолеть? В смысле изменить истинный путь на что-нибудь другое? Увы! Легальными средствами с прикладного уровня до этой информации не дотянуться (как минимум, потребуется заполучить права администратора). В довершение ко всему NT блокирует исполняемый файл вплоть до его завершения — команда DeleteFile возвращает error, и мечту создать временный файл, автоматически удаляющий себя после запуска, реализовать невозможно . И вот на сцене появляется мыщъх. Весь в сером. Стеснительно покусывая кончик хвоста, он говорит: "NT блокирует только удаление и запись в файл, но допускает rename. Причем, может быть переименован не только сам файл, но и путь к нему, пускай и ценой побочных эффектов разной степени тяжести". |