1 概述
木马是驻留在目标机器上的程序,该程序主要在目标机器上执行一些未经授权的操作,如窃取口令、银行帐号和密码以及控制目标计算机等,因此,木马程序普遍具有非法性。木马程序为了避免被发觉,大多会采用各种方法隐藏自己。最近几年,木马技术发展很快,其隐蔽性也越来越强。下面是一些新型的木马技术:
(1)反弹端口木马[1]。此类木马主要是改传统木马的被动监听方式为主动连接。
(2)基于窗口HOOK、
挂接API或远程线程技术动态嵌入式木马。 (3)基于动态链接库转发的木马[2]。
(4)协同隐藏型木马[3]。该类木马主要是综合利用多种隐藏技术。
上述4类木马技术是当前非常流行的木马技术,特别是类型(2)和类型(3),可以将木马线程植入合法进程体内,利用合法进程与外界通信,很具迷惑性。但是上述木马均有一个共同的弱点,那就是要打开一个新的端口。所以加强对端口的监控仍然是对付这些木马的有效方法。对于类型(2)和类 型(3),还可以采用应用程序和端口相关联的技术来进行检测。如果一个合法的进程打开了一个它不属于它的端口,那么一定是感染了木马。
端口监测是当前防火墙普遍采用的核心技术之一,如果木马程序能够不打开新的端口,而是直接利用系统已经打开的端口(笔者把这种情况称为端口复用)与外界进行通信,那么隐蔽性将更强,也就更容易穿过防火墙。本文以SPI为基础,实现了一个具有端口复用特征的木马。2 端口复用的实现原理
对于基于UDP或TCP的网络应用程序进行通信时,首
先必须将本地IP和一个端口绑定在一个套接字上,然后利用该套接字进行通信。不同的网络应用程序不会打开相同的端口。当系统收到一个数据包时,会根据数据包指示的端口号找到对应的应用程序并转交该数据包。如果对某个端口采用了复用技术,那么系统收到数据包时,就不能够直接将它转交给相应的网络应用程序,而是应该对系统行为作出适当的修改。图1展示了端口复用的原理。数据包归属判断模块主要是判断该复用端口收到的数据包是应该转发给网络应用程序,还是转发给端口复用模块。
3 SPI的基本原理
服务提供者接口(service provider interface, SPI)是Windows的WinSock 2的新特性。服务提供者接口代表着另一端的Wi n s o c k编程(和Winsock 2API相对应)。Winsock 2不仅提供了一个供应用程序访问网络服务的Windows socket应用程序编程接口(API),还包含了由传输服务提供者和名字解析服务提供者实现的Winsock服务提供者接口(SPI)。图2展示了应用程序、[4]。
---------------------------------- |Windows socket 2 应用程序|
----------------------------Windows socket 2 API | |
----------------------------Windows socket 2 传输SPI | 传输服务提供者(DLL) | ----------------------------------
图
基于端口复用技术的木马研究 来自淘豆网m.daumloan.com转载请标明出处.