Trojanized系统二进制文件恶意代码浅析

前言

Trojanized系统二进制文件是一种恶意代码取得存活的方法之一,主要是恶意代码将修改系统的二进制文件,使得其变为被感染 的系统二进制文件,当被感染的系统二进制文件被加载或运行时,将会强制执行相应的恶意代码。主要目标是Windows系统正常操作时最常用的二进制文件,包括一些dll文件。

程序分析

还是通过一个具有代表性的例子来说明。

首先程序为一个PE文件和一个DLL文件构成,先分析这个可执行文件,main函数长这样


首先将DLL文件复制到system32目录下并更名为inet_epar32.dll,然后获取了cisvc.exe的filename,这个东西是一个系统级的二进制文件,负责限制某程序内存占用的,接下来它也将成为感染的二进制文件。

跳过这个用户定义的函数,最后是一个system()函数,执行了net start cisvc,意图也就很明显了,是开启cisvc,所以可以确定这个程序一定会被感染。

接下来进入这个用户定义的函数,前面的这一部分,有几个函数,CreateFileMappingA,MapViewOfFile,都是相关文件映射的,会将文件映射到内存中去,而这个文件就是cisvc.exe。


然后这个过程就将程序中的shellcode复制到cisvc.exe中了,当然这个只是猜测,至于这一段是否真的是shellcode,执行的过程会是怎样,还得再分析。


所以我们追踪到参数loc_409030的位置看一看,发现ida中调整为指令后真的是一系列可执行代码


其中,几次跳转后便来到了这里

不过再这个shellcode的最后是有两个字符串构成,这两个字符串应该会被调用,因为这两个字符串包含这个DLL。


我们执行程序后,开始在cisvc.exe中寻找shellcode的踪迹,发现shellcode被隐藏在文件头中,所以我们需要根据偏移量算出我们下选点的位置,0x1001B0A,OD加载后之前我们并不能看出的函数已经一清二楚了,参数也是明显了



也就是说shellcode调用函数先加载了inet_epar32.dll



然后调用GetProcAddress(),获取了zzz69806582()的地址


然后又调用了zzz69806582()函数,所以我们需要接下来关注DLL文件与其中的zzz69806582()函数了

这个函数长这样,我们进入StartAddress()函数继续观察


函数长这样,而观察发现OpenMutexA()之后的代码似乎与文件操作有关,filename是,而打开发现里面都是一些击键记录,所以这个函数sub_10001380一定是击键记录器,进入之后便验证了我的看法。




虽然程序并没有分析的很透彻,像shellcode隐藏的位置部分以及最后的击键记录器,不过却学到了一个程序是如何感染系统二进制文件的,收获不少。

程序与内容源自《恶意代码分析实战》一书11-3


阅读更多
想对作者说点什么? 我来说一句

网页恶意代码扫描工具

2010年03月25日 1.45MB 下载

没有更多推荐了,返回首页

不良信息举报

Trojanized系统二进制文件恶意代码浅析

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭