Растущая угроза: руткиты Win32::Журнал СА 10.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6225
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6931
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4213
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3006
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3806
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3819
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6315
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3168
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3459
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7276
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10645
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12364
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13998
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9123
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7077
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5387
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4614
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3426
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3154
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3399
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3024
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Растущая угроза: руткиты Win32

Архив номеров / 2006 / Выпуск №10 (47) / Растущая угроза: руткиты Win32

Рубрика: Безопасность /  Угрозы

Артем Баранов

Растущая угроза: руткиты Win32

Для хакеров и вирусописателей во все времена был актуален вопрос, как сделать работающий код, файл на диске или раздел реестра невидимым для программ, работающих в системе. Решение этого вопроса пришло из мира UNIX и называется rootkit.

Под руткитом понимается технология, используя которую, можно скрыть в системе что угодно, в том числе работающий процесс, файл на диске, раздел реестра. Применяя такую технологию, хакер может скрыть раздел в реестре, куда записался бэкдор или работающий клиентский модуль трояна. С появлением такой технологии в Windows у администраторов начались головные боли. Вы сможете гораздо эффективнее решить проблему, если будете понимать, как устроены руткиты, для чего они нужны, с помощью чего можно их удалять и как это делать вручную. В статье рассмотрены руткиты для Windows NT 5 (Windows 2000, 2003 Server, XP).

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

Руткиты пользовательского режима

Руткиты пользовательского режима легче в реализации, чем руткиты режима ядра. Первые в свою очередь можно разбить на две группы. К одной относятся руткиты, которые являются троянскими программами и заменяют настоящие приложения. Например, если для отображения процессов используется tlist.exe из Resource Kit, то можно написать свою tlist.exe, например с использованием Psapi или библиотеки Tool Help, скрывающую имя конкретного процесса и подменить ею настоящую tlist.exe. Недостаток такого подхода очевиден. Кому захочется заново написать диспетчер задач Windows для скрытия определенного процесса. Второй тип руткитов 3-го кольца отличается от первого техникой реализации. Руткиты, относящиеся ко второму типу, используют общий принцип функционирования, именуемый перехватом API-вызовов. Он был описан Дж. Рихтером в его монографии «Windows для профессионалов» и М. Питреком «Секреты системного программирования в Windows 95». Этот тип также может быть разбит на два. К первому следует отнести руткиты, перехватывающие вызовы DLL подсистемы окружения Win32 (Kernel32, Advapi32, User32, Gdi32). Ко второму типу относятся руткиты, перехватывающие недокументированные «родные» API (Native API) в Ntdll.dll. Напрашивается вопрос, зачем перехватывать недокументированные API, если можно перехватить «обычные». Дело в том, что некоторые стандартные программы Microsoft, например диспетчер задач (task manager), для получения статистики используют не обычные API, а недокументированные. Тот же диспетчер задач использует для получения списка процессов не что-то вроде Psapi, а функцию NtQuerySystemInformation, которая хоть и документирована в последних SDK, но далеко не полностью. Изучая лишь SDK по этой функции, можно долго недоумевать, как диспетчер задач получает с  помощью нее информацию о процессах. Полное описание этой функции вы можете увидеть в книге Г. Неббета «Справочник по базовым функциям API Windows NT/2000». Очевидный недостаток такого руткита заключается в том, что он реализован с использованием структур, которые могут быть изменены в следующей версии Windows. По вышесказанному следует сделать несколько замечаний. Во-первых, руткиты для Windows распространяются очень быстро. Поэтому говорить о том, что что-то является недокументированным, бессмысленно, т. к. хакеры уже давно дизассемблировали код Kernel32.dll и Ntdll.dll и опубликовали свои соображения на этот счет. Во-вторых, перехват API-вызовов на уровне Ntdll.dll дает некоторые существенные преимущества. Дело в том, что все библиотеки, получающие информацию о процессах, типа Psapi, обращаются в конечном счете к одной точке входа в Ntdll.dll, которая предоставляет неисчерпаемую системную информацию – NtQuerySystemInformation.

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

Руткиты режима ядра, как уже упоминалось, функционируют на уровне ядра NT и более сложны в реализации. В их основу положен тот же механизм перехвата API-вызовов, но уже на уровне ядра. С использованием таких руткитов можно модифицировать как само ядро, так и объекты ядра. Учитывая, что устройство объектов ядра является полностью недокументированным, можно смело сказать, что далеко не каждый профессионал в Win32 может разработать такой руткит. Хорошей отправной точкой в этом послужит книга С. Шрайбера «Недокументированные возможности Windows 2000». По сути, руткиты режима ядра представляют собой драйверы, загруженные в период работы Windows. Механизм перехвата API-вызовов на уровне ядра впервые был предложен М. Руссиновичем и Б. Когсвелом, авторами sysinternals.com. Он базируется на подмене адресов в таблице диспетчеризации системных сервисов на свои обработчики, например, на адреса функций драйвера. Перед тем, как менять адреса, руткит сохраняет настоящие адреса системных сервисов в своем буфере. Когда ядро обрабатывает системный сервис, это приводит к активации не настоящей функции, а троянской (т.е. функции драйвера), та в свою очередь вызывает настоящий сервис по сохраненному адресу и фильтрует результат. Основное преимущество таких руткитов в том, что они независимы от процессов, а точнее от их виртуальных адресных пространств. Теперь о недостатках руткитов режима ядра. Как известно, разработка кода режима ядра сама по себе довольно сложна и налагает определенные ограничения. Одна малейшая ошибка в коде, например появление жучка или необработанного исключения, повлечет крах всей системы. Кроме того, разработка такого руткита очень сложна, требует понимания устройства и работы самой системы.

Хотя руткиты пользовательского режима могут воздействовать только на процесс, для которого они предназначены, существуют методы, позволяющие руткиту работать «глобально». Например, руткит может поражать вновь создаваемые процессы. Как только система создаст новый процесс, руткит сможет узнать об этом, используя системный сервис для перечисления процессов. Затем руткиту нужно остановить все потоки в новом процессе и попытаться модифицировать таблицу импорта или переписать первые байты перехватываемой функции. Другой способ заключается в следующем. В реестре существует раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows с параметром AppInit_DLLs. Система автоматически загружает DLL, указанные в этом параметре.

Этапы обработки API в Win32 и места внедрения руткитов

Этапы обработки API в Win32 и места внедрения руткитов

Руткиты режима ядра не являются «полноценными» драйверами устройств, т.к. никакими устройствами они не управляют. Но все же драйверами называться могут. Об этом говорят Руссинович и Соломон в книге «Inside Windows NT», что драйверы пишут не для управления устройствами, а только для внедрения кода, функционирующего в режиме ядра. Аналогичный подход использует программа Руссиновича Regmon (Registry Monitor), которая отображает обращения к системному реестру. Она запускает драйвер во время своего выполнения, тот получает доступ к таблице диспетчеризации системных сервисов и модифицирует ее на свои обработчики. Затем, когда какой-то процесс вызывает сервис реестра, управление получает установленная ловушка, которая в свою очередь вызывает настоящий сервис реестра, запоминает возвращенные данные в буфере, а затем приложение забирает их по IOCTL и выводит. (Подробности см. в книге Руссиновича, Соломона «Внутреннее устройство Microsoft Windows: Windows XP, Windows 2003 Server, Windows XP».)

Чтобы наглядно представить себе вышеприведенную информацию, на рис. 1 показаны этапы диспетчеризации (обработки) системного сервиса в Win32. Изображен поток, пишущий данные в файл, и два руткита: 3-го и 0-го кольца. Также изображены возможные точки проникновения руткитов. Что касается руткита пользовательского режима, то он может внедряться тремя способами:

  1. Внедрение в работающий процесс путем модификации таблицы импорта в образе EXE-файла. Так перехватываются вызовы DLL, которые связаны неявно с EXE-файлом.
  2. Модификация первых слов перехватываемой функции на инструкцию jmp, в DLL подсистемы Win32. Если DLL связывается с процессом явно (в периоде выполнения).
  3. Модификация первых слов перехватываемой функции на инструкцию jmp в Ntdll.dll. Аналогично второму.

Руткит 0-го кольца внедряется путем перезаписи адреса в таблице диспетчеризации системных сервисов.

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

В Windows процесс должен иметь права на загрузку драйвера в систему. То есть процесс должен иметь в маркере доступа активированную привилегию SeLoadDriver или иметь право ее активировать в маркере доступа.

Владея технологией rootkits, администратор может, используя специальное ПО, своевременно выявлять руткиты и удалять их из системы, а также использовать их в мирных целях, скрывая необходимые данные от пользователей. Хотя использование rootkit-технологий – это палка о двух концах. Еще не утихли страсти вокруг скандала с Sony BMG, которая использовала свой руткит в мирных целях, скрывая свои программные DRM-компоненты. Но руткит Sony способствует очень частому появлению BSOD (Blue Screen Of Death) и замедлению работы системы. Кроме того, эта история имела печальные последствия. Как известно, после появления руткита Sony в Интернет был выпущен backdoor, использующий этот руткит для сокрытия своего кода на диске. В скандале вокруг Sony BMG участвовал Руссинович, который указал, что Symantec и Kaspersky Lаb используют в своих продуктах технологии, близкие к rootkit. Например, антивирус Касперского использует технологию iStreams. Технология позволяет уменьшить время сканирования за счет создания в файлах на NTFS-томах дополнительных потоков для хранения контрольных сумм. Так как эта информация важна для работы антивируса, он скрывает эти потоки, что очень похоже на rootkit-технологию.

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

Если в системе предположительно живет руткит пользовательского режима, скрывающий что-либо, то можно написать программу, получающую информацию аналогично той, которую скрывает инфицированная руткитом программа, и сравнить результаты, полученные ими. Если руткит сидит на уровне ядра, то можно воспользоваться средством, разработанным Руссиновичем, – RootkitRevealer для удаления руткита. Скачать можно с www.sysinternals.com.

Ресурсов и книг, посвященных теме руткитов немного. Вообще же эта тема охватывает многие аспекты системного программирования для Win32. На сегодняшний день существует единственная книга, пока не выпущенная на русском языке – Hoglund, Butler «Rootkits. Subverting the Windows Kernel». Существует также ресурс, посвященный руткитам – www.rootkit.com. На нем размещено достаточно информации о руткитах, в том числе выложен исходный код некоторых из них. Также там можно найти наиболее функциональный на сегодняшний день руткит – Hacker Defender. И конечно, всем известный сайт по продвинутому системному ПО для Windows – www.sysinternals.com, где Руссинович рассматривает технологию руткитов.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru