Упаковщик:
отсутствует
Дата компиляции:
05:38:03 23.10.2019
SHA1-хеш:
27e8474286382ff8e2de2c49398179f11936c3c5 (TosBtKbdLayer.dll)
Описание
Троянская dll-библиотека, написанная на C++ и работающая на компьютерах под управлением 32- и 64-битных операционных систем семейства Microsoft Windows. В нее заложены функции кейлоггера, отслеживания содержимого буфера обмена, извлечения сохраненных логинов и паролей, получения списка установленных приложений и сбора общей информации о зараженной системе.
Принцип действия
BackDoor.Siggen2.3243 статически скомпонован с несколькими библиотеками: OpenSSL, SQLite, библиотекой XMPP-клиента gloox, JSON-парсера CJsonObject и STL.
Троян загружается в память вредоносной программой BackDoor.ShadowPad.4 4 через функцию LoadLibrary. Вначале он создает мьютекс [Guid("71ED330D-F80C-499A-A442-744EAD224A8F")]. Затем в текущей директории он создает лог-файл, имя которого вычисляется как MD5-хеш строки winhook-clientLog ― eb3816e69e6c007b96a09e2ecee968e5. После этого троян записывает в него следующие строки:
Info [YYYY-MM-DD HH:MM:SS]Log::setLogPath success,
Info [YYYY-MM-DD HH:MM:SS]..Start.. 0.0.9a
В процессе работы BackDoor.Siggen2.3243 сохраняет в лог-файл информацию обо всех своих действиях, включая ошибки:
При этом сообщения об ошибках записываются с типом Warring. Пример такой записи:
Используя протокол UDP, троян отправляет на удаленный сервер по адресу 1.1.1.1:8005 (принадлежит сервису Cloudflare DNS) сообщения в виде строки DKGETMMHOST\r\n:
Отправка таких нестандартных сообщений не несет практической пользы и может говорить о том, что исследованный образец трояна является тестовой версией, и сервер 1.1.1.1 использован в качестве временной заглушки.
В ответном сообщении сервера BackDoor.Siggen2.3243 ищет строку DKMMHOST:, после которой должен располагаться адрес C&C-сервера, с которым трояну необходимо установить соединение. Кроме того, в текущей директории бэкдор ищет файл с именем в виде MD5-хеша строки register.json. Этот файл должен представлять собой закодированный Base64 конфигурационный файл в формате JSON, содержащий параметры для подключения к C&C-серверу.
Для общения с C&C-сервером троян также использует JSON. В BackDoor.Siggen2.3243 присутствуют соответствующие классы для соединения с ним:
Артефакты
Библиотека содержит информацию о пути к файлу проекта:
C:\Users\Administrator\Desktop\Fun\bin\Win32\Release\winsafe.pdb
Также в ней присутствуют следующие строки:
BrowseHistory.db
select url, title, last_visit_time, visit_count from urls
title
last_visit_time
visit_count
BrowseHistory::urlChrome, %s, %s
select id, title, last, hit from UserRankUrl
BrowseHistory::urlSogouExplorer,%s, %s
es.sqlite
select url, title, last_visit_date, visit_count from moz_places
last_visit_date
BrowseHistory::urlSogouExplorer, %s
\\2345Explorer\\User Data\\Default\\History
2345Explorer.exe
\\google\\chrome\\User Data\\default\\History
chrome.exe
\\360Chrome\\chrome\\User Data\\default\\History
360chrome.exe
\\User Data\\default\\History
\\360se6\\User Data\\default\\History
360se.exe
\\Tencent\\QQBrowser\\User Data\\Default\\History
QQBrowser.exe
\\SogouExplorer\\HistoryUrl3.db
SogouExplorer.exe
\\Mozilla\\Firefox\\Profiles
firefox.exe
++ %p s_buff_size = %u mb
-- %p s_buff_size = %u mb
write2socket1:sockfd<%d> client socket closed.
write2socket1:sockfd<%d> nSize<%d> nLast<%d> ret<%d>
sockfd<%d> onClose
warning, initSocket close old socket<%d>...
create socket failed...
<socket=%d> connect <%s:%d> failed...
hostname2ip(hostname is null ptr).
hostname2ip(port is null ptr).
%s getaddrinfo
%s getnameinfo
--\r\n\r\n
Content-Disposition: form-data; name=\"%s\"\r\n\r\n
!_form_data_buf.canWrite(bytesize), url=%s
readsize != bytesize, url=%s
readsize >= 1MB
Content-Disposition: form-data; name=\"%s\"; filename=\"%s\"\r\n
Content-Type: application/octet-stream\r\n\r\n
total %.2f GB (%.2f GB available)
system_hide::CreatePipe
system_hide::CreateProcess
wmic path win32_physicalmedia get SerialNumber
WMIC diskdrive get Name, Manufacturer, Model
LocalData::task_load::PathFileExists, %s
LocalData::task_load::read.data.empty, %s
LocalData::task_load::CJsonObject.Parse.empty, %s
LocalData::task_add::taskid exists %d
task_cache_init
LocalData::task_cache_init::taskids.IsEmpty()
LocalData::task_cache_init::read.data.empty, taskid=%s
LocalData::task_cache_init::Parse.data.empty, taskid=%s
LocalData::task_cache_init::task_state.empty, taskid=%s
cmd_10050
clipboard_records
cmd_10026
keyboard_records
set_do_scanfs_lasttime
/windows/register failed!
success
register failed!
register c2s!
application/json
Content-Type
/windows/register
token-refresh lost! to register_dev
token-refresh s2c <%d><%s>
token-refresh success! to start pushclient, token=%s
token-refresh failed! to register_dev
token-refresh c2s <%s>
/windows/token-refresh
submit-data warring! e.cmd<%s> != cmd<%s>
submit-data failed! <%s>
submit_data s2c <%s><%s>
submit_data s2c <%s><%d>
submit_data c2s <%p : %p> <%s>
/windows/submit-data
submit-file failed! <%s>
submit_file s2c <%s><%s><%s>
----boundaryb1zYhTI38xpQxBK00
multipart/form-data; boundary=
upfile
submit_file c2s <%p : %p> <%s><%s>
/windows/submit-file
endFile %s cbFun
remove %s
endFile %s
cmd_99998
message
do cmd_10001
mem_size
sd_sn
sd_model
sd_volume
sd_partitioning
volume
disk_size
file_sys
paration_table
remaining_percent
remaining_size
mac_net
mac_wifi
network
sd_info
camera
microphone
2.0.1
mm_version
cmd_10001
do cmd_10002
cmd_10002
appinfo
GetSoftInfo info.empty()
appname
version
install_time
install_path
uninstall_path
publisher
do cmd_10014
cmd_10014
all_request
GetBrowsHistory info.empty()
do cmd_10052
cmd_10052
browser_accounts
UserAccHistory info.empty()
{\"local_task\":\"true\",\"data\":{\"instructions\":{\"cmd\":\"cmd_10018\"}}}
do cmd_10013_log
2ecee968e5\", \"filename\" : \"eb3816e69e6c007b96a09e2ecee968e5\"}, \"extend\" : {\"id\":\"3f056c333f4f7ce015ec02f109454c54\", \"log_id\" : 2113}}}}
{\"code\":\"policypush\", \"data\" : {\"type\":\"policypush\", \"createdatetime\" : \"2019 - 07 - 17 15:51 : 00\", \"instructions\" : {\"cmd\":\"cmd_10013\", \"data\" : {\"path\":\"