基于NDIS中间层的网络数据包拦截技术及实现
防火墙的数据包拦截方式小结

防火墙的数据包拦截方式小结网络防火墙都是基于数据包的拦截技术之上的。
在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更能准确地获知当前应用程序文件名,后者的接收数据包和少数发送数据包的场景仍然处于内核进程中。
一种基于NDIS中间层驱动的园区网流量控制方案

的控制功能最直接的方法就是编写一个 N I DS中间层驱动安装 到操作系统 中, 这个 中间层驱动程序需要受 到客户端应用程序的管理 , 并且接受中心服务器的统一调度 ; 另外 , 为了强制用户计算机安装该驱动 , 还需要
21 0 0年 3月
湖 南 师 范大 学 自然科 学 学 报
J un lo tr lS in e o n n No ma i est o r a fNau a ce c Hu a r l Un v ri f y
V0. 3 No 1 13 . M a ., 01 r 2 0
Байду номын сангаас
Tr f c Co to lt n f rCa a i n r l So u i o mp s Ne wo k b o u t r y NDI n e me it ie S I t r da e Dr r v
CHEN ix n,ZH Zh — i ANG iy n Zh - o g,S o HI Y u
园区网 ; 流量控制 ; DS 网络应用识别 N I;
T32I P0 . 文献 标 识 码 A 文章编号 10 -5 7 2 1 ) 132 - 0 023 (0 0 O 4 90 0 4
阐述 了整个流量控制系统的构成 , 并就核心的 网络应用识别 算法进行 了详细说 明.
关键词
中图 分 类 号
n n e Ac o d n o t e c a a t rsi so i su a c. c r i g t h h r c e it ft s is e,a ta i o to y tm s p e e td.Th o e n t r p l c h r f c c nr ls se i r s n e e c r ewo k a p i — c t n i e t c to lo i a i d n i a in ag rt o i f hm sd s rb d i eal s we la e wh l tu t r ft i y t m. i e c i e n d t i,a l st oe sr cu e o h ss se h
基于NDIS中间层的木马防护机制研究及实现

El e c t r o ni c Sc i .& Te c h . /M a y .1 5. 2 01 3
基于 N DI S 中 间 层 的 木 马 防 护 机 制 研 究 及 实 现
洪双喜 ,雷
摘 要
涛
4 5 0 0 1 1 )
随着社会信 息化 以及信息 网络化的迅速发展 , 网 络安 全 问题 1 3益 突 出且 越 来 越 复 杂 , 已经 成 为 亟 待解
决 的问题 , 并 引起 各 方 的关 注 。 目前 以木 马 病 毒 对 网 络 系统信 息进 行 的窃取 、 篡改 行 为最 为突 出 , 这对 网络 用户 的信 息 安全 构 成 了 巨大 威 胁 。与 此 同时 , 各 种 病 毒程 序 , 尤 其 是 木 马 程 序 通 过 计 算 机 网络 渗 透 到 P C 机中, 窃取秘密信息 , 给 信 息 系统 或个 人 带 来 严 重 威 胁 。比较 有 名 的 杀 毒 软 件 如 3 6 0 、 瑞 星 等 杀 毒 软 件 可 以对计算 机 起到 良好 的 保 护作 用 , 但 对 已经 潜 入 计 算
HONG S h u a n g x i ,L EI Ta o
( S c h o o l o f I n f o r m a t i o n E n g i n e e r i n g ,N o a h C h i n a U n i v e r s i t y o f Wa t e r C o n s e r v a n c y
t e c t i o n me c h a n i s m i n k e r n e l l e v e l b a s e d o n NDI S i n t e m e r d i a t e d iv r e r t e c h n i q u e o n t h e wi n d o ws p l a t f o m r i s p u t f o r wa r d .
一种基于NDIS驱动的防火墙实现方法

【 要】 摘 :文章分析 了 N I 内部结构和 中间驱动程 序的工作机制, D S的 讨论 了包过 滤防火墙的数据 包拦截技术 , 设计并 实现 了一 个基 于 N I 间驱 动 程 序 的 个 人 防 火 墙 。 D S中 【 关键宇 】 防火墙 ; : 拦截数据 包; D S N I
0 言 .引
‘
—
—
、
…
…
…
…
…
…
…
…
…
…
…
…
。
-
-
_
图 2具 体 通讯 的流 程
1 N I 间层 驱 动分 析 . D S中
如 图 2当 防 火 墙 没 有 打 开 时 , 动 是 个 完 全 的 P ST U 。 驱 A S HR
数 微 软 和 3 o 公 司 在 18 Cm 9 9年 制 定 了 一 套 开 发 WidW n O S下 行 为 . 据 流 经 驱 动 不 做 处 理 。 当 防火 墙 开 启 时 : A :防火 墙 通 过设 备 控 制 接 口把 事 件 参 考 信 息 发 送 到 驱 动 . 网 络 驱 动 程 序 的 标 准 。称 为 N I (N tokD vr nef e DS e r r e t a w i I rc S eicrn 。 D S为 网 络 驱 动 的 开发 提 供 了一 套 标 准 的接 口, 事 件 对 象传 递 给驱 动 程 序 。 pc a 0 ) N I i f l B驱 动 程 序 通 过 对 象 事 件 处 理 程 序 引 用 该 事 件 对 象并 设 为 : 使 得 网络 驱 动 程 序 的 跨 平 台 性 更 好 . D S处 在 链 路层 和协 议层 N I 非 受 信状 态 。 C防 火 墙 然 后 发 送 共 享 内存 的 地 址 消 息 . 出 取 共 享 内存 : 发 ( ) D S小端 口驱 动 ( np rd vr。这 也 就 是 我们 常说 1N I Miiot r e) i 的地 址 请 求 。驱 动 通 过 验 证 后 , 入 D步 骤 。 进 的网 卡 驱动 D然后 防火 墙 将 开启 一个 现 成 监 视 事 件 , : 如果 事 件 为受 信 . ( ) D S协议 驱 动 (rtcl r e) 例 如 T PP协 议 驱 2 N I Po o d vr。 o i CI 则 标 识 有 符 合 规 则 的 数 据包 拦 截 到 。将 通 过 共 享 内存 读 出数 据 动。 ()N I 中间 层 驱 动 ( t m da r e) 3 DS I e e i edi r。这 是 基 于 链 路 包 显 示 到 日志 中。 nr t v m h eie ma F e \ \ yasu ” _ D v =C t f ( \  ̄ Psd' . c el ”\ M L u 层和 I 之间的驱动。 P层 之 间 。N I 供 以下 几 个 层 次 的 接 口 : D S提 I l l
基于NDIS中间层的通信安全机制的设计与实现

Mirc mp t A p c f n V i 4 N . , 0 8 co o ue p H a o s o 2 , o 8 2 0 r i .
文 章 编 号 : 10 — 5 X 2 0 )- 0 6 0 0 7 7 7 (08 8 0 0 — 3
跨 平 台 性 更 好 。 所 有 的 传 输 层 驱 动 程 序 都 需 要 调 用 NDI S
研 究与 设计
微 型 电脑 应 用
20 0 8年第 2 4卷第 8期
基于 N I D S中间层 的通 信 安 全机 制 的设 计 与 实现
陈 小 爱 刘 海 涛
摘 要 :T PI 协 议 本 身安 全性 不是 很好 , 导 致 网络 通 信 存在 各种 安 全 问题 。另 一 方 面 ,越 来越 多 的企 业 开始 通 过 因特 网 C/ P
来越复杂,已经成为亟待解决的问题 ,引起各方越来越大 的 关注和投入 。 目前,主要的网络安全产品有:防火墙系统、
入 侵检 测 系统 ( S 、V N 等 等 ,这 些 网络 安 全 产 品 的 出发 I ) P D
N teM da y 0 av e iT p i
点都是假定 安全 威胁 来 自企业外部 网络 ,而非企业 内部 网 络 。然而根据美 国 F I统计,美国超过 8%的 网络安全事 B 3 故部跟 企业 内部员工有关, 内部网络使用者更加容易获得 企 业敏感或机密信息,从而导致企业有价值的信 息外泄 。 本 文针对企业网络安全的现状 , 出了通过在 Wid ws 提 no N S中间驱动层接 口插入 网络报文的处理模块 ,实现通 用 DI 的 网络 安全 通 信 平 台 。该 通 信平 台为 企 业 提 供 安 全 、可靠 及
内网安全监控系统中NDIS中间层驱动技术的实现

Ab ta t Th e e h iu ft e itre t n a d a ay i O aa p c a e sn t r sr c : e k y tc nq e o h n e cp i n n ls f d t a k g s u ig Newo k o s
Dr e n efc p ic t n i h oed ie v l fW id ws2 0 / i rI traeS cf a i nt ec r rv rl e o n o 0 0 XP/ O 3i e pan d Th v i o e 2 O x lie . e s
维普资讯
广 西 科 学 院学 报
J u n l fGu n x a e fS in e o r a a g i o Acd my o ce cs
2 0 , 2 4 :9 ~ 2 7 0 6 2 ( )2 3 9 V0 _ 2 No 4 No e e 0 6 l2 , . v mb r 2 0
f a i i t ft i tc n q e i p o e n a s mp e e sbl y o h s e h i u r v d i a l . i S
Ke r s:nt r dit rv r i t a t da a p c ge, y wo d i e me a e d ie ,n r ne , t a ka NDI S
摘要 : 阐述 在 Wid ws2 0 / P 2 0 n o 0 0 X / 0 3的核 心 驱 动 层 上 采 用 ND S Newok D ie Itr c pcfai ) I ( t r r r nef eS eict n 中 v a i o
NDIS中间层驱动包截获技术解析

NDIS中间层驱动包截获技术摘要:简要概括了NDIS的概念,阐述了NDIS的工作流程,详细说明了如何编写NDIS中间层驱动程序以获得网络封包的详细信息。
并且给出了一些代表性的示例代码,供读者参考。
一.NDIS驱动模型简介NDIS(Network Driver InterfaceSpecification)是网络驱动程序接口规范的简称。
它横跨传输层、网络层和数据链路层,定义了网卡或网卡驱动程序与上层协议驱动程序之间的通信接口规范,屏蔽了底层物理硬件的不同,使上层的协议驱动程序可以和底层任何型号的网卡通信。
NDIS为网络驱动程序创建了一个完整的开发环境,只需调用NDIS 函数,而不用考虑操作系统的内核以及与其他驱动程序的接口问题,从而使得网络驱动程序可以从与操作系统的复杂通讯中分离,极大地方便了网络驱动程序的编写。
另外,利用NDIS的封装特性,可以专注于一层驱动的设计,减少了设计的复杂性,同时易于扩展驱动程序栈。
防火墙的开发一般采用的是中间驱动程序。
通过NDIS中间层驱动,我们可以截获来自网卡的所有原始数据包。
图1则是NDIS中间层驱动的工作过程图图1NDIS中间层驱动程序是工作在MINIPROT和PROTOCOL接口之间的,驱动程序必须向下导出一个PROTOCOL接口,向上导出一个MINIPORT接口。
将自己创建的驱动程序插入到网卡驱动程序与传输驱动程序之间。
如此一来,当下层的网卡驱动程序接收到数据后会通过MINIPORT接口发送到我们导出的PROTOCOL接口上,NDIS中间层驱动程序便接收到了来自网卡的数据并调用我们准备好的回调函数处理数据包信息。
接着NDIS中间层驱动在处理数据包完毕后再继续把数据通过导出的MINIPROT接口向PROTOCOL接口发送。
这样就完成了一个截获数据包的过程。
二.NDIS中间层驱动的工作流程在开始学习NDIS中间层驱动之前,我们有必要了解下NDIS是怎样工作的。
当然这就包括了它的接收数据包的流程了。
基于NDIS中间层驱动的对等网络流量监管机制

( S c h o o l o f C o mp u t e r a n d I n f o r ma t i o n T e c h n o l o g y , B e i j i n g J i a o t o n g Un i v e r s i t y , B e i j i n g 1 0 0 0 4 4 , C h i n a )
Ab s t r a c t : Wi t h t h e d e v e l o p me n t o f t h e P 2 P t e c h n o l o g y,t h e P 2 P a p p l i c a t i o n o c c u p i e s l o t s o f n e t — wo r k b a n d wi d t h r e s o u r c e s .I d e n t i f i c a t i o n a n d c o n t r o l o f P 2 P t r a f f i c i s a h o t t o p i c n o wa d a y s . B a s e d o n t h e a n a l y s i s o f f o u r r e l a t e d t e c h n o l o g i e s ,a NDI S i n t e r me d i a t e d r i v e r b a s e d s u p e r v i s i o n s y s t e m i s p r o p o ed s ,a n d t h e e n t i t y c h a r a c t e r i s t i c s a r e i n t r o d u c e d i n d e t a i l .Th e s y s t e m i s r e a l i z e d b y u s i n g DDK P a s s t h r u r o u t i n e ,a n d t h e s h a r e d me mo r y c o mm u n i c a t i o n me c h a n i s m ,p a c k e t i n — t e r c e p t i o n me c h a n i s m a n d ma i n d a t a s t r u c t u r e a r e a l s o d i s c u s s e d .F i n a l l y,t h e e x p e r i me n t a l r e s u l t s o f t h r e e c o r l 2 r / l o n u s e d P 2 P a p p l i c a t i o n s s h o w t h e v a l i d i t y a n d u s a b i l i t y o f t h e s y s t e m.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,ңќ摘要:ھz½)Tit4om›ß®가Їfiݖ¾zم,가½®가zم¾ªԤf,Ґª) NQt³¶¾fiЇbpԤ) Tit4om› ²000/×g ß¾Ї¾fiაԤb关键词:NQt³¶¾;Їݖ;fiЇN¤twork data pa×k¤ts int¤rפption t¤×hnology and impl¤m¤nt bas¤d on NDISint¤rm¤diat¤lay¤rPtt ¢it,lAO Bit(tt›titrt¤ ot T¤·htotogy at4 lomgrt¤ı ³·i¤t·¤,Gri ›hor Ttiv¤ı›ity,Gri yatg ³³00²³,P.R.lhita)Abstract:Thi› gag¤ıataty›i› th¤ may ot th¤mit4om› gtattoım rt4¤ıvaıi o r› ga·L¤t titt¤ı4to·Litg..A4ogtiot itt¤ı·¤gtitg m¤tho4 ot th¤t¤tmoıL 4ata ga·Lag¤4a›¤4 ot th¤NQt³itt¤ım¤4iat¤ t¤v¤t. Th¤t thi›ga g¤ı4i›·r››¤› th¤Q¤›igt at4 imgt¤m¤ttatiiot ot a gtattoım t¤tm oıL 4ata ga·Lag¤ot itt¤ı·¤gtiot at4 gıo·¤››itg. ot Tit4om› ²000/×g rt4¤ı.Key words:NQt³itt¤ım¤4iat¤4ıiv¤ı;ga·L¤t titt¤ıitg;t¤tmoıL4ata ga·L¤t›1 随着计算机网络技术的快速发展和 Internet/Intranet 技术日益深入的应用,以及许多新的网络服务的出现,计算机网络与人类的生产、生活、科学技术与文化事业密不可分,使得人们的工作和生活发生了巨大的变化;与此同时也给人们带来了一个十分严峻的问题——网络安全。
一旦网络安全问题发生,通常会引起严重的后果。
为了增强网络的安全性,人们通常在Internet 与局域网之间引入防火墙。
由于 Windows 2000/ X P 是目前广泛应用的操作系统,使得在 Windows 2000/ X P 下保障网络安全通信成为一个迫切需要解决的问题。
基于W indows 平台下的网络安全产品基本上是基于W indows 操作系统下网络封包的拦截技术的实现。
在网络封包拦截的基础上,可以实现数据包的过滤与处理。
数据包过滤[1] 是指在网络层对数据包实施有选择的通过 , 依据系统事先设定好的过滤逻辑, 检查数据流中的每个数据包 , 根据数据包源地址、目的地址 , 所使用的端口号,协议状态等对数据进行过滤。
本文采取在 NDIS 中间层拦截和过滤数据包,因为在此层,无论是网卡接收并上传的数据封包,还是上层要下送至网卡发送的数据封包,无一例外地要经过这里。
所以,它能够截获所有的网络数据包。
在此基础上 , 可以根据帧头和报头分析协议类型,进而可以拒绝截获到任意类型的网络数据包。
²Windows#‰ٿ¢½$拦截W i n d o w s 下的网络封包可以在多个层面进行,在不同层面所拦截的网络封包结构各不相同。
总的来说可以在两个层面进行:用户态(u s e r-m o d e)和内核态(kernel -mode)。
2.1 用户态下(user -mode) 的网络数据包拦截在用户态下,通常有以下几种方法拦截数据:(1)Winsock Layered Service Provider(LSP);(2)Windows 2000 包过滤接口(3) 替换系统自带的 Winsock 动态连接库2.1.1 Winsock Layered Service Provider( 也称之windows socket 2 SPI)Windows Socket 2 是一个接口,它可以用于发现和使用任意数量的底层传输协议所提供的通信能力。
Winsock 2 不仅提供了一个供应用程序访问网络服务的Windows Socket 应用程序编程接口(A P I),还包含了由传输服务提供者和名字解析服务提供者实现的Winsock 服务提供者接口 (SPI) 和ws2_32.dll。
Winsock 2 SPI(service provider interface) 服务提供者接口建立在 Windows 开放系统架构(windows open system architecture,WOSA) 之上,是Winsock 系统组件提供的面向系统底层的编程接口。
利用这项技术可以截获所有的基于Socket 的网络通信。
其优点包括:(1) 工作在应用层,以D L L 的形式存在,编程、调试方便;(2) 兼容性好,适合各种 Windows 平ªþ:¾¿¾þ(²00³tB0KK4³‘)¾$.$封包尚未按照低层协议进行切片,所以比较完整,很容易做内容过滤。
缺点包括:(1) 无法过滤通过 T D I 层的数据报,不用 Socket 的网络通信无法拦截;(2) 如果同时安装几个使用 SPI 技术的软件,对安装顺序要求严格。
2.1.2 Windows 2000 包过滤接口Windows 2000 包过滤接口提供了一种机制,这种机制允许用户态程序或者服务指定一系列的过滤原则,这些过滤原则会被低层的TCP/IP 用来实现过滤包。
这种过滤工作主要是对 I P 原地址、目标地址、端口号(或者端口号范围)进行pass 或者 drop 操作。
此种方式是通过对iphelpapi.dll 函数的调用来实现的。
其优点包括:(1) 由于是对系统函数的调用,兼容性好;(2) 编写方便,系统资源占用极少。
缺点包括:(1) 功能实现受限于系统;(2) 无法过滤 ICMP 报文。
2.1.3 替换系统自带的Winsock 动态连接库此种方法就是编写一个动态连接库替换系统自身的Winsock.dll 或者Winsoc k32.dll,当应用程序需调用动态库时,将首先调用替换后的动态库,这样,就实现了对数据包的过滤。
随着W indows 系统结构的变化,有些方面得到了加强,例如系统文件保护,使得这种技术变得不太可行[2]。
其缺点包括:(1) 要替换w i n s o c k32.d l l 里的每一个函数,工作量大;(2) 由于动态库是公用的,容易引起兼容性问题;(3)Winsock DLL 里面经常有一些未公开的内部使用的函数,替换困难;(4) 随着W i n d o w s 系统结构的变化,此种技术的可行性日益降低。
2.2 内核态(kernel -mode) 下网络数据包拦截技术内核态下的数据包拦截都是基于N D I S 技术。
N D I S 是网络接口规范,横跨传输层、网络层和数据链路层,所有的网络通信最终必须通过NDIS 完成。
Windows 使用NDIS 函数库实现 NDIS 接口。
内核态下能够拦截到比较底层的数据包,但是实现方法比较复杂,需要编写特定的驱动程序,同时对程序的性能,稳定性等要求比较高[3]。
主要有以下几种方法:(1)TDI 过滤驱动程序 (TDI filter driver);(2)NDIS 中间层驱动程序 (NDIS intermediate driver);(3)Windows 2000 Filter-Hook Driver;(4)NDIS Hook Driver2.2.1 TDI 过滤驱动程序 (TDI filter driver)TDI Filter Driver 属于 Upper Drive r,位于t c p i p.s y s 之上,是一个直接在核心 T C P I P 驱动上面的一层过滤驱动。
协议驱动提供了一套系统预定义的标准接口来和应用程序之间进行交互。
在W i n d o w s 2000 /N T 下 I P、T C P、U D P 是在一个驱动程序里实现的 , 叫做t c p.s y s。
这个驱动程序创建了几个设备:2.2.2 NDIS 中间层驱动程序 (NDIS intermediate driver)N D I S 中间层驱动介于协议层驱动和小端口驱动之间,I M D 对上面的协议层表现为一个虚拟的微端口网卡结构,而对于下面的网卡则表现为一个协议层的结构。
无论是网卡接收并上传的数据封包,还是上层要下送至网卡发送的数据封包,无一例外地要经过 NDIS 中间层。
所以,它能够截获所有的网络数据包 ( 如果是以太网那就是以太帧 )。
其优点包括:驱动级别上做过滤,无须组包,速度快,效率较高;可以截获所有的数据包,功能强大。
其缺点包括:编程接口复杂;开发周期长,调测工作量大,测试困难;操作系统版本关系密切,与硬件联系大,可移植性低;IMD DRIVER 安装极为复杂,难于自动化安装。
2.2.3Windows 2000 Filter-Hook Driver从 Windows 2000 开始,I p F ilterDriver 是系统自带的一个驱动,该驱动程序主要是利用i p f iltdrv.sys 所提供的功能来拦截网络数据包。