一、简介
自从病毒木马诞生以来,杀毒软件与病毒木马之间的战斗就从未停止过。 从签名扫描到人工智能扫描,杀毒软件的扫描技术变得越来越复杂。 然而,病毒木马仍然层出不穷。 这是因为大多数病毒木马都采用了反病毒技术。
防病毒技术全称(Anti Anti-Virus),简称“防病毒”,是指能够防止病毒、木马被防病毒软件检测并查杀的技术。 无论是网络钓鱼攻击还是Web渗透,避免查杀所使用的病毒、木马都是至关重要的。
在某次网络攻防演习中,我们捕获到一个反病毒样本,该样本主要采用了“LOLBins”反病毒技术。 本文将通过分析样本来揭开此类防病毒技术的神秘面纱。
2. LOLBins概述
LOLBins,全称“Living-Off-the-Land Binaries”,最初是 Christopher Campbell 和 Matt Graeber 在 2013 年 DerbyCon 黑客大会上提出的概念,最终由 Philip Goh 提出。 它是指在目标操作系统上运行受信任的合法进程来执行恶意活动,例如横向移动、权限提升和远程控制。
通俗地说,就是大家熟悉的“白名单”防病毒技术。 例如,常见的Powershell.exe、Certutil.exe、Mshta.exe等程序都属于LOLBins的范畴。 在一些APT攻击中,还可以看到使用LOLBins防病毒技术的攻击。 例如,OceanLotus APT组织曾利用微软操作系统自带的程序MSBuild.exe运行远程控制木马进行免杀。 为了达到更好的防杀效果,对LOLBins的选择有一定的要求。 一般来说,需要包括以下功能:
1) 由微软签名或由第三方签名的程序。
2)具有可被利用的功能(如上传、下载、代码执行等)。
三、免杀原则
为什么LOLBins能够达到反杀的效果?
在回答这个问题之前,我们先来了解一下杀毒软件的扫查原理。
一般来说,杀毒软件会使用多种方法来扫描并查杀一个文件。 大致可以分为两类:静态杀戮和行为杀戮。
静态扫描主要包括病毒特征码、文件属性(HASH、图标、开发者信息)等,是指针对未运行的样本所采用的文件扫描技术;
行为扫描主要包括沙箱模拟执行、主动防御和人工智能扫描。 是一种基于程序行为分析判断、多终端联动的扫查技术。
例如,如果样本一“启动”就被杀毒软件查杀,则说明该样本已被静态查杀; 如果样本正在运行,并且在执行某些操作时被查杀,则说明此时样本的危险行为已经被杀毒软件检测到。 。
为什么LOLBins文件可以免杀?
这是因为LOLBins一般都是正常程序,是杀毒软件值得信赖的程序,所以基本上可以逃脱杀毒软件的静态扫描。 对于行为扫描查杀,各个杀毒软件的实现和扫描策略是不同的。 有些程序只要是值得信赖的程序,即使有高危行为也不会被检查; 有的则相反,无论是否值得信赖的程序,只要有高危行为,就会被查杀。
一般来说,通过以下几个方面的处理可以达到较好的防杀效果:
1. 文件特征
2. 内存特性
3. 程序行为
4、网络通讯
使用LOLBins程序时,基本上不需要考虑文件特性,直接静态防病毒保护。 这是防病毒保护的更好主意。 如果使用流行的黑客工具或木马,则需要在内存中添加并混淆代码,以避免内存特征被检测到。 关于程序的行为软件免杀,需要测试所选的LOLBins程序。 如果检测到高危行为,可以考虑使用其他LOLBins程序来执行高危操作。
网络通信数据应避免使用明文,而应使用加密算法进行加密。 远程服务器应该尝试将自己伪装成普通服务器。 必要时可以采用CDN、域名前置、云功能等方法来隐藏服务器IP。
试想一下,如果整个恶意活动都使用LOLBins,形成LOLBins利用链,杀毒软件会报告病毒吗?
4、逆向分析
到目前为止,我们已经知道了如何避免杀戮的理论。 然后逆向分析这个防病毒样本,借鉴其方法,实现自己防病毒。
样本名称为 LiveUpdate.exe,MD5:9050ac019b4c8dddbc5e250bb87cf9f2。 这是NetSarang的XSHELL、XFTP、XMANAGER和XLPD系列工具的更新程序。 数字签名正常,如下图:
该样本早在2020年就被上传到一些在线威胁情报平台进行检测,很可能很早就被作为LOLBins利用,如下图所示:
样本运行后,会加载同一目录下后缀为dat的同名文件,即LiveUpdate.dat。 然后该文件将被解密,其中的脚本代码将被解析并执行以完成软件更新。 LiveUpdate.dat实际上是一个zip压缩文件,解压密码为99B2328D3FDF4E9E98559B4414F7ACB9,如下图:
解压成功后,得到5个文件:_TUProj.dat、_TUProjDT.dat、IRIMG1.JPG、IRIMG2.JPG、IRIMG3.JPG、IRIMG4.JPG。 执行的脚本位于_TUProj.dat文件中,如下图:
可以看出,这就是Lua脚本语言。 这个更新程序实际上是一个Lua脚本解析和执行引擎,可以自定义Lua代码来实现文件上传、下载、进程管理、注册表管理、服务管理、命令执行等功能。 它可以用作LOLBins以避免被杀。
样本中,CS远程控制木马的Shellcode被转换为数字并存储在数组中,如下图所示:
然后使用DLL.CallFunction函数调用Windows原生API函数VirtualAlloc,在内存中申请新的空间来存放木马Shellcode,如下图所示:
最后调用CreateThread函数创建一个新的线程来运行木马Shellcode,实现远程控制功能。 还添加了普通的网络请求来混淆网络通信,如下图所示:
5. 抗杀伤测试
根据逆向分析结果和反病毒原理软件免杀,我们还利用CS木马的Shellcode进行反病毒测试。 首先解压LiveUpdate.dat得到_TUProj.dat文件,然后修改其中的Lua代码,将混淆后的shellcode转换为数字并存储在数组中,并创建一个新的线程运行。 然后将 LiveUpdate.dat 中的 _TUProj.dat 文件替换为修改后的 _TUProj.dat 文件。 最后运行LiveUpdate.exe加载LiveUpdate.dat并运行其中包含的Shellcode,如下图所示:
测试国内主流杀毒软件,所有静态杀毒软件均豁免,在线运行成功。 注入等高危操作也是在没有杀毒软件的情况下进行的。 防病毒效果不错,如下图:
六、总结
近年来,基于LOLBins的攻击方式在APT攻击中越来越常见。 与其他防病毒技术相结合,防病毒效果极佳,难以查杀。 防病毒软件也应该更新检测方法,从多个角度对基于LOLBins的攻击进行有针对性的深度检测。
7. 参考链接