《恶意代码分析实战》Chapter 1课后静态分析实验

Lab1-1

这个有个exe,还有个dll

先去查杀一下

由于那个网站上不了(翻墙的话应该可以)

blob.png

除了上面这个多引擎查杀,还有下面的

https://virusscan.jotti.org/

http://www.virscan.org/

https://fireeye.ijinshan.com/ 

不过还有PhrozenVirusTotalUploader工具,是客户端版

blob.png

不过还是不行…..

blob.png

算了用其他吧

blob.png

blob.png

dll的

blob.png

2.什么时候编译的呢

pe文件里面有这个一个字段

blob.png

直接拖PE tools,点击文件头

blob.png

当然用其他工具,或者手动也可以

blob.png

发现结果跟上面的不一样

blob.png

blob.png

那么可以确定那个工具有点问题啊

再看看dll的

blob.png

blob.png

时间相差无几,应该是同属一个恶意代码包

有没有被加壳呢

blob.png

直接看到了vc++6.0,区段也

blob.png

dll的

blob.png

查看输入表

blob.png

有两个查找当前目录文件的api,还有复制文件的(应该是复制自身到一个隐蔽的目录)

blob.png

dll的

有创建进程,和睡眠

blob.png

这个就有个网络通信的了

blob.png

还有没有其他特征可发现呢

看看里面有什么字符串是一个办法

strings的下载地址

https://technet.microsoft.com/en-us/sysinternals/bb897439.aspx

直接strings + 文件名

blob.png

我们可以看到 有个迷惑的字符串,那个l变成了1,根据前面可以猜测是将自身复制到system32那里迷惑人了

blob.png

也可看到导入函数

blob.png

看下dll

blob.png

有个ip地址,如果真实的病毒就不知保留地址了

总结

应该是复制自身,查找文件那个api有可能是查找杀软,或者要感染的文件等

dll可能是一个后门,由exe来启动,exe有个CreateProcess的api可以dll注入什么的

Lab1-2

接下来直接跟上面的步骤来重复了

blob.png

而且从上面可以大概知道加了upx壳,应该是一个含有下载功能的恶意代码

查壳看看

确实如此

blob.png

upx壳,直接esp定律即可脱壳

blob.png

先看没脱壳的

一个创建服务的

The CreateService function creates a service object and adds it to the
specified service control manager database. 

blob.png

那个InternetOpen是初始化对象的(Initializes an application's use of the WinINet functions.)

blob.png

再看脱壳了的,就看得更多了

blob.png

blob.png

这里就多了一个打开url的了,猜想是get参数传递?

blob.png

再看看字符串

直接看脱壳了的,脱壳对静态分析的影响还是挺重要的,下面就看到了那个url了,一看这个程序就是本书原作者自己写的

blob.png

当然od也可以

blob.png

怎么检测这个主机被这个恶意代码感染呢

一个就是网络迹象:访问上面那个url的

另一个就是创建了一个服务,通过上面的分析可知道,但是创建的服务名是什么还不知道…

稍微od跟一下差多多确定是这个了名称的服务

blob.png

当然ida就更加清晰了(脱壳的哦)

blob.png

之后调用了401040,我们去看看

blob.png

最后再创建一个线程,调用的是StartAddress函数

blob.png

Lab1-3blob.png

一上去全部报毒,这个看来很牛逼啊

查下壳,果然

blob.png

见识短,这个我第一次见

这个壳,作者说暂时没法脱壳,我就是要挑战,失败了再说,基本上脱壳八法都尝试过了

查了一下,可以用模拟跟踪来脱壳

http://www.giantbranch.cn/?p=341#nbsp

blob.png

blob.png

再ctrl + a就看到熟悉的结构了

blob.png

向下稍微拖一下,发现了main函数

blob.png

直接用od的插件脱壳吧

blob.png

看看,果然脱壳了

blob.png

当然用SFX也是可以的

blob.png

既然脱了壳,那尝试继续分析咯

看看导入表,有点诡异,不认识。。。,等之后的章节再看吧,作者说18章后回来

blob.png

blob.png

看看字符串,有个url

blob.png

也跟程序运行的效果吻合

blob.png

跟着就跳到404的页面了

用ida看看吧,其实也不太懂,大概就是通过浏览器打开那个url吧

blob.png

这里的话,可以通过这个网络特征来查,当然还可以有其他方法

Lab1-4

先查杀一波

blob.png

又有下载字眼

查一下,没有壳

blob.png

看看编译时间

blob.png

看着就有点不对劲

blob.png

这是伪造的。。

我也可以去修改它

blob.png

看看导入表

blob.png

blob.png

这里可以知道这个可能会执行命令,复制文件,操作一些资源文件,创建线程什么的

blob.png

这里还涉及权限的东西,那个提升程序的特权(AdjustTokenPrivileges),那个lookup是查询权限,之前的打开句柄吧 

网上查了查提升权限的代码段

if ( !OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ){
       TOKEN_PRIVILEGES tkp;
       LookupPrivilegeValue( NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid );//修改进程权限
       tkp.PrivilegeCount=1;
       tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
       AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );//通知系统修改进程权限
       return( (GetLastError()==ERROR_SUCCESS) );
}

就是用这几个函数的

接下来看看字符串

blob.png

blob.png

有些个下载到文件的api,下载那个完之后的文件后,很可能伪装成系统的一些文件的名称了

没运行lab4前,我们打开那个system32的exe看看

blob.png

其实运行lab4也会打开这个页面

blob.png

先来个小总结:有网络连接为啥没有网络连接的api,但字符串中又搜索得到呢,为什么要操作资源节中的数据呢,难道资源节中有什么秘密吗

我们用resource hacker看看资源有什么

blob.png

我去,里面竟然藏了一个二进制文件

我们直接将他导出来

blob.png

我们上传查下毒

blob.png

查下壳,就是一个vc++写的程序,没加壳

blob.png

看下导入表

blob.png

应该

blob.png

这才看到下载了

字符串跟刚才的重复了的,string也搜到资源节中的字符串了

那整个程序我们就可以猜想出来了:

首先是从资源节提取出二进制文件,放到一个目录(可能需要提权),跟着执行提取出来的下载程序,并运行,下载程序下载一个程序后,运行下载后的程序,恩大概应该这样

我们接借助ida看看吧

一开始会枚举进程

blob.png

枚举每个进程pid

下面调用此函数,看看那个程序(winlogon.exe)有没有运行,

blob.png

winlogon.exe:Windows Logon Process,Windows NT 用户登陆程序,管理用户登录和退出

跟着进入下面这里

blob.png

这个是将系统目录下的\system32\wupdmgr.exe移动到临时目录的winup.exe

搜一下,确实如此

blob.png

再来看,最后的4011fc

blob.png

首先获取到路径\system32\wupdmgr.exe

跟着从资源节读取数据,最终写入上面的目录

跟着执行从资源节提取出来的一个二进制文件

我们用ida看看那个提取出来的文件 blob.png

那个程序图标都变了

最后发现怎么没有权限提升呢,发现漏了

blob.png

跟进,提升不成功就加载一个dll,sfc_os.dll,进行dll注入

blob.png

继续跟进就可以看到经常看到的权限提升的代码了

blob.png

我们最后看看那个下载来的程序时怎么样的吧

结果发现跟从资源节解压出来的哪个二进制文件一样,访问一下那个下载的url结果已经404了

blob.png

所以那个wupdmgr.exe跟资源节解压出来的一样也不奇怪了(没下载前是用那个覆盖的嘛)

好了,基本上分析完了,虽然程序简单,但是学到的东西还是很多的

打赏作者
喜欢本博客,打赏让博客永久运行,多少你说了算

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注