下边介绍的几种无文件的攻击方式都是在病毒分析过程中实际碰到过的技术手段,有解释的不清楚或者有错误的地方,欢迎一起讨论。
1、通过宏代码的方式来执行恶意操作。之前分析的一个病毒,将代码内嵌到宏代码里边并且设置为自动执行,当用户点击同意启用宏之后(大多通过邮件或者其他社会工程学的方式使用),就会执行宏代码,而宏代码的功能是连接到远程的网站上执行一段恶意的powershell,当然,这段恶意的powershell也是经过混淆的,powershell的功能也是连接到其他网站来执行一段恶意的代码,就这样循环下去,一直在执行恶意的powershell代码,在这个过程中全程是没有落地的文件的。像这种执行恶意代码的方式在宏病毒里边是常见的,也是一种行之有效的躲避查杀的手段。
头脑风暴:为什么选择这种恶意文档的方式来进行攻击?一方面是因为人们在工作的工程中对于文档的警惕性较低,另一方面,文档是一个包容性极强的载体,可以内嵌RTF、PDF等对象内容,尤其像RTF对象在文件打开的时候就会自己去执行。同时除了上述几个因素,还有一点比较重要,就是Word文档现在支持的脚本能力越来越强,同时能够完成的恶意操作也越来越多,这当中自然也包含了执行恶意程序的功能。还有一点更为重要的是,不可避免的漏洞利用。强大的脚本支持功能、警惕性较低、漏洞利用、使用普及 这几个因素加起来,也足够制造一场“混乱"了。
2、也是通过文件作为容器,也是之前分析的一个样本。这个样本个人感觉比较”赞“。这个病毒虽说也是通过漏洞利用的方式进行横向传播的,但是我比较感性去的是它的整个文件操作过程。在整个病毒执行过程期间,所有的文件操作包括文件的执行都在内存中执行。不过这个病毒有一个文件载体,这时候我们是不是想?直接把这个文件查杀了就好?非也,这个文件作为一个.log文件其实本身是没有什么危害的,但是比较危险的就是它会被程序恶意的利用,病毒程序会注册一个服务,来操作这个文件。值得关注的是,这个服务的功能也就只有一个就是对文件进行解释操作,并且执行文件。关键的地方其实就在之前说的文件容器里边。作者定义了一套自己的压缩方式,在运行的过程中会将这个文件通过自己的算法来解压出来,之后进行程序的执行。包括PE文件的执行也是在内存中将映像展开之后执行的,同时涉及到远线程的注入也是在内存中直接对远进程直接操作。也就是恶意的内存代码执行,通过WriteProcessMemory和VirtualAllocEx来对只当的进程进行操作以达到注入的目的。当然这种方式也很常见,但是不得不说也是一种躲避杀软的有效的方式。
头脑风暴:分析完这个病毒之后,回过头去再看会发现直接进行病毒的分析其实工作量非常大。之所以把这个病毒拿出来说是因为在分析的过程中,关于恶意文件,其实是看不到的。想要静态分析,就需要在内存中把恶意文件Dump出来,而且涉及到多线程的程序调试,不太好搞。在此之后回来再看发现只要把文件的压缩方式搞清楚再分析就事半功倍。但是在实际的分析过程中,不难发现,作者在调用某些函数的时候是通过全局变量动态计算的方式来进行的,即使是静态分析也还是要和调试器进行结合。说到这里想到一种更好的调用校验的方式:Hash值的方式,其实在程序的执行过程中完全可以通过Hash值的方式进行API的调用,(这种方式通常在ShellCode中得到应用)这样的话对于逆向来说又是一个巨大的工程。或者还有一种方式觉得可以尝试,在执行CALL指令的时候可以换为其它的指令来进行混淆,比如JMP指令,虽说二者的原理相同。事实上这个文件的自我保护机制也有在做,在进行文件操作的时候,程序会对指定的字段进行Hash值的校验,来确保文件正确无误。就好像之前的特洛伊木马检测到指定地域的PC端才会进行攻击一样,这个病毒也会将文件载体是否正确来作为自己是否执行的先决条件。
常见的无文件攻击技术解析(不定时更新)——入得此门不回首
最新推荐文章于 2023-11-10 15:29:57 发布