Ви використовуєте застарілий браузер!
Сторінка може відображатися некоректно.
Напишіть
Зателефонуйте
Глобальна підтримка:
+7 (495) 789-45-86
Поширені запитання | | Форум | | Бот самопідтримки Telegram |
Ваші запити
Зателефонуйте
Глобальна підтримка:
+7 (495) 789-45-86
Зв'яжіться з нами Незакриті запити:
Анализ используемых злоумышленниками технологий позволяет нам делать выводы о возможных векторах развития вирусной индустрии и еще эффективней противостоять будущим угрозам. Узнайте и вы о том, как действуют в зараженных системах те или иные вредоносные программы и как этому противостоять.
Файловый вирус, предназначенный для загрузки других модулей с использованием протокола P2P. Полезная нагрузка представляет собой исполняемый файл, упакованный UPX, который при запуске инициализирует данные — порт UDP:
GetComputerNameA((LPSTR)&buf[1], &size);
if ( lstrlenA((LPCSTR)&buf[1]) > 2 )
{
B1 = buf[1];
Bn = buf[lstrlenA((LPCSTR)&buf[1])];
LOWORD(PORT) = Bn * B1 + 1060;
}
и порт TCP:
TCP_PORT=PORT+19
Открывает расшаренную память, созданную ранее шелл-кодом с именем purity_control_4428, в которой содержатся актуальные конфигурационные данные и пары IP-адрес – порт (ноды) для подключения к P2P-сети. Открывает расшаренную память hh8geqpHJTkdns6, в которую заносит список нод во время работы модуля. В процессе работы сохраняет ноды в системном реестре Windows:
HKEY_CURRENT_USER\Software\<[a-z]*>\%c%d_%d
%c - PC_SEED
%d - номер параметра (addr,port,id_peer,count_answer)
%d - индекс ноды
Конфигурационные данные большого объема сохраняет в файлах:
%SYSTEM32%\<[a-z]*>\[a-z]*.log
или
%TEMP%\<[a-z]*>\[a-z]*.log
Также сохраняет в реестре список URL:
HKEY_CURRENT_USER\Software\PC_SEED*PC_SEED\%d\
%d - номер параметра (список url, подпись, размер данных и т.д.)
Инициализирует публичный ключ:
E=
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01
N=
BB D2 96 8E ED 0B 93 8A 82 E4 E9 BC C3 C5 32 72
4C 08 AA 56 9F 2D 64 0F 1B 86 68 0E 2B 62 E9 C6
35 6D 75 B6 32 2D 4F A8 B8 D9 2A 44 8B F0 7F E0
D9 8E BE 66 9D A6 7A 9A 6D E1 45 F1 D3 48 01 0D
39 2E 9D 2A 45 FB 0B FB 1D 96 F3 B7 4F 55 E5 E1
16 5B F7 A1 CC 7C 87 C0 C8 9C EF 4E CE 29 58 E2
99 BD 8A 7A 55 BE B4 1C D9 79 52 25 D8 28 86 7B
81 39 98 5F 2C 6F 14 BB A5 6B CE 44 E5 91 93 38
8B 9A C1 74 46 84 E1 26 EC 04 94 96 75 09 E3 B5
88 D6 08 F0 4A B7 84 D3 13 2F 00 CC D5 2A 8C 17
07 09 DE 6F B0 D3 D6 2B C6 A6 9D 38 18 8C 74 9D
86 16 D5 48 6E 97 32 DB E1 4E F8 04 A6 00 7C 16
2E 70 1C 23 37 DD 5A 52 76 62 70 D4 86 66 6E DF
0C E9 A1 68 F9 5E E8 DD 09 0C 02 7D 35 D0 54 E7
00 C0 14 9F CE 4A 9F F3 99 50 1A 0B CD CC FF 05
B9 04 12 E2 11 76 2F FF A4 6E 64 18 E0 D0 7B 3B
Затем вирус запускает несколько тредов, в которых реализованы перечисленные ниже подсистемы.
Встраивает себя во все запущенные процессы с использованием функций VirtualAllocEx/WriteProcessMemory/CreateRemoteThread.
Пытается установить в системе собственный драйвер:
SYSTEM32\drivers\[a-z]*.sys
С использованием данного драйвера, либо путем вызова функции TerminateProcess, пытается остановить следующие процессы (если они запущены):
Пытается удалить следующие системные службы:
Драйвер создает устройство:
\Device\amsint32
\DosDevices\amsint32
Затем расшифровывает список адресов веб-сайтов:
Устанавливает IRP-обработчики для общения с драйвером из пользовательского режима. Позволяет выполнять следующие команды:
Если DWORD=666, буфер содержит адреса KeServiceDescriptorTable, которые бот ранее нашел в usermode (таблица необходима для поиска NtTerminateProcess).
Устанавливает функцию — обработчик драйвера на \Device\IPFILTERDRIVER.
Таким образом:
IoBuildDeviceIoControlRequest(0x128058u, DeviceObject, &pfunc, 4u, 0, 0, 0, 0, &IoStatusBlock);
В результате функция-обработчик осуществляет мониторинг всех входящих соединений, и, если блокировка включена, соединения с сайтами из заданного списка блокируются.
Вирус инфицирует дисковые накопители, размещая на них файл автозапуска autorun.inf:
;xmMgM
[AutoRun]
;foXjogjgAirFrJaIWvWCFYOjVdeptddJqu
;qxltVAjtFsQy
SHell\Open\defAult=1
OPeN =eromp.exe
;
ShelL\open\cOmmAND =eromp.exe
;elrktM
ShEll\ExploRe\ComMAnD=eromp.exe
;rtLT xwoG
shElL\autOplAy\ComManD =eromp.exe
;pbmyU igvQEdlfgtjgTs
[AutoRun]
;kWxFMtJjds ntDcm JsyqrhIKdiyp
;flpkohOJMJ
shEll\oPen\dEfauLt=1
;
SHeLl\opeN\CoMMaNd=xsvsf.pif
;
oPEn =xsvsf.pif
SHelL\EXploRe\COmmand = xsvsf.pif
;vWgFu HkdyJEhwpgeiEdbvSCyiYmisLkvq
shell\AuToplaY\coMMaND=xsvsf.pif
Заражает все файлы, зарегистрированные в следующих ветвях системного реестра:
Заражает все файлы, обнаруженные в открытых на запись сетевых папках:
После заражения ПК вирус устанавливает соединения с P2P-ресурсами по ранее полученному списку адресов, загружает исполняемые файлы и после проверки цифровой подписи сохраняет их в файл:
%SYSTEM32%\<[a-z]*>\[a-z]*.log или %TEMP%\<[a-z]*>\[a-z]*.log
Затем при каждом запуске извлекает модули из файла конфигурации и запускает их из временной папки %temp%.
Загружаемые модули:
Протокол состоит из UDP-сервера, отвечающего за обмен нодами (списками «адрес-порт» P2P-сети), и TCP-сервера, ответственного за загрузку конфигурационных данных. Структура хранения списка нод реализована следующим образом:
struct tnode
{
DWORD addr; //ip
WORD port; //udp port
WORD w1;
DWORD id_peer; //id бота если бот имеет внешний ip то id больше 16000000
DWORD count_answer; //количество успешных запросов
DWORD time; //время GetTickCount
};
Каждый UDP-пакет имеет заголовок вида:
struct P2P_HEAD
{
WORD crc16; //контрольная сумма сообщения crc16
WORD len; //длина сообщения
};
и шифруется с использованием алгоритма RC4, где в качестве ключа – значение P2P_HEAD.
Затем для осуществления обмена конфигурационными данными вирус начинает последовательно отправлять запросы согласно списку.
OP_03 — запрос ID конфигурации.
Пакет имеет следующую структуру:
struct OP_03
{
BYTE ver; //версия протокола 4
DWORD id; //id конфигурации
BYTE op; //0x03 команда
BYTE b4Fh; //0x4F
BYTE b4Bh; //0x4B
DWORD size_cfg; //0xFEFEFEFE или размер пакета
WORD w1; // 0x0
};
В ответ приходит такой же пакет с ID конфигурации ноды. Если полученный ID меньше текущего, то выполняется следующий запрос конфигурации:
struct OP_23{
BYTE ver; //4
DWORD id; //id cfg
BYTE op; //0x23
BYTE b4Fh; //0x4F
BYTE b4Bh; //0x4B
BYTE b1; //-2
BYTE b2; //-2
BYTE b3; //-2
BYTE b4; //-2
DWORD size_cfg; //размер url
};
В ответ приходит пакет следующей структуры:
struct tcfg_head
{
DWORD size; //размер конфигурации
DWORD crc32; //crc32
};
struct tcfg_sign
{
BYTE sign[0x100]; //цифровая подпись
};
struct tcfg_info
{
DWORD id; //id конфигурации
BYTE b1;
BYTE b2;
WORD w1;
DWORD size_cfg; //размер конфигурации
};
struct tcfg{
tcfg_head head;
tcfg_sign sign;
tcfg_info info;
WORD count; //количество url в пакете
BYTE urls[754];//адреса
};
С использованием протокола UDP передаются только конфигурационные данные небольшого размера. Если объем данных превышает 0x400, то выполняется запрос на загрузку конфигурации к TCP-серверу.
Если IP конфигураций равны, но не равны размеры, происходит либо загрузка конфигурационных данных с узла P2P-сети, либо его загрузка на сервер по протоколу TCP.
Для проверки NAT используется следующий запрос:
struct OP_FLAG
{
BYTE ver;// 4
DWORD id; //id cfg
BYTE op; //0x1
DWORD status; //текущий статус NAT
WORD port; //свой udp port
};
Получив такой пакет, сервер пытается отправить запрос источнику, используя для этого новый сокет, соответственно, с новым адресом локального порта, и выполняет отправку пакета OP_03. Если ответ последовал, то сервер считает, что NAT отсутствует, и присваивает боту значение ID выше 16000000, после чего добавляет такого бота в собственный список. Ответный пакет имеет следующую структуру:
struct OP_01
{
BYTE ver; //4
DWORD id; //id cfg
BYTE op; //0x01
DWORD id_peer; //присвоенный id боту
};
Для запроса нового IP-адреса узла P2P-сети бот отправляет команду OP_FLAG с op=0x02. В ответ сервер направляет следующий пакет:
struct OP_02
{
BYTE ver; //4
DWORD id; //id cfg
BYTE op; //0x02
DWORD addr; //случайный IP из списка нод
WORD port; //порт из списка нод
DWORD id_peer; //id ноды из списка нод
};
Протокол TCP используется для обмена конфигурационными данными большого объема. Для получения конфигурационных данных с сервера используется следующий запрос:
struct P2P_CFG_REQ{
DWORD rnd1;
DWORD rnd2;
};
Ответ имеет описанную ранее структуру tcfg, которая зашифрована с использованием алгоритма RC4 с ключом purity_control_%x , где %x - head.size.
Так как бот не может изменять полезную нагрузку, она упакована UPX, а конфигурационные данные и список P2P-узлов должны обновляться в каждом новом инфицированном файле. Для этого используется шелл-код, который создает и инициализирует расшаренную память со списком адресов и конфигурационными данными, а также выполняет «сырую загрузку» в память полезной нагрузки вируса:
Win32.Sector
Win32.Sector.12
Win32.Sector.16
Win32.Sector.23
Win32.Sector.28
Win32.Sector.28684
Win32.Sector.28684.origin
Win32.Sector.29
Win32.Sector.30
Win32.Sector.31
Win32.Sector.33
Win32.Sector.34
Win32.Sector.5
По статистике каждая пятая программа для ОС Android — с уязвимостью (или, иными словами, — с «дырой»), что позволяет злоумышленникам успешно внедрять мобильных троянцев на устройства и выполнять нужные им действия.
Аудитор безопасности в Dr.Web для Android произведет диагностику и анализ безопасности мобильного устройства, предложит решения для устранения выявленных проблем и уязвимостей.