Главная→Аналитика→13 дек 2010→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-х битных ОС.
В этот раз TDSS избрал иной, уже проверенный способ заражения. TDL-4, как и другой известный руткит — буткит, заражает главную загрузочную запись (MBR). Данный способ позволяет ему загружаться раньше операционной системы, сразу после старта компьютера.
Код в MBR использует нехитрую схему шифрования, однако даже ее небольшие изменения позволят обходить методы сигнатурного детектирования большинства антивирусных продуктов.

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

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

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

Перехваченное прерывание BIOS 13h
При каждом вызове прерывания BIOS 13h вызывается перехват руткита, который ожидает чтения определенных файлов в память.
Необходимым компонентом для дальнейшей загрузки руткита является системный драйвер kdcom.dll, который используется при инициализации ядра операционной системы на ранней стадии.
Компонент отладчика ОС Windows
Для поиска в памяти считанного 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 необходимо поддержать функционал системной библиотеки kdcom.dll.
Такие же экспортируемые функции содержатся в оригинальной kdcom.dll. Однако в руткит-компоненте лишь одна из этих функций содержит полезную нагрузку ‑ KdDebuggerInitialize1. Остальные функции — это «заглушки», возвращающие успешный результат операции. Таким нехитрым образом руткит решает сразу две задачи: продолжает свою инициализацию и противодействует системному отладчику.
На ранней стадии инициализации ядра в функции Phase1Initialization произойдет вызов функции KdDebuggerInitialize1, в которой продолжится инициализация руткита.

Инициализация ядра и вызов KdDebuggerInitialize1
Код ldr32 и ldr64 практически идентичен, т.е. эти два компонента собраны из одного исходного кода.
Схематичное описание дальнейшей инициализации руткита при вызове KdDebuggerInitialize1:
После успешной инициализации 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, которая способна обнаруживать не только данную модификацию, но и предыдущие ее версии.
|
13 дек 2010, 17:53
ЙО. ГУД! Думаю, что в следующем году и я подтянусь) |
|
2 |
|
2 |
|
13 дек 2010, 18:16
Что то очень смутно ...Первое, что делает ldr16 при своей загрузке, - перехватывает прерывание BIOS 13h... |
|
0 |
|
0 |
|
13 дек 2010, 18:58
Эту статью надо на главную.В раздел "сложные вредоносные программы" |
|
13 дек 2010, 19:31
Я бы еще посмотрел результаты лечения активного заражения пятком антивирусов %) |
|
2 |
Re:
Это вопрос к anti-malware.ru (иностранные не умеют тестировать подобное). Про тест лечения активного заражения пока ничего не слышно и не видно.
|
13 дек 2010, 21:11
Слава, спасибо за статью :) |
|
14 дек 2010, 22:19
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. |
|
15 дек 2010, 04:28
Хотелось бы узнать, изменился ли способ проникновения в систему и если да, то за счет каких уязвимостей? исправлено: Mind Gear, 15 дек 2010, 04:59 |
|
0 |
Re:
Сам я не анализировал юзермодную часть руткита. Про уязвимость мы писали тут - http://www.securelist.com/ru/blog/207760875/TDL4_stal_ispolzovat_0_day_uya zvimost
|
17 дек 2010, 15:36
Отличная статья! Спасибо! |
|
18 дек 2010, 00:02
|
|
19 дек 2010, 14:20
Не слишком оперативная статья =_= |
|
1 |
Re:
В свое оправдание могу сказать, что я занят совсем другими вещами, более важными, чем написание статей =) Статьи - это бонус для читателей.
|
15 янв 2011, 22:57
Спасибо, получилась хорошая статья. |
|
1 |
Re:
Нет, возможность обхода PatchGuard заключается в самих перехватах. Т.е. обход концептуальный. А переключение загрузки дает обход проверки code integrity.
|
14 май 2011, 00:24
Уважаемый Вячеслав. Прошу Вас о помощи! Уже пол года пытаюсь вытравить зловреда со всех 4 своих ноутов. В битве погибли 2 жестких диска... и каждый раз при активных попытках вытравить этого гада он просто рушит файловую систему и коцает кластеры и блоки! Ну да это лирика. Перейду к сути вопроса. |
Об авторе
Также в аналитике
В блоге
Источники