Ай Ком Сервис TDL-4: дальше будет только хуже - Аналитика, тесты - uslugi_i_servis - Ай Ком Сервис
Главная » Статьи » Аналитика, тесты

TDL-4: дальше будет только хуже
Прошло не так уж много времени с последнего обзора о рутките TDSS. Как предполагали эксперты из ЛК, TDSS продолжает совершенствоваться. В июле-августе появилась совершенно новая модификация данного руткита — TDL-4, — которая способна заражать не только 32-х битные операционные системы, но и 64-х битные. В данной статье мы расскажем о новом способе загрузки руткита, а также о его возможности обхода защиты системы, встроенной в 64-х битные операционные системы Windows, — PatchGuard и механизма проверки целостности ядра.  Как и в предыдущей модификации, руткит использует собственную файловую систему, зашифрованнуюс использованием метода RC4, и все свои файлы хранит в последних секторах физического диска.

Расшифрованные структуры файловой системы руткита

Как и раньше, руткит использует конфигурационный файл.


Пример содержимого файла конфигурации TDL-4

Конфигурационный файл TDL-4 немного изменился по сравнению с конфигурационным файлом TDL-3. Основное отличие — номер версии руткита (version=0.02). Как можно заметить из списка компонент, в файлах присутствуют цифры 32 и 64. Это говорит о том, что руткит должен работать как на 32-х битных ОС, так и на 64-х битных ОС.

Как происходит заражение и загрузка

В этот раз TDSS избрал иной, уже проверенный способ заражения. TDL-4, как и другой известный руткит — бруткит, заражает главную загрузочную запись (MBR). Данный способ позволяет ему загружаться раньше операционной системы, сразу после старта компьютера. Код в MBR использует нехитрую схему шифрования, однако даже ее небольшие изменения позволят обходить методы сигнатурного детектирования большинства антивирусных продуктов.


Зараженный и зашифрованный MBR


Расшифрованный MBR со строчкой ldr16

Основной задачей небольшого загрузчика в MBR является поиск компонента ldr16 на зашифрованном разделе руткита, расшифровка ldr16, загрузка его в память и передача на него управления.


Поиск ldr16, загрузка в память и передача управления

LDR16

Первое, что делает ldr16 при своей загрузке, — перехватывает прерывание BIOS 13h, которое отвечает за дисковый ввод-вывод. Далее он находит на своем зашифрованном разделе оригинальный (незараженный) MBR, сохраненный туда во время заражения, и копирует его в памяти поверх зараженного. После этого управление передается данной оригинальной загрузочной записи. Оригинальный MBR считывает загрузчик операционной системы с диска и передает ему управление. Тот, в свою очередь, считывает ядро и необходимые зависимости. Для чтения с диска будет использоваться перехваченное руткитом прерывание 13h.


Перехваченное прерывание BIOS 13h

При каждом вызове прерывания BIOS 13h вызывается перехват руткита, который ожидает чтения определенных файлов в память. Необходимым компонентом для дальнейшей загрузки руткита является системный драйвер kdcom.dll, который используется при инициализации ядра операционной системы на ранней стадии.


Компонент отладчика ОС Windows

Для поиска в памяти считанного kdcom.dll функция перехвата прерывания проверяет каждый считанный сектор и пытается найти сигнатуру, которая соответствует данному файлу.


Поиск kdcom.dll по сигнатуре

В случае успешного совпадения сигнатуры, ldr16 в зависимости от разрядности операционной системы ищет на зашифрованном разделе руткита компоненты ldr32 или ldr64, считывает их с диска и заменяет считанный в память оригинальный kdcom.dll содержимым одного из них. Таким образом, вместо системного компонента в память будет загружен вредоносный компонент TDL-4. В ldr16 присутствует еще один функционал — это процедура изменения BCD в памяти. BCD — это куст реестра, который используется менеджером загрузки Windows и поддерживается, начиная с Windows Vista. Этот механизм заменил собой устаревший boot.ini.


Поиск значений и изменение их в BCD

TDL-4 находит в BCD ключ BcdLibraryBoolean_EmsEnabled по сигнатуре «16000020» и подменяет его ключом «26000022» ‑ BcdOsLoader Boolean_WinPEMode, таким образом включая системный режим WinPE. В данном режиме не производится проверка целостности, и система не проверяет подпись вредоносного компонента kdcom.dll. Включения на некоторое время этого режима достаточно, чтобы обойти проверку. После успешной загрузки вредоносного компонента, данный режим выключается подменой параметра «/MININT» на невалидное значение.

LDR32/64

Для успешной инициализации системы вредоносным компонентам ldr32/64 необходимо поддержать функционал системной библиотеки kdcom.dll.


Экспортируемые функции ldr64

Такие же экспортируемые функции содержатся в оригинальной kdcom.dll. Однако в руткит-компоненте лишь одна из этих функций содержит полезную нагрузку ‑ KdDebuggerInitialize1. Остальные функции — это «заглушки», возвращающие успешный результат операции. Таким нехитрым образом руткит решает сразу две задачи: продолжает свою инициализацию и противодействует системному отладчику.

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


Инициализация ядра и вызов KdDebuggerInitialize1

Код ldr32 и ldr64 практически идентичен, т.е. эти два компонента собраны из одного исходного кода. Схематичное описание дальнейшей инициализации руткита при вызове KdDebuggerInitialize1:

  • Установка нотификации на загрузку образа в память с помощью функции PsSetLoadImageNotifyRoutine.
  • Создание объекта драйвера с помощью недокументированной функции IoCreateDriver. Создание объекта сопровождается вызовом функции инициализации, которая передается как параметр функции IoCreateDriver.
  • В функции инициализации устанавливается еще одна нотификация, но уже с использованием системной функции IoRegisterPlugPlayNotification.
  • При вызове PnP-нотификации происходит чтение зашифрованного раздела TDL-4, поиск основного руткит-драйвера drv32/drv64 в зависимости от разрядности операционной системы, чтение его с диска и загрузка в память. После необходимых настроек вызывается точка входа основного руткит-драйвера.

DRV32/64

После успешной инициализации LDR32/64, в память загружается основной компонент руткита, который отвечает за сокрытие самого факта инфицирования операционной системы. То есть при обращении к секторам диска, в которых расположены критически важные компоненты руткита, будет выдаваться подложное содержимое. TDL-4 использует ту же самую технику установки перехватов, что и предыдущая модификация — TDL-3. Использование подобной техники позволяет концептуально обойти защиту ОС Windows x64 — PatchGuard.

Следующие скриншоты получены на операционной системе Windows 7 x64.


Стек дискового устройства


Последний объект-устройство в стеке и обслуживающий его драйвер


Драйвер руткита и функции-перехватчики

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

Заключение

предсказывали, что вредоносные программы станут еще сложнее и опаснее. «Уже сейчас существуют угрозы, использующие современные вирусные технологии заражения файлов и руткит-функционал. Многие антивирусные программы неспособны вылечить инфицированные этими вредоносными программами системы. В дальнейшем ситуация будет ухудшаться. С одной стороны, антивирусные технологии будут развиваться так, чтобы максимально усложнить процесс проникновения угроз в систему, с другой — те угрозы, которым все-таки удастся обойти такие системы защиты, станут практически неуязвимыми», ‑ писал Александ Гостев.Вирусописатели стараются отвечать современным запросам киберкриминального рынка. В своих прогнозах не 2010, эксперты ЛК В 2011 году, согласно нашим прогнозам, увеличится число угроз, работающих на 64-битных платформах. 64-х битные операционные системы набирают популярность у пользователей, и в большей степени этому способствуют предустановленные в покупаемом оборудовании ОС. А увеличение числа пользователей, приводит к росту потребности киберкриминала в поддержке новых операционных систем вредоносными программами. Создатели TDSS развивают свою программу в соответствии с современными тенденциями вирусописательства. Семейство TDSS идет именно по пути усложнения руткит-функционала, а TDL-4 уже способен заражать 64-х битные операционные системы. Однако на x64 платформах руткиты режима ядра чувствуют себя не так вольготно, как на x86 системах. Это является одним из факторов выбора метода инфицирования компьютера — заражение MBR. Другим фактором является то, что большинство современных антивирусных технологий, прежде всего анти-руткит технологии, не готовы бороться с угрозами на x64 платформе, и это сильно облегчает жизнь вирусописателям.

«Вооруженный до зубов» TDL-4 представляет очень серьезную опасность для пользователей — и продолжает развиваться. Антивирусным компаниям необходимо в срочном порядке дописывать собственные анти-руткит компоненты, ведь в случае заражения данным руткитом у обычных пользователей просто не остается никаких шансов. Для обнаружения и излечения TDL-4 как на x86, так и на x64 платформах, «Лаборатория Касперского» предлагает воспользоваться персональными продуктами KAV/KIS или специальной утилитой  TDSSKoller, которая способна обнаруживать не только данную модификацию, но и предыдущие ее версии.




Категория: Аналитика, тесты | Добавил: Administrator (14.12.2010)
Просмотров: 658 | Теги: интернет, Черви, компьютерные вирусы, windows, TDL-4, интернет угрозы, ядро системы, mbr, TDSS, TDSSKoller | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]