Руткит — это набор компьютерного программного обеспечения , как правило, вредоносного, разработанного для обеспечения доступа к компьютеру или области его программного обеспечения , который в противном случае не разрешен (например, неавторизованному пользователю), и часто маскирует свое существование или существование другого программного обеспечения. [1] Термин « руткит» представляет собой соединение « root » (традиционное название привилегированной учетной записи в операционных системах типа Unix ) и слова «kit» (которое относится к программным компонентам, реализующим инструмент). [2] Термин «руткит» имеет негативные коннотации из-за его ассоциации с вредоносным ПО . [1]
Установка руткита может быть автоматизирована, или злоумышленник может установить его после получения прав root или администратора. [3] Получение этого доступа является результатом прямой атаки на систему, то есть эксплуатации уязвимости (например, повышения привилегий ) или пароля (полученного путем взлома или тактики социальной инженерии, такой как « фишинг »). После установки становится возможным скрыть вторжение, а также сохранить привилегированный доступ. Полный контроль над системой означает, что существующее программное обеспечение может быть изменено, включая программное обеспечение, которое в противном случае могло бы быть использовано для его обнаружения или обхода.
Обнаружение руткитов затруднено, поскольку руткит может быть способен подорвать программное обеспечение, которое предназначено для его обнаружения. Методы обнаружения включают использование альтернативной и доверенной операционной системы , методы на основе поведения, сканирование сигнатур, сканирование различий и анализ дампа памяти . Удаление может быть сложным или практически невозможным, особенно в случаях, когда руткит находится в ядре ; переустановка операционной системы может быть единственным доступным решением проблемы. При работе с руткитами прошивки удаление может потребовать замены оборудования или специализированного оборудования.
Термин rootkit , rkit или root kit изначально относился к вредоносно измененному набору административных инструментов для Unix-подобной операционной системы , который предоставлял доступ « root ». [4] Если злоумышленник мог заменить стандартные административные инструменты в системе руткитом, он мог получить доступ root через систему, одновременно скрывая эти действия от законного системного администратора . Эти руткиты первого поколения было легко обнаружить с помощью таких инструментов, как Tripwire , которые не были скомпрометированы для доступа к той же информации. [5] [6] Лейн Дэвис и Стивен Дейк написали самый ранний известный руткит в 1990 году для операционной системы SunOS UNIX компании Sun Microsystems . [7] В лекции, которую он прочитал после получения премии Тьюринга в 1983 году, Кен Томпсон из Bell Labs , один из создателей Unix , выдвинул теорию о подрыве компилятора C в дистрибутиве Unix и обсудил эксплойт. Модифицированный компилятор обнаруживал попытки скомпилировать команду Unix и генерировал измененный код, который принимал не только правильный пароль пользователя, но и дополнительный пароль « backdoor », известный злоумышленнику. Кроме того, компилятор обнаруживал попытки скомпилировать новую версию компилятора и вставлял те же эксплойты в новый компилятор. Обзор исходного кода команды или обновленного компилятора не выявлял никакого вредоносного кода. [8] Этот эксплойт был эквивалентен руткиту.login
login
Первый задокументированный компьютерный вирус, нацеленный на персональный компьютер , обнаруженный в 1986 году, использовал методы маскировки , чтобы скрыть себя: вирус Brain перехватывал попытки чтения загрузочного сектора и перенаправлял их в другое место на диске, где хранилась копия исходного загрузочного сектора. [1] Со временем методы маскировки DOS -вирусов стали более изощренными. Продвинутые методы включали перехват низкоуровневых вызовов прерывания BIOS диска INT 13H для сокрытия несанкционированных изменений файлов. [1]
Первый вредоносный руткит для операционной системы Windows NT появился в 1999 году: троян под названием NTRootkit, созданный Грегом Хоглундом . [9] За ним в 2003 году последовал HackerDefender . [1] Первый руткит, нацеленный на Mac OS X, появился в 2009 году, [10] а червь Stuxnet был первым, нацеленным на программируемые логические контроллеры (ПЛК). [11]
В 2005 году Sony BMG выпустила компакт-диски с защитой от копирования и программным обеспечением для управления цифровыми правами под названием Extended Copy Protection , созданные компанией-разработчиком программного обеспечения First 4 Internet. Программное обеспечение включало музыкальный проигрыватель, но молча устанавливало руткит, который ограничивал возможность пользователя получить доступ к компакт-диску. [12] Инженер-программист Марк Руссинович , создавший инструмент обнаружения руткитов RootkitRevealer , обнаружил руткит на одном из своих компьютеров. [1] Последовавший за этим скандал повысил осведомленность общественности о руткитах. [13] Чтобы скрыть себя, руткит скрывал от пользователя любой файл, начинающийся с «$sys$». Вскоре после отчета Руссиновича появилось вредоносное ПО, которое использовало существующий руткит на затронутых системах. [1] Один аналитик BBC назвал это « кошмаром связей с общественностью ». [14] Sony BMG выпустила исправления для удаления руткита, но это подвергло пользователей еще более серьезной уязвимости. [15] В конечном итоге компания отозвала компакт-диски. В Соединенных Штатах против Sony BMG был подан коллективный иск . [16]
Греческое дело о прослушивании телефонных разговоров 2004–05 гг ., также известное как «Греческий Уотергейт» [17], включало незаконное прослушивание телефонных разговоров более 100 мобильных телефонов в сети Vodafone Greece, принадлежащих в основном членам греческого правительства и высокопоставленным государственным служащим. Прослушивание началось где-то в начале августа 2004 г. и было прекращено в марте 2005 г., при этом личности злоумышленников так и не были установлены. Злоумышленники установили руткит, нацеленный на телефонную станцию Ericsson AXE . По данным IEEE Spectrum , это был «первый случай, когда руткит был обнаружен в системе специального назначения, в данном случае на телефонном коммутаторе Ericsson». [18] Руткит был разработан для исправления памяти станции во время ее работы, включения прослушивания телефонных разговоров при отключении журналов аудита, исправления команд, которые перечисляют активные процессы и активные блоки данных, и изменения команды проверки контрольной суммы блока данных . «Бэкдор» позволял оператору со статусом системного администратора деактивировать журнал транзакций биржи, сигналы тревоги и команды доступа, связанные с возможностью наблюдения. [18] Руткит был обнаружен после того, как злоумышленники установили неисправное обновление, из-за которого SMS- сообщения не доставлялись, что привело к созданию автоматического отчета об ошибке. Инженеры Ericsson были вызваны для расследования неисправности и обнаружили скрытые блоки данных, содержащие список отслеживаемых телефонных номеров, а также руткит и незаконное программное обеспечение для мониторинга.
Современные руткиты не повышают уровень доступа, [4] а скорее используются для того, чтобы сделать другую полезную нагрузку программного обеспечения необнаружимой, добавляя возможности скрытности. [9] Большинство руткитов классифицируются как вредоносное ПО , поскольку полезная нагрузка, с которой они связаны, является вредоносной. Например, полезная нагрузка может скрытно красть пароли пользователей , информацию о кредитных картах , вычислительные ресурсы или выполнять другие несанкционированные действия. Небольшое количество руткитов может считаться их пользователями служебными приложениями: например, руткит может скрывать драйвер эмуляции CD-ROM , позволяя пользователям видеоигр обходить меры по борьбе с пиратством , которые требуют вставки оригинального установочного носителя в физический оптический привод для проверки законности приобретения программного обеспечения.
Руткиты и их полезные нагрузки имеют множество применений:
В некоторых случаях руткиты обеспечивают желаемую функциональность и могут быть установлены намеренно от имени пользователя компьютера:
Существует по крайней мере пять типов руткитов, начиная с тех, что находятся на самом низком уровне прошивки (с наивысшими привилегиями), и заканчивая наименее привилегированными пользовательскими вариантами, которые работают в Ring 3. Гибридные комбинации этих вариантов могут охватывать, например, пользовательский режим и режим ядра. [26]
Руткиты пользовательского режима запускаются в Ring 3 вместе с другими приложениями как пользовательские, а не как низкоуровневые системные процессы. [27] У них есть ряд возможных векторов установки для перехвата и изменения стандартного поведения интерфейсов прикладного программирования (API). Некоторые внедряют динамически связанную библиотеку (такую как файл .DLL в Windows или файл .dylib в Mac OS X ) в другие процессы и, таким образом, могут выполняться внутри любого целевого процесса, чтобы подделать его; другие с достаточными привилегиями просто перезаписывают память целевого приложения. Механизмы внедрения включают: [27]
...поскольку все приложения пользовательского режима работают в своем собственном пространстве памяти, руткиту необходимо выполнить это исправление в пространстве памяти каждого запущенного приложения. Кроме того, руткиту необходимо отслеживать систему на предмет любых новых приложений, которые выполняются, и исправлять пространство памяти этих программ до их полного выполнения.
— Обзор руткитов Windows, Symantec [4]
Руткиты режима ядра работают с наивысшими привилегиями операционной системы ( кольцо 0 ), добавляя код или заменяя части ядра операционной системы, включая как ядро , так и связанные с ним драйверы устройств . [ требуется ссылка ] Большинство операционных систем поддерживают драйверы устройств режима ядра, которые выполняются с теми же привилегиями, что и сама операционная система. Таким образом, многие руткиты режима ядра разрабатываются как драйверы устройств или загружаемые модули, такие как загружаемые модули ядра в Linux или драйверы устройств в Microsoft Windows . Этот класс руткитов имеет неограниченный доступ к безопасности, но его сложнее писать. [29] Сложность делает ошибки обычным явлением, и любые ошибки в коде, работающем на уровне ядра, могут серьезно повлиять на стабильность системы, что приводит к обнаружению руткита. [29] Один из первых широко известных руткитов ядра был разработан для Windows NT 4.0 и опубликован в журнале Phrack в 1999 году Грегом Хоглундом . [30] [31] Руткиты ядра могут быть особенно трудны для обнаружения и удаления, поскольку они работают на том же уровне безопасности, что и сама операционная система, и, таким образом, способны перехватывать или подрывать самые надежные операции операционной системы. Любое программное обеспечение, например антивирусное программное обеспечение , работающее на скомпрометированной системе, одинаково уязвимо. [32] В этой ситуации ни одной части системы нельзя доверять.
Руткит может изменять структуры данных в ядре Windows, используя метод, известный как прямая манипуляция объектами ядра (DKOM). [33] Этот метод может использоваться для сокрытия процессов. Руткит режима ядра также может перехватывать таблицу дескрипторов системных служб (SSDT) или изменять шлюзы между пользовательским режимом и режимом ядра, чтобы скрыть себя. [4] Аналогично для операционной системы Linux руткит может изменять таблицу системных вызовов, чтобы подорвать функциональность ядра. [34] [35] Обычно руткит создает скрытую, зашифрованную файловую систему, в которой он может скрывать другие вредоносные программы или оригинальные копии файлов, которые он заразил. [36] Операционные системы развиваются, чтобы противостоять угрозе руткитов режима ядра. Например, 64-разрядные версии Microsoft Windows теперь реализуют обязательную подпись всех драйверов уровня ядра, чтобы затруднить выполнение ненадежного кода с наивысшими привилегиями в системе. [37]
Вариант руткита режима ядра, называемый буткитом, может заражать код запуска, такой как главная загрузочная запись (MBR), загрузочная запись тома (VBR) или загрузочный сектор , и таким образом может использоваться для атаки на системы полного шифрования диска . [38] Примером такой атаки на шифрование диска является « атака злой горничной », в которой злоумышленник устанавливает буткит на оставленный без присмотра компьютер. Предполагаемый сценарий — горничная, пробирающаяся в гостиничный номер, где жертвы оставили свое оборудование. [39] Буткит заменяет законный загрузчик на тот, который находится под их контролем. Обычно загрузчик вредоносного ПО сохраняется при переходе в защищенный режим , когда ядро загружено, и, таким образом, может подорвать ядро. [40] [41] [42] Например, «Stoned Bootkit» подрывает систему, используя скомпрометированный загрузчик для перехвата ключей шифрования и паролей. [43] [ самостоятельно опубликованный источник? ] В 2010 году руткит Alureon успешно обошёл требование подписи драйверов 64-битного режима ядра в Windows 7 , изменив главную загрузочную запись . [44] Хотя это и не вредоносное ПО в том смысле, что оно делает что-то, чего не хочет пользователь, определённое программное обеспечение «Vista Loader» или «Windows Loader» работает схожим образом, внедряя таблицу ACPI SLIC (System Licensed Internal Code) в кэшированную в ОЗУ версию BIOS во время загрузки , чтобы обойти процесс активации Windows Vista и Windows 7. [ требуется ссылка ] Этот вектор атаки оказался бесполезным в (несерверных) версиях Windows 8 , которые используют уникальный машинно-специфичный ключ для каждой системы, который может использоваться только этой одной машиной. [45] Многие антивирусные компании предоставляют бесплатные утилиты и программы для удаления буткитов.
Руткиты были созданы как гипервизоры типа II в академических кругах в качестве доказательств концепции. Используя функции аппаратной виртуализации, такие как Intel VT или AMD-V , этот тип руткита работает в Ring -1 и размещает целевую операционную систему как виртуальную машину , тем самым позволяя руткиту перехватывать аппаратные вызовы, выполняемые исходной операционной системой. [6] В отличие от обычных гипервизоров, им не нужно загружаться до операционной системы, но они могут загрузиться в операционную систему перед тем, как преобразовать ее в виртуальную машину. [6] Руткиту гипервизора не нужно вносить никаких изменений в ядро цели, чтобы подорвать ее; однако это не означает, что он не может быть обнаружен гостевой операционной системой. Например, различия во времени могут быть обнаружены в инструкциях ЦП . [6] Лабораторный руткит «SubVirt», разработанный совместно исследователями Microsoft и Мичиганского университета , является академическим примером руткита на основе виртуальной машины (VMBR), [46] в то время как программное обеспечение Blue Pill является другим. В 2009 году исследователи из Microsoft и Университета штата Северная Каролина продемонстрировали антируткит уровня гипервизора под названием Hooksafe , который обеспечивает общую защиту от руткитов режима ядра. [47] В Windows 10 появилась новая функция под названием «Device Guard», которая использует преимущества виртуализации для обеспечения независимой внешней защиты операционной системы от вредоносных программ типа руткитов. [48]
Руткит прошивки использует прошивку устройства или платформы для создания постоянного образа вредоносного ПО в оборудовании, таком как маршрутизатор , сетевая карта , [49] жесткий диск или системный BIOS . [27] [50] Руткит скрывается в прошивке, поскольку прошивка обычно не проверяется на целостность кода . Джон Хисман продемонстрировал жизнеспособность руткитов прошивки как в процедурах прошивки ACPI [51], так и в ПЗУ карты расширения PCI . [52] В октябре 2008 года преступники подделали европейские устройства для считывания кредитных карт до их установки. Устройства перехватывали и передавали данные кредитных карт через сеть мобильной связи. [53] В марте 2009 года исследователи Альфредо Ортега и Анибал Сакко опубликовали сведения о рутките Windows уровня BIOS , который смог пережить замену диска и переустановку операционной системы. [54] [55] [56] Несколько месяцев спустя они узнали, что некоторые ноутбуки продаются с легитимным руткитом, известным как Absolute CompuTrace или Absolute LoJack for Laptops , предустановленным во многих образах BIOS. Это система противоугонной технологии , которую, как показали исследователи, можно использовать для вредоносных целей. [24]
Технология Intel Active Management , часть Intel vPro , реализует управление по внешнему каналу , предоставляя администраторам удаленное администрирование , удаленное управление и удаленный контроль ПК без участия процессора хоста или BIOS, даже когда система выключена. Удаленное администрирование включает удаленное включение и выключение питания, удаленный сброс, перенаправленную загрузку, перенаправление консоли, предзагрузочный доступ к настройкам BIOS, программируемую фильтрацию входящего и исходящего сетевого трафика, проверку присутствия агента, оповещение на основе политик по внешнему каналу, доступ к системной информации, такой как информация об аппаратных активах, постоянные журналы событий и другая информация, которая хранится в выделенной памяти (не на жестком диске), где она доступна, даже если ОС отключена или ПК выключен. Некоторые из этих функций требуют самого глубокого уровня руткита, второго несъемного шпионского компьютера, построенного вокруг основного компьютера. Sandy Bridge и будущие чипсеты имеют «возможность удаленно убить и восстановить потерянный или украденный ПК через 3G». Аппаратные руткиты, встроенные в чипсет, могут помочь восстановить украденные компьютеры, удалить данные или сделать их бесполезными, но они также представляют угрозу конфиденциальности и безопасности, поскольку могут стать причиной скрытого шпионажа и перенаправления со стороны руководства или хакеров, которые могут получить контроль.
Руткиты используют различные методы для получения контроля над системой; тип руткита влияет на выбор вектора атаки. Наиболее распространенный метод использует уязвимости безопасности для достижения скрытого повышения привилегий . Другой подход заключается в использовании троянского коня , обманывающего пользователя компьютера, заставляя его доверять программе установки руткита как безвредной — в этом случае социальная инженерия убеждает пользователя, что руткит полезен. [29] Задача установки упрощается, если не применяется принцип наименьших привилегий , поскольку тогда руткиту не нужно явно запрашивать повышенные (уровня администратора) привилегии. Другие классы руткитов могут быть установлены только тем, кто имеет физический доступ к целевой системе. Некоторые руткиты также могут быть установлены намеренно владельцем системы или кем-то, уполномоченным владельцем, например, с целью мониторинга сотрудников , что делает такие подрывные методы ненужными. [57] Некоторые вредоносные установки руткитов коммерчески мотивированы, и для их распространения характерен метод компенсации с оплатой за установку (PPI). [58] [59]
После установки руткит принимает активные меры, чтобы скрыть свое присутствие в хост-системе посредством подрыва или обхода стандартных инструментов безопасности операционной системы и интерфейса прикладного программирования (API), используемых для диагностики, сканирования и мониторинга. [60] Руткиты достигают этого, изменяя поведение основных частей операционной системы посредством загрузки кода в другие процессы, установки или модификации драйверов или модулей ядра . Методы обфускации включают в себя сокрытие запущенных процессов от механизмов мониторинга системы и сокрытие системных файлов и других данных конфигурации. [61] Нередко руткит отключает возможность ведения журнала событий операционной системы в попытке скрыть доказательства атаки. Теоретически руткиты могут подрывать любые действия операционной системы. [62] «Идеальный руткит» можно рассматривать как нечто похожее на « идеальное преступление »: такое, о котором никто не осознает, что оно имело место. Руткиты также принимают ряд мер для обеспечения своего выживания от обнаружения и «очистки» антивирусным программным обеспечением в дополнение к обычной установке в Ring 0 (режим ядра), где они имеют полный доступ к системе. К ним относятся полиморфизм (изменение так, чтобы их «сигнатура» было трудно обнаружить), методы скрытности, регенерация, отключение или деактивация антивирусного программного обеспечения [63] и неустановка на виртуальных машинах , где исследователям может быть проще обнаружить и проанализировать их.
Основная проблема обнаружения руткитов заключается в том, что если операционная система была взломана, особенно руткитом на уровне ядра, нельзя доверять тому, что она обнаружит несанкционированные изменения в себе или своих компонентах. [62] Такие действия, как запрос списка запущенных процессов или списка файлов в каталоге, не могут быть уверены в том, что они будут вести себя так, как ожидается. Другими словами, детекторы руткитов, которые работают во время работы на зараженных системах, эффективны только против руткитов, которые имеют какой-либо дефект в своей маскировке или которые работают с более низкими привилегиями пользовательского режима, чем программное обеспечение обнаружения в ядре. [29] Как и в случае с компьютерными вирусами , обнаружение и устранение руткитов является постоянной борьбой между обеими сторонами этого конфликта. [62] Обнаружение может осуществляться различными подходами, включая поиск «сигнатур» вирусов (например, антивирусное программное обеспечение), проверку целостности (например, цифровые подписи ), обнаружение на основе различий (сравнение ожидаемых и фактических результатов) и поведенческое обнаружение (например, мониторинг использования ЦП или сетевого трафика).
Для руткитов режима ядра обнаружение значительно сложнее, требуя тщательного изучения таблицы системных вызовов для поиска перехваченных функций , где вредоносное ПО может подрывать поведение системы, [64] а также криминалистического сканирования памяти на предмет шаблонов, указывающих на скрытые процессы. Предложения по обнаружению руткитов для Unix включают Zeppoo, [65] chkrootkit , rkhunter и OSSEC . Для Windows инструменты обнаружения включают Microsoft Sysinternals RootkitRevealer , [66] Avast Antivirus , [67] Sophos Anti-Rootkit , [68] F-Secure , [69] Radix, [70] GMER , [71] и WindowsSCOPE . Любые детекторы руткитов, которые оказываются эффективными, в конечном итоге способствуют своей собственной неэффективности, поскольку авторы вредоносных программ адаптируют и тестируют свой код, чтобы избежать обнаружения широко используемыми инструментами. [Примечание 1] Обнаружение путем проверки хранилища, когда подозреваемая операционная система не работает, может пропустить руткиты, не распознанные проверяющим программным обеспечением, поскольку руткит не активен, а подозрительное поведение подавляется; обычное антивирусное программное обеспечение, работающее при работающем рутките, может потерпеть неудачу, если руткит эффективно скроется.
Лучший и самый надежный метод обнаружения руткита на уровне операционной системы — это выключение компьютера, подозреваемого в заражении, а затем проверка его хранилища путем загрузки с альтернативного доверенного носителя (например, «спасательного» CD-ROM или USB-флеш-накопителя ). [72] Этот метод эффективен, поскольку руткит не может активно скрывать свое присутствие, если он не запущен.
Поведенческий подход к обнаружению руткитов пытается сделать вывод о наличии руткита, ища поведение, похожее на руткит. Например, профилируя систему , можно приписать руткиту различия во времени и частоте вызовов API или в общем использовании ЦП. Метод сложен и затруднен высокой частотой ложных срабатываний . Дефектные руткиты иногда могут вносить очень очевидные изменения в систему: руткит Alureon приводил к сбою систем Windows после того, как обновление безопасности выявило недостаток дизайна в его коде. [73] [74] Журналы анализатора пакетов , брандмауэра или системы предотвращения вторжений могут представлять доказательства поведения руткита в сетевой среде. [26]
Антивирусные продукты редко обнаруживают все вирусы в публичных тестах (в зависимости от того, что используется и в какой степени), даже несмотря на то, что поставщики программного обеспечения безопасности включают обнаружение руткитов в свои продукты. Если руткит попытается скрыться во время антивирусного сканирования, детектор скрытности может это заметить; если руткит попытается временно выгрузить себя из системы, обнаружение сигнатур (или «отпечатки пальцев») все равно может его обнаружить. [75] Этот комбинированный подход заставляет злоумышленников внедрять механизмы контратаки или «ретро» процедуры, которые пытаются завершить работу антивирусных программ. Методы обнаружения на основе сигнатур могут быть эффективными против хорошо опубликованных руткитов, но менее эффективны против специально созданных руткитов с пользовательским рутом. [62]
Другой метод, который может обнаружить руткиты, сравнивает «доверенные» необработанные данные с «испорченным» содержимым, возвращаемым API . Например, двоичные файлы, присутствующие на диске, можно сравнить с их копиями в операционной памяти (в некоторых операционных системах образ в памяти должен быть идентичен образу на диске), или результаты, возвращаемые API файловой системы или реестра Windows, можно проверить по необработанным структурам на базовых физических дисках [62] [76] — однако в первом случае некоторые допустимые различия могут быть введены механизмами операционной системы, такими как перемещение памяти или шимминг . Руткит может обнаружить наличие такого сканера на основе различий или виртуальной машины (последний обычно используется для выполнения судебно-медицинского анализа) и скорректировать свое поведение таким образом, чтобы никакие различия не могли быть обнаружены. Обнаружение на основе различий использовалось инструментом RootkitRevealer Руссиновича для обнаружения руткита Sony DRM. [1]
Подписание кода использует инфраструктуру открытого ключа для проверки того, был ли файл изменен с момента цифровой подписи его издателем. В качестве альтернативы владелец или администратор системы может использовать криптографическую хэш-функцию для вычисления «отпечатка пальца» во время установки, что может помочь обнаружить последующие несанкционированные изменения в библиотеках кода на диске. [77] Однако несложные схемы проверяют только то, был ли код изменен с момента установки; подрывная деятельность до этого времени не поддается обнаружению. Отпечаток пальца должен быть восстановлен каждый раз, когда в систему вносятся изменения: например, после установки обновлений безопасности или пакета обновления . Хэш-функция создает дайджест сообщения , относительно короткий код, вычисляемый из каждого бита в файле с использованием алгоритма, который создает большие изменения в дайджесте сообщения с еще меньшими изменениями в исходном файле. Пересчитывая и сравнивая дайджест сообщения установленных файлов через регулярные промежутки времени с доверенным списком дайджестов сообщений, можно обнаруживать и отслеживать изменения в системе — при условии, что исходная базовая линия была создана до добавления вредоносного ПО.
Более сложные руткиты способны нарушить процесс проверки, предоставив немодифицированную копию файла для проверки или внеся изменения кода только в память, регистры реконфигурации, которые позже сравниваются с белым списком ожидаемых значений. [78] Код, который выполняет операции хэширования, сравнения или расширения, также должен быть защищен — в этом контексте понятие неизменяемого корня доверия подразумевает, что самый первый код, измеряющий свойства безопасности системы, сам должен быть доверенным, чтобы гарантировать, что руткит или буткит не скомпрометирует систему на самом фундаментальном уровне. [79]
Принудительный полный дамп виртуальной памяти захватит активный руткит (или дамп ядра в случае руткита режима ядра), что позволит провести автономный криминалистический анализ с помощью отладчика в отношении полученного файла дампа , без того, чтобы руткит смог предпринять какие-либо меры для маскировки себя. Эта техника является узкоспециализированной и может потребовать доступа к непубличному исходному коду или отладочным символам . Дампы памяти, инициированные операционной системой, не всегда могут быть использованы для обнаружения руткита на основе гипервизора, который способен перехватывать и подрывать попытки чтения памяти самого низкого уровня [6] — в этом сценарии для дампа памяти может потребоваться аппаратное устройство, например, реализующее немаскируемое прерывание . [80] [81] Виртуальные машины также облегчают анализ памяти скомпрометированной машины из базового гипервизора, поэтому некоторые руткиты по этой причине избегают заражения виртуальных машин.
Ручное удаление руткита часто бывает чрезвычайно сложным для обычного пользователя компьютера, [27] но ряд поставщиков программного обеспечения безопасности предлагают инструменты для автоматического обнаружения и удаления некоторых руткитов, как правило, как часть антивирусного пакета . По состоянию на 2005 год ежемесячное средство удаления вредоносных программ Windows[обновлять] от Microsoft способно обнаруживать и удалять некоторые классы руткитов. [82] [83] Кроме того, Windows Defender Offline может удалять руткиты, поскольку он запускается из доверенной среды до запуска операционной системы. [84] Некоторые антивирусные сканеры могут обходить API файловой системы , которые уязвимы для манипуляций руткитом. Вместо этого они напрямую получают доступ к необработанным структурам файловой системы и используют эту информацию для проверки результатов от системных API, чтобы выявить любые различия, которые могут быть вызваны руткитом. [Примечания 2] [85] [86] [87] [88] Есть эксперты, которые считают, что единственный надежный способ их удаления — переустановить операционную систему с доверенного носителя. [89] [90] Это связано с тем, что антивирусные и вредоносные средства удаления, работающие на ненадежной системе, могут быть неэффективны против хорошо написанных руткитов режима ядра. Загрузка альтернативной операционной системы с доверенного носителя может позволить смонтировать зараженный системный том и потенциально безопасно очистить его, а также скопировать критические данные — или, в качестве альтернативы, провести судебно-медицинскую экспертизу. [26] Для этой цели можно использовать легкие операционные системы, такие как Windows PE , Windows Recovery Console , Windows Recovery Environment , BartPE или Live Distros , что позволяет «очистить» систему. Даже если тип и природа руткита известны, ручное восстановление может быть непрактичным, в то время как переустановка операционной системы и приложений безопаснее, проще и быстрее. [89]
Усиление защиты системы представляет собой один из первых уровней защиты от руткита, чтобы предотвратить его установку. [91] Применение исправлений безопасности , реализация принципа наименьших привилегий , сокращение поверхности атаки и установка антивирусного программного обеспечения являются некоторыми стандартными передовыми методами обеспечения безопасности, которые эффективны против всех классов вредоносных программ. [92] Новые спецификации безопасной загрузки, такие как UEFI, были разработаны для устранения угрозы буткитов, но даже они уязвимы, если предлагаемые ими функции безопасности не используются. [50] Для серверных систем удаленная аттестация сервера с использованием таких технологий, как Intel Trusted Execution Technology (TXT), обеспечивает способ проверки того, что серверы остаются в заведомо хорошем состоянии. Например, шифрование данных в состоянии покоя Microsoft Bitlocker подтверждает, что серверы находятся в заведомо «хорошем состоянии» при загрузке. PrivateCore vCage — это программное обеспечение, которое защищает используемые данные (память), чтобы избежать буткитов и руткитов, проверяя, что серверы находятся в заведомо «хорошем» состоянии при загрузке. Реализация PrivateCore работает совместно с Intel TXT и блокирует интерфейсы серверной системы, чтобы избежать потенциальных буткитов и руткитов.
Другой защитный механизм, называемый подходом Virtual Wall (VTW), служит в качестве легкого гипервизора с возможностями обнаружения руткитов и отслеживания событий. В обычном режиме (гостевой режим) работает Linux, и когда загруженный LKM нарушает политики безопасности, система переключается в режим хоста. VTW в режиме хоста обнаруживает, отслеживает и классифицирует события руткитов на основе механизмов контроля доступа к памяти и внедрения событий. Экспериментальные результаты демонстрируют эффективность VTW в своевременном обнаружении и защите от руткитов ядра с минимальными накладными расходами на ЦП (менее 2%). VTW выгодно сравнивается с другими схемами защиты, подчеркивая его простоту в реализации и потенциальный прирост производительности на серверах Linux. [93]