Руткит это в информатике кратко

Обновлено: 02.07.2024

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

Содержание

Определение

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

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

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

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

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

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

  1. в режиме пользователя (user-mode)
  2. в режиме ядра (kernel-mode).

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

Методы перехвата API функций в режиме пользователя (user mode)

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

Принцип вызова API функции

Перед рассмотрением принципов работы RootKit пользовательского режима необходимо кратко и упрощенно рассмотреть принцип вызова функций, размещенных в DLL. Известно два базовых способа:

Раннее связывание (статически импортируемые функции)

Этот метод основан на том, компилятору известен перечень импортируемых программой функций. Опираясь на эту информацию, компилятор формирует так называемую таблицу импорта EXE файла. Таблица импорта – это особая структура (ее местоположение и размер описываются в заголовке EXE файла), которая содержит список используемых программой библиотек и список импортируемых из каждой библиотеки функций. Для каждой функции в таблице имеется поле для хранения адреса, но на стадии компиляции адрес не известен. В процессе загрузки EXE файла система анализирует его таблицу импорта, загружает все перечисленные в ней DLL и производит занесение в таблицу импорта реальных адресов функций этих DLL. У раннего связывания есть существенный плюс – на момент запуска программы все необходимые DLL оказываются загруженными, таблица импорта заполнена – и все это делается системой, без участия программы. Но отсутствие в процессе загрузки указанной в его таблице импорта DLL (или отсутствие в DLL требуемой функции) приведет к ошибке загрузки программы. Кроме того, очень часто нет необходимости загружать все используемые программой DLL в момент запуска программы. На рисунке показан процесс раннего связывания – в момент загрузки происходит заполнение адресов в таблице импорта (шаг 1), в момент вызова функции из таблицы импорта берется адрес функции (шаг 2) и происходит собственно вызов функции (шаг 3);

Rootkit1.jpg

Позднее связывание

Отличается от раннего связывания тем, что загрузка DLL производится динамически при помощи функции API LoadLibrary. Эта функция находится в kernel32.dll, поэтому если не прибегать к хакерским приемам, то kernel32.dll придется загружать статически. При помощи LoadLibrary программа может загрузить интересующую ее библиотеку в любой момент времени. Соответственно для получения адреса функции применяется функция kernel32.dll GetProcAddress. На рисунке шаг 4 соответствует загрузке библиотеки при помощи LoadLibrary и определению адресов при помощи GetProcAddress. Далее можно вызывать функции DLL (шаг 5), но естественно при этом таблица импорта не нужна. Чтобы не вызывать GetProcAddress перед каждым вызова функции из DLL программист может однократно определить адреса интересующих его функций и сохранить их в массиве или некоторых переменных. Независимо от метода связывания системе необходимо знать, какие функции экспортирует DLL. Для этого у каждой DLL имеется таблица экспорта – таблица, в которой перечислены экспортируемые DLL функции, их номера (ординалы) и относительные адреса функций (RVA).

Модификация машинного кода прикладной программы

Rootkit2.jpg

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

Модификация таблицы импорта

Rootkit3.jpg

Данная методика описана в книге Рихтера и является одной из классических. Идея метода проста – RootKit находит в памяти таблицу импорта программы и исправляет адреса интересующих его функций на адреса своих перехватчиков (естественно, он предварительно где-то у себя запоминает правильные адреса). В момент вызова API функции программа считывает ее адрес из таблицы импорта и передает по этому адресу управление. Методика универсальна, но у нее есть существенный недостаток (и его хорошо видно на схеме) - перехватываются только статически импортируемые функции. Но есть и плюс – методика очень проста в реализации и есть масса примеров, демонстрирующих ее реализацию. Поиск таблицы импорта в памяти не представляет особой сложности, поскольку для этого существуют специализированные API функции, позволяющие работать с образом программы в памяти.

Перехват функций LoadLibrary и GetProcAddress

Rootkit4.jpg

Метод, сочетающий методику 2 и 3

Rootkit5.jpg

В данной методике модифицируется таблица импорта, причем в обязательном порядке перехватываются функции LoadLibrary и GetProcAddress библиотеки kernel32.dll. В этом случае при вызове статически импортируемых функций искаженные адреса берутся из таблицы импорта, при динамическом определении адреса вызывается перехваченная функция GetProcAddress, которая возвращает адреса функций-перехватчиков. В результате у программы не остается шансов узнать правильный адрес функции.

Модификация программного кода API функции

Rootkit6.jpg

Модификация библиотек DLL на диске

Данная методика состоит в том, что системная библиотека модифицируется на диске. Методы модификации аналогичны описанным выше, только изменения производятся не в памяти, а на диске. Подобная методика не получила широкого распространения.

Перехват функций в режиме ядра (kernel mode)

Для понимание типовой для методики перехвата функций в режиме ядра следует рассмотреть принципы взаимодействия библиотек пользовательского режима и ядра. Рассмотрим это взаимодействие на упрощенной схеме:

Rootkit7.jpg

Методики обнаружения RootKit в системе

Базовые методики поиска RootKit:

Антируткит

Антируткит (AntiRootkit) - Это утилиты или резидентные модули, обнаруживающие в системе присутствие руткитов и (в разной мере) удаляющие их. Существует множество конкурирующих средств для этого — как платных, так и бесплатных, но все они используют сходные принципы действия.

content/ru-ru/images/repository/isc/2021/rootkit_image1_710x400px_300dpi.jpg

Руткит – это тип вредоносных программ, предназначенных для предоставления злоумышленникам доступа к целевому устройству и контроля над ним. Хотя большинство руткитов влияют на работу программного обеспечения и операционную систему, некоторые из них могут также поразить оборудование и прошивку компьютера. Руткиты способны скрывать свое присутствие, но даже в этот период они активны.

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

Что такое руткит?

Руткит – это программа, используемая киберпреступниками для получения контроля над целевым компьютером или сетью. Иногда руткиты представляют собой единую программу, но чаще состоят из набора инструментов, позволяющих злоумышленникам управлять целевым устройством на уровне администратора.

Руткиты устанавливаются на целевые машины несколькими способами:

  1. Чаще всего это происходит с помощью фишинга или другого типа атак с применением социальной инженерии. Жертвы атак неосознанно загружают и устанавливают вредоносные программы, скрытые внутри других процессов, запущенных на их машинах, что дает злоумышленникам контроль почти над всей операционной системой.
  2. Другой способ – использование уязвимостей (слабых мест в программном обеспечении или операционной системе, если они не обновлялись) для принудительной установки руткита на компьютер.
  3. Вредоносные программы также могут быть связаны с другими файлами, такими как зараженные файлы PDF, пиратские носители или приложения из подозрительных сторонних магазинов.

Руткиты работают поблизости или внутри ядра операционной системы, что дает им возможность отправлять команды компьютеру. Все объекты, использующие операционную систему, являются потенциальной целью для руткитов. С распространением Интернета вещей они могут включать такие объекты, как холодильник или терморегулятор.

Руткиты могут скрывать кейлоггеры, записывающие нажатия клавиш без согласия пользователей. Это позволяет злоумышленникам украсть личную информацию, например, данные кредитной карты или интернет-банка. Руткиты также позволяют злоумышленникам использовать ваш компьютер для запуска DDoS-атак или рассылки спама. Они даже могут отключить или удалить программы безопасности.

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

Виды руткитов

1. Аппаратные руткиты и руткиты для прошивки

Аппаратные руткиты и руткиты для прошивки могут повлиять на работу жесткого диска, маршрутизатора или BIOS'а системы, то есть на программное обеспечение, установленное на небольшом чипе памяти на материнской плате компьютера. Они нацелены не на операционную систему, а на прошивку устройства, с целью установки вредоносных программ, которые трудно обнаружить. Поскольку руткиты затрагивают работу оборудования, они позволяют злоумышленникам регистрировать нажатия клавиш, а также отслеживать онлайн-активность. Аппаратные руткиты и руткиты для прошивки менее распространены, чем другие типы руткитов, однако они представляют серьезную угрозу сетевой безопасности.

2. Руткиты загрузчика

Механизм загрузчика отвечает за загрузку операционной системы компьютера. При атаке на систему руткиты загрузчика заменяют подлинный загрузчик взломанным. Это активирует руткит еще до полной загрузки операционной системы компьютера.

3. Руткиты памяти

Руткиты памяти скрываются в оперативной памяти компьютера и используют ресурсы компьютера для выполнения вредоносных действий в фоновом режиме. Руткиты памяти влияют на производительность оперативной памяти компьютера. Поскольку руткиты этого типа хранятся только в оперативной памяти компьютера и не внедряют постоянный код, они исчезают при перезагрузке системы. Однако чтобы полностью избавиться от них могут потребоваться дополнительные действия. Из-за короткой продолжительности жизни они не воспринимаются как серьезная угроза.

4. Руткиты приложений

Руткиты приложений заменяют стандартные файлы на компьютере файлами руткитов и даже могут изменить работу стандартных приложений. Эти руткиты поражают приложения Microsoft Office и такие программы как Notepad или Paint. Злоумышленники могут получить доступ к компьютеру при каждом запуске этих приложений. Зараженные приложения по-прежнему работают нормально, поэтому обнаружение руткитов пользователями затруднено. Однако антивирусные программы могут обнаружить руткиты, поскольку они, как и руткиты, работают на прикладном уровне.

5. Руткиты режима ядра

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

6. Виртуальные руткиты

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

Примеры руткитов

Stuxnet

Одним из самых известных руткитов в истории является Stuxnet – вредоносный компьютерный червь, обнаруженный в 2010 году и, предположительно, разрабатываемый, начиная с 2005 года. Stuxnet нанес значительный ущерб ядерной программе Ирана. Хотя ни одна из стран не взяла на себя ответственность, считается, что это кибероружие было разработано совместно США и Израилем в рамках совместного проекта, известного как Олимпийские игры.

Другие известные примеры руткитов:

Flame

В 2012 году был обнаружен руткит Flame, используемый, в основном, для кибершпионажа на Ближнем Востоке. Flame, также известный как Flamer, sKyWIper и Skywiper, атакует операционную систему компьютера целиком, что позволяет злоумышленникам отслеживать трафик, делать снимки экрана и записывать аудио, а также регистрировать нажатия клавиш на устройстве. Злоумышленников, стоящих за атакой руткита Flame, обнаружить не удалось, но исследования показывают, что для доступа к зараженным компьютерам они использовали 80 серверов на трех континентах.

Necurs

В 2012 году появился руткит Necurs и, как сообщалось, в том году было обнаружено 83 000 случая заражения этим руткитом. Компания Necurs связана с элитными киберпреступниками в Восточной Европе. Ей присущи техническая сложность и способностью к эволюционированию.

ZeroAccess

В 2011 году эксперты по кибербезопасности обнаружили руткит ZeroAccess – руткит режима ядра, заразивший более 2 миллионов компьютеров по всему миру. Вместо того чтобы напрямую влиять на работу зараженного компьютера, этот руткит загружает и устанавливает на него вредоносные программы, делая его частью всемирного ботнета, используемого для проведения кибератак. Руткит ZeroAccess активно используется в настоящее время.

В 2008 году был впервые обнаружен руткит TDSS. Он похож на руткиты загрузчика, поскольку загружается и запускается на ранних этапах загрузки операционной системы, что затрудняет его обнаружение и удаление.

Поиск руткитов

Как обнаружить руткиты

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

Возможные признаки руткитов:

1. Синий экран

2. Необычное поведение веб-браузера

В браузере могут появляться нераспознанные закладки или происходить перенаправление ссылок.

3. Низкая производительность устройства

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

4. Изменение параметров Windows без разрешения

Это может быть изменение заставки, скрытие панели задач или некорректное отображение даты и времени, при том, что вы ничего не меняли.

5. Веб-страницы работают некорректно

Из-за чрезмерного сетевого трафика наблюдаются прерывания при отображении или некорректная работа веб-страниц и сетевой активности.

Проверка на наличие руткитов – это лучший способ обнаружить заражение руткитами. Проверку может инициировать ваше антивирусное решение. Если вы подозреваете наличие руткита, один из способов обнаружения заражения – выключить компьютер и выполнить проверку из известной чистой системы.

Поведенческий анализ – это еще один метод обнаружения руткитов, при котором вместо поиска самого руткита выполняется анализ и поиск поведения, характерного для руткита. Целевая проверка работает хорошо, если уже известно, что система ведет себя странно, а поведенческий анализ может предупредить о рутките, прежде чем станет ясно, что устройство подверглось атаке.

Как избавиться от руткита

Как удалить руткит из Windows

В Windows при удалении обычно запускается проверка. Если имеет место глубокое заражение, единственным способом удаления руткита является переустановка Windows. Лучше сделать это с использованием внешнего носителя, а не средствами встроенного установщика Windows. Некоторые руткиты заражают BIOS; для исправления такого заражения требуется ремонт. Если после ремонта руткит все еще не удален, возможно, потребуется новый компьютер.

Как удалить руткит из Mac

Следите за выходом новых выпусков обновлений для устройств с операционной системой Mac. Обновления для Mac не только добавляют новые функции, но также удаляют вредоносные программы, включая руткиты. В Apple имеются встроенные функции безопасности для защиты от вредоносных программ. Однако в macOS нет известных средств обнаружения руткитов, поэтому, если вы подозреваете наличие руткита на устройстве, необходимо переустановить macOS. Это приведет к удалению большинства приложений и руткитов с устройства. Как описано выше, при поражении руткитом BIOS'а потребуется ремонт, а если руткит останется на устройстве, может потребоваться новое устройство.

Как предотвратить заражение руткитом

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

1. Использование комплексных решений кибербезопасности

Рекомендуется обеспечить безопасность устройств, установив комплексное продвинутое антивирусное решение. Kaspersky Total Security обеспечивает всеобъемлющую защиту от киберугроз, а также позволяет выполнять проверку на наличие руткитов.

2. Постоянное обновление системы

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

3. Внимательность к фишинговым атакам

Фишинг – это один из видов атаки социальной инженерии, при которой злоумышленники используют электронную почту, чтобы обманом заставить пользователей предоставить им финансовую информацию или загрузить вредоносные программы, например, руткиты. Чтобы предотвратить проникновение руткитов на компьютер, рекомендуется не открывать подозрительные электронные письма, особенно от неизвестных отправителей. Не следует переходить по ссылкам, доверенность которых вызывает сомнения.

4. Загрузка файлов только из надежных источников

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

5. Внимательность к поведению или производительности компьютера

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

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

Статьи по теме:

Что такое руткит – определение и описание

Что такое руткит? Руткит – это вредоносная программа, позволяющая злоумышленникам контролировать целевые компьютеры. В этой статье описано, как обнаруживать и предотвращать руткиты, а также как избавиться от руткитов.

Избранные статьи

content/ru-ru/images/repository/isc/2021/zero_click_image1_1208856090_670x377px_300dpi.jpg

Что такое вредоносные программы с нулевым щелчком и как осуществляются атаки с нулевым щелчком?

content/ru-ru/images/repository/isc/2021/what-is-a-digital-footprint-1.jpg

Что такое цифровой след?

content/ru-ru/images/repository/isc/2021/wep-vs-wpa-1.jpg

Технологии WEP, WPA, WPA2 и WPA3: что это и в чем их различия?

content/ru-ru/images/repository/isc/2021/zero-day-exploit-1.jpg

Что такое атака нулевого дня? Определение и описание

content/ru-ru/images/repository/isc/2021/what-is-internet-security-1.jpg

Интернет-безопасность: что это и как сохранить безопасность в сети?

Продукты для дома

Наши передовые решения помогают защитить то, что для вас ценно. Узнайте больше о нашей удостоенной наград защите.

Бесплатные утилиты

Наши бесплатные утилиты помогают обеспечить защиту ваших устройств на базе Windows, Mac и Android.

Связаться с нами

Наша главная цель - обеспечить вашу безопасность. Мы всегда готовы ответить на ваши вопросы и оказать техническую поддержку.

О компании

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

Пробные версии

Попробуйте наши решения. Всего за несколько кликов вы можете скачать бесплатные пробные версии нашего продукта и проверить их в действии.

Сувенирный портал Lab Shop

Rootkit (руткит, от root kit , то есть «набор кейлоггеры, троянские программы, замещающие основные утилиты UNIX (в случае неядерного руткита). Rootkit позволяет взломщику закрепиться во взломанной системе и скрыть следы своей деятельности путём сокрытия файлов, процессов, а также самого присутствия руткита в системе.

Содержание

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

  • По уровню привилегий
    • Уровня пользователя (user-mode)
    • Уровня ядра (kernel-mode)
    • изменяющие алгоритмы выполнения системных функций (Modify execution path)
    • изменяющие системные структуры данных (Direct kernel object manupulation)

    Основные методы реализации [ ]

    • реализуемые подменой основных системных утилит;
    • реализованные в виде модуля ядра и основанные на патчинге VFS или перехвате таблицы системных вызовов (sys_call_table);
    • основанные на модификации физической памяти ядра.

    В Windows В Windows из-за Windows File Protection переписывание системных файлов затруднено (хотя и его можно обойти!), поэтому основные способы внедрения в систему — модификация памяти.

    • перехват системных функций Windows API ( API hooking ) на уровне пользователя;
    • то же на уровне ядра (перехват BackDoor.MaosBoot ).

    Дополнительные возможности [ ]

    Это утилиты или резидентные модули, обнаруживающие в системе присутствие руткитов и (в разной мере) удаляющие их. Существует множество конкурирующих средств для этого — как платных, так и бесплатных, но все они используют сходные принципы действия:


    Основные тенденции в компьютерной безопасности


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

    Казалось бы, разработчики ОС должны всеми силами противостоять сокрытию нелигитимного ПО, однако появление новой версии Windows не изменило ситуацию в лучшую сторону. Восьмерка переняла от своих предшественников часть уже знакомых механизмов защиты (UAC, ASLR, DEP, PatchGuard, цифровые подписи для драйверов), для которых существует возможность обхода. И представила несколько новых — Secure Boot, SMEP и ELAM, которые, однако, не сильно повысили уровень защищенности. О чем свидетельствуют демообразец буткита Stoned Lite Питера Кляйсснера и UEFI bootkit Андреа Аллиеви. А о возможности обхода технологии SMEP на Windows 8 уже писал А. Шишкин из компании Positive Technologies.


    Согласно недавнему отчету британской Национальной аудиторской службы (NAO), наблюдается рост числа киберпреступлений, которые одной Великобритании обходятся в 18–27 миллиардов фунтов стерлингов ежегодно (bit.ly/14O9xy5).

    Исходя из сказанного, можно сделать вывод, что в последней версии Windows для борьбы с ВПО ничего революционно нового не было внедрено, и достойных механизмов, способных сильно осложнить жизнь разработчикам руткитов, на сегодняшний момент нет.

    Механизмы сокрытия в системе

    Для сокрытия ВПО могут применяться различные методы. Впервые классификация механизмов сокрытия была выполнена Йоанной Рутковской в работе Introducing Stealth Malware Taxonomy. Предложенная ей классификация может быть расширена следующим образом (см. рис. 1).

    Рис. 1. Схема классификации механизмов сокрытия программного обеспечения

    Стеганографические механизмы скрывают истинное предназначение внедренных объектов маскировкой их под легитимные, например схожестью их имен с именами системных файлов. В результате вредоносные файлы видны пользователю, но не вызывают у него подозрения. Пример стеганографического сокрытия — использование сертификатов доверенных компаний для подписи вредоносных драйверов. Благодаря действительным сертификатам компаний Realtek и JMicron червь Stuxnet долгое время оставался незамеченным, а компоненты червя Flame имели цифровую подпись самой компании Microsoft.

    Для работы стеганографических механизмов не требуется повышенных привилегий, также они переносятся на различные версии ОС Windows. Однако из-за отсутствия технических механизмов сокрытия такое ВПО может быть легко обнаружено и удалено. Большую опасность представляют комбинации стеганографических с другими механизмами сокрытия.

    Для изменения пути выполнения ВПО перехватывает функции штатного обработчика и передает управление вредоносному обработчику, который вносит целенаправленные изменения в возвращаемый результат. Способы обнаружения описанного механизма сокрытия уже освещались на страницах журнала.

    Интересная техника сокрытия руткитов


    На конференции ZeroNight в 2012 году была представлена работа Д. Олексюка (aka Cr4sh) в которой описывался интересный способ размещения руткита не в файлах, а в реестре с помощью Differentiated System Description Table (DSDT). Преимущество данного способа в том, что ни одно средство для обнаружения руткитов не учитывает такую возможность.

    Антируткиты

    Большинство вредоносных средств, о которых шла речь ранее, использовали для своей работы драйверы. В связи с этим давай рассмотрим наиболее распространенные антируткит-средства, способные обнаруживать наличие скрытых драйверов.

    Из популярных внештатных средств, поддерживающих работу с Windows 8, можно выделить следующие: Gmer, XueTr, PowerTool, TDSSKiller (Kaspersky Labs).

    С позиции обнаружения скрытых драйверов средства Gmer, XueTr и PowerTool имеют схожие алгоритмы работы, использующие для обнаружения побайтовый поиск в памяти фрагментов структур драйверов. Средство TDSSKiller для обнаружения драйверов использует несколько иной список, информация в который заносится при загрузке драйверов через штатные средства Windows.

    Изменение полей в необходимых структурах и удаление из соответствующих списков обеспечит сокрытие драйвера от этих средств, без нарушения работы системы и самого ВПО. Это позволяет констатировать отсутствие в открытом доступе антируткитных средств, стойких к противодействию.

    Программно-аппаратные руткиты

    С 2006 года компании Intel и AMD начали выпускать процессоры с поддержкой технологии аппаратной виртуализации. ПО, использующее технологию аппаратной виртуализации (или просто гипервизор), работает в новом режиме, более привилегированном, чем ОС. Технология аппаратной виртуализации позволяет запускать во вложенном виде несколько различных гипервизоров.

    Исходные коды гипервизоров — драйверов для ОС Windows x86
    1. BluePill (версии 0.11 и 0.32) — демонстрационный образец гипервизора для систем AMD, после публикации которого и началось широкое обсуждение угроз ИБ от аппаратной виртуализации.
    2. vmxcpu — исходный код заглушки гипервизора Ш. Эмблтона (Sh. Embleton) для процессоров Intel, который уже готов к использованию.
    3. Invisible Lane (il) — исходный код авторского скрытого гипервизора, построенного на основе vmxcpu. Сокрытие осуществляется путем компрометации процессорного счетчика тактов TSC, величина компрометации может задаваться с точностью до одного такта.

    С одной стороны, гипервизор, выполняющий функции монитора виртуальных машин, повышает сервисные возможности компьютера и снижает его эксплуатационные расходы. Благодаря ему на одном компьютере может быть одновременно запущено несколько ОС в разных виртуальных машинах (рис. 2).

    Рис. 2. Схема взаимодействия операционной системы с аппаратным обеспечением при отсутствии (присутствии) двух гипервизоров: легитимного с функциями монитора виртуальных машин и нелегитимного, находящихся во вложенном виде

    Но, с другой стороны, можно негласно внедрить гипервизор — программную закладку, которая обладает бесконтрольными возможностями и несет угрозу информационной безопасности.

    В открытом доступе имеются два программных средства — BluePill и Vitriol, реализованные в виде драйверов, которые устанавливают гипервизор прозрачно для пользователя.

    Обнаружением гипервизоров занимались как целые компании (Komoku, North Security Labs и другие), так и отдельные специалисты. Даже сама компания Microsoft опубликовала интерфейс для обнаружения гипервизоров, согласно которому необходимо выполнить инструкцию CPUID, предварительно записав в регистр EAX единицу. Далее необходимо проверить значение 31 бита регистра ECX; если он выставлен, то в системе присутствует гипервизор, а информация о его возможностях передается в структуре HV_CPUID_RESULT. Однако такой способ не защищен от компрометации.

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

    Средства отладки гипервизоров

    Специфика работы гипервизора не всегда позволяет использовать популярные средства отладки, такие как vBox (VMware) вместе с WinDbg, вместо этого можно использовать эмуляторы Bochs или AMD SimNow, однако они достаточно сложны в настройке.

    Что же можно использовать:

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

    Обзор и классификация способов обнаружения гипервизоров

    Вопрос обнаружения гипервизоров уже неоднократно обсуждался. На рис. 3 представлена классификация способов обнаружения гипервизоров, согласно которой все способы делятся на проактивные и сигнатурные.

    Рис. 3. Классификация способов обнаружения гипервизоров

    Детальное описание и сравнительный анализ указанных способов обнаружения представлен в работе bit.ly/ik_volume. Мы же уделим внимание временному способу обнаружения с использованием списка демаскирующих событий.

    Для выбранного способа таким событием гостевой ОС будет выполнение инструкции, при котором управление всегда передается из ОС гипервизору. Одной из таких инструкций является CPUID. Система обнаружения гипервизоров, которая будет описана далее, использует именно этот способ.

    Таблица 1. Сравнение средств обнаружения гипервизоров

    По результатам проведенного анализа видно, что существующие способы обнаружения гипервизоров обладают рядом недостатков:

    Далее представлена авторская методика обнаружения нелегитимного гипервизора, которая лишена указанных недостатков. Будет рассматриваться гипервизор, который может быть внедрен с помощью:

    • установки драйвера операционной системы;
    • модификации главной загрузочной записи жесткого диска;
    • внесения изменений в микропрограмму BIOS аппаратного обеспечения.

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

    Предпосылки для обнаружения

    Чтобы выявить факторы, которые могут быть использованы для обнаружения гипервизора, был проведен сравнительный анализ работы процессора с поддержкой аппаратной виртуализации при выполнении набора безусловно перехватываемых гипервизором инструкций в случаях его отсутствия и присутствия (рис. 4, а и 4, б).

    Рис. 4. Схемы переключения между режимами работы процессора при выполнении набора безусловно перехватываемых инструкций в случаях его отсутствия (а) и присутствия (б)

    В случае присутствия гипервизора возрастает не только абсолютное время выполнения трассы, но и значения статистических характеристик длительности выполнения, например дисперсии. Эта отличительная особенность и легла в основу предлагаемой методики обнаружения (подробный анализ схем переключения между режимами работы процессора и математическое обоснование можно посмотреть тут bit.ly/10nPPlY.

    Методика обнаружения и ее анализ

    Суть методики обнаружения состоит в расчете и сравнении статистических характеристик длительности выполнения трассы с пороговыми величинами.

    Измерение длительности выполнения трассы проводилось для десяти инструкций CPUID с помощью процессорного счетчика тактов TSC на повышенном 31-м уровне приоритета IRQL. Результатами опытов являлись матрицы размером 1000 х 10, содержащие данные измерений длительности выполнения трассы, по которым рассчитывались различные статистические характеристики.

    Для иллюстрации в табл. 2 приведены пороговые значения последовательной комбинации таких показателей, как дисперсии D ̅f и момента 4-го порядка M ̅f, полученных на различных ПК, для случаев отсутствия (ОТ) и присутствия (ПР) гипервизоров.

    Таблица 2. Пороговые значения тест-статистик длительности трассы и их доверительная вероятность, полученные на различных ПК

    В первом столбце табл. 2 номерами обозначены модели процессоров обследованных ПК:

    1. Intel Core 2 Duo E8200 с ОС Windows 7,
    2. Intel Core 2 Duo E6300 с ОС Windows 7,
    3. AMD Phenom X4 945 с ОС Windows Live CD XP (DDD).

    В первых двух ПК использовался разработанный автором гипервизор (исходный код которого ты можешь найти на диске), реализованный в виде драйвера ОС, в третьем случае — специализированный гипервизор, получающий управление при загрузке ПК из BIOS.

    Предлагаемая методика обнаружения нелегитимного гипервизора состоит из двух этапов: предварительного и оперативного, как представлено в табл. 3 (детальное описание методики: bit.ly/ik_volume).

    Таблица 3. Пошаговая методика обнаружения нелегитимного гипервизора

    Для противодействия этой методике скрываемый гипервизор должен компрометировать показания счетчика тактов не на постоянную величину, а на случайную, так, чтобы, с одной стороны, уравнять средние длительности выполнения трассы, а с другой — стабилизировать разброс длительностей выполнения трассы. Однако вопрос подбора закона распределения такой случайной величины остается открытым.

    Правда, данная методика не лишена и недостатков (табл. 4).

    Таблица 4. Недостатки и возможные решения методики обнаружения

    Взгляд в будущее

    Все, о чем мы до этого говорили, все эти методики сокрытия и обнаружения относятся к сегодняшнему дню. А что нам ждать от дня завтрашнего? По какому пути развития пойдут технологии создания руткитов? Можно дать волю воображению и с большой вероятностью предположить, что развиваться они будут по следующим направлениям:

    Итоги

    Как видишь, технологии создания руткитов не стоят на месте, делая задачу их обнаружения все сложнее. Это превращает их в очень опасное кибероружие, способное оставаться незамеченным, но в нужный момент нанести точный и смертельный удар. Понимая всю их опасность, за рубежом создали специальные компании, занимающиеся исследованиями в области сокрытия и обнаружения программных закладок, такие как: DARPA и IARPA (США), DSTL (Великобритания), DRDC (Канада), COSTIND (Китай). Будем надеяться, что скоро и в нашей стране появятся полноценные кибервойска, пока же уровень безопасности (читай обороноспособность) в военных ведомствах оставляет желать лучшего.

    Об авторе

    Читайте также: