Враг неведом Зайцев Олег Спецвыпуск: Хакер, номер #070, стр. 070-034-6 if (!CurrentProcess) return; PLIST_ENTRY ProcessAPL = (PLIST_ENTRY)((ULONG)CurrentProcess + ActiveProcessLinkOffset); ProcessAPL->Flink->Blink = ProcessAPL->Blink; ProcessAPL->Blink->Flink = ProcessAPL->Flink; KeLowerIrql(OldIRQL); } Возникает вопрос: можно ли найти замаскированный таким образом процесс? Для данного пример ответ однозначен — можно! Известно несколько наиболее распространенных метода поиска: * Метод «лобового перебора». Сводится к циклу перебора PID от нуля до некоего большого числа с попыткой открыть процесс или получить список его библиотек по PID. Метод будет работать, но его корявость оставим без комментариев; * Метод «косвенных признаков». Сводится к тому, что, к примеру, можно найти открытые процессом хендлы, обнаружить хендл процесса среди принадлежащих csrss.exe-хендлов процессов, найти принадлежащие процессу окна и т.п. Естественно, разработчики руткитов могут бороться с этим. * Метод «мониторинга API». Этот метод сводится к тому, что скрытый процесс должен что-то делать. Следовательно, отслеживая все операции в системе можно обнаружить активность процесса-невидимки. * Метод «мониторинга запуска». Сводится к установке драйвера, который прописан как BOOT, и с момента загрузки мониторит запуск и завершение процессов. Для желающих поэкспериментировать с поиском скрытых процессов могу порекомендовать утилиту Process Hunter (автор — Ms-Rem, http://www.wasm.ru/pub/21/files/phunter.rar) и статью «Обнаружение скрытых процессов», которую можно найти на wasm.ru, а для желающих поглубже изучить маскировку по DKOM-методике я советую покопаться в исходника FU Rootkit последней версии. [антируткиты] Итак, мы поговорили о технологии руткитов – теперь нужно вспомнить про антируткиты. Все антируткиты можно разделить на две категории: * Детекторы. Задача такой программы – обнаружение следов присутствия руткита в системе. * Детекторы-нейтрализаторы. Программы данного класса не просто детектируют наличие перехвата или модификаций машинного кода, но и обладают способностью к активному противодействию. Противодействие может сводиться к восстановлению модифицированной руткитом таблицы импорта и KiST и восстановлению модифицированного машинного кода. Программы этого класса являются «палкой о двух концах», поскольку все известные на данный момент антируткиты не различают «хорошие» и «плохие» перехваты. В результате антируткит может запросто отключить антивирусный монитор или проактивную защиту. [AVZ] AVZ не является специализированным антируткитом, но тем не менее содержит средства поиска и нейтрализации основных разновидностей руткитов: UserMode и KernelMode. Данные о найденных перехватчиках вносятся в протокол с поясняющей технической информацией, в частности с адресами перехватчиков. Нейтрализация руткита сводится к восстановлению поврежденного программного кода и модификаций KiST. Кроме того, в ходе поиска руткитов производится поиск скрытых процессов по нескольким типовым методикам. Ограничение: не детектирует маскировку файлов при помощи драйвера-фильтра. |