Taidoor — это очень эффективна вирусная программа класса RAT (remotes access trojan), которая предназначена для использования без закрепления в системе. С помощью модульной системы, реализованной в Taidoor можно осуществлять доставку на зараженную территорию только тех модулей, которые необходимы для достижения целей конкретной атаки. В данной статье мы разберем как эффективно работать с Taidoor.
Чтобы усложнить обнаружение, Taidoor использует различные методы: манипулирование отметками времени, удаление файлов с модулями, запутывание строк, поиск антивирусных программ на атакуемом компьютере и т.д.
Два независимых модуля позволяют собрать всю необходимую информацию о зараженной системе. Если необходимо, то с сервера управления можно отправить дополнительные модули.
С помощью криптовалюты RSA + AES
, которая используется в Taidoor, обеспечивается секретность при работе с сервером управления. С точки зрения реализации программы, криптография в ней не очень хорошая. При захвате трафика нужно использовать команды с сервера. Помимо этого в этом алгоритме есть уязвимость, которая позволяет расшифровать полученную информацию, отправленную на сервер.
Основными загрузчиками Taidoor являются rasautoex.dll
и ml.dll,
которые имеют идентичную функциональность. Они различаются только битовой глубиной: первая — это 64-битная версия зловреда, вторая — 32-битная версия. Их свойства приведены в таблице 1.
Табл. 1. Свойства загрузчиков Taidoor
Файл rasautoex.dll
предназначен для загрузки основной части Taidoor в системную память. Его можно запустить, вызвав экспортированную функцию MyStart
, или зарегистрировать как службу, как показывает экспортированная функция ServiceMain.
При запуске загрузчик в том же каталоге ищет файл svchost.dll
, зашифрованный основной текст Taidoor. Найдя нужный файл, загрузчик выполняет следующие действия:
ar1z7d6556sAyAXtUQc2
. В расшифрованном виде svchost.dll
представляет собой 64-битную библиотеку. В случае с 32-битным загрузчиком (ml.dll
) библиотека с телом Taidoor, соответственно, 32-битная.Start
. Если такая функция найдена, вызывает ее.Индикатор компрометации (IoC)
Строка: ar1z7d6556sAyAXtUQc2
Основное зашифрованное тело Taidoor представлено в виде одного из файлов svchost.dll
, которые отличаются разрядностью. Их свойства описаны в табл. 2.
Табл. 2. Свойства файлов основного тела Taidoor
Хэш-файл MD5
, заканчивающийся 7edd
, содержит зашифрованную 64-битную версию программы. В файле с хешем MD5
, заканчивающимся на 2664c
, он 32-битный. Файлы почти идентичны, но содержат разные адреса серверов управления.
Далее речь пойдет об исследовании 64-битной версии.
Исследуемый образец представляет собой зашифрованную вредоносную библиотеку, запускаемую отдельной программой, описанной выше.
При запуске с rundll32
Taidoor проверяет зашифрованные настройки, сохраненные вне тела программы, в параметре RValue
в разделе реестра SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion.
Если они отсутствуют или в выпуске другого типа, программа использует настройки по умолчанию, сохраненные в вашем теле.
Далее Taidoor расшифровывает настройки, которые включают в себя следующие данные:
Далее Taidoor расшифровывает настройки, которые включают в себя следующие данные:
В случае, если в настройках программы установлен прокси, программа пытается через него выйти на сервер управления. Taidoor посылает один зашифрованный RSA пакет, который содержит идентификатор и ожидает ответа от сервера. После успешной попытки программа создает файл % ALLUSERSPROFILE%\Application Data\ Microsoft\~ svc_.TMp – возможно, это индикатор успешного заражения, который не позволяет перезагрузить Taidoor.
После того, как основной цикл завершается, программа создает два плагина: один для сбора системных данных, второй для создания процессов и работы с командной строкой.
Затем программа запускает цикл отстука в отдельном потоке, где она связывается с C&C сервером каждые 10 секунд. В основном потоке программа начинает цикл приема команд от сервера. Криптоконверсия RSA + AES
используется при отправке сообщений на сервер. Для каждого сообщения создается отдельный ключ AES
.
Вот какие действия может совершать злоумышленник в зараженной системе при помощи Taidoor в базовой комплектации (основной модуль и два встроенных плагина):
Идентификатор каждого плагина Taidoor находится в начале каждого сообщения. Таким образом, это позволяет оператору программы направлять команды конкретным плагинам или отдельным источникам информации и различать источники сообщений от программы (главный модуль и определенные плагины). По умолчанию используются следующие идентификаторы:
Внешние плагины Taidoor загружает в виде динамических библиотек по команде с сервера управления. В каждом плагине есть три экспортируемые функции:
Install
— инициализация плагина и возвращение идентификатора плагина;Proxy
— передача плагину адресованного ему сообщения от сервера;Uninstall
— деинициализация плагина.Taidoor применяет всевозможные методы, чтобы затруднить обнаружение и расследование атаки:
cmd.exe.
%ALLUSERSPROFILE%\\Application Data\\Microsoft\\~svc_.TMp
заменяются временными метками системного файла C:\Windows\System32\services.exe
, что осложняет определение даты заражения.Перед установкой модуль должен пройти процедуру расшифровки – это делает специальный загрузчик, который был описан выше. С вызовом экспортируемой функции Start
начинается выполнение самого образца.
Для того чтобы избежать ручной доработки программы и ее последующей отладки, используется механизм, препятствующий ручной отладке, в ходе которого программа:
Отладка с момента вычисления ожидаемого значения вплоть до вызова функции wait
может занять более чем секунду, что может привести к сбою и невыполнению цикла.
После запуска Taidoor препятствует ручной отладке с помощью примитивной функции.
Далее программа сама импортирует все необходимые функции за исключением LoadLibrary
и GetProcAddress
.
Taidoor вызывает еще несколько неопасных и бессмысленных функций (рис. 1), скорее всего, чтобы защититься от обнаружения.
Пример бесполезной функции, используемой Taidoor
После этого малварь запускает основную функцию в новом потоке. Некоторые из строк вредоносной программы (например, название импортируемых функций) обфусацированы с использованием нестандартного поточног шифра для усложнения обнаружения. Строки деобфусцируют непосредственно перед использованием.
Перед началом каждого из основных циклов Taidoor проверяет имя приложения, которое запущено вредоносной программой, на предмет наличия в нем строки подключения к серверу управления и контроля.
rundll32.exe
, программа пытается загрузить параметры для подключения к серверу из параметра RValue
раздела реестра SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion.
RValue
не существует, настройки берутся из тела Taidoor.Настройки, полученные тем или иным способом, расшифровываются алгоритмом AES
в режиме ECB
с ключом 2B7E151628AED2A6ABF7158809CF4F3C
(представлен в шестнадцатеричном виде).
Затем Taidoor пытается подключиться к серверу управления. Полученные ранее параметры подключения могут содержать до 4 адресов серверов и до 3 портов на сервер. Также можно указать адрес и порт прокси-сервера HTTP. В исследуемом образце указаны сервер управления и порт, тогда как в 32-разрядной версии указаны два сервера управления и порт для каждого из них.
Подключение проходит по следующему алгоритму:
F::
;0x040x230x190x340xfe0xc1
, зашифрованная при помощи алгоритма RSA_PKCS1v1.5
с использованием криптографически стойкого генератора псевдослучайных чисел (ГПСЧ).200 OK\r\n\r\n
: Перед подключением к серверу управления Taidoor открывает журнал системных событий и начинает считывать записи одну за другой. Программа уделяет особое внимание записям типов 6005
(«Начало службы журнала событий») и 6006
(«Конец службы журнала событий») — по ним можно определить время, в течение которого машина была запущена и работала. . В рассматриваемом случае реализован пропуск этих данных, но программа их не использует.
После подключения к серверу программа создает файл %ALLUSERSPROFILE%\\Application Data\\Microsoft\\~svc_.TMp
, а также обновляет его временные метки. Затем программа проверяет файл C:\Windows\win.ini
на наличие секции Micros
с ключом source
. Если ключ присутствует, утилита cmd.exe
копируется по указанному в ключе адресу (в отчете CISA указан адрес c:\temp\cmd.exe
).
Если первый байт буфера, дешифрованного сервером, содержит 1
, остальная часть буфера обрабатывается самим Taidoor. Отдельные команды могут устанавливать или использовать глобальные переменные. Вот самые важные:
<имя_файла>;
<файловый_дескриптор>;
<идентификатор>;
<глобальный_массив>;
<дополнительное_имя_файла>;
<дополнительный_дескриптор_файла>.
Первый байт оставшейся части буфера, отправленный на обработку, идентифицирует одну из команд. Команды могут управлять подключением вредоносного ПО к серверу, обновлять его настройки, загружать и скачивать плагины и выполнять другие вредоносные действия.
Полный список команд
Часть обработчика открытия файла
Taidoor инициализирует два встроенных плагина:
cmd.exe
. Если необходимый ключ в win.ini
не найден или копирование сорвалось, передается пустая строка.
Вот как выглядит процесс загрузки нового плагина (функция представлена на рис. 3):
Install,
Uninstall,
Proxy.
Install
, передает в нее информацию о подключении к серверу управления. В качестве идентификатора выставляется полученное из Install
значение.uaq*.dll
, файл удаляется.Функция загрузки плагина
Каждый модуль может быть деинициализирован, чтобы предоставить место другому.
В случае получения команды от управляющего сервера, Taidoor проверяет первый байт, который указывает на место назначения: команда может быть направлена либо для основного модуля, либо для одного из плагинов. После того, как команда была передана плагину, остальной текст сообщения передаётся прокси-функции
плагина.
Функция периодического входа на сервер запускается после активации плагинов Taidoor. В этой функции программа отправляет сообщение \ x01 \ xff
на C&C сервер каждые 10 секунд.
Все обращения к серверу здесь и далее создаются по следующему алгоритму:
RSA_PKCS1v1.5
с использованием криптографически стойкого ГПСЧ на ключе, взятом из параметров.AES-128
в режиме ECB
на временном ключе.Чтобы получать команды от сервера управления, малварь должна включить плагины. Последовательность действий вредоноса зависит от получаемых команд.
Если при получении данных с сервера возникает ошибка, программа прерывает соединение и ждет столько времени, сколько указано в параметрах (в исследуемом примере это 1 секунда), затем пытается подключиться к новому серверу.
В случае если сервер ответил пустым сообщением, программа запомнит это. Если сервер ответил таким образом 300 раз подряд, программа завершает соединение на время, указанное в параметрах (в рассматриваемом примере это 30 минут), а затем снова пытается установить соединение.
Если размер сообщения от сервера больше или равен 256 байтам, то программа действуют по следующему алгоритму:
RSA_PKCS1v1.5
. Полученные данные используются в качестве симметричного ключа для следующих данных. Использование подписи в данном случае бессмысленно, так как не защищает от перехвата управления.AES-128
в режиме ECB
.Интегрированный модуль MyPlugCmd предназначен для запуска процессов и отправки команд с консоли. Во время запуска ему передается параметр, который можно сохранить в файле C: \ Windows \ win.ini.
Этот параметр указывает на копию cmd.exe
, которая используется для затруднения обнаружения программы.
Модуль хранит несколько переменных в своем теле. Вот наиболее важные из них:
<файловый_дескриптор>;
<имя_файла>;
<альтернативный_путь_к_cmd>;
<шелл>.
Также стоит отметить, что переменная «шелл» хранит информацию о запущенном процессе консоли, которая нужна для записи в поток ввода этого процесса и получения данных из потока вывода.
Полный список команд, выполняемых модулем MyPlugCmd
Интегрированный модуль MyPlugInfo может собирать и отправлять на сервер информацию об IP-адресах и MAC-адресах сетевых интерфейсов, текущем идентификаторе процесса и идентификаторах заражения. Он также знает, как выполнить команду 11 из главного обработчика.
Команды с идентификаторами
Индикаторы компрометации (IoC) обоих вариантов svchost.dll
В качестве цели злоумышленник видит в Taidoor – удобный инструмент дистанционного управления для начального уровня с множеством возможностей динамического расширения. В то же время вредоносная программа имеет достаточно удобный интерфейс, чтобы запускать процессы и взаимодействовать с консолью.
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…