Russian
Интернет находится в нормальном состоянии, крупных эпидемий и других серьезных инцидентов службой мониторинга «Лаборатории Касперского» не зафиксировано. Уровень опасности: 1

TDSS. TDL-4

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

Компоненты

Список компонент TDL-4 видоизменился со времени TDL-3. Теперь он выглядит так:

bckfg.tmp
cfg.ini
cmd.dll
cmd64.dll
drv32
drv64
ldr16
ldr32
ldr64
mbr

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

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

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

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

Конфигурационный файл TDL-4 немного изменился по сравнению с конфигурационным файлом TDL-3.Основное отличие — номер версии руткита (version=0.02).

Как можно заметить из списка компонент, в файлах присутствуют цифры 32 и 64. Это говорит о том, что руткит должен работать как на 32-х битных ОС, так и на 64-х битных ОС.

Заражение и загрузка

MBR

В этот раз 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» ‑ BcdOsLoaderBoolean_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 или специальной утилитой TDSSKiller, которая способна обнаруживать не только данную модификацию, но и предыдущие ее версии.


21 комментариев

старые сверху
«дерево»
 

Сергей Голованов

13 дек 2010, 17:53
0
 

ЙО. ГУД! Думаю, что в следующем году и я подтянусь)

Вячеслав Русаков

13 дек 2010, 18:13
2
 

Re:

О да, мне не помешает помощник в разработке следующей версии =))))

Сергей Голованов

13 дек 2010, 18:20
2
 

Re: Re:

Легко + надо будет искать выход на новые рынки... Ну ты в курсе)

holovtsintsi

13 дек 2010, 18:16
-2
 

Что то очень смутно ...Первое, что делает ldr16 при своей загрузке, - перехватывает прерывание BIOS 13h...
А так материал отличный,спасибо.

Вячеслав Русаков

13 дек 2010, 18:20
1
 

Re:

И что тут непонятного?

holovtsintsi

14 дек 2010, 03:20
0
 

Re: Re:

Можно поподробнее?Ибо насколько я знаю,такую операцию невозможно произвести.

Вячеслав Русаков

14 дек 2010, 14:33
0
 

Re: Re: Re:

Рекомендую прочесть что-либо (гугл) про старые резидентные вирусы ;)

Trojan.Alexey.

13 дек 2010, 18:58
0
 

Эту статью надо на главную.В раздел "сложные вредоносные программы"

Umnik

13 дек 2010, 19:31
0
 

Я бы еще посмотрел результаты лечения активного заражения пятком антивирусов %)

Вячеслав Русаков

13 дек 2010, 19:46
2
 

Re:

Это вопрос к anti-malware.ru (иностранные не умеют тестировать подобное). Про тест лечения активного заражения пока ничего не слышно и не видно.

Вячеслав Копейцев

13 дек 2010, 21:11
0
 

Слава, спасибо за статью :)

curtw

14 дек 2010, 22:19
0
 

Evolution of TDL

Thanks, it's a good article. I've been analyzing a TDL4 infection here for some time and this info will be useful to help me dig deeper. I hope to eventually publish a blog on my investigations at perpetualhorizon.blogspot.com. Nice work.

Mind Gear

15 дек 2010, 04:28
1
 

Хотелось бы узнать, изменился ли способ проникновения в систему и если да, то за счет каких уязвимостей?
Насчет неуязвимости - ну можно же загрузить лечащую утилиту или антивирус в монопольном режиме с оптического диска, например. Да, вылечить сложно, но хотя бы будет легче выявить факт заражения - а это уже полдела, ведь задача вредоноса состоит и в том, чтобы пользователю себя не выдать. Вряд ли вообще возможно выкурить такие вещи без монопольного доступа к жесткому диску. Это как игра в "царь горы" - кто захватил контроль ниже/раньше - тот и царь =)
А вообще - то это концептуально МУЛЬТИБУТКИТ =)

исправлено: Mind Gear, 15 дек 2010, 04:59

Вячеслав Русаков

15 дек 2010, 15:32
0
 

Re:

Сам я не анализировал юзермодную часть руткита. Про уязвимость мы писали тут - http://www.securelist.com/ru/blog/207760875/TDL4_stal_ispolzovat_0_day_uya zvimost

Ash4er

17 дек 2010, 15:36
0
 

Отличная статья! Спасибо!

Андрей

18 дек 2010, 00:02
0
 

Про статью

Ко всем ответам хочу добавить то, что ещё очень интересно и занимательно)

senseless

19 дек 2010, 14:20
0
 

Не слишком оперативная статья =_=

Вячеслав Русаков

19 дек 2010, 21:57
1
 

Re:

В свое оправдание могу сказать, что я занят совсем другими вещами, более важными, чем написание статей =) Статьи - это бонус для читателей.

Вячеслaв

15 янв 2011, 22:57
0
 

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

Вячеслав Русаков

19 янв 2011, 09:00
1
 

Re:

Нет, возможность обхода PatchGuard заключается в самих перехватах. Т.е. обход концептуальный. А переключение загрузки дает обход проверки code integrity.

miodj

14 май 2011, 00:24
0
 

Уважаемый Вячеслав.

Прошу Вас о помощи! Уже пол года пытаюсь вытравить зловреда со всех 4 своих ноутов. В битве погибли 2 жестких диска... и каждый раз при активных попытках вытравить этого гада он просто рушит файловую систему и коцает кластеры и блоки! Ну да это лирика. Перейду к сути вопроса.
В августе 2010 года столкнулся с незапланированными перезагрузками компьютера и начал рыть. Сам по образованию дизайнер, не програмист, закончил Муху. Но в силу многочасового времяпрепровождения у компьютера и многократных переустановок Винды и настроек своих прог поковырял достаточно ) одним словом до этого зловреда любая битва не занимала и 2 часов... Край - переустановка! А тут...
Факты: этот гад однозначно буткит, но какой-то полиморфный! Меняет MBR - переустановка не помогает. Не детектируется ни одним АВ кроме АВГ в режиме руткит проверки на 32 битке ХР. На 64 битке 7win вааще не детектится. Не передается через сетку, но все мои внешние HDD заражены. Low Level Format не помогает (такое ощущение, что он отделяет себе сектора и скрывает их). Начинаешь его вытравлять - убивает диски наповал!
Что удалось выяснить: точно вламливается в прерывание 13h, на флешке которая была создана с востановительными утилитами обнаружился файл biosinfo.txt, в котором были подробно описаны около 160 уязвимостей bios для разных платформ, но перепрошивка биоса не спасла ни на одном ноуте.
Одним словом устал... Помогите если сможете!

Для добавления комментариев необходимо


Bookmark and Share
Закладки

Об авторе

Также в аналитике

В блоге

Источники