局域网电子邮件监控系统的实现

作者:张晋,于磊 整理:Ping32电脑监控软件

在监听电子邮件时,设计有4种工作方式:监听SMTP和 POP3协议的E-mail;监听SMTP协议的E-mail;监听POP3协议的E-mail;监听所有网络流量。

2.1 系统的程序结构

按照先监听、捕获网络封包,再分析处理的流程工作。系统程序从下到上依次是winPcap驱动、Win32控制台程序、图形用户界面GUI,结构如图3所示。其中Win32控制台程序是系统程序的核心。

图3 系统程序结构

2.2 Win32控制台程序

Win32控制台包含五个部分,base64.exe程序是一个 BASE64编码/解码器;dev.exe是网络设备接口探测器,探测网络接口设备名称及说明;sn.exe是监听/捕获/过滤器 ;listip.exe列出捕获的封包中的 IP地址;pickmail.exe对sn.exe提取的封包进行分析,并按SMTP和PoP3分别进行输出。控制台程序的核心程序是sn.exe。此程序有两个功能,一个是监听并捕获指定的某网络接口设备的网络封包并转存为文件。第二个是从捕获的封包中提取某IP的所有封包并存储为文件。使用WinPcap开发包中的pcap.h头文件实现。主要使用的函数有pcap_open,pcap_compile,pcap_ sedilter,pcap_Next_ex ,pcap_dump。它是捕获网络封包的核心程序。

由于WinPcap驱动是工作在NDIS层,所以能保证捕获数据链路层的原始数据,包括以太头、IP头、TCP头以及其他协议的头信息。我们可以从中获得MAC地址、IP地址等信息,再根据这些信息做进一步的分析。

sn.exe以计算机上的某网络设备作为监听(捕获)的对象,可以对已经捕获的封包(即Dump文件) 进行过滤 (或者说是 “筛选”)。也就是我们可以从Dump文件中筛选出需要的信息。有一点需要说明的是虽然sn.exe可以设置过滤参数,但此时的过滤意味着 “筛选”,并非阻塞式的过滤。在WinPeap开发包中的pcap.h头文件中声明的pcap_open,pcap_next_ex和pcap_dmup函数实现有关打开网络设备接口、捕获封包和Dump到文件的功能。pcap_com_pile和pcap_sedilte函数实现过滤功能。

使用基于WinPcap的库函数可以捕获数据链路层的网络封包 。但是在将网络封包Dump时,Win-Pcap库函数在每个封包信息的前面加了自己的头信息。头信息包括三个内容,共16字节(每字节 8bit):捕获封包的时间戳、捕获的长度、封包的长度。

(1)时间戳

时间戳 占8字节,共64bit。前 四字节时间从1970年的1月1日0时整开始计算,(类似UNIX的计时系统)单位是秒。后四字节是更小的计时单位。

(2)捕获的长度

捕获的长度 占4字节 (共32bit)。在时间戳后,表示已捕获到的长度。已捕获的长度并不总是等于封包的原始长度,因为有一种可能性是在捕获完成之前就停止了捕获。

(3)封包的长度

封包的长度 占4字节 (共 32bit)。它表示封包的原始长度。

3 结束语

本系统是基于WinPcap 3.1 beta4开发的。主要功能是监控共享式以太网中的网络流量,从中提取电子邮件的原始信息并转存为文件。可以应用在小规模的共享式以太网中监控电子邮件,能够保证在监听网络时不会有漏包的情况发生。在中小企业、组织团体、个人等安全相关领域有一定的应用前景。

它目前的功能只是监听,不能阻塞网络流量。在此基础上可进一步完善其功能 ,如实现实时分析处理电子邮件数据封包、用户权限管理、根据捕获的信息识别客户机、网络其它类型封包处理等。