欢迎来到天天文库
浏览记录
ID:31218315
大小:71.60 KB
页数:10页
时间:2019-01-07
《利用ndis中间层驱动程序截获网络封包》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、由于互联网发展的历史原因,TCP/IP协议及HTTP、FTP等基于TCP/IP协议的各种应用层协议,在协议设计之初均未考虑安全传输问题。随着互联网的发展,国际标准组织虽陆续推出了SSL、HTTP1.1等具有安全传输能力的应用层协议,但作为应用层承载协议的TCP/IP协议仍存在着固有的安全缺陷,造成至今未能有彻底的、低成本的、不需硬件支持的互联网安全传输解决方案。正是由于网络传输安全问题的现实存在,推动着黑客攻击技术、防火墙技术的不断发展。无论是黑客攻击技术还是防火墙技术,其实现均必须具备网络封包截获技术。黑客利用网络封包截获技术,
2、侦听获取网络传输数据,并发起仿冒攻击、篡改攻击等;防火墙利用网络封包截获技术,截断式地或侦听式地获収通过本机的网络封包,进行安全策略捡择后,或放行、或拦截丢弃网络封包,以达到反攻击的目的。一、概述网络封包截获,涉及驱动编程技术、核心态编程技术、系统动态链接库编程技术、协议生成与解析编程技术等,集中体现了网络应用的核心技术,是防火墙等高级网络应用开发的基础。基于Windows2000和WindowsXP的网络封包截获技术主要分为三种:WinSock2动态链接库重载、传输层过滤驱动、中间层驱动。WinSock2动态链接库重载:系统的W
3、inScok2动态链接库(..system32winsock.dll),随系统启动而载入内存,提供29个用于网络传输的功能函数。IE等普通上层应用程序,调用WinScok2动态链接库中的WSPSend、WSPRecv等函数,实现网络收、发功能。修改注册表屮HKEY_LOCAL_MACHINESYSTMCURRENTCONTROLSETSERVICESWinSock2项,建立新的口定义WSPStartup入口函数,可以重载winsock.dllo通过重载winsock.dll中的有关网络收、发函数,增加网络封包收、发前、
4、后的自定义处理功能,实现网络封包截获。公开源代码的费尔防火墙,使用了WinSock2动态链接库重载,实现网络封包的截获与安全解析。传输层过滤驱动:使用NDIS(NetworkDriverInterfaceSpecification网络驱动接口规范)技术,又称为TDI编程(TransportDriverInterface传输层驱动接口编程)。Windows2000和WindowsXP操作系统中,TCP/IP协议作为系统驱动程序(..system32Tcplp.sys),在系统启动时加载入系统内存,以TCP/IP设备对象(Devi
5、ceobject)的形式供应用程序或其它系统程序调用。传输层过滤驱动程序创建一个或多个设备对象,直接挂接到TCP/IP设备对象之上。挂接成功后,当其它程序使用网络传输功能,调用TCP/IP设备对象时,操作系统首先将该调用映射到TCP/IP设备对象之上所挂接的传输层过滤驱动程序。通过传输层过滤驱动程序,再调用下层的TCP/IP设备对象,从而完成网络访问功能。同样,从TCP/IP层上传至应用程序的网络封包,也要经传输层过滤驱动程序后,再转发至目标应用程序端口。基于此工作原理,可以在传输层过滤驱动程序中实现网络封包截获,完成网络封包的过
6、滤及加解密处理。公开原代码的TcpIpDog.sys及微软官方2000DDK的Packet.c例程,使用传输层过滤驱动技术,实现了网络封包截获。屮间层驱动:与传输层过滤驱动实现基本原理一致,也是使用NDIS技术。主要差别在于,中间层驱动程序,挂接在协议设备对象(包括TCP/IP设备对彖)和网卡设备对彖之I'可。任何进出网卡的网络封包,均必须首先经过中间层驱动程序的处理。从某种意义上分析,屮间层驱动程序更象一个虚拟网卡。该虚拟卡封装了物理网卡,对物理网卡的一切网络访问操作,均必须先经虚拟卡处理。公开原代码的微软官方2000DDK的P
7、assthru.c例程,使用中间层驱动技术,实现了网络封包截获。以上三种网络封包截获技术中,WinSock2动态链接库重载、传输层过滤驱动截获网络封包不够彻底,均存在被绕开的技术可能,而中间层驱动作用于协议层之下、物理网卡驱动层之上,与协议无关,对网络封包的截获最为彻底,基本不存在被绕开的技术可能,但也最具有技术难度。屮间层驱动程序的技术难点主要体现为:缺少公开的技术资料,基本无中文讲解资料、教材书籍。即使是微软官方2000DDK的Passthru.c例程,也仅公开了侦听式数据报头的截获方法与数据结构,而对IRP(I/OReque
8、stPacket系统I/O请求包)结构未作进一步的公开。与硬件相关性大。某种意义上,中间层驱动程序更象虚拟网卡,而网卡硬件性能的不一致,在屮间层驱动程序屮也必须有所体现。如,总线型网卡与非总线型网卡接收数据包的原理并不相同,就要求中间层驱动程序也必
此文档下载收益归作者所有