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

TDSS

«Сколько веревочке ни виться, все равно конец будет»

Народная пословица

Руткит TDSS, появившийся еще в 2008 году, со временем стал намного популярнее нашумевшего руткита Rustock, а по своему функционалу и сложности для анализа практически приблизился к буткиту. В бутките использовался механизм заражения загрузочной области диска, приводивший к загрузке вредоносного кода раньше операционной системы. TDSS взял на вооружение функцию заражения драйверов, которые обеспечивают его загрузку и работу на самых ранних этапах работы ОС. Как следствие, идентификация руткита TDSS в системе является нелегкой задачей, а его лечение — серьезной проблемой.

TDSS. Руткит-технологии

Начало. TDL-1

Первая версия TDSS была задетектирована «Лабораторией Касперского» 6 апреля 2008 года с вердиктом Rootkit.Win32.Clbd.a. Название вредоносной программы перекликалось с именем драйвера clbdriver.sys и именем динамической библиотеки clbdll.dll, в которых и находился основной зловредный функционал.

Все большое начинается с малого, и руткит-технологии первой версии TDSS — не исключение. Функционал драйвера довольно прост даже для 2008 года.

Примечательно, что со времен первой версии некоторые части руткита так и не менялись, а именно:

  1. Идентификаторы “TDL”;
  2. Функции заражения драйвера;
  3. Использование файла конфигураций;
  4. Формат работы с административной панелью.

 новое окно
Часть файла одной из первых версий руткита
TDSS - Rootkit.Win32.Clbd.o, — заражающего драйвер beep.sys

Основные функции данного руткита:

  • защита критичных веток реестра путем их сокрытия;
  • защита критичных файлов на диске путем их сокрытия;
  • внедрение вредоносного кода в системные процессы из драйвера режима ядра;
  • сокрытие сетевых портов TCP;
  • выполнение некоторых функций (завершение процессов, завершение потоков, сокрытие загруженных DLL-модулей и др).

Файлы скрываются путем присоединения вредоносного фильтра в системный стек драйверов. Причем производится данное действие в цикле для каждого тома в системе. Данный метод позволяет убить сразу двух зайцев. Руткит не только скрывает на диске файлы, имена которых начинаются с букв «tdl», но и при попытке открыть том \Device\HarddiskVolumeX возвращается ошибка, что приводит к ошибкам в различных анти-руткитах, которым открытие данного тома необходимо для низкоуровнего разбора структур файловой системы.

Номер ошибки, возвращаемый вредоносной программой, — STATUS_TOO_MANY_SECRETS — свидетельствует о довольно своеобразном чувстве юмора вирусописателей. Этот номер стал своего рода отличительным знаком авторов.

Сокрытие сетевых портов также производится путем присоединения вредоносного фильтра в стек устройства \Device\Tcp.

Сокрытие веток реестра вредоносного сервиса и конфигурационных данных основано на перехвате системной функции NtEnumerateKey. Для перехвата используется метод сплайсинга, который основан на замене некоторого количества байт начала функции на переходник, ведущий во вредоносный драйвер.

 новое окно
Пример сплайсинга функций NtEnumerateKey и
NtFlushInstructionCache на зараженной системе

Интересной особенностью TDL-1 является перехват системной функции NtFlushInstructionCache. Именно с помощью ее вызова драйвер способен выполнять различные дополнительные команды, а именно:

  • уничтожать поток;
  • блокировать выполнение потока;
  • уничтожать текущий процесс;
  • получать имя текущего процесса;
  • скрывать загруженный DLL-модуль;
  • выгружать драйвер;
  • получать список запущенных процессов.

 новое окно
Функция, исполняющая дополнительные команды руткита

Для сокрытия своего драйвера в системе руткит использует довольно тривиальную процедуру вычленения загруженного модуля из системного списка загруженных драйверов PsLoadedModuleList.

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

Сага продолжается. TDL-2

Анти-руткит технологии не стоят на месте, и в ответ на это развиваются и руткит-технологии. Новая модификация — TDSS (TDL-2) — появилась в начале 2009 года.

Стоит упомянуть о том, что было выявлено несколько модификаций руткита TDL-2 с обновленным функционалом, поэтому в разных описаниях информация может различаться.

Для затруднения анализа вредоносного драйвера авторы использовали механизмы обфускации и шифрования тела руткита. Кроме всего прочего, содержимое вредоносного файла разбавлено случайными словами из трагедии «Гамлет» Уильяма Шекспира, дабы сбить с толку вирусного аналитика.

 новое окно
Часть содержимого вредоносного файла,
разбавленного случайными словами

По сравнению с первой версией руткит мало поменялся функционально, однако методы сокрытия и защиты изменились. Для достижения своих целей вредоносный драйвер перехватывает методом сплайсинга несколько функций ядра, а именно:

  • IofCallDriver
  • IofCompleteRequest
  • NtFlushInstructionCache
  • NtEnumerateKey
  • bNtSaveKey (в некоторых версиях)
  • NtSaveKeyEx (в некоторых версиях)
  • NtQueryValueKey (в некоторых версиях)

 новое окно
Перехваченные функции операционной системы

Указанные выше несоответствия можно было бы попытаться устранить, однако руткит использует несколько зацикленных потоков режима ядра, в которых проверяет наличие своих перехватчиков в системе, и в случае их отсутствия восстанавливает перехваты. Аналогично проверяется существование записи о вредоносном сервисе в реестре — в случае ее отсутствия вся информация восстанавливается.

Перехват функции NtEnumerateKey все также используется для сокрытия конфигурационных данных руткита и его критичных веток реестра.

Перехват двух новых функций NtSaveKey и NtSaveKeyEx используется для того, чтобы помешать некоторым анти-руткитам обнаружить аномалии в системном реестре и таким образом задетектировать наличие активного вредоносного кода в системе.

Перехват функции NtFlushInstructionCache служит для предоставления компонентам вредоносной программы доступа в режим ядра.

Перехват системных функций IofCallDriver и IofCompleteRequest позволяет вредоносному драйверу фильтровать системные IRP-пакеты. Так обеспечивается функционал ограничения доступа и сокрытия файлов руткита. В ОС Windows система ввода/вывода построена на унифицированном интерфейсе и является сердцем операционной системы. Менеджер ввода/вывода соединяет приложения и системные компоненты с различными устройствами. Большинство запросов ввода/вывода представлены в виде специальных IRP-пакетов (I/O request packet). Таким образом, перехватив указанные выше функции, можно фильтровать различные пакеты ввода/вывода в системе, например, операции открытия файлов. Причем, если перехват IofCallDriver предоставляет возможность отфильтровать пакет до его обработки системой, то перехват IofCompleteRequest позволяет отменить успешную операцию, например, открытия файла.

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

В перехвате IofCompleteRequest возвращается ошибка STATUS_SECRET_TOO_LONG и отменяется успешная операция.

Также руткит использует трюк с системной веткой реестра ServiceGroupOrder. Данная ветка реестра отвечает за порядок загрузки драйверов. Если руткитом найден какой-либо драйвер, у которого группа загрузки установлена первой в списке, перед System Reserved, то запись этого сервиса в реестре исправляется таким образом, чтобы сервис стартовал намного позже. Это еще один метод противодействия анти-руткит-технологиям.

Против большинства антивирусных продуктов данного функционала хватает и по сегодняшний день — он вполне позволяет руткиту оставаться в зараженной системе незамеченным. Однако авторы решили двигаться вперед: осенью 2009 года появился TDL-3 — самый мощный, интересный и сложный руткит на данный момент.

Конец ли? TDL-3

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

Для закрепления руткита в операционной системе авторы избрали довольно известный путь — файловый вирус, а именно вирус, который заражает системные компоненты ОС. Для заражения используется мини-порт/порт драйвер диска. Данный метод позволяет руткиту загружаться практически сразу после старта операционной системы.

В более поздних модификациях руткит научился случайным образом выбирать и заражать системные драйверы, подходящие ему по некоторым параметрам. Однако мы подробно остановимся на ранних версиях, в которых для заражения выбран драйвер atapi.sys. Заражение происходит так, чтобы размер файла при этом не изменился. Это позволяет обмануть анти-руткиты, которые сравнивают размер файла, получая его на низком и высоком уровне.

Инфектор заменяет некоторое количество байт секции ресурсов файла-жертвы небольшим загрузчиком основного тела руткита и переставляет точку входа драйвера.

 новое окно
Точка входа atapi.sys до заражения

 новое окно
Точка входа зараженного atapi.sys

Основная цель этого маленького загрузчика — подгрузить в память основное тело руткита, находящееся в последних секторах диска, и передать ему управление.

 новое окно
Основное тело руткита на диске с меткой «TDL3»

Но на этом сюрпризы не заканчиваются. TDL-3 использует свою собственную реализацию шифрованной файловой системы, в которой хранятся его конфигурационные данные и дополнительные библиотеки пользовательского режима. Поэтому как таковая файловая система FAT или NTFS ему не нужна.

 новое окно
Пример конфигурации руткита, расположенной в последних секторах диска

Одна из основных целей любого руткита — это блокирование и/или сокрытие критичных данных вредоносной программы. Для этих целей TDL-3 использует технику подмены объекта, обслуживающего системное устройство.

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

Все функции, обслуживающие данное устройство, ведут в функцию-перехватчик вредоносного драйвера:

 новое окно

Так руткит фильтрует обращения к секторам диска, в которых расположены критически важные для него данные. В случае попытки чтения зараженного драйвера (в нашем случае atapi.sys) клиенту возвращается содержимое файла до заражения.

TDL-3 — технологически сложная и хорошо продуманная вредоносная программа. Авторы следят за новейшими разработками антивирусных компаний и мгновенно реагируют на них, выпуская новую исправленную версию руткита (на данный момент последней является версия 3.273). Поэтому в ближайшее время следует ожидать изменения руткит-функционала в сторону более эффективного противодействия антируткит-технологиям.

TDSS онлайн

В начале марта 2010 года «Лабораторией Касперского» был зафиксирован необычайный всплеск активности TDSS.

 новое окно
Количество ежедневно детектируемых вариантов руткита TDSS
и его компонентов (по данным Kaspersky Security Network)

Столь активное распространение TDSS послужило причиной более подробного анализа данного руткита. О результатах этого анализа и пойдет речь далее.

«The Partnerka»

Распространение руткита TDSS обеспечили партнерские программы, которые в настоящее время являются самым популярным методом кооперации злоумышленников в целях незаконного обогащения. Согласно Википедии, «партнерская программа — это форма делового сотрудничества между продавцом и партнерами при продаже какого-либо товара или предоставлении услуг; позволяет продавцу сократить расходы на привлечение конечного покупателя» ru.wikipedia.org. Для киберпреступников, участвующих в партнерской программе, товаром могут являться вредоносные программы, а услугами — привлечение пользователей на зараженные веб-ресурсы и заражение их компьютеров. Существует большое количество самых разнообразных партнерских программ, но в нашем случае речь идет «партнерках», распространяющих вредоносные программы и/или фальшивые антивирусы.


Количество страниц, найденных поисковой системой Google по запросу «партнерка»

Примечательно, что при участии в «партнерке» по распространению какой-либо вредоносной программы партнера не ограничивают в средствах. Чем больше компьютеров он заразит, тем больше денег получит. Поэтому для установки вредоносных программ на компьютеры пользователей большинство партнеров используют разнообразные наборы эксплойтов, червей и вирусы. Так, вызвавший в начале прошлого года эпидемию компьютерный червь Worm.Win32.Kido (Conficker) содержал функцию загрузки и запуска файла партнерской программы Traffic Converter, распространяющей фальшивые антивирусы.

Большинство партнерских программ, распространяющих вредоносный код, работают по схеме Pay-Per-Install (PPI, оплата за установку), при которой выплаты партнеру зависят от количества установок вредоносной программы и географического положения зараженных компьютеров.

 новое окно
Сайт партнерской программы «PMSoftware»,
распространяющей фальшивые антивирусы и TDSS.
Выплаты за установку зависят от географического положения жертвы.

AffId

Поскольку руткит TDSS распространяется через «партнерку», в его функционал встроен механизм передачи информации о партнере, который осуществил установку руткита на компьютер пользователя. Данная информация хранится в файле конфигурации руткита и указывается числом, присвоенным полю AffId.


Часть файла конфигурации руткита TDSS,
содержащая идентификатор партнера в поле AffId

Идентификатор AffId передается административной панели для указания, что на данную машину версия руткита была установлена конкретным партнером, и что платить за установку надо именно ему. При этом географическое положение зараженного компьютера определяется административной панелью на основании IP-адреса, с которого был передан идентификатор.

Получая информацию о новых случаях установки TDSS и источниках заражения, можно выяснить, какие способы распространения руткита используют партнеры с разными идентификаторами. Например, партнер с номером 20106 заражает компьютеры пользователей с помощью фальшивых кодеков, которые якобы требуются для просмотра видео на некоем сайте.

 новое окно
Предложение установить кодек для просмотра видео

Партнеры 10438 и 11418 предлагают пользователям установить генератор ключей для популярных программ, вместе с которым загружается руткит.

 новое окно
Страничка для загрузки TDSS вместе с программой для взлома

Партнер с AffId 20273 заражает компьютеры пользователей с помощью эксплойтов (Drive-by-Download), а руткиты с идентификатором 00123 были загружены на машины, входящие в два разных ботнета CnC (ZeuS). Последнее может означать, что хозяин у данных ботнетов один.

Connect

Адреса административной панели, с которыми соединяется TDSS при первом запуске на зараженном компьютере, также указаны в файле конфигурации. Как правило, в каждом файле три таких адреса. Всего для третьей версии руткита известно 33 адреса. Административные панели расположены в Китае, Люксембурге, Гонконге, Голландии и России. Формат обращения к ним такой:

GUID|AffId|status|erType|erCode|OS

GUID — уникальный идентификатор зараженного компьютера

AffId — идентификатор партнера

Status — статус текущей задачи

erType — тип ошибки во время работы руткита

erCode — тип ошибки

OS — версия операционной системы зараженного компьютера

Работа с административной панелью осуществляется по протоколу HTTPS, при этом на серверной части используется подписанный самими злоумышленниками сертификат безопасности, выданный несуществующей компанией Internet Widgits Pty Ltd (для разработчиков этот сертификат используется как пример стандартного сертификата при работе с SSL).

 новое окно
Стандартный сертификат безопасности для C&C

Работа по протоколу HTTPS с использованием стандартного сертификата преследует две цели:

  1. Помешать антивирусным решениям детектировать и блокировать сетевой трафик по специфическому содержимому пакетов.
  2. Не дать возможности подделать управляющую панель для перехвата управления построенным ботнетом.

Помимо работы по защищенному соединению, третья версия TDSS использует также алгоритмы шифрования GET-запросов. Сначала запрос шифруется на доменном имени административной панели по алгоритму RC4, а затем кодируется в BASE64. И если GET-запросы TDSS предыдущих версий антивирусные решения могли перехватить и распознать, то GET-запросы третьей версии руткита распознать практически невозможно, так как рассмотрение каждого GET-запроса, отправляемого с компьютера пользователя, требует большой вычислительной нагрузки.

BASE64(RC4(“domain.org”,”f1344ab7-e226-4385-b292-328fd91e5209|20123|0|1|0|5.1 2600 SP2.0”)) = naRV/t1H20oohxzGEVXPMbdVVOjvK0PMUE
VzuYWyEDHKsOFud57tO4HMkrkf0abk5UC3XtwDW/7Fmc
s7Vy14niX4t3eRARHRlnGKP14CcOwASIdVHac


Пример шифрования HTTP GET-запроса TDSS

C&C

Разные версии TDSS использовали разные наборы скриптов и базы данных для управления ботами и хранения информации о них. Так, при работе TDL-2 использовался движок SENEKA (некоторые антивирусы так и назвали эту версию TDSS), а в настоящее время ботнет TDSS работает под управлением DM-Engine. Зная формат пакетов и алгоритм шифрования, можно послать специальный запрос к панели управления ботнетом, чтобы получить не только исходящие команды для инфицированных компьютеров, но и информацию о построении административной панели и содержимом ее базы данных. Специально создавая ошибки в запросах к административной панели, можно узнать о размещении и именах файлов, которые обслуживают ботнет.

/data/www/dm_engine/library/classes/DBase.php
/data/www/dm_engine/public/enginestatusn.php
/data/www/dm_engine/library/models/mSystems.php
/data/www/dm_engine/public/index.php

Пример расположения файлов на административной панели управления TDSS

Зная формат запросов и параметры ботов, можно также выяснить, как эти параметры обрабатываются административной панелью.

Часть запроса GUID AffId status erType erCode OS
Тип переменной char Char num num char char
Действия над данными Select/Insert Select/Insert Insert Select Select Select/Insert

Таблица работы административной панели над параметрами, передаваемыми TDSS

Все эти данные позволяют получить информацию о содержимом некоторых полей базы данных административной панели, которая обслуживает ботнет TDSS.

Blind SQL Injection

База данных, установленная на панели управления, ведет себя очень тихо и не позволяет получать сообщения о выполнении запросов к ней. Однако с помощью метода «cлепой инъекции» можно проанализировать результаты запросов на основании временной задержки получения HTTP-ответа. Основная проблема при использовании данного метода – это правильный подбор имен таблиц и полей, хранящихся в базе данных. Поскольку злоумышленник, разрабатывавший административную панель, использовал имена полей и таблиц, коррелирующие с названиями запросов ботов, восстановить их нетрудно.

Так, поле GUID в запросе TDSS к административной панели в коде бота именовалось SystemId, а имя таблицы, в которой хранятся все идентификаторы зараженных компьютеров, логично называется Systems. Все идентификаторы партнеров AffId хранятся в таблице Affiliates. Воспользовавшись уязвимыми числовыми полями, отправляемыми TDSS на панель управления, можно сформировать следующий запрос: в случае если количество записей SystemId, в которых содержатся идентификаторы зараженных компьютеров, больше одного, то вернуть единицу, иначе выполнить вычисление хеш-функции MD5 20 миллионов раз.

“26344ab7-e226-4385-b292-328fd91e5209|20123|0|1
AND
IF ((SELECT COUNT(systemId) From systems) > 1,1,Benchmark(20000000,md5(1)))

|0|5.1 2600 SP2.0”

Запрос к базе данных панели управлении TDSS

Данный запрос зашифровывается, при этом в качестве ключа используется имя административной панели. После отправки запроса ответ от административной панели о его выполнении возвращается в течение секунды. Если изменить данный запрос для ста тысяч зараженных компьютеров (в случае если количество записей SystemId, в которых содержатся идентификаторы зараженных компьютеров, больше ста тысяч…и т.д.), ответ придет в течение десяти секунд.

“26344ab7-e226-4385-b292-328fd91e5209|20123|0|1
AND
IF ((SELECT COUNT(systemId) From systems) > 100000,1,Benchmark(20000000,md5(1)))

|0|5.1 2600 SP2.0”

Измененный запрос к базе данных панели управления TDSS

Формируя таким образом запросы, можно установить, что панель управления на домене 873hgf7xx60.com обслуживает 243 инфицированных компьютера, а панель на домене zz87jhfda88.com — всего 119.

На начало июня TDSS распространяли около 2000 партнеров.

26345ab7-e226-4385-b292-328fd91e5209|20023|0|1
AND
IF ((SELECT COUNT(affid) From affiliates) > 1691,1,Benchmark(20000000,md5(1)))
|0|5.1 2600 SP2.0

Запрос к базе данных панели управлении TDSS
(В случае если количество записей AffId, в которых содержатся
идентификаторы партнеров, больше 1691, то вернуть единицу,
иначе выполнить вычисление хеш-функции MD5 20 миллионов раз)

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

From Kernel to User mode

Технология связи руткита TDSS с внешним миром не менялась с первых версий. Так, руткит читает файл config.ini, в котором по умолчанию обычно указаны следующие данные:

[main] — основная секция, идентифицирующая руткит в системе.

  • Quote — цитаты из кинофильмов, мультфильмов и т.д., которые выводятся при подключении отладчика.
  • Version — версия установленного руткита.
  • Botid — идентификатор бота для административной панели.
  • AffId — идентификатор партнера.
  • SubId — по умолчанию ноль, служит для дополнительной идентификации бота при разделении ботнета.
  • Installdate — дата установки руткита в системе.
  • Builddate — дата сборки руткита.

[injector] — секция, указывающая на полезную нагрузку руткита.

  • Первое поле содержит имя процессов (по умолчанию “*”, означает все процессы).
  • Второе поле указывает на имя динамической библиотеки, которую следует подгружать к указанным процессам.

[tdlcmd] — секция полезной нагрузки.

  • Servers — адреса административных панелей руткита, обычно три адреса.
  • Wspservers — адреса серверов для работы с поисковыми сервисами.
  • Popupservers — адреса серверов для открытия страниц.
  • Version — версия полезной нагрузки.

 новое окно
Пример содержимого файла конфигурации руткита TDSS

Формат конфигурационного файла может меняться в зависимости от версии TDSS, его полезной нагрузки, а также по указанию командного центра ботнета.

TDSS. Набор для обогащения

Деньги

Rootkit.Win32.TDSS — это универсальная вредоносная программа, которая может скрывать присутствие в системе любых других вредоносных программ и предоставлять им расширенные возможности на зараженной системе. Аналогичные технологии уже были реализованы в бутките, и тогда мы писали, что подобные вредоносные программы, благодаря простоте в использовании и широкому спектру возможностей, должны стать популярными у злоумышленников. По сути TDSS — это постоянно обновляемый и дополняемый фреймворк.

Руткит TDSS реализует по умолчанию только функционал Trojan-Clicker и используется злоумышленниками для обогащения путем манипуляций с посещаемостью сайтов. Данный функционал заложен в динамическую библиотеку, которая входит практически во все стандартные конфигурации руткита и чаще всего имеет имя tdlcmd.dll. Однако возможности руткита намного шире, и дальнейшее его использование зависит только от пожеланий авторов и задач арендаторов или покупателей ботнета, построенного на этой вредоносной программе. В 2009 году количество зараженных компьютеров, работающих под управлением TDSS, оценивалось в 3 миллиона, при этом около половины из них находились на территории США.

Интересно, что при анализе всех фактов, связанных с данной вредоносной программой, складывается устойчивое впечатление, что ее автор или авторы — русские или, по крайней мерее, русскоговорящие. Регулярно обновляя TDSS, они держат руткит в собственных руках — в продаже его никогда не было. Продаются только ботнеты под управлением TDSS — как правило, состоящие примерно из 20 000 зараженных машин.

Дальнейшее использование ботнета TDSS зависит уже от покупателя. За время наших наблюдений на один из таких ботнетов загружались и спам-боты, и фальшивые антивирусы, и троянцы для кражи персональных данных.

Нагрузка

Авторы TDSS заранее позаботились о монетизации созданных на его основе ботнетов. Одной из полезных нагрузок, устанавливаемых TDSS по умолчанию, является динамическая библиотека tdlcmd.dll.

Файл tdlcmd.dll доставляется в большинстве случаев вместе с TDSS и подгружается руткитом во все процессы, однако для осуществления своей полезной нагрузки данная библиотека работает только в процессах браузеров и в сервисе обновления Windows, что обусловлено возможностью работы данных процессов с Сетью.

 новое окно
Список процессов, в которых работает tdlcmd.dll

В процессе своей работы библиотека tdlcmd.dll выполняет следующие задачи:

  1. Получает и выполняет команды от центра управления ботнетом.
  2. Перехватывает пользовательские запросы к популярным поисковым системам с целью подмены выдачи.
  3. Создает запросы к популярным поисковым системам.
  4. Эмулирует работу пользователя на сайте.

Любое из этих действий способствует обогащению владельцев ботнета, построенного на рутките TDSS.

Команды от центра управления

По умолчанию tldcmd.dll умеет исполнять следующие команды от управляющей панели:

  • DownloadCrypted — загрузить зашифрованный файл;
  • DownloadAndExecute — загрузить и исполнить файл;
  • DownloadCryptedAndExecute — загрузить зашифрованный файл, расшифровать и исполнить его;
  • Download — загрузить файл;
  • ConfigWrite — внести изменения в файл конфигурации.

В случае загрузки зашифрованной команды от C&C, для ее расшифровки используется алгоритм RC4. Ключом при этом служит имя домена, с которого загрузился указанный файл. После исполнения команды от панели управления в файлe config.ini создается секция [Tasks], в которой ведутся записи обо всех действиях бота.


Пример записи в файле config.ini, созданной после загрузки обновленной версии файла tdlcmd.dll

Учитывая, что все общение с административной панелью происходит по протоколу HTTPS, чтение данной секции очень сильно облегчает аналитикам работу по слежению за действиями TDSS.

TDSS, в отличие от буткита, не имеет алгоритма перебора доменов для мигрирующих командных центров, однако команда ConfigWrite для изменения поля Servers в секции [tdlcmd] приходит при первом обращении к командному центру, а затем с периодичностью примерно раз в неделю.

 новое окно
Пример расположения административной панели

«Вирус подмены страниц»

В ходе работы в процессе браузера tdlcmd.dll следит за следующими сайтами, посещаемыми пользователями:

.google. .yahoo.com .bing.com
.live.com .msn.com .ask.com
.aol.com .google-analytics.com .yimg.com
upload.wikimedia.org img.youtube.com powerset.com
.aolcdn.com .blinkx.com .atdmt.com
.othersonline.com .yieldmanager.com .fimserve.com
.everesttech.net .doubleclick.net .adrevolver.com
.tribalfusion.com .adbureau.net .abmr.net

При каждом запросе к указанным сайтам tdlcmd.dll генерирует запрос к серверу, указанному в поле Wspservers файла конфигурации. Серверу передается информация о зараженной системе и запросе пользователя к указанному сайту. В ответ от сервера приходит ссылка на страницу, которую необходимо отобразить пользователю. Ссылка может вести пользователя на любой сайт — это может быть и фишинговый, и легитимный ресурс. Об аналогичной атаке уже писал в 2008 году российский поисковик — тогда подобный функционал встраивался во многие вредоносные программы.

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

 новое окно
Пример дополнения к браузеру FireFox для перенаправления пользовательских поисковых запросов

Black SEO

Всего несколько лет назад при запросе «антивирус» к поисковой системе Google на первой странице отображались ссылки только на фальшивые антивирусы. Это достигалось средствами «черной поисковой оптимизации».

В файл tdlcmd.dll встроен аналогичный функционал «продвижения» сайтов по ключевым словам. На зашифрованной руткитом части диска создается файл keywords, содержащий слова, которые необходимо адресовать поисковой системе. Затем в выдаче поисковой системы выбирается сайт, указанный злоумышленниками. При этом для полной эмуляции работы пользователя с поисковой системой используется JavaScript, встраиваемый в браузер и имитирующий нажатие на соответствующие кнопки перехода.

 новое окно
Пример поднятия в поисковой выдаче сайта, содержащего эксплойты

Clicker

Общение руткита с командным сервером происходит по протоколу HTTPS. Однако при работе с серверами, обслуживающими накрутку кликов, tdlcmd.dll использует только шифрование GET-запроса — по все тем же алгоритмам RC4 c перекодировкой результата в BASE64. Tdlcmd.dll обращается к серверу, указанному в параметре Popupservers файла конфигурации. В ответ с сервера приходит имя сайта, ссылка на сайт и адрес веб-ресурса, с которого на эту ссылку необходимо зайти. Также в файле конфигурации указывается периодичность, с которой необходимо заходить на сайт. В отличие от других вредоносных программ с подобным функционалом, TDSS создает окно действительного браузера для полной эмуляции захода пользователя на сайт. Таким образом TDSS показывает рекламные окна фальшивых антивирусов и любых других сайтов, заказанных владельцам ботнета.

Масштабы заражения

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

 новое окно
Статистика попыток заражений руткитом TDSS в первом полугодии 2010 года (по данным Kaspersky Security Network)

Поскольку вредоносные загрузки на компьютеры, расположенные на территории США, стоят дороже всего (см. выше), наиболее активно TDSS распространяется именно там.

В дополнение к статистике KSN можно получить информацию от самой панели управления ботнетом:

Адрес C&C Количество зараженных
пользователей по данным C&C
zz87jhfda88.com 119
d45648675.cn 108
873hgf7xx60.com 243

Это еще не конец

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

Использование методов шифрования при общении бота с командным центром существенно затрудняет анализ сетевых пакетов. Мощнейшая руткит-составляющая скрывает факт заражения и его критичные компоненты. Компьютер жертвы становится звеном ботнета, и на него устанавливаются другие вредоносные программы. Злоумышленники успешно монетизируют свой бизнес, продавая небольшие по размеру ботнеты и используя Black SEO.

Пока вредоносная программа приносит прибыль, она будет совершенствоваться и модифицироваться. TDSS стал настоящей головной болью для антивирусных компаний. «Лаборатория Касперского» уделяет повышенное внимание проблемам, связанным с детектированием и лечением активного TDSS. Мы надеемся, что коллеги по индустрии также не забывают об этой вредоносной программе и делают все возможное, чтобы защитить пользователей от этой угрозы.


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

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

zyx2145

25 июн 2010, 12:47
6
 

Поздравляю!

Ребят, по-моему, шикарная статья - обе части разобраны очень профессионально - поздравляю.

Татьяна Никитина

25 июн 2010, 17:39
0
 

+10

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

25 июн 2010, 18:11
4
 

Re:

Ну так плюсаните!)

исправлено: Сергей Голованов, 25 июн 2010, 23:22

Татьяна Никитина

25 июн 2010, 19:51
2
 

Re: Re:

Дык с радостью, а где??
Могу только еще один коммент написать типа "молодчаги, сто плюсов вам" ))

innalabs

15 янв 2011, 12:02
0
 

Re: Поздравляю!

Я с вами полностью согласен. Написать статью о столь сложной вредоносной программе очень сложно

Black Angel

25 июн 2010, 13:01
2
 

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

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

25 июн 2010, 14:06
3
 

Хочется также сказать спасибо Ольге Емельяновой. Без нее это была бы сухая аналитика :)

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

25 июн 2010, 15:01
5
 

Re:

Угу. man tdss)))

Константин

25 июн 2010, 15:21
1
 

что делать то пользователям ??

Спасибо за статью!

Что делать если я подозреваю, что мой компьютер заражен таким хитрым зловредом, но при этом Касперский ничего не находит при полном сканировании системы и компьютер постоянно перезагружается, приблизительно на середине проверки?

Не уверен, что это TDSS, но не знаю как это узнать. Поможет ли Kaspersky Rescue CD? Может есть какая-либо ссылка на советы или HOWTO? Был бы очень Вам признательным :-)

С уважением,

К

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

25 июн 2010, 17:39
4
 

Re: что делать то пользователям ??

1) AVPTool
2) Rescue Disk
3) Поддержка
4) virusinfo.info + анти-руткиты

Константин

25 июн 2010, 21:15
0
 

Re: Re: что делать то пользователям ??

спасибо, Юрий и Вячеслав!

Попробую на досуге заняться :-) Хотя больше бы хотелось без этого обойтись и встретиться с девушкой или покататься на велике :-) чтобы это все автоматически сделал бы антивирус

Андрей

08 янв 2011, 15:35
1
 

Re: Re: Re: что делать то пользователям ??

К сожалению, ВСЁ антивирус делать не может...

innalabs

15 янв 2011, 12:10
0
 

Re: Re: Re: Re: что делать то пользователям ??

Мне жалко пользователей, которые говорят, что если у них есть антивирус, то они полностью защищены. Я знаю много знакомых, которые вообще не делают никаких сканирований по требованию. Жаль, но они думают, что проверка в реальном времени даёт 100% защиты. Мой опыт доказывает обратное...

Юрий Паршин

25 июн 2010, 19:32
4
 

Re: что делать то пользователям ??

Для лечения заражения TDSS-ом Вы можете воспользоваться нашей бесплатной утилитой - TDSSKiller-ом. http://support.kaspersky.ru/viruses/solutions?qid=208636926

Но в Вашем случае, скорее всего причина не в нем.

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

29 июн 2010, 22:43
1
 

Re: что делать то пользователям ??

Кроме ресурса virusinfo.info можно обратиться в сервис лечения от ЛК "911" по адресу: http://avptool.ru/forum/

Что касается статьи: Слава и Сергей - молодцы! Очень интересно было почитать :)

SetupNick

25 июн 2010, 20:31
0
 

Круто. Разобрали на молекулы. Теперь им придётся четвёртую версию лепить)

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

26 июн 2010, 13:40
3
 

Re:

Ждёмс!)

user99

30 июн 2010, 21:29
1
 

Приветствую!

> Всего для третьей версии руткита известно 33 адреса.

... интересно, можно ли их узнать?
если да, то - где?
если же нет, то почему?

ЗЫ. я почему интересуюсь... Во времена Conflicker'a, мне, как сисадмину, было удобно на корпоративном файрволе отслеживать и банить хосты, которые лезут в соотв.подсеть за обновлениями к этому вирусу. Таким образом получалось детектить зараженные машины на начальном этапе... Хотелось бы организовать борьбу с TDSS аналогичным способом.

ДАЙТЕ НАМ АДРЕСОВ! :)

SetupNick

03 июл 2010, 08:22
0
 

Re:

Думаю, на всеобщее обозрение их точно никто не выставит)

Иначе народ будет из любопытства по этим ссылкам бегать и нахватается всяких нечистот. ЛК потом за такое "спасибо" не скажут)

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

05 июл 2010, 20:22
1
 

Re:

> ... интересно, можно ли их узнать?
Нет
> если же нет, то почему?
Потому что:
1. эта информация может быть использована злоумышленниками для переезда на новые управляющие сервера.
2. ситуация аналогична сигнатурам, которые не распространяются коммерческими антивирусами

ПС. Независимые исследования еще ни кто не отменял http://www.malwaredomainlist.com/hostslist/hosts.txt

user99

08 июл 2010, 12:25
2
 

Re: Re:

Спасибо за ответ!

ЗЫ. не знаю, насколько уместна дальнейшая дискуссия, но приведенные вами аргументы не выдерживают критики.

> 1. эта информация может быть использована злоумышленниками для переезда на новые управляющие сервера.

а) сам факт того, что кто-то (допустим, лаборатория Касперского) УЖЕ имеет в руках эти 33 IP (после опубликования этой статьи в блоге) разве не такой же повод для "использования злоумышленниками для переезда на новые управляющие сервера"(с) ?
Думаю, такой же, согласно вашей логике. Ибо секрет УЖЕ дезавуирован.

Дальше рассмотрим 2 возможных варианта дальнейшего развития событий:
1) информация об этих IP известна только антивирусным компаниям и дальше не распространяется;
2) информация распространяется всем желающим.

В первом случае, cогласно вашей логике, злоумышленники не предпримут попыток изменять эти IP (ну, или не сразу это сделают). Т.е. подразумевается, что:
а) с антивирусами злоумышленники смиряются, как с неизбежным процентом потерь зараженных хостов
б) самим антивирусам выгодно скрывать эту информацию, чтобы "удерживать" этот самый процент за собой без лишних трудозатрат.
Таким образом имеем некое равновесие "добра и зла" :)

А что же делать конечным пользователям? Которые от этих вирусов несут (и финансовые в т.ч.) потери?
По идее весь этот цирк с "защитой" затевался ради них, не так ли? А по факту выходит, что "давайте не будем рассказывать всем, как [самостоятельно] определить факт заболевания и вылечить эту форму туберкулеза, только потому что она мутирует и опять придется искать способ лечения"? Нонсенс, ИМХО. Больше похоже на бизнес-интерес с одной (вирусописатели) и со второй (антивирусописатели) стороны.
(я не говорю, что это меня сильно удивляет, также, как и аналогичная ситуация в той же медицине и т.п.)

Теперь рассмотрим вариант, когда информация об обнаруженных IP управляющих хостов распространяется всем желающим.
Да, действительно, такой факт приведет к их изменению, по причине, что процент потерь хостов увеличится и со временем достигнет совсем невыгодного для них максимума. Но ведь и пользователи от этого выиграют: будет обнаружено и вылечено гораздо большее количество УЖЕ зараженных компьютеров, не так ли? Т.е. наша общая (вирусных аналитиков и системных администраторов) цель: излечить максимальное количество компьютеров будет достигнута! И, по-моему, в конечном счете без разницы - с каких новых IP будут управляться допустим 10% от первоначального количества зараженных машин.
Поэтому во весь рост встает вопрос: "слушай, брат, я вот не пойму: ты за меня или за медведя?!"(с) известный анекдот. :)

> 2. ситуация аналогична сигнатурам, которые не распространяются коммерческими антивирусами

Согласен, в какой-то степени да, аналогична. Хотя бы тем, что, как упоминалось выше, позволяет сократить трудозатраты антивирусной компании на анализ новых видов вирусов.
Но по критерию "позволяет ли раскрытие этой информации упростить вирусописателям создание новых вирусов, не обнаруживаемых по сигнатурам (и т.п., кроме как по факту обращения к какому-то IP из соотв. списка)" - нет, не аналогична.
И, поэтому, сокрытие информации этим фактом не аргументируется, а вызвано чем-то другим, напр.: выгодно антивирусным компаниям или же просто из-за стереотипности мышления, не знаю...

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

12 июл 2010, 20:55
2
 

Re: Re: Re:

+1
> разве не такой же повод для "использования злоумышленниками для переезда на новые управляющие сервера"(с) ?

Нет, не такой. Сейчас клиенты ЛК защищены и злоумышленники потеряли например "n" ботов. Это приемлемая для них потеря, и тратиться на переезд для них не выгодно. Если выложить данные блеклисты в паблик или еще лучше отдать провайдерам, то злоумышленники потеряют "n+z" ботов, а это уже причина и для переезда и для разработки новых технологий для связи с ботами (p2p ботнеты)

У вас есть 2ва пути на выбор:
1. Обезопасить всех быстро и на короткое время
2. Обезопасить только своих клиентов, но на большее время.

Ваш выбор должен помогать в достижении ваших целей, а не перечить ему.

user99

13 июл 2010, 14:44
0
 

Re: Re: Re: Re:

... да, я о том же и написал в предыдущем сообщении.

> У вас есть 2ва пути на выбор:

(на самом деле не 2, но - пусть :) )

> 1. Обезопасить всех быстро и на короткое время
> 2. Обезопасить только своих клиентов, но на большее время.

Мой выбор - 1.
А по прошествии "короткого времени" проделать еще раз (пусть опять на короткое время) и так постоянно, раз за разом. Се ля ви.
Итого получим такую функцию "зависимость количества незараженных компьютеров от времени", проинтегрировав которую получим значение, ИМХО, выше, чем при варианте 2.
Т.к. он заведомо ограничен количеством компьютеров с установленным качественным антивирусом (у которого обновлены базы и т.д).

Вот такая вот достойная цель.
А насчет варианта 2... Известно, чем заканчиваются такие "половинчатые" решения в стиле "моя хата скраю". За примерами ходить далеко не нужно: настоящие, не компьютерные, эпидемии наглядно демонстрируют утопичность такого подхода.

Darklen

14 июл 2010, 14:08
0
 

Великолепная статья, спасибо!

На машинке моей сестры стоит лицензионный KAV, который упорно детектит TDSS и предлагает перезагрузиться, чтобы удалить заразу. Перезагрузка не помогает - TDSS остается. Сестра уже просто игнорит это сообщение.
Запустил TDSSKiller - эффекта ноль.

Справедливости ради надо заметить, что, насколько я помню, Dr.Web CureIt! тоже не помог.

Fixxxer

07 окт 2010, 12:48
0
 

Когда продолжение?

Уважаемые эксперты, а когда ожидается продолжение эпопеи с TDL4 и его лечением, особенно на х64? Конкуренты уже какие-то обзоры выложили вроде...

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


Bookmark and Share
Закладки

Об авторах

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

В блоге

Источники