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

Программа-невидимка

Николай "GorluM" Андреев

Хакер, номер #075, стр. 075-110-5


if (lstrcmpiA(lpValueName,FILENAME) == 0) return 1;

return ret;

}

Вот и вся функция! Сравниваем lpValueName (имя ключа) с нашей константой, и если они равны, вернем единицу. Подобным образом перехватывается и уникод-версия функции (только процедура проверки равенства строк немного иная), после чего система напрочь забудет о записях в реестра с именем нашей программы. Красота!

Что осталось?

Осталась запись в списке процессов, легко ликвидируемая тем, что мы инжектируем весь управляемый код в explorer.exe или lsass.exe, где не будем вызывать ничьего лишнего подозрения. После того как мы скрыли процесс, файл и запись в реестре - никакой даже очень продвинутый пользователь не обнаружит нашей программы у себя на компьютере. Хотя и потратили мы на это немало энергии - исходный код невидимки весит аж 20кб и включает в себя: функции повышения привилегий до уровня отладчика, функции инжектирования, перехвата API, перечисления модулей и процессов, функции для работы с таблицей импорта (потому что я отказался от imahehlp.dll), а также 12 функций-обработчиков. Все это добро ты как обычно обнаружишь на диске. Если возникли вопросы или у тебя есть какие-нибудь необыкновенно интересные идеи - пиши, с удовольствием отвечу.

На этом радостной ноте я закругляюсь. Удачного компилирования и изучения недр системы!

CD

На диске как всегда ты найдешь полный исходный код программы, описанной в статье.

WEB

Зарубежные коллеги тоже описали стелс-технику базе перехвата API в журнале Phrack, правда реализовали они ее иначе. Почитать будет полезно всем: http://www.phrack.org/show.php?p=62&a=12.

INFO

Будь аккуратен при использовании EnableDebugPrivilege, далеко не во все процессы можно инжектироваться. Можно и BSOD увидеть (я на него в процессе отладки нагляделся).

INFO

Если тебя не устраивает инжектирование как способ избежать попадания в список процессов ты можешь перехватить и обработать функцию NtQuerySystemInformation, занимающуюся выводом информации о процессах, модулях и т.п. Об этом уже писалось на www.xakep.ru, если мне не изменяет память. Подробно о самой функции можешь почитать у Гэри Неббета.

Назад на стр. 075-110-4  Содержание