Trojan.Encoder.11432 - новый многокомпонентный сетевой червь


Trojan.Encoder.11432 (он же WannaCry) - многокомпонентный сетевой червь, написанный на языке C/C++ и собранный в среде разработки MS Visual Studio, не упакован.

Троян содержит в собственном теле две динамические библиотеки. В процессе запуска пытается отправить GET-запрос на удаленный сервер

  • http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

без кэширования результатов. В случае получения ответа от сервера, завершает свою работу.

На зараженном компьютере запускается как системная служба Windows с именем "mssecsvc2.0" (видимое имя – "Microsoft Security Center (2.0) Service"). Червь способен принимать аргументы командной строки. Если указан хотя бы один аргумент, пытается открыть сервис "mssecsvc2.0" и настроить его на перезапуск в случае ошибки. После запуска пытается переименовать файл

  • C:\WINDOWS\tasksche.exe

в

  • C:\WINDOWS\qeriuwjhrf

сохраняет из ресурсов трояна-энкодера в файл

  • C:\WINDOWS\tasksche.exe

и запускает его с параметром /i. Через 24 часа после своего запуска в качестве системной службы червь автоматически завершает работу.

Для распространения червь инициализирует Windows Sockets, CryptoAPI и запускает несколько потоков. Один из них перечисляет все сетевые интерфейсы на зараженном ПК и опрашивает доступные узлы в локальной сети, остальные генерируют случайные IP-адреса. Червь пытается соединиться с этими удаленными узлами используя порт 445. При его доступности в отдельном потоке реализуется заражение сетевых узлов с использованием уязвимости в протоколе SMB.


Дроппер

Большая часть дроппера представляет собой защищенный паролем ZIP-архив, в котором хранятся следующие файлы:

  • b.wnry - файл с обоями Рабочего стола Windows;
  • c.wnry - файл содержит адреса onion-серверов и адрес BTC-кошелька;
  • t.wnry - зашифрованный файл, содержащий трояна-энкодера. Ключ для расшифровки хранится в самом файле;
  • s.wnry – архив, содержащий ПО для работы с сетью Tor.


После запуска пытается установить себя в следующие папки:

  • %SYSDRIVE%\ProgramData (если папка существует)
  • %SYSDRIVE%\Intel
  • %SYSDRIVE%
  • %TEMP%


При установке создает соответствующую папку, а в ней – вложенную папку со случайным именем, затем уже в этой папке создает собственную копию с именем tasksche.exe.

Пытается запустить свою копию в виде системной службы со случайным именем. В случае неудачной попытки, создает системную службу, регистрирует в ней запуск собственной копии с использованием вызова командного интерпретатора ("cmd.exe /c path") и запускает эту службу. Если это сделать не удалось, запускается как обычное приложение.

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

  • HKLM\Software\WanaCrypt0r

или

  • HKCU\Software\WanaCrypt0r

путь и имя своей текущей директории. Распаковывает содержимое архива в свою текущую папку, сохраняет в файл c.wncry один из трех возможных адресов BTC-кошельков. Открывает доступ к рабочему каталогу всем пользователем системы и устанавливает для него атрибут "скрытый". После этого извлекает из файла t.wnry трояна-энкодера, расшифровывает его и запускает на выполнение.


Троян-шифровальщик Trojan.Encoder.11432 Bloked

Энкодер хранится в отдельной динамической библиотеке. Его задача - шифрование файлов с использованием алгоритма AES-128. Используя функции CryptGenKey энкодер создает RSA-пару, при этом публичная часть сохраняется в файле 00000000.pky, приватная – шифруется авторским публичным ключом и сохраняется в файле 00000000.eky. Ключ генерируется для каждого шифруемого файла с использованием функции CryptGenRandom.

В зашифрованном файле сохраняется:

  • маркер (8 байт): WANACRY!;
  • длина зашифрованного ключа (4 байта);
  • зашифрованный ключ (256 байт);
  • информация о типе шифрования (4 байта);
  • исходный размер файла (8 байт);
  • зашифрованные данные.


В процессе шифрования создается список файлов, которые могут быть расшифрованы в тестовом режиме. Он сохраняется в файле f.wnry. Сессионный AES-ключ для расшифровки тестовых файлов шифруется вторым RSA-ключом, приватная часть которого хранится в теле трояна.

Шифровальщик содержит авторский декодер, способного выполнять следующие функции:

  • устанавливать обои рабочего стола из файла b.wnry;
  • удалять теневые копии;
  • отключать функции восстановления системы;
  • распаковывать ПО для работы с Tor из файла s.wnry или скачивать его с сайта, адрес которого хранится в файле, зашитом в c.wnry.


Декодер способен воспринимать следующие параметры командной строки (без аргументов):

  • fi — извлекает ПО для работы с Tor, устанавливает соединение с портом 80 onion-серверов, указанных в конфигурации. Получает от них адрес кошелька BTC и сохраняет его в конфигурации;
  • co — читает из res-файла данные о начале шифрования и, предположительно, отправляет их на onion-сервер;
  • vs — удаляет теневые копии и отключает восстановление системы.


Для обмена данными с onion-серверами Trojan.Encoder.11432 использует собственный протокол. В настоящее время расшифровка поврежденных трояном файлов не представляется возможной.


Сетевая активность

Для обмена информацией с удаленными серверами троян использует собственный протокол. Можно выделить три типа сетевой активности:

  • отправка сообщений авторам трояна;
  • запрос имени BTC-кошелька;
  • проверка оплаты выкупа.


Перед началом сеанса связи троян проверяет наличие соединения и выбирает адрес onion-сервера из записанных в конфигурации. Для проверки работоспособности сервера вредонос соединяется с ним по 80-му порту через сеть TOR и устанавливает сессионный ключ, после чего передается полезная информация.

Все передаваемые пакеты данных шифруются.

При отправке сообщений авторам трояна текст размером менее 10 символов не отсылается, вредоносная программа возвращает ошибку "Too short message!". Сообщения длиннее 1000 символов урезаются до 1000. Декодер не позволяет отправлять сообщения слишком часто (эти ограничения реализованы в самом декодере).

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

Отправив данные на сервер, ожидает получения расшифрованного файла eky (приватная часть RSA-ключа).