用WinPcap技术捕获数据包_安企神电脑终端安全管理监控软件
安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能对比
下载中心
购买咨询
客户列表
关于安企神

用WinPcap技术捕获数据包

更新时间:2022-07-15 16:33:02


本文简介:前言  随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。 1winpcap简介  WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上

用WinPcap技术捕获数据包

前言

  随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。

1winpcap简介

  WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap 为用户级的数据包提供了Windows 下的一个平台。WinPcap 是 BPF 模型和 Libpcap 函数库在 Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库 Packet.dll 和一个高层的独立于系统的函数库 Libpcap 组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对 NDIS 中函数的调用为 Win95、Win98、WinNT、和 Win2000 提供一类似于 UNIX 系统下 Berkeley Packet Filter 的捕获和发送原始数据包的能力。Packet.dll 是对这个 BPF 驱动程序进行访问的 API 接口,同时它有一套符合 Libpcap 接口(UNIX 下的捕获函数库)的函数库。WinPcap的结构图如图1。

  WinPcap 包括三个部分:较早个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。 第三个模块 Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。

  packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。 Wpcap.dll提供了更加友好、功能更加强大的函数调用。WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。

 

 

2、网络数据包捕获的原理

  以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。

以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层。

  网卡具有如下的几种工作模式:

1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。

2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。

3)直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。

4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。

网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。

3、在windows情况下捕获数据包的结构

 

 

               图2捕获数据包的结构图

Wndows下捕获数据包的结构如图2,其中NDIS及其特点是:

 NDIS(Network Driver Interface Specification) 是 Microsoft 和 3Com 公司联合制定的网络驱动规范,并提供了大量的操作函数。它为上层的协议驱动提供服务,屏蔽了下层各种网卡的差别。NDIS 向上支持多种网络协议,比如 TCP/IP、NWLink IPX/SPX、NETBEUI 等,向下支持不同厂家生产的多种网卡。NDIS 还支持多种工作模式,支持多处理器,提供一个完备的 NDIS 库(Library)。 但库中所提供的各个函数都是工作在核心模式下的,用户不宜直接操作,这就需要寻找另外的接口。NDIS驱动程序的结构如图3。

4、利用winpcap进行网络数据包的捕获和过滤的设计步骤

1)打开网卡,并设为混杂模式。

2)回调函数 Network Tap 在得到监听命令后,从网络设备驱动程序处收集数据包把监听到的数据包负责传送给过滤程序。

 

 

3)当 Packet filter 监听到有数据包到达时,NDIS 中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序。

4)然后由 Packet filter 过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序。

5)通过分组过滤器后,将数据未过滤掉的数据包提交给核心缓冲区。然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。监听程序可以直接从用户缓冲区中读取捕获的数据包。


5、主要源代码

  根据用 Windows 分组捕获库 WinPcap 提供功能首先要初始化两个结构体,一个是适配器的结构体 LpAdapter, 一个是存放接收到的数据包的结构体 RecvPacket。

使用 Packet.dll 动态连接库编写源代码:

#define MAX__LINK__NAME__LENGTH 64

适配器结构:

typedef struct__ADAPTER

{

HANDLE hFile;

TCHAR Symboliclink[MAX__LINK__NAME__LENGTH];

Int NumWrites;

} ADAPTER , *LPADAPTER;

说明:hFile 是一个指向该网络适配器 Handle 的指针,通过它可以对网络适配器进行操作。symboliclink 包含当前打开的网络适配器的名字。

数据包结构:

typedef struct _PACKET

{

HANDLE hEvent;

OVERLAPPED OverLapped;

PVOID Buffer;

UINT Length;

PVOID Next;

UINT ulBytesReceived;

BOOLEAN bloComplete; //控制接受包的开始和结束

数据包捕获实现的步骤的主要源代码:

1)要获得适配器列表。

#define Max__Num__Adapter 10 //获得适配器列表

char Adapterlist [Max__Num__Adapter[512]]

int i=0

char AdapterNames[512], *tempa,*templa;

ULONG AdapterLength=1024; } PACKET, *LPPACKET:

2)获得系统中网络适配器的名字。

PacketGetAdapterNames(AdapterNamea,&AdapterLength);

tempa=AdapterNamea;

templa=Adapternamea;

while ((*tempa!=’’)OO(*tempa-1!=’))

{

if (*tempa= =’’)

{

memcpy(AdapterList[i],temla,tempa-templa); //内存数据拷贝

templa=tempa+1;

i++

}

tempa++

}

3)从适配器列表中选择一个默认的 0 号适配器。

LPADAPTER lpAdapter

lpAdapter = PacketOpenAdapter (AdapterList[0]);

if (!lpAdapterOO(lpAdapter->hFile==INVALID__HANDLE__VALUE))

{

dwErrorCode=GetLastError();

return FALSE;

}

4)将所选择的适配器 lpAdapter 设置为混杂模式。

PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_PROMISCUOUS)

5)设置 BPF 内核中包过滤的过滤器的代参政。利用这个函数右以完成对于原始数据包的初始的过滤处理,如根据其中端口号、IP 地址等。

PacketSetBpf(LpAdapter AdapterObject,structbpf_program*fp)

6)设置缓冲池为512K字节。

PacketSetBuff(lpAdapter,512000);

7)分配一个数据包对象,并连接已分配的缓冲。

PacketInitPacket(lpPacket,(char*)bufferReceive,512000);

8)捕获多个数据包。从网卡 lpAdapter 接收数据包,并将数据包放入 lpPacket所指向的数据包结构体中,若接收成功返回 TRUE,否则返回 FALSE。

PacketReceivePacket(lpAdapter,lpPacket,TRUE);

9)通过触发回调函数,把捕获符合过滤器规则的数据包转发给网络协议分析模块进行分析处理。

10) 结束接收数据包,释放数据包对象。

if(lpPacket!=NULL

{

PacketFreePacket(lpPacket);

lpPacket=NULL;

}

11)关闭网卡设备,将网卡恢复到正常接收状态。

if(lpAdapter!=NULL

{

PacketCloseAdapter(lpAdapter);

lpAdapter=NULL;

}

6、结束语

  数据包捕获技术是网络管理系统的关键技术,已经按照标题4中的流程进行了简单的实现。如果在一个繁忙的网络上进行截获,而不设置任何过滤,那得到的数据包是非常多的,可能在一秒钟内得到上千的数据包。如果应用程序不进行必要的性能优化,那么将会大量的丢失数据包。对捕包性能的优化必不可少,考虑采用多线程来处理数据包。若在程序中建立一个公共的数据包缓冲池,这个缓冲池是一个LILO的队列。于是在程序中使用三个线程进行操作:一个线程只进行捕获操作,它将从驱动程序获得的数据包添加到数据包队列的头部;另一个线程只进行过滤操作,它检查新到的队尾的数据包,检查其是否满足过滤条件,如果不满足则将其删除出队列;较后一个线程进行数据包处理操作,象根据接收的数据包发送新数据包这样的工作都由它来进行。考虑尽可能少丢失数据包的条件,应该是进行捕获操作的线程的优先级较高,这样就可以得到更高的捕包性能。

 

立即下载试用

企业防泄密软件哪款好用?公司防泄密软件推荐使用

企业防泄密软件哪款好用?公司防泄密软件推荐使用

99% 的企业每年都有员工离职:员工离职带走核心图纸导致严重泄密...

85% 的安全威胁来自企业内部:公司重要文档图纸泄露造成严重损失...

80% 的企业每年都发生泄密事件:重要文档数据随意扩散造成诸多麻烦...

企业防泄密软件哪款好用?公司防泄密软件推荐使用

没有保护的数据资产,会被有意无意的任意流传扩散,价值也就无从谈起,因此,无论在内部办公还是对外交流过程中,文档的自身安全应该受到重视。如何保护重要文件不被泄密,用哪款防泄密软件?

公司防泄密软件推荐使用

为了保障企业的数据安全,选择一款高效、稳定的企业防泄密软件显得尤为重要。在众多防泄密软件中,安企神软件以其卓越的性能和全面的功能,成为了众多企业的首选。

安企神文件加密软件对用户而言是透明、无感知的。文件的保存加密、打开解密完全由后台驱动内核自动完成,整个过程无需人工干涉,也不影响员工原来的操作习惯和工作习惯,员工们甚至感觉不到加密软件的存在。

文件未经审批通过U盘拷贝、QQ、微信、电子邮件或其它任何方式流传出去,文件将自动损毁而无法打开。如果文件需要发给客户或公司外面的人,则需要经过管理人员的批准解密。

企业防泄密软件哪款好用?公司防泄密软件推荐使用

软件功能介绍

安企神软件采用了先进的加密技术,可以对企业数据进行高效的加密保护。无论是存储在本地电脑上的文件,还是通过网络传输的数据,安企神软件都能提供强大的加密支持,确保数据在传输和存储过程中的安全性。

软件还能审计和追踪文件的访问、修改和删除等操作,为管理员提供全面的数据安全保障。支持外发文件控制,有效防止敏感数据被非法复制和传播。详细功能如下:

1、加密数据

能够对单个文件或文件夹进行加密,确保只有经过授权的用户才能访问。

对敏感数据进行加密是一种常见的防泄密措施。通过加密,即使数据被窃取或丢失,也无法被未授权人员轻易解密和使用。

企业防泄密软件哪款好用?公司防泄密软件推荐使用

2、控制访问权限

可以控制员工在电脑上进行的操作,如禁止复制、删除、修改等。

限制对敏感数据的访问权限是另一种有效的防泄密措施。只有经过授权的人员才能访问敏感数据,从而减少数据泄漏的风险。

3、审计和监控

通过审计和监控工具,企业可以跟踪和记录对敏感数据的访问和使用情况,及时发现异常行为并进行处理。

4、数据备份和恢复

定期备份敏感数据并制定有效的恢复计划,可以确保在数据丢失或损坏时能够及时恢复,降低数据泄漏对企业的影响。

5、U盘外设管理

能够限制U盘等外部设备的接入,规范员工对外部设备的使用。

企业防泄密软件哪款好用?公司防泄密软件推荐使用

企业防泄密软件哪款好用?公司防泄密软件推荐使用

6、操作管控

可以记录员工的电脑操作行为,包括文件操作、应用程序使用等。

7、日志审计

能够对员工的电脑使用情况进行全面监控和记录,便于后期审查。

8、敏感内容识别

具备智能的敏感内容识别功能,能够自动检测和过滤敏感信息。

9、资产和运维管理

能够统一管理公司的电脑设备,进行资产管理、远程控制等操作。

企业防泄密软件哪款好用?公司防泄密软件推荐使用

软件优势

安企神数据防泄密软件是一款高效、稳定且功能全面的数据保护工具,其优势主要体现在以下几个方面:

1、全方位的数据保护: 具备强大的数据加密功能,能够对企业内部的各种数据类型进行全方位的保护。

2、灵活的权限控制: 软件支持根据员工的职务和权限设置不同的文件访问权限,确保每个员工只能获得必要的信息。

3、丰富的审计功能: 软件能够记录所有文件的访问历史,包括文件的打开、修改、删除等操作,以便企业进行监控和追溯。

4、易用性和灵活性: 软件支持移动设备的使用,员工可以在手机或平板电脑上随时随地查看和编辑文件,提高工作效率。

5、高效稳定的性能: 采用高效的数据处理技术和算法,确保系统运行流畅且不影响业务正常运行。

企业防泄密软件哪款好用?公司防泄密软件推荐使用

四、总结

综上所述,安企神数据防泄密软件以其全方位的数据保护、灵活的权限控制、丰富的审计功能、易用性和灵活性以及高效稳定的性能等优势,成为了企业保护数据安全的重要工具。如果您正在寻找一款可靠的防泄密软件来保护企业的数据安全,那么安企神软件将是您的理想选择。


本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。/cjwt/11768.html

~article_body_code~