防火墙的数据包拦截方式小结
- 格式:doc
- 大小:67.50 KB
- 文档页数:12
网络防火墙是现代网络安全的重要组成部分,其作用是保护网络免受各种恶意攻击的侵害。
如何利用网络防火墙阻止恶意攻击?本文将从网络防火墙的基本原理、具体实施和最佳实践三个方面进行论述。
一、网络防火墙的基本原理网络防火墙是位于网络边界的一道安全屏障,其基本原理是通过过滤和监控网络流量,辨别并阻止潜在的恶意攻击。
其主要功能包括访问控制、数据包过滤、内容过滤和网络地址转换。
首先,访问控制是通过设定访问规则,限制网络的入口和出口,只允许特定的用户或主机访问网络资源,从而防止恶意攻击者的进一步侵害。
其次,数据包过滤是通过检查数据包的源地址、目标地址、协议类型、端口等信息,对网络流量进行监控和控制,只允许合法的数据包通过,拒绝非法或潜在危险的数据包。
再次,内容过滤是通过对数据包的内容进行分析和过滤,识别和拦截包含恶意代码、病毒、垃圾邮件等非法或有害的内容,保护网络和用户的安全。
最后,网络地址转换是通过将内部网络的私有 IP 地址转换为公网 IP 地址,隐藏内部网络的拓扑结构,增加攻击者进行网络扫描和入侵的难度。
二、网络防火墙的具体实施在实际应用中,网络防火墙的具体实施需要借助一系列的技术手段和工具。
例如,基于规则的防火墙可以通过定义一系列的访问规则,控制网络流量的通过,从而实现对恶意攻击的阻止。
还可以采用入侵检测系统(IDS)和入侵预防系统(IPS),实时监控网络流量,及时发现和应对潜在的攻击行为。
此外,还可以采用虚拟专用网络(VPN)等加密技术,建立安全的通信隧道,保护敏感数据在传输过程中的安全性。
同时,定期更新和升级防火墙的软件和规则,及时修补已知漏洞,提高防御能力。
三、网络防火墙的最佳实践为了更有效地利用网络防火墙阻止恶意攻击,以下是几点最佳实践建议。
首先,需要根据组织的安全策略和需求,制定合理的防火墙规则。
防火墙规则应该遵循最小权限原则,只允许最必要的网络流量通过,并且应该对不同的用户和网络资源进行分类和控制,实施精细化的访问控制。
web防火墙实验报告Web防火墙实验报告一、引言随着互联网的快速发展和普及,网络安全问题日益突出。
为了保护网络系统的安全性,防火墙成为了一种重要的网络安全设备。
本实验旨在通过搭建Web防火墙实验环境,探究其工作原理和效果。
二、实验环境搭建1. 硬件环境:一台运行Linux操作系统的服务器。
2. 软件环境:安装并配置防火墙软件,如iptables。
三、Web防火墙工作原理Web防火墙是一种网络安全设备,主要用于保护Web服务器免受恶意攻击和非法访问。
其工作原理主要包括以下几个方面:1. 访问控制:Web防火墙通过设置访问规则,限制对Web服务器的访问。
可以根据IP地址、端口号、协议等信息进行过滤,只允许合法的请求通过。
2. 数据包过滤:Web防火墙对进出的数据包进行检查和过滤,阻止潜在的攻击和恶意行为。
可以根据数据包的内容、协议等信息进行判断,拦截异常的数据包。
3. 应用层协议检测:Web防火墙可以对HTTP、FTP等应用层协议进行深度检测,识别并拦截恶意代码、SQL注入、跨站脚本攻击等常见的Web攻击。
四、实验步骤1. 安装并配置防火墙软件:在Linux服务器上安装iptables,并进行相应的配置,包括设置访问规则、过滤规则等。
2. 模拟攻击:使用工具模拟Web攻击,如发送恶意请求、进行SQL注入等,观察防火墙的反应。
3. 监控日志:通过监控防火墙的日志,了解防火墙的工作情况和效果。
可以根据日志中的记录,分析攻击类型和频率,进一步优化防火墙的配置。
五、实验结果与分析通过实验,我们得到了以下结果和分析:1. 防火墙有效拦截了大部分的恶意攻击和非法访问,保护了Web服务器的安全。
2. 防火墙的访问控制规则起到了重要的作用,限制了对Web服务器的访问,只允许合法的请求通过。
3. 防火墙的数据包过滤功能有效阻止了潜在的攻击和恶意行为,提高了Web服务器的安全性。
4. 防火墙的应用层协议检测功能能够有效识别并拦截常见的Web攻击,如SQL 注入、跨站脚本攻击等。
南京信息工程大学实验(实习)报告实验(实习)名称防火墙实验(实习)日期2012.10.12指导教师朱节中专业10软件工程年级三班次 2 班姓名曾艺学号20102344070 得分一.实验目的:1. 了解防火墙的相关知识2. 防火墙的简单实验二.实验步骤:1. 了解防火墙的概念,类型及作用2. 防火墙的实验三.实验内容:1.防火墙的概念防火墙指的是一个有软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障。
由计算机硬件或软件系统构成防火墙,来保护敏感的数据部被窃取和篡改。
防火墙是设置在可信任的企业内部和不可信任的公共网或网络安全域之间的以系列部件的组合,它是不同网络或网络安全域之间信息的唯一出入口,能根据企业的安全政策控制出入网络的信息流,且本身具有较强的抗攻击能力。
它是提供信息安全服务,实现网络和信息安全的基础设施。
2防火墙的类型技术上看,防火墙有三种基本类型:包过滤型、代理服务器型和复合型。
它们之间各有所长,具体使用哪一种或是否混合使用,要根据具体需求确定。
包过滤型防火墙(Packet Filter Firewall)通常建立在路由器上,在服务器或计算机上也可以安装包过滤防火墙软件。
包过滤型防火墙工作在网络层,基于单个IP包实施网络控制。
它对所收到的IP数据包的源地址、目的地址、TCP数据分组或UDP报文的源端口号及目的端口号、包出入接口、协议类型和数据包中的各种标志位等参数,与网络管理员预先设定的访问控制表进行比较,确定是否符合预定义好的安全策略并决定数据包的放行或丢弃。
这种防火墙的优点是简单、方便、速度快、透明性好,对网络性能影响不大,可以用于禁止外部不合法用户对企业内部网的访问,也可以用来禁止访问某些服务类型,但是不能识别内容有危险的信息包,无法实施对应用级协议的安全处理。
代理服务器型防火墙(Proxy Service Firewall)通过在计算机或服务器上运行代理的服务程序,直接对特定的应用层进行服务,因此也称为应用层网关级防火墙。
防火墙防止抓包原理防火墙是一种用来保护计算机网络安全的重要设备。
它可以在网络与外界之间建立一个安全壁垒,防止未经授权的访问和攻击。
防火墙通过控制数据包的流动来实现对网络的保护,防止被黑客抓包。
下面介绍一下防火墙防止抓包的原理。
1.网络协议过滤防火墙可以根据协议类型、端口号、源地址等信息过滤网络流量。
它可以允许或阻止相应的数据包通过,从而控制数据包的流动。
在防火墙中,可以设置相应的规则来指定哪些网络流量允许通过,哪些不允许通过。
对于被禁止的数据包,防火墙可以直接丢弃或者进行警告提示。
2.报文内容过滤防火墙可以对报文进行深度分析,过滤掉包含非法内容的数据包。
它可以检测到携带恶意代码、病毒、木马等危险程序的数据包,并将其拦截。
同时,防火墙还可以对数据包进行加密、解密,保护数据的机密性。
3.动态端口过滤防火墙可以动态生成临时端口来拦截非法的数据包。
黑客通常会使用一些常用的端口进行攻击,比如23、80、135等。
防火墙可以根据攻击的特点,自动生成一些临时端口,来防止攻击者用已知的端口号进攻。
4.访问控制防火墙可以设置访问控制列表(ACL)来控制哪些用户可以访问网络。
ACL是一种允许或拒绝访问的规则列表,可以针对不同的网络协议、服务、用户等进行配置。
这样可以大大降低黑客利用外部的开放端口进行入侵的机会。
综上,防火墙防止抓包的原理是多方面的,从网络协议过滤到报文内容过滤,从动态端口过滤到访问控制,每一种原理都可以在一定程度上保护网络的安全。
在实际应用中,防火墙和其他安全措施结合起来使用,可以更加有效地防止黑客抓包,保障网络的安全。
浅析防火墙技术毕业论文防火墙技术是网络安全中非常重要的一种技术手段,主要用于保护网络系统免受外部攻击和威胁。
本文将从防火墙技术的定义、工作原理、分类和应用等方面进行浅析。
一、防火墙技术的定义防火墙技术是指在网络中设置一道或多道屏障,对网络流量进行监控和过滤,以达到保护网络系统安全的目的。
防火墙可以对进出网络的数据包进行检查和过滤,根据预设的规则对特定的数据包进行允许或阻止的处理。
二、防火墙技术的工作原理防火墙通过对网络流量的监控和过滤,实现对网络通信的控制。
其工作原理主要包括以下几个步骤:1.数据包检查:防火墙对进出网络的数据包进行检查,包括源IP地址、目的IP地址、端口号等信息。
可以通过对数据包的源和目的地址进行比对,来判断数据包的合法性。
3.规则匹配:防火墙根据预设的规则,对数据包进行匹配。
根据规则的设定,防火墙可以允许某些特定的数据包通过,也可以阻止部分数据包的传输。
4.日志记录:防火墙对通过和阻止的数据包进行记录,以便后期的审计和追踪。
可以通过日志记录进行安全事件的分析和溯源。
5.远程管理:防火墙可以支持远程管理,通过设置远程访问权限,管理员可以远程登录防火墙,并对其配置和管理。
6.漏洞扫描:防火墙可以对网络系统进行漏洞扫描,及时发现系统中存在的安全漏洞,并采取相应的措施进行修复和防范。
三、防火墙技术的分类根据不同的防护对象和工作方式,防火墙技术可以分为以下几种:1.包过滤防火墙:根据数据包的源IP地址、目的IP地址、端口号等信息进行过滤和判断,对数据包进行允许或阻止的处理。
2.状态检测防火墙:通过对数据包进行状态检测和跟踪,对疑似攻击的数据包进行拦截和阻止。
3.应用层网关防火墙:在传输层和应用层之间,对数据包进行深层次的分析和筛选,对数据包进行重组和改写。
4.代理防火墙:作为客户端和服务器之间的中间人,代理防火墙接收客户端的请求,并代表客户端向服务器发送请求,并根据预设的规则对请求和响应进行筛选和处理。
防火墙包过滤技术分析[摘要] 随着计算机网络技术的突飞猛进,网络安全的问题已经日益突出地摆在各类用户的面前。
而防火墙已经成为一般企业用来保护自身网络安全的主要机制,因此对防火墙技术进行深入探讨是非常必要的。
防火墙技术主要分为包过滤和应用代理两类。
从数据包结构出发,分析包过滤技术,首先提出包过滤技术的核心问题;然后在分析传统包过滤技术缺陷的基础上,详细论述了包过滤技术的两种发展趋势。
[关键词] 防火墙包过滤动态包过滤深度包检测一、引言随着Internet的迅速发展,网络应用涉及到越来越多的领域,网络中各类重要的、敏感的数据逐渐增多;同时由于黑客入侵以及网络病毒的问题,使得网络安全问题越来越突出。
因此,保护网络资源不被非授权访问,阻止病毒的传播感染显得尤为重要。
就目前而言,对于局部网络的保护,防火墙仍然不失为一种有效的手段。
防火墙技术主要分为包过滤和应用代理两类。
其中包过滤作为最早发展起来的一种技术,其应用非常广泛。
所谓包过滤,就是对流经网络防火墙的所有数据包逐个检查,并依据所制定的安全策略来决定数据包是通过还是不通过。
包过滤最主要的优点在于其速度与透明性。
也正是由于此,包过滤技术历经发展演变而未被淘汰。
考虑包过滤技术的发展过程,可以认为包过滤的核心问题就是如何充分利用数据包中各个字段的信息,并结合安全策略来完成防火墙的功能。
二、包过滤防火墙工作原理包过滤防火墙工作在OSI网络参考模型的网络层和传输层,它根据数据包头源地址,目的地址、端口号和协议类型等标志确定是否允许通过。
只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。
包过滤方式是一种通用、廉价和有效的安全手段。
之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业安全要求。
网络防火墙是我们日常使用的网络设备之一,它能够保护我们的计算机免受来自外界网络的攻击。
网络防火墙是具有四层和七层过滤功能的,下面我将对这两种过滤方式进行深度解读。
四层过滤是指网络防火墙在传输层进行过滤和检测。
在传输层,数据被分解成小的数据包并通过网络传输。
网络防火墙通过检查和过滤这些数据包来保护我们的计算机。
四层过滤的主要目标是检查数据包的源地址和目标地址是否允许通信。
通过对源地址和目标地址进行匹配,网络防火墙可以决定是否允许数据包通过。
此外,四层过滤还可以检查数据包的协议信息,如TCP或UDP协议,并确定是否允许这些协议的通信。
通过这种方式,网络防火墙可以阻止一些恶意的数据包进入我们的网络,从而提高网络的安全性。
然而,四层过滤并不能提供对应用层协议的细粒度控制。
这就引入了七层过滤的概念。
七层过滤是在传输层过滤的基础上,进一步对应用层协议进行检查和过滤。
应用层协议包括HTTP、FTP、SMTP等。
通过检查应用层协议的头部信息,网络防火墙可以判断该数据包是否属于所允许的通信范围。
如果不符合规定的协议,网络防火墙会将其阻止。
七层过滤在保护网络安全的同时,还可以提高网络性能,因为它能够根据具体的应用需求来决定是否允许某个协议的通信。
四层和七层过滤在网络防火墙的实现中起着不同的作用。
四层过滤主要用于基本的源和目标地址验证,它提供了对网络请求的基本过滤。
在大多数情况下,四层过滤已经足够满足我们的需求。
然而,对于一些需要更细粒度控制的情况,七层过滤则能发挥更大的作用。
七层过滤可以通过检查协议头部信息、URL和数据包内容等来判断应用层协议的合法性,进而提高网络的安全性和性能。
除了四层和七层过滤,网络防火墙还可以配合其他安全设备和技术使用,以提高网络安全的级别。
例如,入侵检测系统(IDS)可以与网络防火墙配合使用,用于检测和阻止潜在的网络入侵行为。
虚拟专用网络(VPN)可以通过加密和隧道技术保护网络的通信安全。
如何通过防火墙防止计算机病攻击计算机安全一直以来都是一个重要的话题,其中防火墙是保证计算机安全的重要措施之一。
那么,如何通过防火墙防止计算机病毒攻击呢?下面我们就来详细了解一下。
防火墙作为计算机的第一道防线,是对计算机进行安全保护的重要手段。
它可以起到限制网络流量的作用,只允许经过认证的用户访问网络资源。
通过在网络上过滤数据包,可以有效地防止恶意代码的攻击和传播。
在防火墙的保护下,计算机可以实现以下防病毒攻击的方法:1. 限制网络访问:防火墙可以将网络流量分为内部流量和外部流量,只允许经过认证的用户访问内部网络。
这可以有效地防止未经授权的访问和攻击。
2. 过滤邮件附件:电子邮件是病毒传播的重要途径之一,防火墙可以对邮件进行过滤,禁止传输具有病毒的文件。
这可以有效地减少病毒传播的可能性。
3. 杀死病毒进程:如果计算机已被感染病毒,防火墙可以对病毒进程进行杀死,以减少病毒对系统的危害。
4. 升级病毒库:防火墙需要不断升级病毒库,以及时识别新的病毒并进行防御。
在使用防火墙时,应遵循以下几点:1. 配置正确:需要正确配置防火墙,包括网络配置和规则设置,以确保对计算机进行有效的保护。
2. 升级及时:及时升级防火墙软件和病毒库,以保证系统的安全性。
3. 启用日志:启用防火墙的日志功能,以记录网络流量,并及时发现异常情况。
综上所述,防火墙是计算机安全的重要手段之一,可以有效地防御计算机病毒攻击。
在使用防火墙时,需要正确配置和及时升级,并启用日志功能以记录网络流量。
这些措施可以最大程度地保护计算机的安全,减少病毒攻击对系统的危害。
防火墙工作的原理
防火墙工作的原理主要是通过过滤和监控网络数据流量,在网络中拦截和阻止潜在的恶意或不安全的数据包,以保护网络安全。
以下是防火墙工作的基本原理:
1. 数据包过滤:防火墙会根据预先设定的规则对网络数据包进行检查和过滤。
这些规则可以基于源地址、目的地址、传输协议、端口号等信息进行设定。
当数据包与规则匹配时,防火墙可以选择允许通过、拒绝或丢弃该数据包。
2. 访问控制列表(ACL):防火墙会使用访问控制列表来管理数据包的访问权限。
ACL会列出允许或禁止特定主机、网络
或服务的通信。
防火墙会根据ACL中定义的规则对数据包进
行判断,以决定是否允许通过。
3. 状态检测:防火墙可以进行状态检测,即跟踪网络连接的状态和信息。
通过分析连接的起始、终止、连接状态等,防火墙可以判断连接是否合法,并根据设定的规则对其进行处理。
4. 网络地址转换(NAT):防火墙还可以执行网络地址转换,将网络中的内部IP地址转换为外部IP地址,以保护内部网络
的真实地址不被外部网络获知。
5. 应用代理:某些高级防火墙可以充当应用代理,在应用层对网络数据进行检查和分析。
它们可以检测并阻止特定应用程序的恶意行为,如网络钓鱼、恶意软件传播等。
通过以上原理的组合应用,防火墙能够有效地监控、过滤和阻止进出网络的数据流量,提供最基本的网络安全保护。
防火墙数据包过滤规则
防火墙是一种网络安全设备,它可以对进出网络的数据包进行筛选和阻挡,保护网络免受恶意攻击和未经授权的访问。
以下是常见的防火墙数据包过滤规则:
1. 允许特定的IP地址或IP地址范围访问网络。
这可以通过设置源IP地址或目标IP地址来实现。
2. 允许特定的端口或端口范围通过。
这可以通过设置源端口号或目标端口号来实现。
3. 禁止特定的IP地址或IP地址范围访问网络。
这可以通过设置源IP地址或目标IP地址来实现。
4. 禁止特定的端口或端口范围通过。
这可以通过设置源端口号或目标端口号来实现。
5. 允许或禁止特定的协议通过,如TCP、UDP或ICMP。
6. 允许或禁止特定的数据包类型通过,如HTTP、FTP或SMTP。
7. 允许或阻止特定的数据包内容通过,如关键字过滤或恶意代码检测。
8. 允许或阻止特定的数据包大小或数据流量通过。
以上规则可以根据网络管理员的需求进行灵活配置,以确保网络安全和合规性。
防火墙的数据包拦截方式小结网络防火墙都是基于数据包的拦截技术之上的。
在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更能准确地获知当前应用程序文件名,后者的接收数据包和少数发送数据包的场景仍然处于内核进程中。
下面列出了各种截包方式的特点:* Winsock Layered Service Provider (LSP)该方式也称为SPI(Service Provider Interface) 截包技术。
SPI是由Winsock2提供的一个接口,它需要用户机上安装有Winsock 2.0。
Winsock2 SPI工作在API之下的Driver 之上,可以截获所有基于Socket的网络数据包。
优点:* 以DLL形式存在,编程方便,调试简单。
* 数据封包比较完整,未做切片,便于做内容过滤。
缺点:* 拦截不够严密,对于不用Socket的网络通讯则无法拦截 (如ICMP),木马病毒很容易绕过。
* Win2K Packet Filtering Interface这是Win2K中一组API提供的功能 (PfCreateInterface, PfAddFiltersToInterface, ...)。
优点:* 接口简单,实现起来没什么难度。
缺点:* 功能过于简单,只能提供IP和端口的过滤,可能无法满足防火墙的复杂需求。
* 处于API层,木马病毒容易绕过。
* 只能在Win2K以上(含)系统中使用。
* Winsock Replacem ent DLL这种方法通过替换系统Winsock库的部分导出函数,实现数据报的监听和拦截。
缺点:* 由于工作在Winsock层,所以木马病毒容易绕过。
* TDI-Filter DriverTDI的全称是Transport Driver Interface。
传输层过滤驱动程序通过创建一个或多个设备对象直接挂接到一个现有的驱动程序之上。
当有应用程序或其它驱动程序调用这个设备对象时,会首先映射到过滤驱动程序上,然后由过滤驱动程序再传递给原来的设备对象。
优点:* 能获取到当前进程的详细信息,这对开发防火墙尤其有用。
缺点:* 该驱动位于tcpip.sys之上,所以没有机会得到那些由tcpip.sys直接处理的包,比如ICMP。
* TDI驱动需要重启系统方能生效。
* NDIS Intermediate Driver也称之为IM Driver。
它位于协议层驱动和小端口驱动之间,它主要是在网络层和链路层之间对所有的数据包进行检查,因而具有强大的过滤功能。
它能截获所有的数据包。
可参考DDK中附带的例子Passthru。
优点:* 功能非常强大,应用面广泛,不仅仅是防火墙,还可以用来实现VPN,NAT和VLan等。
缺点:* 编程复杂,难度较大。
* 中间层驱动的概念是在WinNT SP4之后才有的,因此Win9X无法使用。
* 不容易安装,自动化安装太困难。
* Win2K Filter-Hook Driver这是从Win2K开始提供的一种机制,该机制主要利用ipfiltdrv.sys所提供的功能来拦截网络数据包。
Filter-Hook Driver的结构非常简单,易于实现。
但是正因为其结构过于简单,并且依赖于ipfiltdrv.sys,微软并不推荐使用。
可参考CodeProject上的例子:/KB/IP/drvfltip.aspx 优点:* 结构简单,易于实现。
* 能截获所有的IP包(包括ICMP包)。
缺点:* 工作于内核进程中,无法取得当前应用程序进程的信息。
* 虽能截获所有IP包,但无法取得数据包的以太帧(Ethernet Frame)。
* 只能在Win2K以上(含)系统中使用。
* Win2K Firewall-Hook Driver这是一种和Win2k Filter-Hook Driver差不多的机制,所不同的是,Firewall-Hook Driver 能在IP Driver上挂接多个回调函数,所以和前者相比,它引起冲突的可能性更小一些。
可参考CodeProject上的例子:/KB/IP/FwHookDrv.aspx 这种方式的优缺点和Win2K Filter-Hook Driver基本相同。
* NDIS-Hook Driver这是一种要重点讲述的截包方式。
它是目前大多数网络防火墙所使用的方法。
这种方式的做法是安装钩子到ndis.sys中,替换其中的某些关键函数,从而达到截包的目的。
在下一节中我们将详细地介绍它的实现方法。
优点:* 安装简单,可即时安装和卸载驱动,无需重启系统。
* 能截获所有的IP包,同时能取得数据包的以太帧(Ethernet Fram e)。
* 安全性高,木马病毒不容易穿透。
* 在大多数情况下,能获取到当前应用程序的进程信息。
* 能在Win98以上(含)系统中使用。
缺点:* 接收数据包、或偶尔发送数据包时,驱动工作在内核进程中,无法获得应用程序进程信息。
◎ NDIS-Hook技术微软和3COM公司在1989年制定了一套开发Windows下网络驱动程序的标准,称为NDIS。
NDIS的全称是Network Driver Interface Specification。
NDIS为网络驱动的开发提供了一套标准的接口,使得网络驱动程序的跨平台性更好。
NDIS提供以下几个层次的接口:1. NDIS小端口驱动 (NDIS Miniport Driver)。
这也就是我们常说的网卡驱动。
2. NDIS协议驱动 (NDIS Protocol Driver)。
用来实现某个具体的协议栈,如TCP/IP协议栈,并向上层导出TDI接口。
3. NDIS中间层驱动 (NDIS Intermediate Driver)。
这是位于小端口驱动和协议驱动之间的驱动。
NDIS为了给出上述三种接口,提供了一个系统的、完整的Wrapper。
这个Wrapper即ndis.sys。
上面提到的Miniport Driver、Protocol Driver、Intermediate Driver均属于插入到这个Wrapper中的“模块”,它们调用Wrapper提供的函数,同时也向Wrapper注册回调函数。
在简单了解了NDIS的机制之后,不难得知,网络防火墙只需要将自己的函数挂钩(Hook)到ndis.sys中即可截获网络数据包。
NDIS-Hook技术有两种实现方案:1. 修改ndis.sys的Export Table。
在Win32下,可执行文件(EXE/DLL/SYS)都遵从PE格式。
所有提供接口的驱动都有Export Table,因此只要修改ndis.sys的Export Table,就可实现对关键函数的挂接。
在实现步骤中,首先需要得到ndis.sys的内存基址,再根据PE格式得到DOS头部结构(IMAGE_DOS_HEADER),进一步得到NT头部结构(IMAGE_NT_HEADER),最后从头部结构中查得Export Table的地址。
由于协议驱动程序(NDIS Protocol Driver)在系统启动时会调用NdisRegisterProtocol() 来向系统注册协议,因此这种方法关键在于修改ndis.sys所提供的NdisRegisterProtocol、NdisDeRegisterProtocol、NdisOpenAdapter、NdisCloseAdapter、NdisSend这几个函数的地址。
对于处于系统核心的ndis.sys而言,要修改它的内存区域,只有驱动程序才能做到,所以我们必须编写驱动程序来达到这个目的。
该方案的缺点是加载或卸载驱动后无法立即生效,必须重启系统。
且挂钩方法较为复杂。
早期凡使用NDIS-Hook的防火墙都采用这一方法,包括著名的费尔防火墙的早期版本(v2.1)。
直到2004年,上一名黑客公布了一种全新的NDIS-Hook技术(即下文即将提到的第2种方法),诸多防火墙产品才都悄悄对自己的核心技术进行了升级。
由于新的挂钩技术更好,故本文不打算详述修改Export Table这一方法的具体细节。
2. 向系统注册假协议(Bogus Protocol)。
NDIS提供了一个API: NdisRegisterProtocol(),这个API的职责是向系统注册一个协议(如TCPIP),并将该协议作为一个链表节点插入到“协议链表”的头部,最后返回该链表头节点(即新节点)的地址。
正常情况下,只有NDIS协议驱动程序(NDIS Protocol Driver)才会调用这个API。
既然如此,如果我们也调用NdisRegisterProtocol() 向系统注册一个新的协议,我们也就能轻易地得到“协议链表”的首地址,通过走访这个链表,就能修改其中的某些关键信息,比如关键函数的地址。
修改完毕后,再调用NdisDeRegisterProtocol() 注销掉新协议。
这看似一切都没发生,但事实上目的已经达到了。
这个新协议我们称之为假协议(Bogus Protocol)。