收藏 分享(赏)

木马功能模块研究与设计.doc

上传人:scg750829 文档编号:9288221 上传时间:2019-07-31 格式:DOC 页数:8 大小:1,020KB
下载 相关 举报
木马功能模块研究与设计.doc_第1页
第1页 / 共8页
木马功能模块研究与设计.doc_第2页
第2页 / 共8页
木马功能模块研究与设计.doc_第3页
第3页 / 共8页
木马功能模块研究与设计.doc_第4页
第4页 / 共8页
木马功能模块研究与设计.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、1“木马”功能模块研究与设计Research and Design of Generic Trojan Functional Structure摘要:特洛伊木马作为一种计算机网络病毒, 对网络环境中 计算机信息资源所构成的危害远大于其它病毒。深入地研究木马技术 ,对防范木马攻击,减少网络破坏,确保信息安全有重要意 义。本文以Windows系列操作系统为例,以程序开发者的角度详细分析了木马功能模块, 对各个模块的实现方式、工作原理及远程控制的关 键技术进行系统的研究,重点对木马程序的功能实现、隐藏对抗进行设计。本文对木马检测、分析工作有非常重要的指导与参考价 值。关键词:木马 功能 分析1 引言

2、随着互联网络的快速发展,网络安全问题日益突出。计算机病毒、以及网络蠕虫等恶意程序对网络安全构成了巨大的威胁。其中“木马”的破坏最大,它能在高隐蔽性的状态下窃取信息。完整的木马程序一般由两部份组成一个是服务端程序,一个是客户端控制程序。木马的通信方式按照被控方与施控方建立通信信道的方式可分为直接监听、反弹连接、代理连接、综合连接等方式。不论采用何种通信方式,其基本工作原理都是:施控端向中植木马服务端的主机发送指令,服务端对不同指令进行不同响应的过程。本文以反弹型木马为例,对木马的各功能模块运行原理和设计过程进行详细分析。2 木马功能结构木马程序虽然其外在功能表现各不相同,但其基本的功能结构是一致

3、的。植入木马程序的目的是为了实现对目标主机长期有效的控守,这就要求木马驻留于目标主机中,系统关机重启之后仍然可以运行。因此木马需要包含一个驻留模块,实现木马在目标机的长期存储。木马和远程控制软件的最大区别在于木马需要在用户不知情的条件下运行,需要对木马自身信息和木马通信信息进行隐藏以躲避杀毒软件的查杀,因此木马中需要包括隐藏对抗模。可控性是木马的另一个特点,要实现可控性,首先要和远程建立稳定的通信连接,以接受远程命令和回送结果。此外,需要对收到的命令进行分析执行,因此通信模块和执行远程命令的任务模块也必不可少 1。根据上面的分析,从功能上可以将木马划分为如下模块:初始化模块:负责对木马运行过程

4、中使用的信息进行初始化;远程控制模块:负责和木马控制端通信,接收控制端的控制命令并把功能模块命令执行的结果发送给控制端;驻留模块:负责以一定的方式实现木马程序的自启动,保证目标系统重启之后能自动加载木马执行;隐藏模块:负责隐藏木马自身的相关信息,这些信息可能包括文件、注册表、进程,以及通信连接等信息;任务模块:负责具体执行控制端下达的任务。任务模块可能包括:键盘记录、文件操作、注册表操作、屏幕获取等。3 远程控制模块反弹式木马工作模式是:客户端开启一个本地端口来监听远方连接请求,服务端通过一些方法2获得客户端 IP、端口信息后主动连接它,实现远程控制。反弹式木马的远程控制流程如图 1 所示:命

5、令接收命令分发浏 览 文 件 目 录获 取 主 机 信 息 .文 件 下 载 线 程屏 幕 画 面 传 送 线 程 .命令判断反 连 客 户 端获 得 S o c k e tL i s t e n g i n g P o r t客 户 端服 务 端命 令S O C K E T反 向 连 接S O C K E T文件数据接收线程屏幕刷新线程文件目录刷新主机信息显示 . .图 1 反弹式木马远程控制流程(1)客户端运行后,在指定的端口监听,等待远程服务端与之建立连接。当木马成功地在目标主机运行后,会主动连客户端主机的 IP 和端口,建立命令 SOCKET 连接。 连接建立完成后,服务端把主机特征信

6、息如:主机 ip、主机名称、MAC 地址等信息回转给客户端,用以标识与客户端反连的不同主机 6。(2)客户端向服务端发送不同的指令使服务端执行相应操作。服务端执行操作有两种类型:一是执行指令较少,必须快速响应客户端的操作,如:浏览文件目录、浏览注册表目录、获取主机信息、文件打包等操作;二是执行的指令较多,数据传输量较大的操作,如远程文件下载、远程屏幕查看、远程摄像头查看等操作。(3)对需快速响应操作,服务端收到来自客户端的指令后,直接利用命令 socket 将执行结果发送给客户端,如:服务端接收到显示文件目录命令后,将文件目录列表压缩打包,并通过命令socket 回传至客户端进行显示。(4)对

7、数据传送量大的操作,服务端收到指令后需重新利用 connect 函数反连客户的 ip 和端口,目的是获得一条新的 TCP socket 连接专门用于数据传输。因为传输的数据量较大,执行时间较长,如直接用命令 socket 回传操作数据,会导致命令 socket 长时间处于阻塞状态,客户端不能异步发送其它命令,严重影响操作效率。比如:服务端接收到文件下载命令后,会重新反连客户端获取一条新的 socket 的数据连接,同时开启一个线程用数据连接进行下载数据的传输,这样客户端在实现文件数下载的同时,可以再次通过命令 socket 发送其它指令进行其它操作。34 驻留模块木马的驻留方式有很多,按启动方

8、式分为两种,一种是开机自运行的程序,如:启动项写入注册表,服务方式启动,写入 WMI 脚本数据库等;另一种是触发式启动的程序,如利用 DLL hijack技术实现某一系统事件或应用程序操作时,木马被激活启动 6。4.1 服务方式驻留以 Windows 系统为例,注册为系统的服务方式进行开机启动是木马常用的启动方式之一。利用方法主要有两种,一是木马程序注册为系统的服务进行启动;二是木马程序不直接注册为系统服务,而是以 DLL 形式并借助于 svchost 服务宿主进行启动。Service 程序一般又由以下四部分组成:main()、 ServiceMain() 、Handler() 、及木马工作线

9、程 2。Service 入口从 main()开始,main 函数功能十分简单,将待注册服务的有关参数写入 ServiceTable结构中,并将 ServiceTable 作为参数传递给 StartServiceCtrlDispatcher,实现服务的启动。当ServiceMain 执行完毕或发生错误时,StartServiceCtrlDispatcher 函数返回,然后主服务进程终止。ServiceMain()是 Service 程序的真正入口点,它主要完成以下功能,首先注册一个 ServiceHandler 去处理控制程序或控制面板的交互式的控制要求。木马程序的线程是在 ServiceHan

10、dler 的启动函数下由开发者创建。需要注意的是,大部分开发者并不会在木马线程中实现木马的功能,仅仅是利用Service 框架实现木马启动。如:在木马工作线程中会开启 IE、Explorer 等新的系统进程,接着把木马功能代码注入到这些系统进程中去执行。这样即能保证木马稳定的启动,又可以使木马难以发现和查杀。4.2 DLL hijack 驻留DLL 劫持是指利用操作系统在 DLL 加载机制上的缺陷,使系统或应用程序加载包含恶意代码DLL 的攻击方法,也常用于木马的启动。Windows 上 DLL 的劫持技术分为三类:旧 DLL 劫持、新DLL 劫持和利用 COM 组件劫持 6。DLL 劫持的原

11、理是 Windows 进程在初始化阶段,会根据 PE 导出表加载其所引入的 DLL。但是 PE 导出表中只包括 DLL 的名称,没有指定 DLL 的路径,故加载程序必须在磁盘上搜索 DLL 文件执行。Windows 默认的 DLL 搜索目录及顺序,XP SP2 之前版本如下所示 3:(1)应用程序所在目录(2)当前目录(3)Windows SYSTEM 目录(4)16 位系统目录(5)Windows 目录(6)PATH 环境变量指定的路径由于搜索目录存在一定的顺序,木马制作者可以伪造一个与系统 DLL 同名的 DLL,提供同样的输出表,在伪造导出函数中会首先执行木马的有关功能接着会跳到系统 D

12、LL 同名函数里执行真正的函数功能 5。旧 DLL 劫持是利用系统 DLL 目录搜索方式,使程序加载应用程序所在目录下伪造的系统已知的 DLL;而新 DLL 劫持技术使程序加载应用程序所在进程当前目录下伪造的应用软件DLL。近年来,各类知名应用软件 Winrar、GoogleEarth、PhotoShop 等均存在新 DLL 劫持漏洞,使得木马程序可利用这些漏洞进行启动执行。如果劫持一些不常见的系统 DLL:如打印过滤驱动的 DLL,COM 组件启动,使木马隐蔽性增加 3。45、任务模块常见的木马执行任务有:文件目录浏览、注册表查看、文件上传/下载、远程屏幕查看、远程摄像头启动、远程键盘监视等

13、。其中文件下载、屏幕查看是木马最基本的功能。5.1 文件下载 远程文件下载多采用分块算法,比如:以 4096 字节为一块进行传送。分块结构体如下:typedef struct TAG_FILE_BLOCKSDWORD dwFinger; /断点位置BOOL isEnd; /文件结束标志BYTE wParam4096; /分块数据内容TAG_FILE_BLOCKS,*PTAG_FILE_BLOCKS,下载流程如图 2 所示:获取下载文件大小F i l e L e n g t h发送下载文件命令发送文件大小数据 初始化内存 、 状态得到文件断点F i l e P o i n t发送文件断点f o

14、p e n 下载文件 , f s e e k 至断点位置D i f f e r = F i l e L e n g t h - F i l e P o i n tD i f f e r 4 0 9 6D i f f e r = 4 0 9 6F i l e P o i n t + = D i f f e rf r e a d 读取 D i f f e r 字节至缓冲s e n d 数据至客户端F i l e D i f f e r Gdi.fChange) /压缩数据compress(原始图片数据,压缩数据输出缓冲 );/ 发送压缩的 DIBTransmit(socket,压缩数据指针);m_

15、pGdiNode = m_pGdiNode-pNext;某一块屏幕数据发送流程如图 4 所示:该区域画面是否首次发送将屏幕数据压缩 , 发送将屏幕数据与最近保存屏幕数据进行X O R 操作 , 并保存操作状态通过与上次发送的画面进行比较运算 , 确定该区域是否发生变化保存屏幕区域数据 , 保存操作状态对屏幕数据解压缩是否是首次发送的屏幕数据与上一次屏幕数据 X O R 解码 ,保存操作状态刷新屏幕 , 释放内存分配内存 、 保存状态服 务 端客 户 端是否是是否图 4 远程屏幕分块传输流程 为了提高画面传输效率,在画面分块传输的基础之上,采用 cmSrclnvert 模式进行画面传输。原理是:

16、在服务端先将待发送的屏幕数据与最近发送的源位图位数据进行 XOR 异或运算后,再将运算所得的位图进行压缩。相应地,在客户端显示时,将解压后的位图数据与当前的位图数据进行XOR 异或运算,则运算所得的位图便是服务端当前所传送的屏幕图像。cmSrclnvert 屏幕图像抓取方法与直接发送屏幕画面相比较,虽然客户端与服务端多了一步位图位值 XOR 异或运算,但是经压缩后, 数据量要小得多。这主要是因为一般情况下屏幕图像总是在一个局部而非整个屏幕发生变化,将当前屏幕图像与上一屏幕图像进行 XOR 异或运算后,所得屏幕位图未变化部分的位值将为 0,而变化部分的位值为 1,当屏幕图像变化范围较小时,则所抓

17、取的屏幕图像位图的大量位值7将为 0,同时压缩率除与压缩算法有关外,还与待压缩的数据本身有关,因此这样对其进行压缩将取得更加理想的压缩效果。同样的网络状态下,待传输的数据压缩越高,传输实时性越可靠。6、隐藏对抗功能隐藏模块:该模块负责隐藏木马启动和运行的相关信息,如:木马文件、注册表、进程、DLL模块、通信连接等信息。木马隐藏功能模块多采用 Rootkit 技术实现,Rootkit 可以在操作系统的Ring3 和 Ring0 层实现,Ring3 层的优点是程序兼容性好、稳定,但易被杀软查杀;Ring0 下的程序直接运行在系统的内核层,因可直接操作系统的内核变量和使用内核函数,所以具有对抗性强,

18、隐蔽性好的特点,但 Ring0 下的程序兼容性差,不够稳定。Rootkit 技术是一种采用隐藏方法使程序或软件逃过检测,从而保持“root”访问权限的技术。目前的内核 Rootkit 技术主要采用以下 3 种思路进行各种信息的隐藏 4:(1)执行路径截持(EPH) 4:指通过对内核调用的挂钩或者对函数特殊指令的补丁,达到篡改或改变系统预期执行效果的一种方法。如:中断请求的截持、系统服务调度表(SSDT 表)的截持、内联函数截持。(2)直接内核对象修改(DKOM) 4:与 EPH 相比较,DKOM 通过直接修改内核对象来达到隐藏的目的,这种方法往往更加有效,因为很多函数的执行就是通过访问内核对象

19、获取原始信息。(3)传输驱动接口(TDI)和网络驱动程序接口(NDIS) 2:TDI 和 NDIS 是网络驱动程序开发的主要接口,绝大部分的桌面防火墙都使用 TDI 和 NDIS 驱动内核实现网络数据包的过滤分析。基于Rootkit 的驱动木马也采取这种技术,使之和防火墙的内核处于同一驱动层次上,对网络数据包进行各种分析和过滤的处理,以实现隐藏对坑功能。使用 Rootkit 技术的隐藏对抗模块,结构如图 5 所示;开始模块初始化释放模块驻留模块驱动安装本地隐藏隐蔽通信进程隐藏文件隐藏注册表隐藏服务隐藏通信连接隐藏对抗功能R i n g 3R i n g 0驱动管理D e v i c e I O

20、 C o n t r o l 图 5 隐藏模块功能结构该结构图主要包括两个部分:用户态部分和内核态部分。运行在用户态部分的代码和运行在内核态部分的驱动程序交互最终实现木马隐藏对抗功能 5。用户态部分主要包括:初始化模块、释放模块、驱动管理模块(包括驱动安装和与驱动通信模块)、驻留模块和任务模块。8初始化模块:与一般木马功能类似,完成木马必要的初始化工作。释放模块:负责把捆绑在木马尾部的驱动程序释放到硬盘上写成文件。集中驱动管理模块:包括驱动安装模块,本地隐藏模块和隐蔽通信模块。该部分负责集中统一的管理木马中使用到的所有驱动程序。集中的驱动管理、统一的隐藏信息和驱动信息的存放。内核态模块主要是与

21、进程隐藏、文件隐藏、注册表隐藏、服务隐藏、端口隐藏以及通信隐藏相关的一组内核驱动程序,驱动程序的数目可以根据不同的隐藏需求、不同的隐藏实现技术进行扩充而不会影响木马的正常工作。7、结语随着计算机网络和程序设计技术的发展, 木马制作技术也在飞速发展, 使其攻击性和破坏性更加强大。特别地,由于内核 Rootkit 技术在隐藏对抗方面的优势,木马技术与 Rootkit 技术相结合以提高木马的隐藏能力和抗查杀能力已经成为了木马发展的新潮流,这对木马检测和分析工作也带了巨大的挑战。本文以开者角度深入剖析了木马功模块运行原理,并进行了详细设计。只有完整了解木马的运行原理和设计过程,才能准确地通过痕迹检测到

22、木马,才能完整、正确地分析木马的功能和运行过程。参考文献:1李辉.黑客攻防与计算机病毒分析检测及安全解决方案M.北京:电子信息技术出版社,2006.2Jeffrey RichterWindows 核心编程 M北京机械工业出版社,20003谭文,杨潇,邵坚磊等Windows 内核安全编程M北京:电子工业出版社,2009:436-4834Greg Hoglund,James ButlerRootkits:Subverting the Windows kernelMAddison-Wesley Professional,2005 5赵吉刚, 舒辉, 董卫宇. 基于驱动的通用木马结构研究与设计.J 计算机工程与设计. 2008,29(16):4156-4160 6赵玉明木马技术揭秘与防御 M北京:电子工业出版社,2011:10-33

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报