实验目的&要求:
了解木马隐藏技术的基本原理
提高木马攻击的防范意识
明确木马技术的发展方向
学会使用木马防范的相关工具
实现实验所提到的命令和工具,得到实验结果
预备知识
木马隐藏的技术
程序隐藏:
木马程序隐藏通常指利用各种手段伪装木马程序,让一般用户无法从表面上直接识别出木马程序。要达到这一目的可以通过程序捆绑的方式实现。
程序捆绑方式是将多个exe 程序链接在一起组合成一个exe 文件,当运行该exe 文件时,多个程序同时运行。程序捆绑有多种方式,如将多个exe 文件以资源形式组合到一个exe 文件中或者利用专用的安装打包工具将多个exe 文件进行组合,这也是许多程序捆绑流氓软件的做法。
因此,木马程序可以利用程序捆绑的方式,将自己和正常的exe 文件进行捆绑。当双击运行捆绑后的程序时,正常的exe 文件运行了,而木马程序也在后台悄悄地运行。
程序隐藏只能达到从表面上无法识别木马程序的目的,但是可以通过任务管理器中发现木马程序的踪迹,这就需要木马程序实现进程隐藏。
进程隐藏:
隐藏木马程序的进程显示能防止用户通过任务管理器查看到木马程序的进程,从而提高木马程序的隐蔽性。目前,隐藏木马进程主要有如下两种方式:
API 拦截技术属于进程伪隐藏方式。它通过利用Hook技术监控并截获系统中某些程序对进程显示的API 函数调用,然后修改函数返回的进程信息,将自己从结果中删除,导致任务管理器等工具无法显示该木马进程。具体实现过程是,木马程序建立一个后台的系统钩子(Hook),拦截PSAPI的EnumProcessModules等相关函数的调用,当检测到结果为该木马程序的进程ID(PID)的时候直接跳过,这样进程信息中就不会包含该木马程序的进程,从而达到了隐藏木马进程的目的。
远程线程注入属于进程真隐藏方式。它主要是利用CreateRemoteThread函数在某一个目标进程中创建远程线程,共享目标进程的地址空间,并获得目标进程的相关权限,从而修改目标进程内部数据和启动DLL 木马。通过这种方式启动的DLL 木马占用的是目标进程的地址空间,而且自身是作为目标进程的一个线程,所以它不会出现在进程列表中。DLL 木马的实现过程是:
1、通过OpenProcess函数打开目标进程;
2、计算DLL 路径名需要的地址空间并且根据计算结果调用VirtualAllocEx函数在目标进程中申请一块大小合适的内存空间;
3、调用WriteProcessMemory函数将DLL 的路径名写入申请到的内存空间中;
4、利用函数GetProcAddress计算LoadLibraryW的入口地址,并将LoadLibraryW的入口地址作为远程线程的入口地址;
5、通过函数CreateRemoteThread在目标进程中创建远程线程。
通过以上步骤就可以实现远程线程注入启动DLL 木马,达到隐藏木马进程的目的。而且,远程线程注入方式与其他进程隐藏技术相比,具有更强的隐蔽性和反查杀能力,增加了木马的生存能力。
通信隐藏:
进程隐藏可以进一步加强其隐蔽性。但是仍然可以从通信连接的状况中发现木马程序的踪迹。因此,很有必要实现木马程序的通信隐藏。本文给出了以下两种通信隐藏技术的实现思想。
实验过程等有空在弄了。