近期研究人员发现了一款新型银行木马Janeleiro,自2019年以来一直瞄准巴西的企业用户,涉及工程、医疗保健、零售、制造、金融、交通和政府等多个行业。Janeleiro主要通过模仿巴西大型银行的网页诱骗用户进行凭据钓鱼,与当地一些较出名的银行木马(Casbaneiro, Grandoreiro, Mekotio, Amavaldo,Vadokrist)目标一致,不同的是Janeleiro是用Visual Basic .NET编写的,而不是该地区威胁行为者已经使用多年的Delphi编程语言。
Janeleiro的目标是赋予操作人员更多的控制权,让他们可以根据自己的需要来操纵和调整钓鱼窗口,以收集受害者的不同信息,如鼠标点击、键盘记录、截屏等。这类攻击不是以其自动化功能为特征,大多数情况下都需要操作人员动手下达命令来实时调整窗口。
Janeleiro运营人员使用GitHub来存储相应模块,管理组织页面,并每天上传新C&C服务器列表。最新版本的Janeleiro有效存活期只有一天,这也是它最大的特点。
目标:巴西
根据遥测数据可以确认此恶意软件仅针对企业用户。恶意电子邮件以小批量形式发送给巴西的公司,受影响的行业较多并无太多关联,可认为攻击目标广泛,并没有具体针对某行业。
图1显示了钓鱼邮件示例,内容是告知公司有未付发票需要处理,邮件包含一个链接,可以链接到受感染的服务器,检索到的页面仅重定向到Azure中托管的ZIP存档下载。攻击者发送的其他一些邮件不会通过受感染服务器进行重定向,而是直接转到ZIP存档。
图1.恶意电子邮件示例
托管Janeleiro存档的服务器的url与传递其他银行木马家族的url遵循相同的惯例,某些情况下,同一URL在不同的时间分发了Janeleiro及其他Delphi恶意软件。这要么表明这些犯罪组织用的是同一家服务供应商,要么说明他们是同一组织,目前尚未确定哪个假设是正确的。
攻击流程概述如图2所示。
图2. Janeleiro攻击概述
ZIP存档包含一个MSI安装程序,用于加载主木马DLL。使用MSI安装程序是巴西多个恶意软件家族的首选技术,Janeleiro会先检索计算机的公共IP地址,并使用网络服务对其地理位置进行定位,如果返回的国家代码值与BR不匹配,则恶意软件退出。如果地理位置检查通过,则Janeleiro会收集受感染计算机的信息,包括:
· 当前日期和时间
· 机器名称和用户名
· 操作系统全名和架构
· 恶意软件版本
· 定位计算机时获得的区域名称
这些信息被上传到一个网站,之后Janeleiro从GitHub组织页面检索C&C服务器的IP地址,再准备好启动其核心功能,并等待操作符的命令。
ESET在2020年发布的白皮书中详细介绍了拉丁美洲银行木马家族之间的关联,其相似之处在于木马程序核心的实现:在活动窗口中出现预定义的关键字时,恶意软件发送信息通知操作人员,并弹出伪造窗口诱骗受害者输入敏感信息。图3中的流程图说明了此过程。
图3.拉丁美洲银行木马的典型核心实现
Janeleiro的核心实现与巴西的其他11个恶意银行木马一样。图4所示了Janeleiro创建的一些弹出窗口。
图4. Janeleiro使用的弹出窗口
Janeleiro实施
Janeleiro枚举窗口,检查标题以找到银行相关的关键字(如图5所示)。
图5. Janeleiro在窗口标题中搜索的关键字列表
当关键字匹配时,Janeleiro立即从GitHub检索其C&C服务器的地址并连接,伪造的弹出窗口是根据需要动态创建的,由攻击者通过恶意软件的命令控制,因为需要记录屏幕截图、键盘和在假表单的输入等多阶段的信息,攻击者也需要多阶段适配窗口创建。
威胁行为者滥用GitHub并不是什么新鲜事,但Janeleiro用了一种巧妙的方式来做:操作人员每天都以SLK
的形式重命名存储库,
表示当前日期。
2021年3月15日的GitHub页面如图6所示。
图6. GitHub页面,其中包含Janeleiro的操作员使用的存储库
每天,操作员novoescritorio1-alberto都会使用上述命名格式创建一个新的存储库,存储库包含一个文件,文件里记录C&C服务器的IP地址列表,通过连接该文件可以向其操作人员报告,接收命令并实时窃取信息。
图7、图8所示的屏幕截图显示了GitHub组织页面中的一个存储库,有执行提交的帐户的用户名。
图7. Janeleiro版本3
图8.JaneKiro版本2
在最新版本的Janeleiro(版本0.0.3)中,开发人员使用名为EncryptDecryptUtils的开源库引入了一种有趣的加密/解密功能。新的解密过程如图9所示。
图9. Janeleiro版本0.0.3实现的解密过程
为了解密字符串,Janeleiro加密由当前日期产生的字符串,然后将结果用作密码短语和salt值,以创建一个用于解密的新密钥。这个步骤是非常关键的:Janeleiro的最新版本只能在预定的一天解密其字符串,可能是字符串被加密的同一天,也可能是将来的一天,在其他任何时候解密都会失败。
对于主分支中的SLK文件的内容也是如此:加密的和base 64编码的C&C服务器列表,如图10所示。
图10.主分支中SLK文件的内容
使用相同的过程对内容进行加密:当Janeleiro解密文件的内容时,它必须在一个特定的日期——当前日期——才能正常工作。
Janeleiro的演变
Janeleiro具有一个内部版本值(如图11所示),攻击者可以使用该内部值来确定其恶意软件的哪个版本成功入侵了相应电脑。截至2021年3月,我们已经确定了四个版本,但其中两个内部版本号相同。
图11. 2020年以后版本0.0.2A使用的配置值
虽然在2021年我们已经看到了0.0.2和0.0.3版本,但我们感兴趣的是找到Janeleiro演进过程中缺失的关键部分:0.0.1版本,该版本本应在2019年末或2020年初存在。但令人意外的是,0.0.4版本的样本一样可追溯到2019年。这些新的木马样本是由一个DLL加载器组件和一个密码窃取器组成,意味着Janeleiro背后的团队还有其他工具在他们的武器库里。
图12显示了从2019年到2021年Janeleiro版本演变
图12. Janeleiro基于恶意软件内部版本的演变时间表
时间轴和内部版本控制的不一致表明,该恶意软件早在2018年就已在开发中,到2020年,攻击者决定改用以前的代码版本,并对命令处理程序进行改进完善。
Janeleiro与巴西其他银行木马对比
尽管Janeleiro目标和手法和巴西其他银行木马家族类似,但也有几个方面不一致:
· Janeleiro是用Visual Basic .NET编写的,巴西其他银行木马家族(Grandoreiro,Mekotio,Ousaban,Vadokrist,Guildma等)是由Delphi开发的。
· 没有二进制混淆:虽然Janeleiro有为类、模块、方法名称、参数和字符串的加密生成随机名称来轻微混淆,但没有使用封装器来使检测分析变得更加困难,其他木马则大量使用Themida和二进制填充技术。
· 无需自定义加密算法:Janeleiro的开发人员依靠.NET Framework和开源项目提供的加密功能来进行字符串加密/解密,并且优先选择AES和RSA算法,而Casbaneiro,Grandoreiro,Amavaldo,Mispadu和Guildma等木马使用自定义加密算法,包括使用字符串表的混淆技术。
· 简单的执行方法:MSI安装程序不部署除主要木马DLL之外的其他组件,也不执行进一步的指令(除了加载和执行DLL安装后的一个导出文件)。我们没有发现MSI安装程序执行混淆脚本、解包支持工具或DLL侧加载组件的样本,这在该地区的其他恶意软件家族中很流行。
· 无法绕过安全软件:巴西的一些大型银行要求客户安装安全模块后才能允许在线访问其银行帐户。LATAM银行木马病毒会试图找出这类软件是否安装在受损机器上,并向攻击者报告。一些恶意软件家族,如Grandoreiro和Guildma试图在Windows防火墙中禁用它或其驱动程序。
· 使用NjRAT的代码:Janeleiro与著名的NjRAT相差甚远,但它确实使用了NjRAT的SocketClient、远程桌面捕获,以及其他一些功能。
Janeleiro指令
从C&C服务器接收的带有参数的命令是以加密的形式接收的,其算法与加密字符串的算法相同。典型的命令格式如下:%CommandName%%PredefinedSeparatorKeyword%%Parameters%。
解密后,命令将拆分为一个字符串数组。命令的每个部分都由在恶意软件的配置中硬编码的预定义关键字分隔开,我们分析的所有版本都使用了 |’meio’|来分隔命令名和参数。
图13显示Janeleiro如何检查命令名称并执行所请求的操作。
图13.版本0.0.2B处理命令startinfo的示例
当Janeleiro将数据发送回操作人员时的格式类似:%CommandName%%PredefinedSeparatorKeyword%%Encoded data%。
Janeleiro的大多数命令是用于控制窗口、鼠标和键盘,以及它的假弹出窗口。随着版本从0.0.2A发展到0.0.3,增加了更多的命令,为操作人员提供了更精细的控制:
· 控制特定窗口的命令
· 枚举和发送关于windows的信息(标题、类、句柄)
· 调整特定的窗口大小,最小化,最大化
· 屏幕尺寸
· 杀死所有chrome.exe进程,然后使用参数–disable-gpu重新启动chrome.exe
· 实时捕获屏幕
· 实时键盘记录
· 发送键和鼠标单击
· 显示或关闭特定的伪造窗口
· 其他命令,例如:发送日期和时间,断开套接字,终止自身进程
结论
Janeleiro的实验性质,以及在不同版本之间来回反复,说明背后的威胁行为者仍在努力找寻一条适合的途径。Janeleiro与巴西当地知名银行木马共享基础设施,要么说明犯罪组织用的是同一家服务供应商,要么说明他们是同一组织,目前尚未确定哪个假设是正确的。
本文翻译自:https://www.welivesecurity.com/2021/04/06/janeleiro-time-traveler-new-old-banking-trojan-brazil/如若转载,请注明原文地址: