2010/04/29 15:32:02

Руткит

Руткит (Rootkit) - программа или набор программ, использующих технологии сокрытия системных объектов (файлов, процессов, драйверов, сервисов, ключей реестра, открытых портов, соединений и пр.) посредством обхода механизмов системы.

Содержание

Термин руткит исторически пришел из мира Unix, где под этим термином понимается набор утилит, которые хакер устанавливает на взломанном им компьютере после получения первоначального доступа. Это, как правило, хакерский инструментарий (снифферы, сканеры) и троянские программы, замещающие основные утилиты Unix. Руткит позволяет хакеру закрепиться во взломанной системе и скрыть следы своей деятельности.

В системе Windows под термином руткит принято считать программу, которая внедряется в систему и перехватывает системные функции, или производит замену системных библиотек. Перехват и модификация низкоуровневых API функций в первую очередь позволяет такой программе достаточно качественно маскировать свое присутствие в системе, защищая ее от обнаружения пользователем и антивирусным ПО. Кроме того, многие руткиты могут маскировать присутствие в системе любых описанных в его конфигурации процессов, папок и файлов на диске, ключей в реестре. Многие руткиты устанавливают в систему свои драйверы и сервисы (они естественно также являются «невидимыми»).

В последнее время угроза руткитов становится все более актуальной, т.к. разработчики вирусов, троянских программ и шпионского программного обеспечения начинают встраивать руткит-технологии в свои вредоносные программы. Одним из классических примеров может служить троянская программа Trojan-Spy.Win32.Qukart, которая маскирует свое присутствие в системе при помощи руткит-технологии. Ее RootKit-механизм прекрасно работает в Windows 95, 98, ME, 2000 и XP.

Классификация руткитов

Условно все руткит-технологии можно разделить на две категории:

  • Руткиты работающие в режиме пользователя (user-mode)
  • Руткиты работающие в режиме ядра (kernel-mode)

Первая категория основана на перехвате функций библиотек пользовательского режима, вторая – на установке в систему драйвера, осуществляющего перехват функций уровня ядра.

Также, руткиты можно классифицировать по принципу действия и по постоянству существования. По принципу действия:

  • Изменяющие алгоритмы выполнения системных функций
  • Изменяющие системные структуры данных

История руткитов

Говоря о руткитах, непременно упоминают этимологию термина rootkit: “root” – привилегированный администратор UNIX-системы, “kit” – набор инструментов, rootkit – набор утилит для обеспечения «привилегированного» доступа злоумышленника к системе незаметно для настоящего администратора. Такие утилиты для UNIX появились в начале 90-х гг. и существуют до сих пор, но практически не развиваются.

У Windows-руткитов был более близкий по функционалу предшественник, чем UNIX-руткиты – а именно, стелс-вирусы для DOS. Стелс-вирусы появились около 1990 года. В отличие от UNIX-руткитов, основная задача которых – впустить злоумышленника в систему и маскировать его действия, стелс-вирусы DOS, заражая файлы, просто скрывали себя от пользователя и антивирусных программ.

Windows-руткиты появились десятью годами позже стелс-вирусов, и то, что их назвали именно руткитами, а не стелс-вирусами, заслуга исключительно Грега Хогланда (Greg Hoglund). Он был одним из первых, кто реализовал технику обхода системных механизмов защиты Windows в форме утилиты, нацеленной на сокрытие информации в системе. Результаты его работы были опубликованы в электронном журнале PHRACK. Утилита, названная автором NT Rootkit, впоследствии была применена во многих вредоносных программах и по сей день вдохновляет исследователей и руткитостроителей.

Статья Хогланда датирована 1999 годом. В ней он опирается на исследования ядра Windows, опубликованные годом раньше в форумах Usenet программистом из Шри-Ланки. Еще раньше, начиная с 1995 года, Джефри Рихтер (Jeffrey Richter) в своей книге «Advanced Windows» и четвертом ее издании «Programming Applications for Microsoft Windows» раскрывает технологии перехвата системных вызовов на уровне пользователя, которые будут впоследствии использованы во многих руткитах с точностью до приведенного в книге исходного кода.

Техники перехвата системных вызовов на уровне ядра общедоступно раскрыты в двух других классических книгах по программированию: С. Шрайбер «Недокументированные возможности Windows 2000», 2001 г. (Sven Schreiber Undocumented Windows 2000 secrets) и П. Дабак и др. «Недокументированные возможности Windows NT», 1999 г. (P. Dabak et al Undocumented Windows NT). Исследования системных механизмов защиты Windows продолжились, и вслед за NT Rootkit было выпущено еще несколько утилит, позволяющих скрывать объекты в операционной системе.

В 2000 году появился he4hook - проект русского программиста. Утилита не несла в себе вредоносного функционала, но являлась инструментом для сокрытия файлов и работала в режиме ядра. Помимо этого, утилита самим автором не обозначалась как руткит.

В 2002 году на свет появился Hacker Defender (HacDef). Это также лишь инструмент, но уже более мощный – при помощи него можно скрыть любой файл, процесс или ключ реестра, параметры гибко настраиваются в файле конфигурации. Работает преимущественно в режиме пользователя.

В 2003 году появились Vanquish и Haxdoor (он же A-311 Death и в модифицированном варианте Nuclear Grabber). Vanquish - инструмент, работающий в режиме пользователя и позволяющий скрывать файлы, директории, а также ключи реестра. Кроме того, в нем уже предусмотрена вредоносная функция – логгирование паролей. Haxdoor - это уже полноценный бэкдор, работающий в режиме ядра и использующий руткит-технологии для самомаскировки.

В 2004 году выпущена FU – утилита для скрытия процессов, которая реализовала принципиально новую технологию, основанную на изменении самих системных структур, а не путей доступа к ним.

Все перечисленные руткиты являются ключевыми в истории Windows-руткитов. Особенно стоит отметить HacDef, Haxdoor и FU, широко распространявшихся "в диком виде" в связке с вредоносными программами. Руткиты этого периода (2000-2004) четко вписываются в общепринятую, но устаревшую классификацию: руткит может функционировать на уровне пользователя (user level) или на уровне ядра (kernel level), на основе модификации цепочки системных вызовов (Execution Path Modification) или на основе прямого изменения системных данных (Direct Kernel Objects Manipulation). В середине 2000-х порядка 80% всех руткитов приходилось на HacDef и Haxdoor. Первыми среди уже существовавших вредоносных программ, куда начали встраиваться руткит-технологии, были многофункциональные бэкдоры Rbot и SdBot.

Немного позже – около 2006 г. – руткит-технологии начали встраивать в популярные e-mail-черви (Bagle) и троянцы-шпионы (Goldun), еще позже появился Mailbot (Rustock), оказавшийся серьезным вызовом для антивирусных продуктов.

После длительного затишья в начале 2008 года появилась новая вредоносная программа, заражающая загрузочный сектор диска. В антивирусных базах разных производителей она именуется Sinowal, Mebroot, StealthMBR. Этот руткит, больше известный как «буткит» в силу своей «загрузочной» специфики, основан на коде концептуальной разработки eEye Bootroot (немного измененном) и представляет собой не столько самостоятельную вредоносную программу, сколько инструмент для сокрытия любого троянца.

См. также

Ссылки