使用VOLATILITY发现高级恶意软件

[ 复制链接 ]
边缘 | 2020-3-1 06:04:48 | 显示全部楼层 | 阅读模式 打印 上一主题 下一主题

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件



        当一个公司被高级恶意软件感染,一个正确的应急响应应该是去识别恶意软件和修复系统,建立更好的安全控制体系来防止未来此类    事故的发生。在这篇文章中会介绍使用“内存取证”技术来检测高级的恶意软件感染,并且学会如何使用内存取证工具比如Volatility在真实的环境中检测恶意软件。  

        内存技术是指从运行的电脑中取出内存镜像来进行分析的技术,其在应急响应和调查中扮演一个很重要的角色。它能够从计算机内存中提取取证线索,比如运行的进程,网络连接,加载的模块等等    ,同时他能够帮助脱壳,Rootkit检测和逆向工程。

        内存取证步骤

        下面是内存取证相关的一些步骤

        a)获得内存——这个步骤是从目标机器中导出内存。你可以在物理机上使用工具比如Win32dd/Win64dd,Memoryze,DumpIt,FastDump    。然而在虚拟机上,获取内存是很容易的,你可以暂停VM并取出“.vmem”文件。

        b)内存分析——取出内存镜像之后,下一步就是从获取的内存中分析取证线索,可以使用

        Volatility或者Memoryze

        Volatility快速上手

        Volatility是用python写的高级内存取证框架。它可以用来对获取的内存进行取证。Volatility可以安装在多个系统上(    Windows,Linux,MacOSX),下面的链接包含了详细的安装细节:

        http://code.google.com/p/volatility/wiki/FullInstallation

        Volatility语法

        –使用-h或-help选项来显示帮助选项并列出可用的插件

        例子:pythonvol.py-h

        –使用-f文件名>和-profile来指定要分析的导出内存

        例子:pythonvol.py-fmem.dmp–profile=WinXPSP3x86

        –用下面的命令了解–profile信息:

        例子:pythonvol.py-fmem.dmpimageinfo

        演示

        为了理解内存取证和相关步骤。让我们来看一个案例,我们的分析基于下面的例子。

        案例

        你的安全设备发出报警,提示恶意的http连接到域名“web3inst.com”,对应的ip是 192.168.1.2,通信是从192.168.1.100的源ip地址检测到的(如下面的截图所示)。你可以在192.168.1.        100机器上找到内存取证信息。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        内存获取

        从192.168.1.100获取内存镜像,使用内存获取工具。为了演示,内存导出文件命名为“infected.vmem“。

        分析

        现在我们获取了“infected.vmem“,让我们开始使用Volatility高级内存分析框架。

        步骤1:从你知道的开始

        我们从安全设备知道主机向web3inst.com(192.168.1.2)发起了http连接。所以让我们看一下网络连接。

        Volatility’sconn扫描模块,显示进程(pid888)连接了恶意ip.

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤2:web3inst.com的信息

        Google搜索证明这个域名跟恶意软件是相关的,可能是“Rustock或TDSSRootkit”。这表明ip192.168.1.100可能已经被这些恶意软件感染了,我们需要通过特征分析来确认。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤3:pid888是什么?

        由于网络连接到ip192.168.1.2是pid888发起的,我们需要确定pid888相关的进程是什么,“psscan”显示pid888属于svchost.exe。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤4:YARA扫描

        通过YARA对导出的内存进行扫描,发现连接到这个域名的的进程属于svchost.exe(pid888).这确定svchost.exe            向域名“web3inst.com”发起连接。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤5:svchost.exe中可疑的互斥量

        现在我们知道svchost.exe进程(pid888)向域名“web3inst.com”发起连接。检查发现            svchost.exe创建了一个可疑的互斥量“TdlStartMutex”。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤6:互斥量的信息

        谷歌搜索显示这个可以的互斥量跟TDSSrootkit相关,这指出互斥量“TdlStartMutex”是可疑的。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤7:svchost.exe的文件句柄

        Svchost.exe的文件句柄跟两个可疑的文件有关(DLL和驱动文件)。如下图所示下面的截图显示这两个都是“TDSS”启动的文件。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤8:检测隐藏的DLL

        Volatility的dll列表模块无法找到“TDSS”启动的DLL,但是ldr模块插件能找到。这证明DLL( TDSSoiqh.dll)是隐藏的。恶意软件隐藏了DLL通过分离3个PEB列表(操作系统保持了对这个DLL列表的追踪)。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤9:导出隐藏的DLL

        在前面的步骤隐藏的DLL已经被检测到了。这个隐藏的DLL可以通过Volatility的            dlldump模块从内存导出到硬盘,如下所示:

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤10:将导出的DLL传到VirusTotal

        把导出的DLL上传到VirusTotal,确认这是个恶意软件

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤11:查找其他恶意软件DLL

        查看TDSS启动的所有模块显示msiexec.exe进程(pid1236            )跟临时文件有关(TDSS启动的),这些文件是可疑的。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤12:msiexec加载的可疑DLL

        用dlllist模块检查msiexec进程(pid1236)            加载的DLL,发现如下msiexec进程加载的可疑dll(dll.dll)。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤13:导出DLL上传到VT

        导出DLL上传到VirusTotal确认这个DLL跟TDSSrootkit有关。

 ;      

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤14:隐藏内核驱动

        在步骤7我看到了相关的驱动文件(TDSS启动的)。Volatility模块找不到那个驱动                    Volatility的driverscan插件可以找到。这说明内核驱动(TDSSserv.sys)被隐藏了。下面的截图显示驱动的基地址是“                        0xb838b000”,大小是“011000”。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤15:内核回调

        检查回调发现回调(起始地址0xb38)时被未知的驱动设置的

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤16:检查未知的驱动

        下面的截图显示未知驱动的地址在TDSSserv.sys地址范围内。这说明未知的驱动是“TDSSserv.sys”

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤17:内核api钩子

        恶意软件对内核API下钩子,并且钩到TDSSserv.sys的地址上(如下图所示)

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        步骤18:导出内核驱动

        将内核驱动导出,然后上传到VirusTotal,确认这是TDSSrootkit。

       

使用VOLATILITY发现高级恶意软件

使用VOLATILITY发现高级恶意软件


        结论

        内存取证时一项非常强大的调查技术,而Volatility能够发现高级的恶意软件,从内存里找到的线索有助于事件响应,恶意软件分析和逆向工程。也正如你所见,通过一点线索,我们就能检测到高级的恶意软件和相关的组件。
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
回复 推荐到N格

使用道具 举报

大神点评(0)

您需要登录后才可以回帖 登录 | 立即注册
    相关推荐
    云凌阁

    关注0

    粉丝0

    帖子30

    发布主题