下网络数据报及监听和拦截技术
防火墙的数据包拦截方式小结

防火墙的数据包拦截方式小结网络防火墙都是基于数据包的拦截技术之上的。
在Windows下,数据包的拦截方式有很多种,其原理和实现方式也千差万别。
总的来说,可分为“用户级”和“内核级”数据包拦截两大类。
用户级下的数据包拦截方式有:* Winsock Layered Service Provider (LSP)。
* Win2K 包过滤接口(Win2K Packet Filtering Interface)。
* 替换Winsock动态链接库 (Winsock Replacem ent DLL)。
内核级下的数据包拦截方式有:* TDI过滤驱动程序 (TDI-Filter Driver)。
* NDIS中间层驱动程序 (NDIS Intermediate Driver)。
* Win2K Filter-Hook Driver。
* Win2K Firewall-Hook Driver。
* NDIS-Hook Driver。
在这么多种方式面前,我们该如何决定采用哪一种作为自己项目的实现技术?这需要对每一种方式都有一个大致的了解,并清楚它们各自的优缺点。
技术方案的盲目选用往往会带来一些技术风险。
以自己为例,我需要在截包的同时得到当前进程文件名,也就是说,需向用户报告当前是哪个应用程序要访问网络。
在选用Win2K Filter-Hook Driver这一方案之后(很多小型开源项目都采用这一方案),便开始编码。
但之后发现Win2K Filter-Hook Driver的截包上下文处于内核进程中,即IRQL >= DISPATCH_LEVEL,根本无法知道当前应用程序的名字。
相比之下,TDI-Filter Driver和NDIS-Hook Driver则可以得知这些信息。
其中TDI-Filter Driver比NDIS-Hook Driver更能准确地获知当前应用程序文件名,后者的接收数据包和少数发送数据包的场景仍然处于内核进程中。
简述防火墙的主要技术

简述防火墙的主要技术防火墙是一种网络安全设备,用于保护计算机网络免受恶意攻击和未经授权的访问。
它利用一系列技术来检测和阻止不安全的网络流量,以确保网络的安全性和可靠性。
以下将对防火墙的主要技术进行简述。
1. 包过滤技术(Packet Filtering):包过滤是防火墙最基本也是最常用的技术之一。
它通过检查数据包的源地址、目标地址、端口号、协议类型等信息来决定是否允许通过。
包过滤可以根据预先设定的规则来过滤流量,例如,只允许特定IP地址的数据包通过或者禁止特定端口的访问。
2. 状态检测技术(Stateful Inspection):状态检测是包过滤技术的进一步发展。
它不仅仅根据单个数据包的信息来决定是否允许通过,还会维护一个连接的状态表来判断是否是合法的流量。
状态检测可以更好地处理复杂的网络连接,如TCP连接的建立、终止和数据传输过程。
3. 应用层网关(Application Gateway):应用层网关是防火墙的一种高级形式,它能够深入应用层协议进行检查和过滤。
应用层网关可以分析和过滤应用层协议的数据,如HTTP、FTP、SMTP等,并根据预先定义的策略来控制应用层流量。
这种技术可以对特定应用程序进行细粒度的访问控制,提高安全性和灵活性。
4. VPN隧道技术(VPN Tunneling):VPN隧道技术通过在公共网络上建立安全的隧道,将数据进行加密和封装,从而实现远程访问和分支机构之间的安全通信。
防火墙可以支持VPN隧道技术,允许受信任的用户通过加密通道访问内部网络资源,同时保护数据的机密性和完整性。
5. 网络地址转换(Network Address Translation,NAT):NAT技术允许将内部网络的私有IP地址转换为公共IP地址,以实现内部网络与外部网络的通信。
防火墙可以通过NAT技术来隐藏内部网络的真实IP地址,增加网络的安全性。
此外,NAT还可以实现端口映射,将外部请求转发到内部服务器,提供互联网服务。
数据链路层技术中的数据包过滤与转发技术解析(一)

数据链路层技术中的数据包过滤与转发技术解析引言:在现代的网络通信中,数据链路层扮演着非常重要的角色。
它负责将网络层的数据划分成适当的数据块,进行数据包的传输与接收。
然而,为了保证网络的安全性与可靠性,数据链路层还需要实现数据包的过滤与转发技术。
本文将对数据链路层中的数据包过滤与转发技术进行解析。
数据包过滤技术:数据包过滤技术是指在数据链路层对传输的数据包进行筛选,只有符合特定条件的数据包才能通过。
它可以有效地阻止网络中的恶意攻击、垃圾数据以及不合法的数据包传输,提高网络的安全性与效率。
数据包过滤技术可以通过以下方法实现:1. MAC地址过滤:MAC地址是数据链路层中用于唯一标识网络设备的地址。
通过对数据包中的源MAC地址和目的MAC地址进行筛选,可以限制网络中具体设备之间的数据包传输。
这种过滤技术可以有效地阻止未经授权的设备进入网络,提高网络的安全性。
2. VLAN过滤:VLAN(Virtual Local Area Network)是一种将网络分割成多个逻辑局域网的技术。
通过在数据包中添加VLAN标签,可以将不同VLAN的数据包进行区分。
对于网络中的数据包,可以根据其所在的VLAN进行过滤,确保数据包只在指定的VLAN之间传输。
这种过滤技术可以增加网络的灵活性和安全性。
3. 协议过滤:根据不同的协议类型对数据包进行过滤也是一种常见的技术。
例如,可以筛选出只属于TCP、UDP或ICMP等协议的数据包,对其他协议类型的数据包进行阻止。
这样可以精确控制网络中传输的数据类型,提高网络的可靠性和安全性。
数据包转发技术:数据包转发技术是指在数据链路层将接收到的数据包转发给目标设备的过程。
数据包转发技术需要解决路由选择的问题,确保数据包能够准确地到达目标设备。
下面介绍几种常见的数据包转发技术:1. 静态路由:静态路由是通过手动配置路由表中的路由信息来实现数据包转发的技术。
管理员需要手动指定目标设备的下一跳路由器,以及到达目标设备的最佳路径。
转:网络监听原理

转:⽹络监听原理⽹络监听是指利⽤计算机的⽹络接⼝截获⽬的地为第三⽅计算机的数据报⽂的⼀种技术。
利⽤这种技术可以监听⽹络的当前流量状况;⽹络程序的运⾏以及⾮法窃取⽹络中传输的机密信息。
在共享式以太⽹中,所有的通讯都是⼴播的,也就是说通常在同⼀⽹段的所有⽹络接⼝都可以访问在物理媒体上传输的所有数据,使⽤ARP 和RARP协议进⾏相互转换。
在正常的情况下,⼀个⽹络接⼝应该只响应两种数据帧:与⾃⼰硬件地址相匹配的数据帧和发向所有机器的⼴播数据帧。
在⼀个实际的系统中,数据的收发由⽹卡来完成。
每个以太⽹卡拥有⼀个全球难⼀的以太⽹地址。
以太⽹地址是⼀个48位的⼆进制数。
在以太⽹卡中内建有⼀个数据报过滤器。
该数据包过滤器的作⽤是保留以本⾝⽹卡的MAC地址为通讯⽬的的数据包和⼴播数据包,丢弃所有其它⽆关的数据包,以免除CPU对⽆关的数据包做⽆谓的处理。
这是以太⽹卡在⼀般情况下的⼯作⽅式。
在这种⽅式下,以太⽹卡只将接收到的数据包中与本机有关部分向上传递。
然⽽数据包过滤器是可以通过编程禁⽤的。
禁⽤数据包过滤器后,⽹卡将把接收到的所有的数据包向上传递,上⼀层软件因此可以监听以太⽹中其它计算机之间的通讯。
我们称这种⼯作模式为“混杂模式”。
多数⽹卡⽀持“混杂模式”,⽽该模式还是微软公司的“pC99”规范中对⽹卡的⼀个要求。
⽹卡的“混杂模式”使得采⽤普通⽹卡作为⽹络探针,实现⽹络的侦听变得⾮常容易。
⼀⽅⾯⽅便了⽹络管理,另⼀⽅⾯,普通⽤户也能轻易地侦听⽹络通讯,对⽤户的数据通讯保密是⼀个很⼤的威胁。
在进⾏此种⽅式的数据监听时,是在⽹络的节点处设置⽹络设备为混杂模式,进⾏数据监听管理⽹络;⿊客则是利⽤ARP侦探⽹络上出于混杂模式的⽹络节点并将⿊客软件放置在节点处进⾏窃听的。
还有⼀种窃听⽅式是利⽤ARP欺骗达到的。
ARP欺骗⼜被称为ARP重定向技术,ARP地址解析协议虽然是⼀个⾼效的数据链路层协议,但是作为⼀个局域⽹的协议,它是建⽴在各主机之间互相信任基础之上的,因此存在⼀定的安全问题:(1)主机地址映射表是基于⾼速缓存动态更新的,这是ARP协议的特⾊,也是安全问题之⼀。
网络安全中的拦截技术及其实际效果

网络安全中的拦截技术及其实际效果随着互联网的发展,网络安全问题日益凸显,各种恶意软件、黑客攻击、网络诈骗等问题层出不穷,给网络安全带来严峻挑战。
为了保障信息的安全,各个国家和企业采取了多种方法进行网络安全防护,其中拦截技术是一种常用的手段。
本文将从拦截技术的定义、分类和实际效果三个方面进行探讨。
一、拦截技术的定义拦截技术是指利用软硬件或网络设备,在传输、接收或处理网络数据的过程中,对其中包含的特定数据、信息或流量进行识别、拦截和过滤。
一般来说,拦截技术主要用于保护网络安全、限制网络访问、监管网络内容等方面。
拦截技术的实现原理可以通过网络协议分析、流量过滤、协议屏蔽等多种方式实现。
其中,网络协议分析是指对数据包的各个层级进行解析和分类,识别其中的特定信息;流量过滤是指在网络传输过程中,根据一定的规则对数据包进行过滤和筛选;协议屏蔽是指识别并屏蔽特定的网络协议及其相关数据流量,达到限制网络访问、保护计算机安全的目的。
二、拦截技术的分类在实际应用中,拦截技术可以根据其具体功能和应用场景进行分类。
下面列举几种常见的拦截技术分类。
1、URL过滤URL过滤是一种常用的拦截技术,主要用于限制网络访问,防止用户访问包含有害或不良信息的网站。
URL过滤技术主要通过对访问的URL进行分析和筛选,采用黑白名单的方式进行控制。
黑名单列表中包括一些危险的网站地址,当用户尝试访问这些网站时,就会被迫停止访问;白名单列表中包括一些安全的网站地址,用户只能访问这些列表中的地址。
2、应用层协议过滤应用层协议过滤技术主要是基于协议屏蔽实现的,它可以识别并阻止特定的协议类型和相关数据流量,在保护计算机免受恶意攻击的同时,可以限制网络访问。
应用层协议过滤技术可以识别常见的协议类型,如HTTP、SMTP、FTP等,并通过限制这些协议的流量来实现拦截。
3、流量过滤流量过滤是指根据数据包的源IP地址、目的IP地址、源端口号、目的端口号等多种信息对数据流量进行筛选和过滤的技术。
网络安全主要技术

网络安全主要技术网络安全主要技术随着互联网的迅猛发展,网络安全问题也日益突出。
为了保障网络的安全,各级政府、企事业单位以及个人都应加强网络安全意识和措施,采取一系列的网络安全主要技术来保护网络环境的安全。
1. 防火墙技术:防火墙是网络安全的第一道防线,它通过对网络通信流量的检查和过滤,控制网络进出流量,防止不符合规定的流量进入网络或者离开网络。
防火墙可以根据特定的规则来过滤和监控网络通信,有效阻止未经授权的访问和攻击。
2. 入侵检测与防御系统(IDS/IPS):入侵检测系统(IDS)可以检测和报告网络中的入侵行为,而入侵防御系统(IPS)则可以主动阻止和抵御入侵行为。
IDS/IPS系统可以通过监控网络流量、文件、系统日志等来分析和检测潜在的入侵行为,并对其做出相应的响应。
3. 传输层安全协议:为了保证网络通信的安全性,可以使用一些传输层安全协议来加密数据传输和保护数据的完整性,例如SSL/TLS协议。
SSL/TLS协议可以在网络传输层对数据进行加密和解密,防止数据被窃取和篡改。
4. 虚拟专用网络(VPN)技术:VPN技术可以在公共网络中建立一个加密隧道,使得通过公共网络传输的数据可以在两个网络之间进行安全的传输。
VPN技术可以保证数据的机密性和完整性,防止数据泄露和篡改。
5. 安全认证和授权技术:安全认证和授权技术可以用来验证用户的身份和权限,确保只有经过授权的用户才能访问网络资源。
常用的安全认证和授权技术有密码认证、数字证书认证、双因素认证等。
6. 数据备份与恢复技术:数据备份与恢复技术可以保障网络数据的可靠性和可恢复性,当发生数据丢失、损坏或者被攻击时,可以通过数据备份和恢复技术来恢复数据,并防止系统瘫痪和数据丢失。
总之,网络安全主要技术综合运用各种技术手段来保障网络的安全,包括网络防火墙、入侵检测与防御系统、传输层安全协议、虚拟专用网络、安全认证和授权技术、数据备份与恢复技术等等。
这些技术的合理应用可以大大提高网络安全的水平,保护用户的隐私和数据安全。
网络监听技术及其防范措施研究
2 网络 监 听基 本 原 理
局 域 网 内信 息 的传 送 是 以 广 播 的 方 式 向局 域 网 内 的
所 有 主机 发 送 数 据 包 , 数 据 包 中携 带 目的 主 机 的 MAC地 址, 只有 MAC地址 与 数 据 包 中 携 带 的 M AC地 址 相 同 的
重 点研 究 了 网络 监 听技 术 及 其 防 范 措施 , 以保 障 网络 的安 全 运 行 。
关键词 : 计算机 网络; 网络监 听; 网络 安全 中图分类号 : TP 3 0 9 文献标识码 : A 文章 编 号 : 1 6 7 2 — 7 8 0 0 ( 2 0 1 4 ) 0 0 4 — 0 1 4 2 O 2
主机 才 会 接 收 数 据 包 并 作 出回 应 , 其 它 主机 将 忽 略 此 数 据
包 。 当主 机 被 人 侵 者 操 纵 处 于 监 听模 式 下 时 , 无 论 数 据 包
中 目的 主机 的 MAC地址 是 否 与 自 己 的相 匹 配 , 都 将 接 收
网络安全中 , 网 络 监 听 对 网 络 信 息 的威 胁 最 大 , 它 可 以对 计算 机 进行 监控 , 从计 算 机发 送 或 接 收 的信 息 中获 取
的 信 息 提 供 了 可 能性 】 。
( 1 ) 观 察 法 。计 算 机 不 在 监 听 模 式 下 时 , 信 息 的 传 输 及 电脑 对 信 息 的反 应 等 均 处 于 正 常 速 度 。而 当 计 算 机 处
于 监 听模 式 下 时 , 电脑 就 会 现 异 常 反 应 , 通 过 比较 观 察
或 不常 见 的进 程 出现 , 本 机 可 能 处 于 网 络 监 听模 式 下 。
防窃听的加密技术
防窃听的加密技术作者:来源:《新电脑》2014年第05期斯诺登曝光了美国国家安全局与欧美多个国家的情报机构对网络通信的窃听行为,人们终于明白,网络根本没有安全可言,所有经过网络节点传输的数据都可能被拦截和破解,浏览器地址栏上显示加密传输的小锁也不再给人安全的印象,因为在情报机构需要的情况下,他们也同样可以对这些通信数据进行解码。
目前,一些欧洲国家正寻求避免网络通信数据经过美国的网络节点传输的方法,或者试图通过立法来保障网络通信的安全。
不过,恐怕这些政治上的努力最终仍无法阻止欧美各国情报机构的窃听行为,但是从技术上完全有可能实现,那就是使用完全正向保密(Perfect Forward Secrecy,简称PFS)技术。
按照斯诺登的说法,强大的加密技术将是应对全球监听的最佳保障。
但目前互联网主要依赖HTTPS安全连接的加密强度是不够的。
按照目前广泛采用的加密方式,首先,服务器发送一个公共密钥到浏览器,这个公共密钥与一个私有密钥相对应,可以通过私有密钥解开接下来浏览器使用服务器公共密钥加密的信息,并与浏览器握手建立连接,浏览器和服务器将商定一个会话密钥和加密方法,例如AES,接下来,服务器和浏览器之间就可以开始加密的通信。
私钥是薄弱点至此,窃听加密通信的窃听者只能获得经过编码的“胡言乱语”,但是通过上面的介绍不难明白,如果得到了服务器的私钥,自然就不难从窃听到的数据中提取会话密钥,从而解密所有通信数据。
因而,美国国家安全局非常希望能够从安全邮件服务Lavabit的创始人拉达尔·利维森(Ladar Levison)手上获取Lavabit的私有密钥,因为斯诺登使用的正是这个电子邮件服务。
如果美国国家安全局能够获得Lavabit的私有密钥,自然就能够解密并阅读斯诺登的所有邮件。
不过,利维森选择了关闭他的邮件服务,而不是将私有密钥交给美国国家安全局。
如果利维森的邮件服务使用完全正向保密(PFS)技术的话,他就不必这样做,因为PFS 加密技术并不使用私钥。
网络安全与网络拦截
网络安全与网络拦截随着互联网的迅猛发展,网络安全问题日益凸显。
为了保护个人隐私和确保信息的安全传输,网络拦截作为一种重要的网络安全防护手段,发挥着重要作用。
本文将对网络安全与网络拦截进行探讨,并倡导加强网络安全意识,保护个人信息。
一、网络安全的重要性在当今信息时代,网络已经成为人们生活、工作和交流的重要平台。
然而,网络的普及也带来了许多安全隐患,例如黑客攻击、数据泄露和病毒传播等。
这些威胁不仅会导致个人隐私泄露,还会影响国家安全和经济发展。
因此,确保网络安全已经成为各界的共同关注点。
二、网络拦截的定义与作用网络拦截是指通过技术手段对网络中的信息进行监控、过滤和截取的过程。
它的主要作用是阻止不法分子利用网络渠道进行攻击、滥用和非法传输信息。
通过网络拦截,可以有效防范网络犯罪活动,保护人们的网络安全。
三、网络拦截的工作原理1. 流量监测与分析:网络拦截系统通过监测网络数据流量,分析恶意代码以及异常行为,从而及时发现并拦截潜在的威胁。
2. 网络过滤与阻断:网络拦截系统根据预设的规则和策略,对涉嫌违法、有害或恶意的信息进行拦截和阻断,确保网络中的安全环境。
3. 数据加密与保护:网络拦截系统可以加密敏感数据,提供数据隐私保护功能,防止数据泄露和被非法获取。
四、加强网络安全意识,保护个人信息为了共同维护网络安全,每个人都应该增强自身的网络安全意识,并采取有效的措施保护个人信息。
1. 密码设置与管理:使用复杂的密码,并定期更换密码,不将密码轻易泄露给他人。
2. 安装杀毒软件和防火墙:定期更新杀毒软件和操作系统,确保计算机的安全性。
3. 谨慎点击链接:对来自陌生人或不可信来源的链接要保持警惕,避免点击带有风险的链接。
4. 注重隐私设置:在使用社交媒体平台时,注意合理设置个人隐私选项,避免个人信息被滥用。
5. 网络教育与知识普及:加强网络安全教育,提高公众对网络安全的认知和防范能力。
总结:网络安全与网络拦截是保护个人信息安全的重要手段。
网络安全之网络监听
网络安全之网络监听
1
总之,网络安全是一个 持续的挑战,需要不断 更新和发展技术、政策
和最佳实践来应对
2
我们应该不断关注新技术的发 展,加强安全意识和培训,提 高网络安全防护能力,以确保 网络通信的安全性和可靠性
网络安全之网络监听
网络安全教育与意识
网络安全并不仅仅是技术问题,而是一个涉及多个层面的复杂议题。因此,除了技术层面 的防范措施外,网络安全教育也是至关重要的
定期审计和监控
定期检查和监控网络设备和 系统的日志文件,以便及时 发现异常活动或潜在的安全 威胁。通过审计和监控,可 以及时采取措施应对安全事
件或潜在的网络攻击
使用加密技术保护数据存储
对于存储在本地或云端的数 据,应使用加密技术进行保 护。这可以确保即使数据被 盗或泄露,攻击者也无法轻 易地访问或解密敏感信息
启用防火墙和入侵检测系统
防火墙可以限制对网络的访 问,防止未经授权的访问和 数据泄漏。入侵检测系统能 够实时监控网络活动,并检 测任何可疑行为或攻击活动
教育和培训
提高员工对网络安全的认识 和意识,让他们了解如何避 免常见的安全风险和识别潜 在的网络威胁。定期进行安 全培训和演练,确保员工具 备足够的安全知识和技能
使用VPN:使用虚拟专用网络(VPN)可以在公共网络上建立加密的连接,保护用户的个 人信息和通信内容
网络安全之网络监听
使用安全的网络设备
确保使用的网络设备和软件 是最新版本,并及时更新安 全补丁。这可以减少漏洞和
潜在的安全风险
使用强密码
使用复杂且难以猜测的密码 来保护账户和系统安全。定 期更改密码,并避免在多个 账户上重复使用相同的密码
网络安全之网络监听
结论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows下网络数据报的监听和拦截技术1Windows下网络数据报的监听和拦截技术是一个比较古老的话题,应用也很广泛,例如防火墙等等。
这篇小文只是对该技术的一个总结,没有新技术,高手免看:)要监听和拦截Windows下的数据报,基本可以在两个层次进行,一个是用户态(user-mode),一个是核心态(kernel-mode)。
在用户态下,从高到低大概有四种方法。
1、原是套结字(Raw Socket)。
Winsock2以后提供了原始套结字功能,可以在用户态用Winsock函数接收所有流经Winsock的IP包。
这种方法在MSDN里面有叙述,是MS官方支持的方法,在网上也有很多资料。
但是这种方法只能监听但是不能拦截数据报,所以可以作为网络监视器的选择技术,但是不能实现防火墙等更高要求的功能。
另外最致命的缺点就是只能在Winsock层次上进行,而对于网络协议栈中底层协议的数据包例如TDI无法进行处理。
对于一些木马和病毒来说很容易避开这个层次的监听。
2、替换系统自带的WINSOCK动态连接库。
这种方法可以在很多文章里面找到详细的实现细节。
通过替换系统Winsock库的部分导出函数,实现数据报的监听和拦截。
缺点同1。
3、Winsock服务提供者(SPI)。
SPI是Winsock的另一面,是Winsock2的一个新特性。
起初的Winsock是围绕着TCP/IP协议运行的,但是在Winsock 2中却增加了对更多传输协议的支持。
Winsock2不仅提供了一个供应用程序访问网络服务的Windows socket 应用程序编程接口(API),还包含了由传输服务提供者和名字解析服务提供者实现的Winsock服务提供者接口(SPI)和ws2_32.dll。
Winsock 2的传输服务提供者是以动态链接库的形式(DLL)存在的。
以下是winsock 2在传输服务提供者上的WOSA(Windows 开放服务结构):----------------------------|Windows socket 2 应用程序|----------------------------Windows socket 2 API| WS2_32.DLL |----------------------------Windows socket 2 传输SPI| 传输服务提供者(DLL) |----------------------------Windows socket SPI提供三种协议:分层协议,基础协议和协议链。
分层协议是在基础协议的上层,依靠底层基础协议实现更高级的通信服务。
基础协议是能够独立,安全地和远程端点实现数据通信的协议,它是相对与分层协议而言的。
协议链是将一系列的基础协议和分层协议按特点的顺序连接在一起的链状结构,可以通过Platform SDK 附带的工具Sporder.exe察看系统已经安装的SPI,请参见下图:API------------------------| WS2_32.DLL |SPI------------------------| 分层协议 |SPI-------------| 分层协议 |SPI------------------------| 基础协议 |------------------------每个应用程序通过Ws2_32.dll和相应的服务提供者进行严格的数据交换。
Ws2_32.dll根据应用程序在创建套接字时所提供的参数来选择特定的服务提供者,然后把应用程序的实现过程转发由所选创建套接字的服务提供者来管理。
也就是说,Ws2_32.dll 只是一个中间过程,而应用程序只是一个接口,数据通信的实现却是由服务提供者来完成的。
所以我们通过适当的增加自己的分层协议服务提供者,使其位于SPI的顶端,那么就能将Ws2_32.dll传给服务提供者的数据报拦截下来。
由于是MS的官方方法,具体的使用方法在其Platform SDK里面有详细的例子(LSP),在MSDN里面也有详细的解释。
这种方法的优点是能够获得调用Winsock的进程的详细信息,并能实现Qos和数据加密。
所以SPI是用户态数据拦截的较好地点。
缺点同1。
4、Windows2000包过滤接口。
由于过滤规则限制太多不灵活而应用不多。
5、网络监视器SDK。
MS官方的实时监视分析网络数据的方法。
但是由于封装的太复?樱?使用起来不灵活。
在核心态下,数据报的监视和拦截方法比较复杂,由于大多个人防火墙都是在核心??实现的,所以在这里比较详细的叙述一下。
具体的请参见nt/2kDDK文档。
大概有下面几个方法。
1、 TDI过滤驱动程序(TDI Filter Driver)。
2、 NDIS中间层驱动程序(NDIS Intermediate Driver)。
编写IM DRIVER 在NDIS中间层对MINIPORT(网卡驱动程序)和协议驱动程序之间的数据包进行拦截。
这是微软提供的一种技术。
在DDK中MS提供了Passthru例子,很多中间层过滤驱动都可以由之改编。
但编写该过滤程序拦截程序非常的复杂,安装也很麻烦。
3、 Win2k Filter-Hook Driver。
4、 NDIS Hook Driver。
这种方法又有两种实现方式。
(1)向NDIS注册假协议(fake protocol)。
这是在协议层上的处理。
在Windows 内核中,所有已注册的协议是通过一个单向的协议链表来维护的。
这个单向链表保存了所有已注册协议的NDIS_PROTOCOL_BLOCK结构的地址,在这个结构中保存了协议驱动所指定的相应的派发函数的地址如RECEIVE_HANDLER等。
struct _NDIS_PROTOCOL_BLOCK{PNDIS_OPEN_BLOCK OpenQueue; // queue of opens for this protocolREFERENCE Ref; // contains spinlock for OpenQueueUINT Length; // of this NDIS_PROTOCOL_BLOCK structNDIS50_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics;// handler addressesstruct _NDIS_PROTOCOL_BLOCK * NextProtocol; // Link to nextULONG MaxPatternSize;#if defined(NDIS_WRAPPER)//// Protocol filters//struct _NDIS_PROTOCOL_FILTER * ProtocolFilter[NdisMediumMax+1];WORK_QUEUE_ITEM WorkItem; // Used during NdisRegisterProtocol to// notify protocols of existing drivers.KMUTEX Mutex; // For serialization of Bind/Unbind requestsPKEVENT DeregEvent; // Used by NdisDeregisterProtocol#endif};typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK,*PNDIS_PROTOCOL_BLOCK;并且,每个协议驱动还对应一个NDIS_OPEN_BLOCK的单向链表来维护其所绑定的网卡信息。
当协议驱动调用NdisRegisterProtocol之后,EXPORTVOIDNdisRegisterProtocol(OUT PNDIS_STATUS Status,OUT PNDIS_PROTOCOL_BLOCK NdisProtocolHandle, /*注意NDIS_HANDLE所指向的就是PNDIS_PROTOCOL_BLOCK的结构,不要有什么怀疑。
*/IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,IN UINT CharacteristicsLength);NDIS总是会把新注册的协议放在协议链表的表头并返回这张表,所以只要我们注册一个新的协议通过新协议注册返回的链表头就可以轻而易举的遍历系统中所有协议表。
但是,如果要成功地挂接派发函数,还需要对协议所对应的NDIS_OPEN_BLOCK结构里的派发函数进行挂接,因为NDIS并不是直接调用协议驱动在NDIS_PROTOCOL_CHARACTERISTICS所注册的派发函数地址,而是调用NDIS_OPEN_BLOCK里的派发函数。
struct _NDIS_OPEN_BLOCK{PNDIS_MAC_BLOCK MacHandle; // pointer to our MACNDIS_HANDLE MacBindingHandle; // context when calling MacXX funcsPNDIS_ADAPTER_BLOCK AdapterHandle; // pointer to our adapterPNDIS_PROTOCOL_BLOCK ProtocolHandle; // pointer to our protocolNDIS_HANDLE ProtocolBindingContext;// context when calling ProtXX funcsPNDIS_OPEN_BLOCK AdapterNextOpen; // used by adapter's OpenQueuePNDIS_OPEN_BLOCK ProtocolNextOpen; // used by protocol's OpenQueuePFILE_OBJECT FileObject; // created by operating systemBOOLEAN Closing; // TRUE when removing this structBOOLEAN Unloading; // TRUE when processing unloadBOOLEAN NoProtRsvdOnRcvPkt; // Reflect the protocol_optionsNDIS_HANDLE CloseRequestHandle; // 0 indicates an internal close KSPIN_LOCK SpinLock; // guards ClosingPNDIS_OPEN_BLOCK NextGlobalOpen;//// These are optimizations for getting to MAC routines. They are not // necessary, but are here to save a dereference through the MAC block. //SEND_HANDLER SendHandler;TRANSFER_DATA_HANDLER TransferDataHandler;//// These are optimizations for getting to PROTOCOL routines. They are not// necessary, but are here to save a dereference through the PROTOCOL block.//SEND_COMPLETE_HANDLER SendCompleteHandler;TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; RECEIVE_HANDLER ReceiveHandler;RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler;//// Extentions to the OPEN_BLOCK since Product 1.//RECEIVE_HANDLER PostNt31ReceiveHandler;RECEIVE_COMPLETE_HANDLER PostNt31ReceiveCompleteHandler;//// NDIS 4.0 extensions//RECEIVE_PACKET_HANDLER ReceivePacketHandler;SEND_PACKETS_HANDLER SendPacketsHandler;//// More NDIS 3.0 Cached Handlers//RESET_HANDLER ResetHandler;REQUEST_HANDLER RequestHandler;//// Needed for PnP//UNICODE_STRING AdapterName; // Upcased name of the adapter we are bound to};这张表是一个单向链接表,并且存放了和PNDIS_OPEN_BLOCK->ProtocolCharacteristics一样的数据收发派发函数,当第N块网卡发送数据包到第N个协议时,就会调用第N个协议与第N个网卡之间建立的NDIS_OPEN_BLOCK表里的SendHandler或SendPacketHandler。