2024年5月11日反馈给我一个钓鱼样本,当时只一眼便觉得大概率属于恶意文件,不过我们建设的检测系统可以检出为恶意文件,这是值得欣慰的,说明之前投入的一些动作是有用的。虽然第一次遇到这个样本时能给出一个比较让人满意的结果,但还是得仔细看看这个样本,等我手工去分析这个样本时,发现存在一些不一样的情况,当时的感觉就是这很有可能是与以往存在不一样的样本,兴奋的感觉逐步萦绕在我的脑子里。
因为角色的转变,样本当前对我来说仅仅只是一个线索,能不详细分析就不要详细分析,能不手工分析就不要手工分析,因为价值太低了,大多数人不会为所谓的样本分析报告而付费。从经济学内容考虑问题,付费才证明了劳动的价值。因为当前没有特别明显的价值,投入与产出完全不对等,分析时长可能需要几天或者几个小时,但是输出的内容往往支撑不了所需要的价值,因为价值是需要被评定的。回到这里的案例,我们要解决的具体问题是这个样本在能被我们检出以外,我还能从这个样本中不消耗太多的成本而获取到我所需要的信息(价值),而这些信息对自动化检测系统或个人来说肯定是有帮助的。
不消耗太多的成本而获取到我所需要的信息,这是很符合经济型社会发展的核心要点。既然找准了核心矛盾,那么我们就可以开始行动了。
相信大多数人或者经常阅读这类文章的读者也想到了方法,那就是“跑沙箱”,我们可以将需要获取信息的样本投递到恶意文件沙箱分析系统中获取分析的输出内容。
投递后分析结果如下,这里选取了进程树这类比较重要的输出信息,进程树可以相对从全局的视角去分析进程与进程之间是否存在异常或者是获取样本整体的执行动作脉络,因为人脑对图形的理解要比文字的理解更深刻一些。
我们可以在网络连接信息里找到网络请求对应的具体进程,如下。
通过上述的进程树我们需要特别留意存在网络请求行为的进程,例如这里是winrdlv3.exe,在图中对比后可以确定是进程2208发起的网络请求,我们现在明白了这个进程或者相关的文件是有概率存在问题的,至此这里是能直接获取到的有用信息。
接下来我们可以手工快速静态分析,首先这个样本通过查询文件类型发现是NSIS安装包文件,利用安装包类型文件投递钓鱼样本确实银狐木马里常常出现的文件类型。
NSIS类型文件是一种以脚本驱动的安装程序,可以用工具从编译好的安装程序提取出其脚本,进而快速分析其潜在行为,这里需要用7zip工具的15.05版本(15.06版本不支持提取NSIS脚本)。
通过阅读nsi脚本文件内容,我们可以获取不少有用的信息,例如这个安装包安装后内部的文件会被释放的目录路径如下:
这些是安装过程中会被执行的命令,和沙箱捕获的进程树显示的内容是一致的。该脚本会一行一行地被执行,最后确实启动了winrdlv3.exe进程。
初看这里,当对释放在本地的winrdlv3.exe文件右键查询其是否存在有效数字签名后,加上该数字签名并未被滥用后可以认定这是一个白文件。于是具有一定分析经验的安全人员会下意识认为这里会使用比较常见的白加黑手法加载恶意文件来实现远控,然后立马去找是否存在恶意的黑文件。最后的结果是我们会发现并没有找到存在明显恶意特征的黑文件,此时就陷入困惑中了。
那么该钓鱼样本实现恶意C2回连的原理是什么呢?
首先我们假设该手法可能是白加黑,因此我们会花费一些时间来寻找是否存在黑文件被加载,但最后会发现这些提取的文件里多数存在有效数签且并没有一个是黑文件,而都是正常文件,很奇怪吧?此时我们需要梳理下分析思路,便于一个个排查来获取我们遭遇的问题的答案。
思路一:
假设本次发现的银狐木马使用了白加黑手法来实现远控,但经过对提取的所有文件的分析发现并没有存在黑文件,于是这个假设可以被否定。
思路二:
这些文件本身是什么?是否能通过文件本身的信息加上关联搜索找到更多有利于判断当前恶意文件的证据?
通过利用文件的数字签名和文件属性的元数据信息在VirusTotal进行搜索,我们发现了很多关联的文件,而这些关联的文件最终将我们指向了IP-**ard工具。到此我们可以得到一个信息就是攻击者本次释放的恶意文件并没有自行编写木马加盗用有效数字签名,而是利用了现有的相关正常文件,至于为什么会直接使用该工具来实现远控,我们仍然是存疑的,还需要将思路进行展开分析。
思路三:
IP-**ard工具到底是什么,为什么银狐木马的钓鱼样本里出现了这些文件?通过搜索官网我们可以得到一个信息,这个是安全管控类工具,而安全管控类工具需要客户端与服务端,往往就能实现一些远控能力。2023年hw期间就有攻击队使用某数字公司提供的云安全运维服务工具来下发钓鱼邮件,发送的邮件说需要进行运维管理升级,附件附有运维类工具让受害者自行安装后实现远控功能。除了远控的地址是存在变化外(攻击者可控),其余与正常工具的使用无任何区别,在这里整个攻击链从恶意文件的视角出发基本可以说是没有任何恶意痕迹与特征。
思路四:
虽然能确定银狐木马背后的攻击者使用了IP-**ard工具实现远控,但是作为一个正常管控工具IP-**ard是如何能被攻击者所利用的呢?这里的话只能根据以往的经验进行合理的假设与验证,首先一个正常的工具要被恶意利用,无外乎存在两种方式。
第一种就是该工具存在漏洞(也就是bug,这是一个IT行业的术语),存在漏洞才有可能被恶意利用,让工具实现原本无法实现的“功能”。但是该假设提出后紧接着对互联网上所有有关IP-**ard工具漏洞的信息表面,最近或近一年均没有发现非常严重的漏洞或者是符合本次利用情况的漏洞,于是这种假设成立的可能性不大,先暂时放弃。
第二种就是该工具的正常申请与使用的业务流程中存在问题,攻击者伪装自己是正常用户申请与成功利用了整个工具。比如数字签名的伪装申请(这里可以阅读之前在公众号发布的文章),可以有概率申请到有效且具有一定伪装性的数字签名。该种假设目前是比较符合现状的,后来腾讯发布的银狐木马相关文章中也提及了这种情况。
到这里我们就可以知晓整个银狐木马的实现路径了,最后的C2连接会来源于正常管控工具的进程。如果不是因为前面通过钓鱼邮件或其他方式(可疑文件名或其他较为异常的投递手法)投递恶意文件,稍微警觉一些的用户能立马发现异常,那么仅仅依赖于自动化检测系统内对钓鱼样本本身实现检测是比较困难的(基本检不出),因为该钓鱼样本从投递沙箱开始到最终结束分析的这段时间内沙箱所获取的信息均是IP-**ard工具正常的业务使用痕迹,而这恰好是攻击者所要实现的策略,尽可能地隐藏久一些,而这个尽可能隐藏的策略所实现的时间确实不短,足足两个多月。
同理,另一类利用相似手法的银狐木马(查询数字签名信息后得知利用的工具是**软件开发的终端安全工具)提取nsi脚本文件也是如此,如下截图。
安装过程中会执行对应的文件,接着regsvr32.exe会尝试将该 DLL 注册到系统中,通常情况下,shlext64.dll是一个shell扩展DLL文件,用于扩展Windows操作系统的文件管理器(Windows Explorer)的功能。
以下是钓鱼样本执行完成后释放到本地的文件,如下,该工具被安装完成后会存在自保护与隐藏能力,处置清理的时候会稍微有点麻烦。
打个小广告,如果有喜欢讨论或交流网络安全相关主题或恶意文件相关主题等不吹水的内容的读者可以加入交流群,该群无门槛免费永不收费。