概述
近期,奇安信病毒响应中心在日常威胁追踪中发现,一例针对俄罗斯鄂木斯克州,一家与石油相关的公司的攻击活动。攻击入口依旧为邮件,通过向公司公开邮箱中发送诱饵邮件获得攻击入口。攻击目的为植入后门程序以及获取目标机器上的浏览器本地凭证信息。
从样本中字符串分析来看攻击者做了充分的准备,对俄罗斯用户上网习惯较为熟悉,PE样本中列出大量与俄罗斯用户的用户习惯息息相关的字符串,并且多个字符串都与银行相关。从样本分析结果关联发现该木马为RTM家族木马。
样本分析
诱饵文件
发送的诱饵邮件内容使用语言为俄文,内容与金额核对有关:
内容翻译如下:
邮件中有一个名称为Сверка за сегодня的压缩文件,中文翻译名称为”今日核对”,压缩文件解压之后里面附带一个可执行文件,该文件为一个下载器:
邮件发送人是俄罗斯罗斯可莫能源公司(Roskommunenergo),发件人为Елена Куликова [email protected]。
收件人邮箱为” [email protected]”,该邮箱是俄罗斯鄂木斯克州一家与石油相关的公司:
Loader分析
名称 | Сверка за сегодня.exe |
MD5 | CDA842C3115AC4D25B89360E547DD79B |
该EXE在main函数中插入了一些无功能的代码,实际功能是保存在.text段中的ShellCode:
ShellCode中申请空间,并解密保存在PE中的数据,随后调用第二段ShellCode:
第二段ShellCode中继续申请空间拷贝PE文件保存的加密数据,并对其解密,解密算法为每四字节异或0x954132AC,得到的数值与自己相减:
解密完成为另一个PE文件,即Loader的真正代码功能,由Delphi编写:
Delphi PayLoad分析
启动之后会检测当前进程的参数个数,如果无参则会指定参数并重新创建进程:
获取IE浏览器的缓存数据:
获取缓存数据之后会先检查头四个字节是不是”http”,如果是则继续与PE中硬编码的字符串比较,来看是不是攻击者感兴趣的数据:
字符串列表,列表中字符串与银行有关:
bc.rshb |
i.vtb.ru |
bsi.dll? |
online.payment.ru |
/ic/login.zhtml |
bankline.ru |
/servlets/ibc |
faktura.ru |
/iclient/ |
ibank2 |
elba.raiffeisen |
elbrus.raiffeisen |
handybank. |
wupos.westernunion |
bco.vtb24 |
bo.vtb24 |
dbo.vtb. |
online.sberbank. |
minbank.ru |
e-plat.mdmbank |
link.alfabank |
click.alfabank |
ib.avangard |
ibc.vuzbank |
ibc.ubrr |
my.modulbank |
online.centrinvest |
cb.mtsbank |
vbo.mkb |
i.bspb.ru |
/vpnkeylocal |
sci.interkassa |
ibank.mmbank. |
blockchain.info |
cb.asb.by |
bps-sberbank.by |
dbo2.bveb.by |
ibank.bsb.by |
corporate.bgpb.by |
ibank.alfa-bank.by |
ibank.belinvestbank.by |
ib2.ideabank.by |
client.paritetbank.by |
ibank.priorbank.by |
client.mybank.by |
online.stbank.by |
client.belapb.by |
随后获取缓存文件路径,拼接要访问的文件路径来拼接出Chrome浏览器的缓存文件:
路径一共2个,分别是” GoogleChromeUser DataProfile2History”和”GoogleChromeUser DataDefaultHistory”。
获取文件属性:
将Chrome的历史文件拷贝到Temp目录下:
通过FileMapping的方式将Chrome文件的历史记录映射到当前进程的内存中:
映射之后会循环递增,通过与0x70747468比较来定位文件中“http”字符串的位置,直到找到跟URL相关的数据,至此重复之前获取IE历史记录的步骤:
以及获取FireFox的历史记录:
浏览器历史记录获取完成之后会遍历文件,查找是否存在特定文件:
文件名列表如下:
wclnt.exe |
cbmain.exe |
bssax.ocx |
ibank.odb |
client.jks |
intpro.exe |
cbsmain.dll |
sbgclient.exe |
1cv8.exe |
1cv8c.exe |
1cv8s.exe |
1cv7.exe |
1cv71.exe |
1cv7s.exe |
winpost.exe |
clbank.exe |
qiwicasbier.exe |
iscc.exe |
webmoney.exe |
wallet.dat |
ifobsclient.exe |
transaq.exe |
maratl.exe |
_ftcgpk.exe |
ip_client.exe |
el_cli.exe |
bbclient.exe |
scdbo_.t.exe |
obcryptoapp.exe |
在获取了IE、Chrome、FireFox以及枚举完文件之后会链接服务器通过Http协议Get数据,从服务器获取插件的逻辑有2种。
一种方式是下载一个PE文件在内存中加载PE执行:
请求数据:
数据请求完成之后解密,参数分别为Buff以及长度:
解密完成之后是一个PE文件:
解密算法如下:
随后申请空间,修改内存属性之后获取PE文件的导出函数”start”并调用:
另一种是在获取完浏览器缓存之后请求一个DLL,并保存在Temp目录下,通过RunDll32执行。
进程创完成之后给服务器发通知包:
PayLoad Rundll32执行的DLL分析
MD5 | 6697F31EA7E27E8871B729A28FC96F4E |
该DLL OEP中插入了大量的Push Retn来修改程序EIP:
最终会跳到主要功能代码中,随后调用ViritualAlloc申请空间将PE文件中保存的加密数据拷贝到申请的空间:
随后循环解密,解密算法如下:
最终在内存中释放出另一个PE文件,找到该DLL的导出函数GetClassObject并传参调用。
该DLL调用的多个API都是动态调用,在调用之前通过GetProcAddress获取函数地址保存在全局变量中:
获取当前进程的SID信息来判断当前进程的权限等级:
判断逻辑是如果返回值大于等于0x2000即大于等于SECURITY_MANDATORY_MEDIUM_RID:
获取ProgramData的路径并拼接出一个新的文件夹路径,通过GetFileAttributesW返回值判断文件夹是否存在,如果不存在则调用CreateDirectoryW创建该文件夹,用以将Temp下的文件拷贝一份到指定目录下:
创建文件夹之后读取当前自身文件:
随后创建文件,将当前进程文件拷贝到ProgramData路径下:
还会判断当前进程名称是不是Rundll32.exe:
通过计划任务达到持久性攻击的目的:
该程序附带多个后门功能,通过InternetReadFile从服务器读取的数据来解析控制码从而执行不同的流程:
设置键盘钩子:
会通过DDE系列函数循环读取Figure类型窗口的信息:
窗口列表如下:
SunAwtFrame |
SunAwtDialog |
TLoginWindow |
fmISClient |
TfmISClient |
TInitialform |
TSYSCustomForm |
ДБО BS-Client |
Райффайзенбанк – система ELBRUS.erConfigurationWhere IPEnabled = True |
ЗАО “Инверсия” |
“E-Plat” |
ALBO |
Альфа-Клик.n |
АвангардИнтернет-банк |
АО “ВУЗ-банк” |
ПАО КБ “УБРиР”.ет-банк |
Модульбанк – Личный кабинет |
SberbankBusiness Online |
МКБ Интернет-банк.Online |
МИнБанкБизнес Online |
获取当前系统信息,包括用户名、计算机名、时区、默认语言、Kernel32版本信息、系统版本信息以及当前进程的权限:
随后连接服务器:
该程序功能齐全,是个典型的后门程序:
读取SCARD信息:
读取PCSC设备信息:
保存插件并调用ShellExecute执行:
保存插件为DLL并加载:
执行从服务器下载的ShellCode:
注册表读取:
创建不同Seeion的进程:
进程提权:
文件读写操作:
Socket通信:
屏幕截图:
从功能上看该程序功能齐全,包含进程、文件、注册表以及网络通信等功能,还支持后续插件功能扩展,是一个典型的后门程序。
PayLoad 内存加载的PE分析
MD5 | AA9E518A72D776E4ACE2EB5FA1329899 |
主要获取Chrome在Temp中保存的数据,该文件是一个SQLite3格式的数据库文件,打开后如下,保存的包括用户登录信息,对应网站的账号密码等:
随后调用SQL语句查询数据库:
获取kometa软件保存的数据库信息:
获取orbitum浏览器保存的数据库信息:
获取Opera浏览器数据库信息:
获取yandex浏览器数据库信息:
获取Amigo浏览器数据库信息:
获取Firefox浏览器数据库信息:
获取thunderbird保存的用户信息:
获取IE浏览器保存数据:
通过注册表查询OutLook保存的数据:
获取incredimail邮箱软件数据:
获取WindowsMail数据信息:
获取完成之后发送给服务器:
总结
从攻击者手法上来看,攻击者依托诱饵邮件诱导用户执行从而获得攻击入口。样本通过多次内存释放PE,并且关键PayLoad托管在远程服务器上,并支持在内存中执行,增大了分析人员的分析难度。
攻击者利用普通用户不设防心里对攻击目标实施攻击。奇安信病毒响应中心提醒用户谨慎打开未知文档以及邮件,预防此类恶意样本攻击。
IOCs
C&C:
85.217.171.43/viewtopic.php?f576=501?f948=636d6d?f783=434d4d2d5043
85.217.171.43/viewtopic.php?f576=0?f948=636d6d?f783=434d4d2d5043
85.217.171.43/g_38472341.php
85.217.171.43/viewtopic.php?f576=501&e=0
185.203.119.111:80
MD5:
AA9E518A72D776E4ACE2EB5FA1329899
CDA842C3115AC4D25B89360E547DD79B
6697F31EA7E27E8871B729A28FC96F4E
C0B24F70394A71E0B37A834352FA58BA
原文始发于微信公众号(奇安信病毒响应中心):RTM银行木马再现北亚,针对石油业发起持续攻击