Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #48, НОЯБРЬ 2004 г.

Игра в прятки

Дмитрий Коваленко aka Ingrem

Спецвыпуск: Хакер, номер #048, стр. 048-046-1


(ingrem@list.ru)

Как скрыть троян от умных юзеров

Под "прятками" понимается незаметная загрузка и незаметная работа программ (в том числе троянов) в Windows. О том, как трояны причутся в системе, читай в этой статье.

Техники автозагрузки мы условно разделим на активные и пассивные. Трояны, использующие активные техники, стартуют вместе с системой. Чтобы троян загрузился, от пользователя не требуется никаких специальных действий - достаточно просто включить машину. Трояны, использующие пассивные техники, запускаются при выполнении пользователем каких-либо действий - обычно нужно что-то открыть, нажать и т.п.

Активно

Традиционно основное внимание уделяется модификации реестра. В реестре Windows существует множество ключей, которые троян может использовать для автозагрузки. Эти ключи часто упоминаются в различных руководствах по безопасности, причем смысл упоминаний всегда один и тот же: если прописать там EXE (в некоторых случаях DLL), то он загрузится при старте системы (DLL, естественно, будет подгружаться в процессы при их старте).

Особо тут не разгонишься, так как модификация веток реестра в HKEY_LOCAL_MACHINE (чтобы работало для всех пользователей) требует прав администратора. А на нормально настроенной системе трояну этих прав никто не даст :) (даешь права Local System! - прим. AvaLANche'а). И простая запись в реестр – глупый шаг. Такого трояна с помощью regedit поймает любой. Поэтому в действительно хороших, профессионально написанных троянах используются более сложные техники автозагрузки и стелса. Обычным просмотром ключей автозагрузки обнаружить такие трояны, как правило, не удается.

Одной из профессиональных техник считается создание недоступного ключа в реестре. Эта фишка описана у Марка Руссиновича на www.sysinternals.com, там же есть исходники на MS Visual C++ (www.sysinternals.com/files/reghide.zip). Передирать исходники один в один - последнее дело, а вот понять сам принцип важно.

Принцип достаточно простой. Большинство редакторов реестра для работы с реестром используют обычные Win32 API, в которых строки рассматриваются как последовательность байтов с завершающим нулем. Native API используют строки в формате Unicode, поэтому с помощью них можно создавать ветки и ключи в реестре, которые будут недоступны в обычных редакторах реестра. Недоступны означает, что они либо невидимы, либо их видно, но открыть нельзя.

Хотя модификацию реестра используют чаще всего, для трояна это не единственная возможность загрузиться. Существуют и другие активные техники, например, создание в папке автозагрузки EXE-файла с атрибутом "hidden". В меню "Пуск\Программы\Автозагрузка" его не видно (пока пользователь не включит отображение скрытых файлов в свойствах Windows Explorer'а - прим. ред.), но он все равно загружается. Или модификация существующих ярлыков в той же "Автозагрзке" с прописыванием в них пути к трояну. Но все техники такого плана довольно слабые и серьезную угрозу представляют только в связке с тем же перехватом API.

Пассивно

Пассивные техники также часто используются в троянах, хотя они почему-то менее популярны. Пассивных техник очень много, но мы рассмотрим только некоторые из них.

Содержание  Вперед на стр. 048-046-2