Как вылечить вирус руткит

- TDSS
Руткиты — наиболее сложная в обнаружении и удалении разновидность компьютерной заразы. Предупрежден — значит вооружен!
Serge Malenkovich
28 марта 2013
Руткиты существуют уже около 20 лет, помогая атакующим действовать на компьютерах своих жертв, подолгу оставаясь незамеченными. Термин нередко применяется к тем вредоносным программам, которые специально созданы так, чтобы действовать на зараженном компьютере скрытно и при этом позволять удаленно контролировать ПК. Поскольку руткиты относятся к наиболее неприятным разновидностям вредоносных приложений, мы решили кратко объяснить, каков принцип действия руткита и как поступать, если вы подозреваете, что компьютер заражен подобной гадостью.
Подробней о терминах
Первоначально термин rootkit означал набор вредоносных приложений, скрывающих свое присутствие на компьютере и позволяющих хакеру делать свои дела незаметно. Слово root в названии явно указывает, что слово зародилось в мире Unix-компьютеров, но сегодня когда мы говорим о руткитах, как правило речь ведется о Windows-компьютерах, и в понятие «руткит» включаются не только средства обеспечения скрытности, но и весь набор функций вредоносного приложения. Оно обычно прячется глубоко в недрах операционной системы и специально написано таким образом, чтобы избегать обнаружения антивирусами и другими средствами безопасности. Руткит может содержать различные вредоносные инструменты, такие как клавиатурный шпион, вор сохраненных паролей, сканер данных о банковских карточках, дистанционно управляемый бот для осуществления DDoS-атак, а также функции для отключения антивирусов. Руткит обычно имеет также функции бэкдора, то есть он позволяет атакующему дистанционно подключаться к зараженному компьютеру, устанавливать или удалять дополнительные модули и таким образом делать с машиной все, что подскажет фантазия. Некоторые примеры актуальных сегодня руткитов для Windows это TDSS, ZeroAccess, Alureon and Necurs.
Вариции руткитов
Руткиты делятся на две категории: уровня пользователя и уровня ядра. Первые получают те же права, что обычное приложение, запущенное на компьютере. Они внедряются в другие запущенные процессы и используют их память. Это более распространенный вариант. Что касается руткитов уровня ядра, то они работают на самом глубинном уровне ОС, получая максимальный уровень доступа на компьютере. После инсталляции такого руткита, возможности атакующего практически безграничны. Руткиты уровня ядра обычно более сложны в создании, поэтому встречаются реже. Также их гораздо сложней обнаружить и удалить.
Есть и еще более экзотические вариации, такие как буткиты (bootkit), которые модифицируют загрузчик компьютера и получают управление еще даже до запуска операционной системы. В последние годы появились также мобильные руткиты, атакующие смартфоны под управлением Android.
Метод инфицирования
Первично руткиты попадают на компьютер так же, как другие вредоносные приложения. Обычно используется уязвимость в браузере или плагине, также популярный способ заражения – через USB-флешки. Атакующие иногда даже оставляют зараженные флешки в общественных местах, где их может подобрать подходящая жертва. Затем руткит использует уязвимости ОС чтобы получить привилегированное положение в системе и устанавливает дополнительные компоненты, обеспечивающие удаленный доступ к компьютеру и другую вредоносную функциональность.
Удаление
Основная сложность борьбы с руткитами в том, что они активно противодействуют своему обнаружению, пряча свои файлы и ключи реестра от сканирующих программ, а также применяя другие методики. Существуют утилиты, специально созданные для поиска известных и неизвестных руткитов разными узкоспециальными методами, а также с помощью сигнатурного и поведенческого анализа. Удаление руткита – тоже сложный и многоэтапный процесс, который редко сводится к удалению пары файлов. Обычно приходится применять специальную программу, такую как TDSSkiller, созданную для борьбы с руткитом TDSS. В некоторых случаях жертве даже приходится переустанавливать операционную систему, если в результате заражения компьютерные файлы повреждены слишком глубоко. Для менее сложных и вредоносных руткитов удаление может быть осуществлено с помощью обычной функции лечения в Kaspersky Internet Security.
Советы
Как отключить слежку в iOS?
У вас есть iPhone, iPad или iPod? Потратьте несколько минут на настройку служб геолокации, чтобы сэкономить заряд батареи и сохранить конфиденциальность перемещений.
Источник
Здравствуйте админ, к вам вопрос: Как удалить руткиты? Подозреваю, что у меня в операционной системе завелись подобные зверьки. Месяц назад установил Windows со всеми программами и работал всё это время без антивируса, всё выбирал, какой установить, платный или бесплатный. Короче два месяца обходился тем, что периодически сканировал систему бесплатными антивирусными утилитами Dr.Web CureIt и Kaspersky Virus Removal Tool, а теперь вот не могу их запустить, выходят ошибки при запуске. Мало того, теперь антивирусник Касперского не устанавливается, компьютер зависает на половине установки и выходит критическая ошибка, далее синий экран. А вчера провайдер и вовсе отключил мне интернет, сказал, что мой компьютер рассылает спам. Вот такие дела!
На форумах говорят, что если в системе находится руткит, то такую гадость может проделать он. Ему же нужно скрыть деятельность определённой вредоносной программы, которую сразу обнаружит антивирусный сканер или установленный антивирус. Какой программой можно удалить руткит или проще переустановить Windows?
В интернете советуют много чего, непонятно что и выбрать. Например снять жёсткий диск, подключить к другому компьютеру и просканировать его хорошим антивирусом , но у меня только один компьютер (ноутбук). Ещё советуют проверить систему утилитой RootkitRevealer, но она вроде не работает с Windows 7.
Друзья, в первой части статьи мы узнаем, что такое руткиты и какой вред они могут принести нашей операционной системе. Во второй части, мы с вами удалим руткиты с помощью антивирусного диска от Microsoft — Windows Defender Offline и диска Kaspersky Rescue Disk от «Лаборатории Касперского». В конце статьи, мы удалим руткиты с помощью специально созданных для этих целей бесплатных антивирусных утилит: TDSSKiller, Dr.Web, AVZ и GMER.
- Друзья, открою Вам секрет, в настоящее время с руткитами идёт настоящая война, просто это не афишируется и если вам посчастливится словить серьёзный и только что написанный руткит, справиться с ним будет очень нелегко даже профессионалу. Поэтому, не забывайте создавать бэкапы операционной системы и не отключайте никогда восстановление системы. Устанавливайте только 64-разрядные Windows 7 или Windows 8, так как в 64-битной операционной системе руткиту сложнее закрепиться.
Что из себя представляет руткит? Руткит – это программа, маскирующая нахождение в операционной системе других вредоносных программ и всё, что относится к ним (процессы, ключи в реестре и так далее), происходит это путём перехвата и модификации низкоуровневых API-функций. Ну а работающая в нашей системе вредоносная программа может сделать много плохих дел, например ваш компьютер станет частью «ботнета» —компьютерной сети, состоящей из большого количества заражённых компьютеров. Злоумышленники могут использовать ресурсы заражённых компьютеров по своему усмотрению (рассылать спам, участвовать в DDoS-атаке на определённые сайты и так далее). Это скорее всего и произошло с компьютером нашего читателя.
Как удалить руткиты при помощи антивирусного диска
По моему мнению, очень хорошее оружие от руткитов, да и вообще от всех вирусов, это антивирусный диск. В первую очередь можно использовать антивирусный диск от Microsoft — Windows Defender Offline,
он специально заточен для поиска и удаления руткитов и практически всех существующих вредоносных программ. Ещё бы я посоветовал антивирусный диск Kaspersky Rescue Disk от «Лаборатории Касперского».
Дело в том, что когда вы загружаете ваш компьютер с антивирусного диска и проверяете им заражённую систему, вредоносные программы никак не могут этому воспрепятствовать, так как Windows в это время находится в нерабочем состоянии и соответственно все вирусные, файлы, находящиеся в системе, видны как на ладони, а значит легче обнаруживаются и нейтрализуются.
Как скачать данные антивирусные диски в виде образа, прожечь на болванку, загрузить с них компьютер и удалить руткиты, вы можете прочесть в наших пошаговых статьях, ссылки приведены выше.
Как удалить руткиты с помощью бесплатных антивирусных утилит
Очень эффективны в борьбе с руткитами несколько бесплатных антивирусных утилит: TDSSKiller, Dr.Web, AVZ и GMER. Первая рассматриваемая нами утилита, это TDSSKiller от «Лаборатории Касперского», вторая Dr.Web CureIt и третья AVZ тоже от российских разработчиков антивирусных программ, четвёртая GMER.
Чтобы скачать TDSSKiller, идём по ссылке https://support.kaspersky.ru/5350?el=88446#, жмём «Как вылечить зараженную систему», нажимаем «Скачайте файл TDSSKiller.exe»
Запускаем его, можете обновить программу.
Начать проверку.
TDSSKiller обнаруживает нижеперечисленные подозрительные сервисы или файлы:
Скрытый сервис – скрытый ключ в реестре;
Заблокированный сервис – недоступный ключ в реестре;
Скрытый файл – скрытый файл на диске;
Заблокированный файл — файл на диске невозможно открыть обычным способом;
Подмененный файл — при чтении выходит подменное содержимое файла;
Rootkit.Win32.BackBoot.gen – возможно заражена загрузочная запись MBR.
Если у вас установлена программа Daemon tools, по окончании сканирования программа выдаст такое окно — Подозрительный объект, средняя опасность – Cервис: sptd.
Cервис: sptd является сервисом программы — эмулятора дисковода Daemon tools.
Чтобы точно убедиться в том, что обнаруженный файл не является руткитом или наоборот, скопируйте обнаруженные подозрительные объекты в карантин, выбрав действие Скопировать в карантин, файл при этом не удалится из системы.
Найти карантин можно здесь C:TDSSKiller_Quarantine
Затем открываем сайт VirusTotal.com, далее жмём Выберите файл, откроется проводник
Идём в карантин и выбираем файл для проверки. Открыть и Проверить.
Как видим, только одна антивирусная компания определила файл sptd.sys как вирус PAK_Generic.009.
Значит скорее всего данный файл вирусом не является и мы с вами это прекрасно знаем. В других, более спорных случаях, вы можете найти информацию в интернете или отправить файлы в Вирусную Лабораторию Касперского.
Как удалить руткиты с помощью утилиты Dr.Web CureIt
Утилиту Dr.Web CureIt скачиваем по этой ссылке https://www.freedrweb.com/cureit/, продвигаемся вниз странички и жмём Скачайте бесплатно.
Далее.
Скачать Dr.Web CureIt с функцией отправки статистики.
Отмечаем пункт «Я принимаю условия Лицензионного Соглашения» и жмём Продолжить.
Сохраняем и запускаем файл Dr.Web CureIt. Возникает окно «Запустить Dr.Web CureIt в режиме усиленной защиты, нажимаем «Отмена». В появившемся окне отмечаем пункт «Я согласен принять участие… Продолжить.
Выбрать объекты для проверки.
Отмечаем пункты Оперативная память и Руткиты и жмём Запустить проверку.
Если руткиты обнаружены не будут, советую вам отметить все пункты и проверить весь ваш компьютер на вирусы, лишним это не будет.
Как удалить руткиты с помощью утилиты AVZ
Хорошая и очень быстро работающая антивирусная утилита от Олега Зайцева, быстро найдёт и удалит различные SpyWare и руткиты в вашей операционной системе. Но предупреждаю Вас, программа работает жёстко и иногда может принять за вирус безобидный файл, поэтому перед применением AVZ, создайте точку восстановления системы. Если AVZ найдёт вредоносный файл, не торопитесь его удалять и прочтите все рекомендации из раздела Советы по лечению ПК https://z-oleg.com/secur/advice/
Переходим по ссылке https://z-oleg.com/secur/avz/download.php, нажимаем Скачать (8.4 Мб, базы от 30.01.2013).
Скачиваем архив программы и разархивируем его. После разархивации заходим в папку с программой и запускаем файл avz.exe.
Отмечаем для проверки диск с операционной системой, обычно C:, ещё отмечаем пункт Выполнить лечение, далее идём в Параметры поиска
и отмечаем пункт Детектировать перехватчики API и RooTkit и нажимаем Пуск, проверка началась.
Как удалить руткиты с помощью утилиты GMER
Утилита GMER применяется очень многими пользователями для борьбы с руткитами, утилита на английском, но мы с вами разберёмся. Также основываясь на личном опыте работы с программой, советую вам перед работой создать точку восстановления или сделать бэкап всей операционной системы, если GMER обнаружит серьёзную опасность, может вызвать огонь по своим или применить тактику выжженной земли.
Идём на сайт https://www.gmer.net/, нажимаем Download.EXE
и скачиваем утилиту, если хотите, можете скачать её в архиве or ZIP archive: gmer.zip ( 369kB ). Не удивляйтесь, что при скачивании утилиты название у неё будет отличным от GMER, например p3f14z2c.exe, делается это специально, так как находящиеся в вашей системе руткиты могут распознать утилиту и вам не удастся её запустить.
Итак, скачали GMER и запускаем её. Сразу после запуска утилиты ваша операционная система зависнет на 5-10 секунд, происходит быстрое сканирование основных системных файлов и процессов.
Отмечаем для сканирования диск C: и нажимаем Scan, начнётся сканирование Windows на предмет нахождения руткитов. Если запустить GMER по умолчанию в режиме «Quick Scan» (быстрое сканирование), произойдёт сканирование основных системных файлов на диске с операционной системой, в первую очередь можете воспользоваться им.
Когда сканирование закончится, программа выдаст вам результат, если руткиты будут найдены, они будут отмечены красным шрифтом. Если вы захотите удалить какой-либо файл, щёлкните на нём правой мышью и выберите в появившемся меню нужное действие.
Метки к статье: Вирусы
Источник
Руткит (англ. rootkit, то есть «набор root-а») — набор программных средств (например, исполняемых файлов, скриптов, конфигурационных файлов), обеспечивающих:
- маскировку объектов (процессов, файлов, каталогов, драйверов);
- управление (событиями, происходящими в системе);
- сбор данных (параметров системы).
Термин Rootkit исторически пришёл из мира UNIX, и под этим термином понимается набор утилит или специальный модуль ядра, которые злоумышленник устанавливает на взломанной им компьютерной системе сразу после получения прав суперпользователя. Этот набор, как правило, включает в себя разнообразные утилиты для «заметания следов» вторжения в систему, делает незаметными снифферы, сканеры, кейлоггеры, троянские программы, замещающие основные утилиты UNIX (в случае не ядерного руткита). Rootkit позволяет взломщику закрепиться во взломанной системе и скрыть следы своей деятельности путём скрытия файлов, процессов, а также самого присутствия руткита в системе.
В систему руткит может быть установлен различными способами: загрузка посредством эксплойта, после получения шелл-доступа (в таком случае, может использоваться средство типа wget или исходный FTP-клиент для загрузки руткита с удаленного устройства), в исходном коде или ресурсах программного продукта.
Классификация руткитов[править | править код]
- По уровню привилегий
- Уровень пользователя (user-mode)
- Уровень ядра (kernel-mode)
- По принципу действия
- изменяющие алгоритмы выполнения системных функций (Modify execution path)
- изменяющие системные структуры данных (Direct kernel object manipulation)[1]
Основные методы реализации[править | править код]
В Microsoft Windows[править | править код]
Существуют разнообразные технологии руткитов, наиболее распространенные: захват таблиц вызовов (IAT, IDT, SSDT, GDT), перехват функций (например, модификацией начальных байт), непосредственное изменение системных объектов (DKOM), методы использования драйверов.
Захват таблиц вызовов[править | править код]
Таблица вызовов представляет собой массив, в котором каждый элемент хранит адрес соответствующей процедуры. Такие таблицы существуют и в режиме ядра (IDT, CPU MSRs, GDT, SSDT, IRP dispatch table), и в режиме пользователя (IAT).
Import Address Table (IAT) — основная таблица вызовов модулей пользовательского режима. Большинство исполняемых файлов имеет одну или несколько встроенных IAT, содержащих адреса библиотечных процедур, импортируемых из DLL. [2]
На многопроцессорной машине существуют несколько экземпляров таблиц вызовов (например, IDT, GDT, MSR). Так как каждый процессор имеет собственные системные регистры (в частности, GDTR — регистр глобальной таблицы дескрипторов (GDT), IDTR — регистр дескриптора таблицы прерываний (IDT) и IA32_SYSENTER_EIP — содержит виртуальный адрес входной точки в режим ядра (MSR)), он также имеет собственные системные структуры.[3]
При изменении записи в таблице вызовов контролируется исполнение программ и, при необходимости, перенаправляется на требуемые функции. Перехваченная процедура может[4]:
- блокировать вызовы, производимые определенными приложениями (например, антивирус)
- замещать исходную процедуру
- производить мониторинг системы путём перехвата вводимых параметров
- фильтровать выходные параметры
Общая идея захвата состоит в следующем:
- Идентифицировать таблицу вызовов, получить её адрес
- Сохранить существующую в таблице запись
- Подменить запись новым адресом
- Восстановить исходную запись
Если функция перехвата предполагает вызов исходной процедуры, то блокирование и мониторинг производятся до вызова, фильтрация параметров после.
IAT — таблица вызовов, размещаемая в файловой структуре приложения. IAT сохраняет адрес процедур, экспортируемых определенной DLL. Каждая DLL, с которой сцепляется приложение во время загрузки, имеет собственную IAT. Для захвата IAT необходимо выполнить следующие действия:
- Получить доступ к адресному пространству процессора
- Локализировать IAT в образе памяти процессора
- Модифицировать требуемую IAT
Перехват таблицы вызовов (IAT)
Для манипуляции IAT, требуется доступ к адресному пространству приложения, которому таблица принадлежит. Одним из способов является внедрение DLL. Среди методов внедрения DLL в адресное пространство процесса можно указать [5]
- Модификация значения реестра AppInit_DLL
- API-вызов SetWindowsHookEx()
- Использование удаленных потоков
Перехват модификацией кода функции[править | править код]
Принцип работы основан на том, что первые байты перехватываемых функций замещаются на код перехватчика. Необходимо подчеркнуть, что при установке перехватчика не производится анализ кода перехватываемой функции: изменяется N первых байт, а не первые N машинных команд. Следствием этого факта является[6]:
- код перехватчика может быть установлен только в начале функции;
- для каждого вызова перехваченной функции перехватчику необходимо восстановить её машинный код до вызова и повторно перехватить после завершения вызова.
Алгоритм работы руткита:
- В теле перехватчика создается массив, в который записываются первые N байт каждой из перехваченных функций (обычно размер модифицированного кода не превышает 20 байт)
- Массив заполняется эталонным машинным кодом перехватываемых функций.
- В начало каждой перехватываемой функции записывается код, осуществляющий передачу управления перехватчику.
Алгоритм работы перехватчика:
- Последовательность действий, определенных злоумышленником.
- Восстановление первых N байт перехваченной функции.
- Вызов перехваченной функции.
- Повторная модификация машинного кода перехваченной функции: перезапись кода, передающего управление перехватчику, в первые байты.
- Анализ и, при необходимости, модификация результатов выполнения исходной функции.
- Выполнение операции ret, возвращение управления вызвавшей функцию программе.
Для перехвата достаточно модифицикации пяти первых байт функции, на место которых записывается операция jmp, передающая управление перехватчику руткита.
Следует отметить, что простейшие системы защиты от атак такого типа проверяют первый байт вызываемых функций на предмет наличия в них машинного кода операции jmp. В качестве меры противодействия разработчики руткитов применяют методики «маскировки» кода, записываемого в начало функции перехватчика(применения команд вида PUSH/RET, размещения нескольких операторов NOP или мусорного кода типа PUSH AX/POP АХ, а также элементы полиморфизма).
Метод модификации первых байт функций имеет ряд недостатков, связанных, в основном, с необходимостью восстановления машинного кода перехваченных функций перед их вызовом и повторного перехвата после вызова. Данные операции снижают быстродействие системы и могут послужить причиной сбоев в работе многопоточных приложений.
DKOM (Direct Kernel Object Manipulation, прямая манипуляция объектами ядра)[править | править код]
Операционные системы семейства Windows NT используют стандартные модели объектов. Различные компоненты исполняющей системы определяют один или несколько типов объектов. Каждый компонент экспортирует в режиме ядра набор поддерживаемых функции и свойств, называемый COM-интерфейсом, для манипуляции этим типом объектов. Ни один компонент не может напрямую получить доступ к другому объекту компонента. Типичными объектами режима ядра являются[7]:
- объект типа устройства (определяемый менеджером ввода-вывода тип объекта привилегированного режима, используемый для представления физического, логического или виртуального устройства)
- файловый объект
- символьные ссылки
- ключи реестра
- потоки и процессы
- диспетчерский объект (класс типов объектов привилегированного режима, используемый для управления процессами диспетчеризации и синхронизации)
Такой дизайн обеспечивает гибкость и портируемость (переносимость), например, будущие релизы операционной системы могут содержать компоненты ядра, определяющие аналогичные объекты, но имеющие совершенно другую внутреннюю структуру. Если такие компоненты будут экспортировать функции с сохранившимися названиями и параметрами, изменение не возымеет эффекта.[3]
Непосредственное манипулирование объектами ядра является достаточно мощной технологией, трудной для обнаружения. Однако при этом существует ряд недостатков, таких как нестабильность метода, зависимость от версий, сложность реализации в силу отсутствия документированного описания структур и свойств объектов. Несмотря на эти ограничения, данный метод позволяет скрывать процессы, драйверы устройств, порты, повышать уровень привилегий потоков (следовательно, процессов).
EPROCESS — это структура, служащая для внутреннего представления процесса (объект процесса). Windows использует круговой двусвязный список структур EPROCESS для отслеживания процесса исполнения. Ссылки, связывающие объекты EPROCESS, содержатся в поле ActiveProcessLink, структура которого LIST_ENTRY[4]:
struct _LIST_ENTRY *Flink;
struct _LIST_ENTRY *Blink;
} LIST_ENTRY, *PLIST_ENTRY;
Простейший алгоритм скрытия процесса:
- Получение указателя на процесс, к которому принадлежит текущий поток, с помощью вызова PsGetCurrentProcess()
- Получение PID процесса
- При несовпадении PID с искомым осуществляется переход по двусвязному списку (поле ActiveProcessLinks, тип LIST_ENTRY)
- Изменение полей ActiveProcessLinks. В частности, ссылка на следующий блок EPROCESS блока А устанавливается на блок С, аналогично ссылка на предыдущий блок в блоке С. Ссылки блока B замыкаются на своей записи. Таким образом, создаются два списка, один из которых состоит из одного элемента
Исключение процесса из списка процессов не влияет на его исполнение. В Windows планирование кода на исполнение производится на уровне потоков, процессы определяют контекст, в котором запускаются потоки. Скрытие процесса производится на внешнем уровне в инструментах, опирающихся на объекты процессов EPROCESS, таких как Диспетчер задач. Диспетчер ядра использует другую схему учета ресурсов, полагающуюся на другие структуры данных (главным образом объекта ETHREAD). Данный метод позволяет скрывать процессы без потери функциональности.[4]
Драйверы[править | править код]
Модель драйверов Microsoft поддерживает многоуровневую архитектуру, поэтому запрос ввода/вывода (I/O request, обмен данными между приложениями и драйверами) может обслуживаться серией подключенных драйверов, каждый из которых выполняет свою задачу. Цепь драйверов, обслуживающих физическое устройство, называется стеком. Такой модульный подход позволяет новым драйверам быть включенными в стек для увеличения функциональности. При этом изменяется или добавляется только отдельный участок цепи. Также некоторые периферийные устройства используют одинаковые контроллеры (и, соответственно, шины ввода/вывода). Модульность позволяет оптимизировать использование одинаковых блоков кода, вместо написания отдельного драйвера для каждого устройства.
В модели WDM определено три типа драйверов: драйвер шины, функциональные драйверы и драйверы-фильтры. Драйверы-фильтры обычно располагаются между другими модулями и захватывают проходящие через них IRPs. Перед отправлением IRP смежному драйверу фильтр может просмотреть содержимое или изменить его для воздействия на дальнейшее поведение системы. Пример, при снятии образа диска с сервера, критичного к простою, драйвер-фильтр может использоваться для изменения потока данных с целью скрытия некоторых файлов.
IRP пакет (I/O request packet) — структура данных ядра Windows, обеспечивающая обмен данными между приложениями и драйвером, а также между драйвером и драйвером. При поступлении запроса от приложения менеджер ввода/вывода формирует соответствующий IRP, который локализует и пересылается верхнему объекту в стеке драйверов. Если верхний драйвер смог самостоятельно обработать поступивший IRP, он завершает запрос и возвращает IRP менеджеру ввода/вывода. В противном случае, драйвер выполняет частичную обработку, локализует нижележащий объект в стеке и запрашивает менеджер ввода/вывода на передачу IRP следующему драйверу
При создании IRP менеджер ввода/вывода резервирует область памяти, находящуюся после заголовка. Выделенная память используется для записи массива структур IO_STACK_LOCATION, выделяемых для каждого драйвера стека:
Размер памяти соответствует количеству драйверов в стеке. Массив нумеруется с 1, соответствующую нижнему драйверу стека. Структура содержит информацию о вызываемой менеджером ввода/вывода функции управления драйвера (поля MajorFunction и MinorFunction), передаваемые функции параметры (поле Parameters, содержимое варьируется в зависимости от функции), указатель на объект драйвера (DeviceObject), указатель на функцию завершения (поле CompletionRoutine, данная функция находится в драйвере верхнего уровня).
Функция управления драйвера при первом получении IRP восстанавливает из соответствующей позиции стека ввода/вывода параметры, производя вызов IoGetCurrentIrpStackLocation(). Далее выполняются предписанные действия, после чего, в случае пересылки IRP нижнему драйверу стека, происходит:
- установка позиции стека ввода/вывода в IRP
- регистрация функции завершения (опционально)
- отправка IRP нижнему драйверу
- возврат кода статуса (NTSTATUS)
Существуют два стандартных способа установить позицию стека для следующего драйвера[8]:
- Текущая позиция пересылается без изменений, функция:
Функция уменьшает на единицу указатель на массив IO_STACK_LOCATION. Таким образом, при пересылке IRP произойдет восстановление указателя (автоматически увеличится на единицу), в итоге, будет использован тот же участок стека. При использовании данного способа, возникнет неиспользуемый участок в конце стека.
- Если необходимо передать содержимое текущей позиции стека, за исключением указателя на функцию завершения (поле CompletionRoutine), используется:
Пересылка IRP следующему драйверу производится с помощью функции:
Первым аргументом является указатель на нижележащий объект драйвера. Способ получения такого адреса определяется конкретной функцией управления, стандартного метода не существует.
Каждый запрос должен быть завершен либо последним драйвером в стеке (дальнейшая пересылка IRP невозможна), либо одним из вышестоящих.
Менеджер ввода/вывода инициализирует процесс завершения для данного IRP, когда любой из драйверов, обрабатывающих IRP, вызывает функцию завершения IoCompleteRoutine(). При её вызове менеджер ввода/вывода заполняет участок стека ввода/вывода текущего драйвера нулями, после чего вызывает драйвер более высокого уровня с установленной функцией завершения к данному IRP. Для определения способа обработки запроса драйвером нижнего уровня функции завершения драйвера более высокого уровня доступен только блок статуса ввода вывода в IRP.
Собственно, установленный таким образом драйвер-фильтр позволяет обрабатывать не только приходящие IRP-пакеты (например, блокировать чтение определенного сектора диска), но и управлять результатами обработки нижестоящих драйверов посредством инициализации функции завершения.[9]
Еще одним методом реализации руткитов является модификация MBR и загрузка до ядра операционной системы — буткиты (например, BackDoor.MaosBoot).
Данный вид вредоносных кодов в среде Windows известен с начала 1990-х годов под названием стелс-вирусов.
В UNIX и Linux[править | править код]
- реализуемые подменой основных системных утилит (очень легко обнаруживаются средствами контроля целостности, кроме того, легко блокируются средствами мандатного управления доступом типа SELinux или AppArmor);
- реализованные в виде модуля ядра и основанные на патчинге VFS или перехвате таблицы системных вызовов (sys_call_table);
- основанные на модификации физической памяти ядра.
Дополнительные возможности[править | править код]
Кроме непосредственно себя, руткит, как правило, может маскировать присутствие в системе любых описанных в его конфигурации каталогов и файлов на диске, ключей в реестре. По этой причине естественным образом появились «навесные» руткитные библиотеки. Многие руткиты устанавливают в систему свои драйверы и службы (они, естественно, также являются «невидимыми»).
Руткиты для и против DRM[править | править код]
Руткитами по сути является большинство программных средств защиты от копирования (и средств обхода этих защит — например, эмуляторы CD- и DVD-приводов)[источник не указан 797 дней].
В 2005 году корпорация Sony BMG встраивала в свои аудиодиски защиту на основе руткита, который устанавливался без ведома пользователя.
Антируткиты[править | править код]
Это утилиты или резидентные модули, обнаруживающие в системе присутствие руткитов и (в разной мере) удаляющие их. Существует множество конкурирующих средств для этого — как платных, так и бесплатных, но все они используют сходные принципы действия.
Методы детектирования руткитов
Известен алгоритм отлова MEP-руткитов. Его суть заключается в том, что одна и та же информация регистрируется несколькими способами — с использованием API и «напрямую», после чего полученные данные сравниваются в поисках расхождeний. Наиболее часто сканируются таблицы импорта и таблицы вызовов Native API, а также структурно вся файловaя система.
Базовый арсенал средств отлова руткитов основывается на следующих мeтодах.
- Сигнатурный поиск. Применяется еще со времен первых антивирусов и пpедставляет собой поиск в проверяемом файле уникальнoй цепочки байтов (сигнатуры), присущей вредоносной прогpамме.
- Эвристический или поведенческий анализатор. Эта технология основывается на поиске отклонений в настройкaх системы, конфигурационных файлах Linux или реестре Windows, подозрительном повeдении процессов и модулей и так далее.
- Контроль целостности. Этот тип поиcка основан на сравнении контрольной суммы (MD5 и тому подобное) или цифровой пoдписи разнообразных системных файлов с базой, содержащей контрольную сумму оpигинальных файлов. В случае несовпадения программа делает вывод, что файл был мoдифицирован или вовсе заменен.
Примечания[править | править код]
- ↑ Колесниченко, 2006, с. 29.
- ↑ Колесниченко, 2006, Перезапись адреса функции.
- ↑ 1 2 Solomon, Russinovich, Ionescu, 2012.
- ↑ 1 2 3 Blunden, 2009.
- ↑ Blunden, 2009, Injecting a DLL.
- ↑ Зайцев, 2006, Перехват модификацией первых байтов функции.
- ↑ Managing Kernel Objects : [англ.] // MSDN.
- ↑ Различные способы обработки IRP — краткий справочник : [англ.] // MSDN.
- ↑ Зайцев, 2006, Клавиатурный шпион на базе драйвера-фильтра.
Литература[править | править код]
- Зайцев О. Rootkits, SpyWare_AdWare, Keyloggers & BackDoors. Обнаружение и защита / Олег Зайцев. — Санкт-Петербург: БХВ-Петербург, 2006.
- Blunden B. The Rootkit Arsenal / Bill Blunden. — Plano, Texas: Wordware Publishing, Inc., 2009.
- Колесниченко Д. ROOTKITS под Windows / Денис Колесниченко. — Санкт-Петербург: Наука и Техника, 2006.
- Solomon D., Russinovich M., Ionescu A. Windows Internals / David Solomon, Mark Russinovich, Alex Ionescu. — Microsoft Press, 2012.
Ссылки[править | править код]
- Windows под прицелом // SecurityLab.Ru. — 21 декабря 2004 г. (Обзорная статья о руткитах.)
- RootKit — принципы и механизмы работы : [арх. 7 ноября 2012] / Олег Зайцев.
- Сайт «Hell Knights Crew», — исследователей, занимающихся, в том числе, VX/RAT и руткит технологиями. (недоступная ссылка с 23-01-2015 [1779 дней] — история)
- Сайт «Gretis software», — российского разработчика антивирусного, антишпионского и антируткитного ПО.
Источник