基于NdisHook的木马隐蔽信道模型
木马
接字复用。
端口复用技术使用嗅探方式,获取主机防火墙授权的通信端口,利用授权通信端口躲避防火墙拦截。如HackerDefen-der[5],hkdoor[6]等木马程序,在内核态实现了端口复用,在该通信端口接收的具有特征值的数据包被木马程序截收(木马控制指令),同时木马程序利用此端口发送数据(攻击结果)。套接字复用技术劫持授权进程,在进程空间内搜索授权通信套接字,抢占该套接字进行通信。为躲避网络边界防火墙的全状态检测,通常复用无连接套接字。
基于授权进程的木马信道与基于授权连接的木马信道是目前流行的木马隐蔽信道,但存在以下缺点:①利用防火墙规则进行有针对性地规避拦截,在一定程度上依赖于防火墙规则的设置;②信道稳定性差,信道生存时间取决于宿主进程和宿主连接的生存时间;③易被基于网络数据分析的安全系统侦测。随着主机防御技术向深度检测方向发展,上述隐蔽木马信道被拦截的几率将大大增加[7]
。
2Windows平台主机防火墙的原理和实现方式
Windows平台下主机防火墙在网络协议栈的不同层次上进行数据包拦截来实现。主要有基于以下5种截包方式的防火墙[8-9]:
(1)于SPI截包防火墙
基于SPI的防火墙通过重载winsock.dll中有关网络收、发函数,实现网络封包截获。具有跨平台、CPU占用率低、效率高等优点,但无法拦截非Socket通信,容易被绕过[10]
。
(2)基于IPFilter包过滤防火墙
IPFilter是系统提供的包过滤接口,允许应用层的程序或服务设定一些“过滤描述符”规则,TCP/IP组件根据规则来过滤数据包。包过滤的规则有很多局限性,容易被绕开。
(3)基于TDI过滤驱动防火墙
TDI过滤驱动创建一个或多个设备对象,直接挂接到TCP/IP设备。使用网络传输功能调用TCP/IP设备对象时,上传和下发的数据都通过TDI过滤驱动来处理,实现网络封包截获。但由TCP/IP设备接收并直接处理的数据包无法过滤。
(4)基于NDISIM驱动防火墙
基于NDISIM驱动挂接在协议设备对象(包括TCP/IP设备对象)和网卡设备对象之间。任何进出网卡的网络封包,必须首先经过中间层驱动程序的处理。中间层驱动程序封装了
物理网卡,对物理网卡的一切网络访问操作,必须先经中间层驱动处理。NDISIM驱动功能强大,但编程接口复杂[11]。
(5)基于NdisHook防火墙
基于NdisHook主机防火墙直接替换NDIS的函数库中的函数地址,所有向NDIS的请求先经过替换函数的处理,再转发给系统函数。主流的防火墙多采用基于NdisHook的防火墙,NdisHook技术性能稳定,截获封包处于网络协议堆栈的底层,不能被绕过[12]
。
在深入分析主机防火墙的截包技术的基础上,本文提出了基于NdisHook的木马信道技术,基于NdisHook的木马信道在网络协议栈的ndis层进行数据截取,抢占网络数据,实现躲避主机防火墙拦截的目的。通过IO通道将数据转发给应用
-3574-
层的木马程序。基于NdisHook的木马信道形成与主机防火墙之间抢占数据的技术对抗,不依赖于防火墙规则设置和宿主进程、连接,具有稳定性好的优点。
3
基于NdisHook的木马信道技术
3.1
NdisHook技术的实现
NDIS层是网络协议栈的核心。在Windows平台,NDIS
服务由NDIS.SYS内核模块提供,使用HOOK技术挂接NDIS模块的协议数据收发服务函数,实现网络数据的截取
[6]
。
NDISHOOK的挂接过程如图2所示。①挂接数据收发服务:使用自定义服务函数NdisSend、NdisRecv替换原服务函数并保存原服务函数地址;②挂接协议注册服务:使用自定义服务函数NdisRegisterProtocol替换原协议注册服务NdisRegisterPro-tocol函数,生成协议句柄;③替换协议句柄;④挂接协议绑定服务:使用自定义服务函数NdisOpenAdapter替换原协议绑定服务函数,挂接数据发送句柄。
Invoke
HookFunction
Hook
Hook
Hook
NdisSendNdisRegisterProtocolNdisOpenAdapter
N
TCP/IP
Hook
OpenAdapterCompleteHandler
Y
Hook
N
ReceiveHandler
Y
Hook


SendHandler
图2NdisHook底层驱动挂接流程
3.2
基于NdisHook木马信道的基本思想基于NdisHook木马信道(简称:信道)在NDIS层截取网络
数据包,对数据包进行过滤。特征数据包通过IO通道转发至应用层木马程序,实现信道的接收模块。应用层木马程序的攻击结果数据在应用层完成数据组包,通过IO通道发送至NdisHook的木马驱动中,绕过网络协议栈的数据传递过程,从而躲开主机防火墙的检测。如图3所示。
构
应用程序木马程序
结系SPI

应用态
体络IP内核态
IO
网TDIswNDISIModnNDISHOOK诺顿天网木马驱动
iW网卡驱动
图3基于NDISHOOK驱动的木马信道
3.3基于NdisHook木马信道的实现3.3.1
信道的数据流程
当底层木马驱动加载后,在初始化阶段将对指定的网卡
设备进行挂接,接收数据包,如果不是木马通信数据包,正常


