恶意软件采样系统的设计和实现

余年寄山水
597次浏览
2020年07月30日 14:51
最佳经验
本文由作者推荐

鄱阳县扬帆中学-商务谈判案例分析


华中科技大学
硕士学位论文
恶意软件采样系统的设计和实现
姓名:郭菊 先
申请学位级别:硕士
专业:软件工程
指导教师:陆永忠
20060420< /p>


华中科技大学硕士学位论文
摘要
由于互联网络的发展,网络己经成为社会 和经济发展强大动力,其地位越来越
重要。伴随着网络的发展,也产生了各种各样的问题,其中安全问题 尤为突出。如
今,不同类型的恶意代码很快出现在全世界。这些代码可以破坏用户的电脑,甚至
窃取机密资料。为了在互联网上打击这些恶意代码。人们必须首先及时得到这些样
品。一旦收集到这些样 品,然后才能决定需要哪些适当的对策,以阻止威胁。恶
意代码采样系统能正确及时的完成上述任务。既 然需要在恶意代码侵入局域网以前
收集到它们,那么最好的方法就是记录下网关上的数据报,并将数据报 按会话进行
流重组,将它们重组成数据样本。
在了解了TCWIP协议族原理后,又探讨了研制 基于应用层的网络监控系统的
技术、方法及算法。先探讨了采集网络数据的方法。然后重点讨论了网络层 数据报
的流重组和应用层的还原的技术。
进一步的开发中,实现了一个动态的数据报检测模块, 将源目地址和源目端口
号保存在一张连接表中。并在连接状态表中增加了连接序号,应答号,窗口大小等
表项,不但检测包是否属于合法连接,判断其TCP状态转换是否正确,而且还对包
进行序号检 查,判断包在这条连接上的合法性,即保证收到的包不是伪造的包。此
外,提出了数据包五元组的哈希算 法,能够准确及时的找到数据报在连接表中的位
置,使系统能够正确的跟踪一次会话的全过程并记录下所 交互的文件.
针对SMTP、POP3、HTTP、FTP等应用层协议,设计了重组并行算法的体系< br>结构、算法思想,以及实现环境。最后,对该系统进行了系统的测试,并将测试结
果一一列举。< br>关键词:TCP会话TCP流重组应用层协议重组TCP/IP协议解析


华中科技 大学硕士学位论文
Abstract
Asresultofthe
developme nt
ofthe
Iuternet,network
hasbeen
aapowerfulengine
ofsocialandeconomic
develop ment,an
increasingly
importantposition.Accom panied

by
the
development
of
t he
network,it
has
also
produced
inc luding
security
problems
are
wide
v ariety
of
problems.
particularly
prono unced.Nowadays,differenttypes
of
maliciouscodes
user’s
are
emergingquickly
aro undthe
world.Thesecodes
maydamage
the
computer
or
even
worse,steal
confident ial
data.To
help
combatthese
malicious

codeswithin
the
Intemet,people
f irstneed
get
their
samples
in
timel y
manner.Once
is
these
samples
are< br>collected,then
they
can
decidewhich
appropriate
countermeasure
neededin
orde r
to
blockthe
threat.The
can
Malici ous
SoRware
Sample
Collection
Systemcorreet
and
timelycompletion
of
the< br>task.Since
people
need
to
gather
up
these
malicious
record
the
code s
before
they
seep
into
the
Intr anet
fromthe
Interact,the
best
solutio n
is
to
incoming
packets
in
the< br>gateway
and
assemblethese
packets
i nto
binaries.
and
explore
the
TCP/I P
protocol
communities
in
understandin g
the
principles
development
of
net work-based
application
layer
control
s ystem
technology,methods
algorithms
to
exploreways
of
collecting
data
networ k.Then
system
focused
on
and
datareported
to
the
network
layer
and
application

layer
flowof
the
original
technology.And
windowsize
linkin g
statetable
connecting
serialnumbers
increased,the
response
ofthat
ofthe
ta ble,notonly
thedetectionkitis
is
to
le gitimate
link,the
TCP
statejudge
conve rsion
this
colTeCt,but
also
kits
to
check
forthe
serial
not
number,jud ging
packets
in
packets
connection
the
legality
ofthat
guarantee
is
In
received

forged
packets.
findacc urate
addition,a
group
offive
yuanpack et
convey
algorithm
to
and
timelydata
on
In
the
locationof
the
table
in
connecting
to
the
systemtocorrect
the
whole
process
oftracki ng
and
recording
ofa
conversation
w iththeworld.
SMTP、POP3、HTTP、FrP
and
other
applicationlayer
agreement,the
algorithm
design
arcMtectore,algorithmsthinking,andreorganization
of
parallel
realizing
the
envifonment.Finally,testing
ofthe
sy stem
and
enumerating
the
test
resul ts.
Key
words:TCPConnectionTCPFlows
Reass embling
inApplication
Layer
TCP/IPData
Parsing
Protocol
Reassembling
II

< br>。K'101750s
独创性声明
本人声明所呈交的学位论文是我个人在导师指导下进行 的研究工作及取得的
研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,
均己在文中以明确方 式标明。本人完全意识到本声明的法律结果由本人承担。
学位论文作者签名.末
移黟
日 期:加/年加月功7

学位论文版权使用授权书
本学位论文作者完全了解学校有关保留 、使用学位论文的规定,即:学校有
权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和
借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据
库进 行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
保密口,
本论文属于< br>不保密囱。
(请在以上方框内打“4”)
在——年解密后适用本授权书。
学位论 文作者签名:
指导教师签名;够习:L近
日期:夕∞犀,口月≯珀
日期:z。D厂年/ o月谚日


华中科技大学硕士学位论文
1绪论
1.1课题背景
计 算机网络尤其是Intemet应用的飞速发展,对人们传统的生活、工作、学习
方式及社会很多行业都 产生了深远的影响。但当我们从网络中方便快速地获取信息
的同时,也面临着个人隐私、企业的技术机密 或者商业机密和政府行政机关的国家
机密通过网络向外泄漏的安全问题。随着网络信息安全事件的频繁发 生,网络信息
安全已经成为人们关注的焦点问题。当前很多企业及科研机构都在从事这方面的工
作和研究,形成的产品类型主要有防病毒软件、防火墙和入侵检测系统。
防病毒软件是用于检测和清除计 算机病毒的重要信息安全产品,一般利用模式
匹配技术,配合定期更新的病毒特征库来检测和清除计算机 内的病毒。防火墙是实
现网络信息安全最主要的技术之一,其主要思想就是在内外部网络之间建立起一定
的隔离,控制对受保护网络的访问。实现防火墙的主要技术有数据包过滤、代理服
务和状态检测 。总体上来说防火墙是一种被动的防护,不经过防火墙的信息流无法
受防火墙的保护,即使经过防火墙的 信息流也未必完全受防火墙的保护,特别是它
不能防止数据驱动的攻击(如病毒等)。另外,底层协议的 防火墙也不能保证上层协
议的攻击。入侵检测系统是另一种实现网络信息安全的主要产品,它能在入侵攻 击
对系统产生危害之前,监测到入侵攻击,并利用报警与防护系统驱逐入侵攻击。在
入侵攻击过 程当中,能减少攻击所造成的损失。在被入侵攻击后,可以收集入侵攻
击相关信息,作为防范系统的知识 ,添加到知识库内,增强系统的防范能力,避免
系统再次受到同种类型的入侵。入侵检测系统被认为是防 火墙之后的第二道安全闸
门,在不影响网络性能的情况下对网络进行监听,从而提供了对内部攻击和外部 攻
击的保护。
虽然现在大部分的网络己经安装了以上三类产品中的一种或几种,但每当操作系统的~个漏洞被披露或者是一种新的网络攻击技术出现时,就会发生大量威胁网
络安全的事件。据 美国财经杂志统计资料表明,30%的入侵发生在有防火墙的情况
下,20%的入侵发生在有入侵检测系 统的情况下.防病毒软件、防火墙和入侵检测
系统并不能完全保证网络的安全,尤其是在网络泄密的防范 和取证上发挥不了多大


华中科技大学硕士学位论文
的作用。近几年来人们渐渐认 识到了网络信息监控系统的重要性,它作为防火墙和
入侵系统的一个必要补充,通过对网络报文的内容进 行扫描来发现网络流量中的敏
感信息,可以为网络泄密事件提供侦查的线索和证据;同时网络信息审计系 统能记
录网络流量相关内容,为发现新的入侵手段提供素材‘¨。
1.2课题的目的和意义当前计算机系统的性能得到飞快的提高,同时网络的带宽也得到显著改善,信
息在网络传输的速度极 快,可以在很短的时间传输大量的信息。内部人员可以通过
互联网将敏感信息向外部快速传输。窃密者不 仅可以通过内部网络与外部网络的连
接点与外界连接,还可以使用调制解调器通过电话拨号直接上网连接 。即使内部人
员主观上并没有泄露信息的意图,但在内部网络与外部工。Intemet网的无意连接过
程中,客观上给外部人员窃取机密信息提供了可能。为了绝对保障内部网络中一些
绝密信息的安 全,目前航天系统的一些部门采用禁止实验室内的电话与外部联系的
方式来硬性断开内部域网与互联网的 连接。但是,这种方法妨碍了网络的运行,限
制了网络的功能,也使广大科研人员无法享受Intern et技术所带来的巨大便利[2113]。
因此,迫切需要开发相应的软件产品以既保证网络内部敏感信 息的安全,又充
分保障内部网络的畅通,不影响充分利用网络的开放性和灵活性。网络安全监控系
统作为信息化建设的安全保障,不论是重要的国家机关还是企事业单位的核心技术
部门对其应用的呼声 都很高,特别是航天、军工、政府机关等重要的国家机密部门,
以及银行、证券、高新技术企业等信息敏 感型企事业单位,往往拥有大量的机密信
息,一旦泄漏就会造成巨大的经济损失和负面影响,甚至对国家 安全和社会稳定构
成威胁。以上这些都迫切要求能够在实现信息化的同时,提供高效的完备的可靠的信息化安全保证,而本系统的提出正符合了当前这一迫切的需要【2】。
1.3课题研究的内容和结 构
以实现在大规模网络入侵下有效实现应用层协议重组和检测为目标,从解决传
统入侵检测系统 的不足之处出发,将并行计算的理论应用于应用层协议重组中,在
IP分片重组、TCP流重组以及重组 后应用层协议的检测等数据相关性分析、并行任
务划分等方面展开理论及其应用的研究工作,取得了创新 性研究成果.具体研究内


华中科技大学硕士学位论文
容如下:
(1)介绍选题背景、课题的目的和意义以及主要完成的论文的结构组织。
(2)系统整体架构的设计 和数据库的设计。
(3)系统的具体实现。着重讲述了网络数据报的抓取、分析和数据报的流重
组,并提出了相应的数据结构和算法思想。对于应用层协议重组,讲述了其算法和
模型的具体实现细节。 最后给出了系统的测试及其测试结果。
归纳总结全文,并对相关技术研究进行了展望。

< br>华中科技大学硕士学位论文
2相关技术分析
2.1
TCP/IP协议
T CP/IP协议的开发研制人员将Interact分为五个层次,以便于理解,它也称为
互联网分层模 型或互联网分层参考模型,也称为Internet五层模型。如图2.1;
应用层
传输层网络层
网络接口层
物理层
图2.1
Intemet五层模型
(1 )物理层:对应于网络的基本硬件,这也是Interact物理构成,即我们可以
看得见的硬件设备, 如PC机、互连网服务器、网络设备等,必须对这些硬件设备
的电气特性作一个规范,使这些设备都能够 互相连接并兼容使用。
(2)网络接口层:它定义了将数据组成正确帧的规程和在网络中传输帧的规程,帧是指一串数据,它是数据在网络中传输的单位。
(3)网络层:本层定义了互联网中传输的“ 信息包”格式,以及从一个用户
通过一个或多个路由器到最终目标的“信息包”转发机制。
(4 )传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连
接。
(5)应用层: 它定义了应用程序使用互联网的规程141。
2.1.1
IP协议
Intemet上使 用的一个关键的底层协议是网际协议,通常称IP协议。利用一个
共同遵守的通信协议,从而使Inte met成为一个允许连接不同类型的计算机和不同
操作系统的网络。要使两台计算机彼此之间进行通信, 必须使两台计算机使用同一
种语言.通信协议正像两台计算机交换信息所使用的共同语言,它规定了通信 双方


华中科技大学硕士学位论文
在通信中所应共同遵守的约定。计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节。例如,每
台计算机发送的信息格 式和含义,在什么情况下应发送规定的特殊信息,以及接收
方的计算机应做出哪些应答等等。
网 际协议IP协议提供了能适应各种各样网络硬件的灵活性,对底层网络硬件
几乎没有任何要求,任何一个 网络只要可以从一个地点向另一个地点传送二进制数
据,就可以使用口协议加入Intemet了。如果希望能在Intemet上进行交流和通信,则每台连上Internet的计算机都必须
遵守 m协议。为此使用Internet的每台计算机都必须运行IP软件,以便时刻准备
发送或接收信息。
IP数据报的格式如图2.2所示。普通的IP首部长为20个字节,除非含有选项
字段。32位
4位舨本
4位首部长度
16位标识
啦服务类型
(TOS)
16位总长度(字节数)
3位标志13位片偏移
20
8位生存时问(rrL)
8位协议
32位源IP地址
32位目的IP地址
16位首部检验和


选项(如果有)
数据
图2.2IP协议头信息
分析图2.2中的首 部。最高位在左边,记为0bit;最低位在右边,记为31bit。
4个字节的32bit值以下面的 次序传输:首先是0~7bit,其次8~15bit,然后
16~23bit,最后是24~31bi t。这种传输次序称作bigendian字节序。由于TCP/IP
首部中所有的二进制整数在网络中 传输时都要求以这种次序,因此它又称作网络字
节序。以其他形式存储二进制整数的机器,如littl eendian格式,则必须在传输数据
之前把首部转换成网络字节序。
1)版本号
目 前的协议版本号是4,因此p有时也称作IPv4。
2)首部长度
指的是首部占32bit字的 数目,包括任何选项。由于它是一个4比特字段,因


华中科技大学硕士学位论文
此首部最长为60个字节。普通m数据报(没有任何选择项)字段的值是5。
3)服务类型(1DS)字 段
包括一个3bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1bit未
用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最
小费用。4bi t中只能置其中lbit。如果所有4bit均为0,那么就意味着是一般服务。
RFCl340[Re ynoldsandPostell992]描述了所有的标准应用如何设置这些服务类型。
RFCl3 49[Almquistl992]对该RFC进行了修正,更为详细地描述了TOS的特性。
4)总长 度字段
是指整个I
P数据报的长度,以字节为单位。利用首部长度字段和总长度字段,
就可以知道I
P数据报中数据内容的起始位置和长度。由于该字段长l6比特,所
以IP数据报 最长可达65535字节。当数据报被分片时,该字段的值也随着变化。
尽管可以传送一个长达6553 5字节的IP数据报,但是大多数的链路层都会对
它进行分片。而且,主机也要求不能接收超过576字 节的数据报。由于TCP把用户
数据分成若干片,因此一般来说这个限制不会影响TCP。大量使用UD P的应用(RIP,
TFTP,BOOTP,DNS以及SNMP),它们都限制用户数据报长度为51 2字节,小于
576字节。但是,事实上现在大多数的实现(特别是那些支持网络文件系统NFS的实现)允许超过8192字节的IP数据报。
总长度字段是I
P首部中必要的内容,因为一 些数据链路(如以太网)需要填
充一些数据以达到最小长度。尽管以太网的最小帧长为46字节,但是m 数据可能
会更短。如果没有总长度字段,那么m层就不知道46字节中有多少是m数据报的
内容 。
5)标识字段
唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加l。< br>RFC791[Postel1981a】认为标识字段应该由让p发送数据报的上层来选择。假设有两个连续的p数据报,其中一个是由TCP生成的,而另一个是由UDP生成的,那
么它们可能具有 相同的标识字段。尽管这也可以照常工作(由重组算法来处理),
但是在大多数从伯克利派生出来的系统 中,每发送一个球数据报,IP层都要把一
个内核变量的值加l,不管交给口的数据来自哪一层。内核变 量的初始值根据系统
引导时的时间来设置。
6)rrL(time-to-live)生存时间 字段


华中科技大学硕士学位论文
设置了数据报可以经过的最多路由器 数.它指定了数据报的生存时间。rrL的
初始值由源主机设置(通常为32或64),一旦经过一个处 理它的路由器,它的值就
减去l。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主 机。
7)首部检验和字段
是根据Ⅲ首部计算的检验和码。它不对首部后面的数据进行计算。IC MP、
IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。
为 了计算一份数据报的口检验和,首先把检验和字段置为0。然后,对首部中
每个16bit进行二进制反 码求和(整个首部看成是由一串16
bit的字组成),结果存
在检验和字段中。当收到一份I
P数据报后,同样对首部中每个16
bit进行二进制
反码的求和。由于接收方在计算 过程中包含了发送方存在首部中的检验和,因此,
如果首部在传输过程中没有发生任何差错,那么接收方 计算的结果应该为全l。如
果结果不是全1(即检验和错误),那么I
P就丢弃收到的数据报。 但是不生成差错
报文,由上层去发现丢失的数据报并进行重传。
ICMP、IGMP、UDP和 TCP都采用相同的检验和算法,尽管TCP和UDP除了
本身的首部和数据外,在I
P首部中 还包含不同的字段。在RFCl071[Braderl,Borman
and
Patridg e
1988]@有关于如何计算Intcrne=t检验和的实现技术。由于路由器经常只
修改 TTL字段(减1),因此当路由器转发一份报文时可以增加它的检验和,而不
需要对IP整个首部进行 重新计算。RFCll41[Mallory
andKullber91990】为此给出了
一 个很有效的方法。但是,标准的BSD实现在转发数据报时并不是采用这种增加
的办法。
8)源 P地址和目的m地址
每一份口数据报都包含源m地址和目的IP地址,它们都是32bit的值。
9)任选项字段
数据报中的一个可变长的可选信息。目前,这些任选项定义如下:
(1)安全 和处理限制(用于军事领域);
(2)记录路径(让每个路由器都记下它的I
P地址,):(3)时间戳(让每个路由器都记下它的I
P地址和时间,);
(4)宽松的源站选路(为 数据报指定一系列必须经过的I
P地址,);
(5)严格的源站选路(与宽松的源站选路类似, 但是要求只能经过指定的这些


华中科技大学硕士学位论文
不能经过其他的地址)。这些选项很少被使用,并非所有的主机和路由器都支持这
些选项。选项字段一直 都是以32
bit作为界限,在必要的时候插入值为0的填充
字节。这样就保证I
P首 部始终是32
bit的整数倍(这是首部长度字段所要求的)
【5.8】。
2.1.2
TCP协议
传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在Internet暂时出现堵塞的情
况下,T CP也能够保证通信的可靠。
众所周知,Internet是一个庞大的国际性网络,网路上的拥挤和空 闲时间总是交
替不定的,加上传送的距离也远近不同,所以传输数据所用时间也会变化不定。TCP协议具有自动调整“超时值”的功能,能很好地适应Internet上各种各样的变化,
确保传输 数值的正确。
因此,从上面我们可以了解到:IP协议只保证计算机能发送和接收分组数据,
而 TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务【51。
TCP数据被封装在一个 IP数据报中如图2.2。

IP首部
图2.3

TCP首部

TCP数据

TCP数据在IP数据报中的封装
TCP首部的数据格式。 如果不计任选字段,它通常是20个字节。具体各个字
段如图2.4:
假设有TCP的头信息是 :0428
oooo020405B4010104
00153ADF0553
000 00000700240009A8D
02,下面结合该例子讲述各个字段含义。
常说FTP占 2l端口、娜占80端口、TELNET占23端口等,这里指的端
口就是TCP或UDP的端口,端口 就像通道两端的门一样,当两机进行通讯时门必

(1)端口号


华中科 技大学硕士学位论文
须是打开的。源端口和目的端口各占16位,2的16次方等于65536,这就是 每台
电脑与其它电脑联系所能开的“门”。一般作为服务一方每项服务的端口号是固定
的。本例 目的端口号为0015,换算成十进制为21,这正是FTP的默认端口,需要
指出的是这是FTP的控 制端口,数据传送时用另一端口,第三组的分析能看到这一
点。客户端与服务器联系时随机开一个大于1 024的端口,本例为04
28,换算成十
进制为1064。电脑中了木马也会开一个服务端口 。观察端口非常重要,不但能看出
本机提供的正常服务,还能看出不正常的连接。W'mdows察看端 口的命令时netstat。
(2)32位序号
也称为顺序号(SequenceNumber ),简写为SEQ,从三次握手的分析可以看出,
当一方要与另一方联系时就发送一个初始序号给对方, 意思是:“让我们建立联系
hE?”,服务方收到后要发个独立的序号给发送方,意思是“消息收到,数 据流将
以这个数开始。”由此可看出,TCP连接完全是双向的,即双方的数据流可同时传
输。 在传输过程中双方数据是独立的,因此每个TCP连接必须有两个顺序号分别对
应不同方向的数据流。< br>(3)32位确认序号
也称为应答号(Acknowledgment
Number), 简写为ACK。在握手阶段,确认
序号将发送方的序号加l作为回答,在数据传输阶段,确认序号将发送 方的序号加
发送的数据大小作为回答,表示确实收到这些数据。在第三组的分析中将看到这一
过 程。
(4)4位首部长度
这个字段占4位,它的单位时32位(4个字节)。假如值为7,TC P的头长度
为28字节,等于正常的长度20字节加上可选项8个字节.TCP的头长度最长可为
60字节(二进制1111换算为十迸制为15,15'4字节=60字节)。
(5)6个标志位(6)URG紧急指针,告诉接收TCP模块紧要指针域指着紧要数据。
ACK置l时表示确认号为 合法,为0的时候表示数据段不包含确认信息,确
认号被忽略。
PSH置l时请求的数据段在接 收方得到后就可直接送到应用程序,而不必等到
缓冲区满时才传送。
RST置l时重建连接.如 果接收到RST位时候,通常发生了某些错误。


华中科技大学硕士学位论文< br>SYN置l时用来发起一个连接。
FIN置l时表示发端完成发送任务。用来释放连接,表明发送 方已经没有数据
发送了.
(7)16位窗口大小
TCP的流量控制由连接的每一端通过 声明的窗口大小来提供。窗口大小为字节
数,起始于确认序号字段指明的值,这个值是接收端正期望接收 的字节.窗口大小
是一个16字节字段,因而窗口大小最大为65535字节。
(8)16位检 验和
检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的
字段,一 定是由发端计算和存储,并由接收端进行验证。
(9)16位紧急指针
只有当U
G标志置l时紧急指针才有效。紧急指针是一个正的偏移量,和序
号字段中的值相加表示紧急数据最 后一个字节的序号。
(10)选项
最常见的可选字段是最长报文大小,又称为MSS(Maxi mum
Segment
Size)。每
个连接方通常都在握手的第一步中指明这个选项 。它指明本端所能接收的最大长度
的报文段。图中可以看出208号机可以接收的最大字节数为1460 字节,1460也是
以太网默认的大小,从例子数据分析中可以看到数据传送正是以1460字节传送的
[9lllO]。
2.2应用层协议
目前互联网上应用最多的几种应用层协议包括提供 Web服务的HrrP协议、提
供文件服务的FTP协议、发送和转发电子邮件的SMTP协议和接收电 子邮件的POP3
协议,下面将概括地讨论这几种协议。
2.2.1
SMTP会话过程
SMTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传
送到接收 方地址,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,
主要工作集中在发送SMT P和接收SMTP上:首先针对用户发出的邮件请求,由发
送SMTP建立一条连接到接收SMTP的双 工通讯链路,这里的接收SMTP是相对于
10


华中科技大学硕士学位论文发送SMTP而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送
SMTP负责向接 收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答【6l。
可大致用图2.5的通讯 模型示意图来表示:
图2.5
SMTP通讯模型示意图
从前面的通讯模型可以看出SM TP协议在发送SMTP和接收SMTP之间的会话
是靠发送SMTP的SMTP命令和接收SMTP反 馈的应答来完成的。在通讯链路建
立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMT P此时可以接收邮
件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,
如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件
操作造成影响 。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含lO个
SMTP命令,如表2.1。表2.1SMTP命令
8椰P蠢降蠹幸说醇
睚LLO‘domam>‘CRLF)调㈣弛嫩 B帅P目争—个HE山)●令

reverse-pa91)蠢鲎送者脞.此蠢审青诉接托}卅 嚎蝌
‘眦r嗍t
reverse-path,t
cRL.F,篇篇誊黧器慧麓绻黧‘< br>中.
RcPTTo‘白m睡p柏>‘CRLF>
‘佑ny甜牛p柏>赫端他撇翻啪址擅收聃盯P将把茸后的行为着作邮件珏去处毫-畦‘CRLF'.1
‘CRLF>葡匝掰嘴艮


REgT‘CRLF’
‘NOOP‘CRLF>
瑭出坦盥当槲油#瞄螺
薹求I嫩SMTP投mO嘲.c用于毒喊’
,求接收8m髓目_十O●渲善并关闭俦辕.

Q盯‘CRLF’
vRW‘枷n口>‘CRLF’
B洲t
string> ‘CRIb>
鞋证指定的蕾蓓墨蕾存在,由于安全既.■务■毒纂止比●
令-


验磷角睁啊扔婀哺霜存在.r珀鞯赡,t檬纂止嗍。}

3}lELP‘CRLF '
蠢渴纛落量变刖坛村
一}

SMTP协议的每一个命令都会返回一个应答码 ,应答码的每一个数字都是有特


华中科技大学硕士学位论文
定含义的,如第一位 数字为2时表示命令成功;为5表失败;3表没有完成。一些
较复杂的邮件程序利用该特点,首先检查应 答码的首数字,并根据其值来决定下一
步的动作。表2.2中具体列出了SMTP的应答码。
表 2.2
应鲁再荫一
SMTP协议应答码
501■%Ⅲ日H峨
502
4 1r●;galg'lgl
603●啊的¨月碉
●l瞩■
501●啼髓}可赛曩
214
220
2’1最境状tt纛%■叻啦
‘aoma岫)■§It■
2到
421
250
261
‘domain)■‘关研
1%《■肿■忭触< br>用P幸jc垃・黼麓一‘for,,mad-aam>
一}枘■件■怍¥;E赢・ira'+ai m
■im■忡■n};目t,all-aiM
‘domalll’In§耒_叶,先阱*●■道
450
550
451■嘲}的I●镕:*■髓÷出■
551
舟P,肆 墟・请t馑‘fOrW/l‘plml)
452量#弃苗不足・■摹的■n丰A行
酾2
553
354
越■懈瑚分E・●期描●t雠^册
蝴毫不It月・■i肭■傩}I岍弄∞■*I^^・I舯’攘
55+1,!tE№
在进行程序设计之前有必要弄清SMTP协 议的会话流程,其实前面介绍的内容
已经可以大致勾勒出用SMTP发送邮件的框架了,对于一次普通的 邮件发送,其过
程大致为:先建立TEP连接,随后客户端发出HELLO命令以标识发件人自己的身< br>份,并继续由客户端发送MAIL命令,如服务器应答为”OK”,可继续发送RCPT
命令来标 识电子邮件的收件人,在这里可以有多个RCPT行,而服务器端则表示是
否愿意为收件人接受该邮件。 在双方协商结束后,用命令DATA将邮件发送出去,
其中对表示结束的”.”也一并发送出去。随后结 束本次发送过程,以QUIT命令退出。
由于电子邮件结构上的特殊性,在传输时是不能当作简单的文本 来直接处理的,而
必须按照一定的格式对邮件头和邮件体进行格式化处理之后才可以被发送。需要进行格式化的部分主要有:发件人地址、收件人地址、主题和发送日期等【121。在RFC
文档的R FC
822里对邮件的格式化有详尽的说明,有关详情请参阅该文档。
2.2.2
PO P3会话过程
POP3协议用于使用电子邮件的客户从邮件服务器接收邮件。和SMTP极其相
似,POP3也是一种基于文本行的协议。客户端发出命令,有包括参数的命令,也


华中 科技大学硕士学位论文
有不包括参数的命令,如果有参数,命令和参数之间由空格隔开。对应于每一个命
令,服务器端发回应答,应答包括了状态指示符和对状态指示符进行解释的字符串,
它们之间也 由空格隔开。目前状态指示符只有两种:成功“+OK”和失败“.ERR一。
POP3协议包含有多种 命令:
(1)USER和PASS用来输入用户名和密码,进行身份鉴别(认证)。
(2)ST AT,LIST和UIDL用来查询。
(3)RETR用来取回邮件。
(4)DELE用来删除 邮件。
(5)QUIT用来退出会话。
和SMTP一样,POP3也进行了特性的扩展,如认证 方式和流水线式的交互方
式。
2.2.3
FTP会话过程
FrP是另一个常见 的应用协议。它是用于文件传输的Intemet标准。必须分清
文件传送(filetransfer )和文件存取(fileaccess)之间的区别,前者是FTP提供的,后者
是如操作系统提供的。 由FTP提供的文件传送是将一个完整的文件从一个系统复制
到另一个系统中。要使用FTP就需要有登 录服务器的注册帐号,或者通过允许匿名
FTP的服务器来使用。和其他大多数应用协议不同,FTP需 要用到两个TCP连接,
见图2.6t'tlISl。
阱鬻p
==≥囊
■■“ __--__________…-__--____嘲___4'珂●
-——弱溪溅菇蕊忑虿—一◆《 o
图2.6F1甲协议的两个TCP连接
一个是控制连接(也称为控制通道),当客户向服务器 发起并建立连接后,客
户端发出命令服务器返回应答进行交互,首先进行客户的身份验证,然后用户可以
多次查询和操作服务器端的文件,上传和下载服务器端的文件,直到用户发出退出
的命令退出连 接。
一个是数据连接(也称为数据通道),当FTP需要传输目录信息或文件的数据
时,数据连 接马上建立起来并传输数据,数据传输完毕,数据连接马上断开,一个


华中科技大学硕士 学位论文
数据连接只能进行一次目录信息或文件数据的传输。数据连接即可以由服务器向客
户发 起(主动方式),也可以由客户向服务器发起(被动方式)。
常见的FTP命令有以下几种:
( 1)USER和PASS用于输入用户名和密码,进行身份认证。
(2)CWD和CDUP用于改变工作 目录。
(3)PWD用于获取工作目录。
(4)PORT,PASV,MODE,TⅥ’E,S TRU,REST用于规定传输参数。
(5)STOR,STOU和APPE用于上传文件。
( 6)RETR用于下载文件。
(7)LIST和NLsT用于获取目录信息。
(8)RNFR和 RNl’o用于文件的改名。
(9)DELE用于删除文件。
(10)RMD和MKD分别用于 删除和创建目录。
(11)ABORT用于中断当前的数据连接。
(12)QUIT用于退出服 务器。
其中,上传文件、下载文件和获取目录信息的命令需要建立数据连接【¨一61。
2.2 .4
HTTP会话过程
HTTP协议是目前互联网上应用最为广泛的一种应用层协议。它用于构 建分布
式的协作的超媒体信息系统,这种信息系统也被称为Web网络。整个互联网上的
Hrr P服务器通过网页中的URU统一资源定位符)组成了一个相互连接的w曲网
络:用户可以通过点击We b浏览器中的URL在Web网络中邀游。不仅如此,Web
网络可以通过提交表单生成应答网页完成针 对特定用户定制的服务,客户端脚本更
使得Web浏览器成为一种跨平台跨语言的运行平台,这种使用W eb浏览器作为客
户端运行平台的方式被称为B/S结构,这是当前极为流行的一种软件构建方式。HTTP协议中客户与服务器交互的信息单位是类似于电子邮件的消息
(message),客户发 出请求消息(requestmessage),服务器返回应答消息(response
messag e)。两种消息都是由开始行、可能有的一个或多个头字段、作为消息头和消
息体分隔符的空行、可能有 的消息体组成的。请求消息的开始行被称为请求行,应
答消息的开始行被称为状态行.头字段类似于电子 邮件中的头字段,由字段名、冒
14


华中科技大学硕士学位论文
号“: ”和字段值组成。
请求行由方法、URL、HTTP版本组成,之间由空格隔开。方法表明了对URL< br>旌加的方法,常见方法包括Get和Post。Get方法的含义是不改变URL对应资源并
取回 URL对应资源,方法为Get的请求消息不包括消息体。Post方法的含义是提
交表单并取回和UR L相对应生成的资源,方法为Post的请求消息包括消息体。
状态行由HTFP版本、3位十进制字符 组成的状态代码、解释字符串组成,之
间由空格隔开。每种状态代码都代表着一种应答结果或原因。请求消息和应答消息可以包含多种头字段,用来描述消息的属性和消息中包含
的实体的属性。常见的 头字段包括Content-Length,Content-Type,Content-Encoding,
Transfer-Encoding等。
Content-Length指明了消息体的长度 ,正因为有了这个头字段,才使得HrrP
的客户和服务器都能预先知道对方信息体的长度,使得Hrr P能传输任意的二进制
数据。
Content.Type指明了实体的MIME类型,这种类型 和电子邮件的MIME类型相
比所有扩充,且不必编码成ASCH字符传输。
Content- Encoding指明了实体的编码方法。这种编码实际上是压缩方法,是为
了减少数据在网络上的传输 量。目前己有的压缩方法包括gzip,comp麟,deflat
和identity。其中iden tity对原文不作任何改变。
Transfer-Encoding指明了消息体在传输时的编码方法 。目前传输编码方法只有。
chunked一种。当消息体在发送时仍不能确定其长度,就需要使用此方 法:每当发
送者生成了一段数据,就按照chunked的规范,在chunked的头部指明数据的大 小,
数据附加在头部的后面,一并发送出去,这种过程要重复多次直到数据发送完毕,
最后发送 一个长度为0的chunked头部表明消息体传输结刺17珈l。
HTYP是一种相当复杂的协议。它 还包括缓存机制、认证机制、协商机制等等。
具体细节参见相关的RFCllll。
2.3数据 引擎MSDE
Microsoft推出了两种数据库管理方案:Microsoft
Jet(即 MicrosoftAccess数
据引擎,该引擎随同Access和Microsoft
V isual
Studio发布)和Microsoft
SQL


华中科技 大学硕士学位论文
Server。由于每一种技术方案都有自身的优势,同时又存在某些局限性,因此, 以
前如果要求开发人员选择这样一种数据库技术:使它既满足从桌面到数据中心环境
下运行,而 数据库应用程序又适应长期和短期需要,一般而言是很困难的。由于基
于Jet的解决方案具有易于使用 和开发成本低的优点,因此,对于桌面或者共享的
应用程序而言,它是一种很不错的选择。然而,开发人 员发现:随着应用系统规模
的扩大,在他们将Jct应用程序移植到SQL
Server的平台 之前,需要对程序代码进
行大量的修改。随着一个与SQLServer兼容的数据引擎--Micro soft数据引擎
(MsDE)的发布,开发人员可以选用一种新的方式来创建基于桌面和共享环境的< br>数据库应用程序。利用MSDE,开发人员可以创建自由分布的桌面和共享的数据库
解决方案。当 需要对系统的规模进行扩充时,采用这种解决方案的数据库应用程序
可以很容易地移植到SQL
Server中【2甜。
2.3.1数据引擎涉及技术
从本质上讲,一个处于运行状态的“数据 引擎”就是一个核心进程。一个数据库
管理系统,比如Access或者SQL
Server, 将利用这个核心进程来存储和管理数据
库中的数据。从这种意义上讲,通常可以把一个数据引擎看作是一 个没有相应的图
形管理工具的数据库管理系统。数据引擎主要有两种作用:一是用来存储数据,二
是用来处理其它对象对存储的信息所提交的请求。我们通常把用来检索或者更新数
据的请求称作数据库 查询。
通常,数据引擎与自定义数据库应用程序一起对客户机应用程序提交的数据库
请求进行响 应。自定义数据库应用程序是用某种开发工具,比如MicrosoR
Visual
Studi o创建的。在这种情况下,由于白定义的数据库应用程序已经包含了内置的工
具对底层的数据库进行管理 ,因此,在数据引擎中,就没有必要包含图形工具来对
数据库进行管理了。此外,由于数据引擎具有容易 分布的特点,开发人员可以将相
应的数据引擎包含到自定义应用程序中,在应用程序的安装过程中,用户 可以通过
选取该引擎组件而将其安装到系统中矧f241。
23.2
Microsof t数据引擎
Microsoft数据引擎(MSDE)与SQL
Server完全兼容,在以V isual
Studio
6.0或
者Access
2000为开发工具所创建 的桌面和共享的数据库解决方案中,该引擎可以
用来对数据库进行处理。对于Visual
St udio
6.0或者Access
2000开发人员来说,他
16

华中科技大学硕士学位论文
们可以在不单独对MSDE进行注册的情况下发布使用MSDE创建的数 据库应用程
序。MSDE用到了SQLServer提供的一些技术,并且与SQL
Serve r
7.0完全兼容。
在Access2000中,MSDE是代替Jet(Access200 0数据库使用的缺省引擎)的理想
选择。此外,对于Visual
Studio
6.0 开发人员而言,如果他们想创建自定义的数据
库应用程序,并且希望在这些自定义的应用程序中使用与S QL兼容的的数据库,
那么,他们可以通过采用MSDE作为数据引擎的方式来达到这一目的。MSDE 与
SQL的兼容性意味着:开发人员可以对现有的以MSDE作为数据引擎、桌面和共
享的数据 库应用程序代码不作任何修改,就可以将其移植到SQLServer中。
MSDE以提供某种服务的方 式在后台运行。在此,服务指的是以后台进程运行
的应用程序。服务与其它的应用程序的运行方式有所不 同。比如,只要用户通过从
“开始”菜单选取“启动”选项,对应的应用程序就可以投入运行。但对于服 务而言,
如MSDE,情况就不是这样。它们的启动和关闭通常是由操作系统来完成的。以
MS DE作为数据引擎的桌面和共享的数据库应用程序通常具有以下限制:在数据库
应用程序存活期间,MS DE服务应该处于运行状态。一般而言,使用服务的对象是
其它应用程序,而不是终端用户。一般情况下 ,服务在后台运行,当它接收到客户
机应用程序向它提交的处理请求时,它就转去执行相应的请求。对于 MSDE来说,
这些请求是一些将要对数据库执行的操作。由于使用服务的对象是客户机应用程
序,而不是终端用户,因此服务不需要有用户界面。在Access
2000中创建的一个
工程 或者一个VisualBasic应用程序可以直接与某个服务进行交互。对于MSDE而
言,这些客户 机应用程序充当了用户界面。
MSDE与其他数据引擎相比,具有自己如下的特性:
●完全与M icrosot%SQL
●对于Visual
Studio
Server
7. 0以及以前的版本相兼容。
Office
6.0或者Microsoft
2000开发 人员而言,他们可以
将基于MSDE的数据库应用程序免费发布给最终用户。
●可以在W'md ows
95,
W'mdows
98,WindOW8
NT,
以及Wi ndows
2000
(Intel和Alpha)平台上运行。
●具有客户机/服务器 的体系结构(MSDE在数据库服务器,而不是在客户机
上执行对数据库的操作).

以提供服务的方式在后台运行。
●在数据库的开发过程中,开发人员不需要为该引擎创建相应的用户界面 。


华中科技大学硕士学位论文
其它应用程序,比如用Access
20 00或者Visual
Basic开发的自定义应用程
序需要为数据库提供相应的用户界面。< br>如果开发人员希望创建桌面或者共享的数据库应用程序,并且计划在将来对这
些数据库应用程序的 功能和规模进行扩充,那么,选用MSDE作为数据引擎将具有
以下优点:从近期来看,能够降低系统的 开发费用,从远期来看,又提供了最为方
便的方式,以对当前创建的数据库应用程序进行移植。当你所在 组织的规模扩大后
对数据库系统的功能和性能提出新的需求时,你可以在不修改现有数据库应用程序中的任何代码的情况下,将它完全移植到基于SQLServer的平台上运行。此外,由
于MSD E与SQL完全兼容,开发人员可以使用同样的数据访问语言在规模相对较
小的MSDE数据库系统和规 模较大的SQLServer数据库系统之间实现无缝转换
125】【261。
2.4本章小结
本章主要介绍了系统需要应用的相关技术。研究了TCP/IP协议的工作原理和
数据报报头格 式,对几种主要的应用层协议也作了相关的研究,分析了SMTP、
POP3、FTP和HTTP协议的 会话过程。在数据库系统方面,数据库使用MSDE并
对其做了相关的研究和分析。
18


华中科技大学硕士学位论文
3系统的分析与设计
结合传统的网络防火墙、入侵 检测和黑客监控系统的优点,系统采用多层分布
式CAS体系结构。整个系统由监控控制台,数据中心服 务器以及运行于网关的监
控代理组成。多个监控代理共同隶属于一个数据中心服务器,监控控制台可以同 时
访问和管理多个数据中心服务器。通过运行在各网关上的监控代理,将网关上抓取
的数据处理 后传送给数据中心服务器。并由数据中心服务器将监控控制台的指令转
达给监控代理。使网络系统管理员 可以实时地监控内部网各计算机之间,以及内部
网与外部网之间的一切信息通讯,并提供报警、统计、跟 踪、审核等一系列功能的
集成系统。
3.1系统设计理念
一切设计策略完全按照系统需 求和系统的实际使用情况,软件的设计理念如
下:
(1)尽可能的友好、符合普遍使用习惯的用 户界面;
(2)数据的正确性;
(3)良好的扩展性;
(4)低的资源消耗;
(5)较好的健壮性。
3.2系统架构设计
由于系统需要实现的主要功能是监控通过网关的所有 文件传输情况。通过对报
文的分析,统计出各种应用层协议传输的文件信息。所以,系统的抓包后的协议 分
析中,需要做出一些比较通用的类与函数,方便协议类型的增加扩展.
整体采用多层分布式C AS架构。监视代理(位于Gateway上)负责抓取、分
析网络数据包,并将统计结果保存到数据库 中;服务器负责统计各种结果,并且以
友好的方式进行显示。下图为监控系统的系统架构图,可以清晰的 体现出该系统的
设计思想。
19


华中科技大学硕士学位论文
敷 据库曩务量
图3.1监控系统架构图
从图3.1中可以看出,整个系统由监控控制台,数据中心 服务器以及运行于网关
的监控代理组成。多个监控代理共同隶属于一个数据中心服务器,监控控制台可以
同时访问和管理多个数据中心服务器。通过运行在各网关上的监控代理,将网关上
抓取的数据处 理后传送给数据中心服务器。并由数据中心服务器将监控控制台的指
令转达给监控代理。
3.2 .1系统工作流程
系统具体的进程结构在图3.2中具体给出。

图3.2系统进程结 构图


华中科技大学硕士学位论文
参照图3.2,可以看出系统各个进程之间的交 互过程。
(1)界面控制进程:完成报文处理进程、数据存储进程
界面控制进程和网关服务器上 的进程之间通过网络报文进行通讯。
界面控制
进程可以启动、停止网关服务器上的报文处理进程 和数据存储进程;同时,报文处
理进程和数据存储进程定时的向用户控制界面进程发送心跳报文,后者据 此判断前
面两个进程的工作状态。
(2)界面控制进程一一数据库
界面控制进程启动时 ,同数据库建立连接。当用户需要浏览某些统计信息时,
用户界面统计进程查询数据库中的相关文件传输 记录,并显示结果。
(3)报文处理进程一数据存储进程
通过对报文的实时分析,报文处理进程 将文件传输的相关信息整理出来,写入
一块共享内存中。一旦一条文件传输记录提取完成,数据存储进程 就将该记录保存
到数据库中。
(4)数据存储进程一数据库
数据存储进程负责将分析完 的文件记录实时的写入数据库。
对于具体的系统数据流图,可参考图3.3。
图3.3系统数据 流图
3.2.2监视代理模块
监视代理模块的主要功能是采集网关上的口数据包,按照TCP、 UDP协议重
2l


华中科技大学硕士学位论文
组成数据报流,并提取出 数据流中的源IP、目的m、源端口、目的端口、协议类型、
应用层数据包以及数据包个数,根据协议类 型把数据包提交给应用层协议的解析软
件模块。监视代理模块在整个系统中的位置如图3.4。其中方框 区域即为监视代理
模块。
图3.4恶意代码监控系统之监视模块
3.2.3监控控制台
监控控制台有两部分的作用,一部分是根据目前流行的协议分析数据报流,丢
弃无效信息,提取 出所需要的网络会话信息。另外一个部分是控制系统的运行和显
示统计信息。可见,控制台分为协议处理 和用户控制界面两个部分用户。图3.5中
给出了监控控制台在系统中的位置,其中方框部分为监控控制 台。


华中科技大学硕士学位论文


l网关

IIP数据l
I报抓取l








-囡
-医

I流重组l
T。
用户界面1.
、‘o■2勉
图3.5恶意代码监控系统之监控控制台
3.3关键模块详细设计
在该部分中,将对系统中重要的两个模块作详细的设计和分析。从图3.4和3.5
种可以看出 ,系统中重要的两个模块为流重组模块和应用层协议解析模块。
3.3.1监视代理中流重组模块
根据TCP协议标准的特点,监视代理的体系结构与功能模块划分如图3.6所示。
监视代理中可以容 纳多个TCP连接,模块图中的状态机和连接管理模块属这三个连
接所共用。每个连接中分别包含五个模 块,分别是状态机、连接管理器、数据缓存、
数据包过滤模块和指针产生模块。
●状态机
当TCP数据包到来时,该状态机将启动,并根据数据包中的TCP头长度和整
个数据包的长度来控制 状态的转移。其主要功能是:通过输出状态信号,使其余各
模块能将TCP数据流中报文头和有效数据分 开,并能识别TCP头中的各个元素,


华中科技大学硕士学位论文
如端口号、序 号、确认号、UAPRSF控制标志等。

l数据流I
I............. ..........._J
图3.6监视代理的体系结构
●连接管理器
一个TCP连 接的标识包括源端口和目的端口,以及源m地址组成的套接字。
为了区分不同连接的报文段,因此需要定 义了一个连接管理表,以便进行比较。李
娜解管理表中定义了TCP连接的各种状态。
当接收一 个报文段时,连接管理模块将该报文段的源m地址和一对端口号与
表格中的源IP地址和目的IP地址进 行比较,如果找到了相应的连接,且该项的标志
位有效,则该模块就要给出控制信息,启动相应的连接, 对该报文段进行处理。如果
找不到有效的连接项,则根据具体情况或者建立新的连接,或丢弃该数据包, 或者
删除该连接。连接的删除将在状态机的控制下进行。即将valid置无效即可。按照
上述 设计思想,端口资源可循环往复地利用。
●TCP数据包过滤模块
为了把一部分错误的数据包和 存储器不能接收的数据包尽早识别出来,通过
TCP数据包过滤模块检查报文段的序号和有效载荷的长度 ,实现对数据包的过滤。
如果发现错误的数据包,可直接把它丢弃,以避免发生不必要的错误。


华中科技大学硕士学位论文
・单个TCP连接数据缓存
要将无序到达的TCP报 文重新排序,就必须把先到的数据报存放到缓存中。如
果缓存容量太小,所能容忍的报文段到达秩序的混 乱程度就小。若混乱程度较大,
而存储空间太小,就会影响TCP数据重组的效率,大大降低TCP的性 能。经过试
验和比较,该系统的每个连接缓存的容量的是16k字节。
●指针产生模块
该模块的主要功能是产生数据有效指针,通过该指针来标识数据缓存中有效
TCP数据流的重组情况。< br>3.3.2控制台协议解析
应用层协议解析模块是整个系统的重要部分,它采用插件机制实现多引 擎应用
层协议检测。图3.7是应用层协议解析模块的逻辑结构图。
图3.7应用层协议解析模 块的逻辑结构图
应用层检测模块从流重组模块接收重组后的TCP的数据报,根据其不同的
应用 层协议,交付给不同的应用层解析模块处理。比如HTrP协议数据包,FTP
协议数据包,SMTP协 议数据包和POP3协议数据包解析模块等等。应用层解析模
块分析协议中的内容,加载包括处理函数的 加载和相关参数,最终提取出应用层协


华中科技大学硕士学位论文
议传输的文件 的相关信息.
3.4数据库设计
3.4.1数据字典
系统数据字典在表3.1中给出。
表3.1中,文件信息为网络传送的文件的信息,包含了文件名、传送时间、源
目的m地址、文 件大小以及文件所经过的路由。路由信息为文件传输过程中所有
的路由信息,记录下了起始和结束路由。 协议统计信息为使用某种协议传输的文件
数目以及口地址.攻击路线记录下了恶意文件攻击的信息,包括 攻击发起地址、
遭受攻击地址以及攻击时间。用户信息为系统的用户模块登录模块所用,包括用户
名、密码和用户权限等字段。
表3.1系统数据字典
名字描述
经过网关的所有文件的相关信息
定义
文件信息=文件名+时
间+源IP+目的IP+文
件大 小+文件所经路由
位置
由监控系统的客户端获
取到输入到数据库,然后
由数据 库输出到控制台

由监控系统的客户端获
取剑,输入到数据库,然
后由数据库 分析输出到
控制台端
由监控系统的客户端获
取到,输入到数据库,然
后由数据 库分析统计输
出到控制台端
由监控系统的客户端获
取到,输入到数据库,然
后 由数据库分析统计输
出到控制台端
输出到监控的用户管理
界面
文件信息
路由信息
文件经过的所有的
路由信息
路由信息=路由起始
lp+路由结束m
协议统计信息
统计出某种协议的
文件数据信息
协议统计信息=协议类
型+文件数EI+IP
攻击路线信息
统计出某个文件的
传输经过的IP
新增、 修改、删除本
监控系统的用户信息
攻击路线信息=IP地址
+源IP+目的IP+时间
用户信息=用户名+用
户密码+用户权限
用户信息
3.4.2数据分析
此监控系统通过上面的分析,主要用来监控网关的文件信息,同时考虑到开发


华中科技 大学硕士学位论文
的时间的限制,减少开发维护的工作量,所以将所有信息使用四个表来存储数据:(1)文件信息表(FILEn虾O):在HLEINFO表中标识出数据的时间、文件基
本信息、 路由等信息;
(2)路由器连接表(ROUTE).-对于Hotspot
Graph
Example和Attack
Diagram
Example中需要维护路由器的路由信息, 建立一个路由器的路由表;
(3)路由器坐标点对应表(IPXYPOINT)."考虑到每次程序绘制 Hotspot
Graph
Example的中的路由器的量比较大,建立一个表专门来维护上 次的路由器的坐标;
(4)安全信息表(sEcUIuTY):安全控制的表,用来控制用户的登录以及 权
限控制等信息。
3.4.3数据库表结构
根据3-2节中的分析以及对数据字典的认 识,将系统数据库划分为以下几个表,
逐个表说明其中重要字段左右。
表3.2安全信息表(S ECURITY)
NameCode
US6xBO
USel'name
Use rpwd
Usertype
Int
Type
identity(I,1)
Yes
No
No
No
用户号
用户名
用户密码
用户类型
Varehat(501
Varchar(50)
Int
用 户类型字段(Usertype):
USER:n停E=O……一管理员用户;
USERTYP E=l一一一一一一一一般用户;
规定用户类型,用户类型分为两种:
根据身份的不同,便具有 不同的权限。管理员用户能够进行系统的操作,能够
新建数据库和删除数据库,能够管理用户帐号。而一 般用户只能对信息进行查看,
不能对任何数据进行修改。


华中科技大学硕士学位 论文
表3.3文件信息表(FILEINFO)
NameCode
Fiteno
Arrvtime
ProtocoI
Sourceip
Sourceport
Targetip
Int
Type

Yes
No
NoNo
No
NO
No
No
No
No
N0
文件编号
文件时间
协议
源IP
源端口
目的IP
目的端口文件名
文件扩展名
文件大小
文件路由
identity(1,1)
Datetime
Varchar(101
Varchm'(50)
Im
脚 tporc
Filename
File,extend
Filesize
Ro ute
Varcha“50)
Int
Nvarchar(4000)
Varc hm'(1∞
Int
Nvarchar(4000)
协议字段(PROTOCOL):
只允许有H1_rP,FTP瓜C/POP3/SMTP/CIFS/oTHERS当中的任意一种,而 且必
须是大写的;
文件编号字段(FILENo):
唯一标识这个文件
文件扩 展名字段(nLEExTEND);
只允许exe/vxd/dll/doc/bat/bin/zip /html/ppt/exl/rar/others这几类文件,且必须是
小写的;
文件路由 字段(ROUTE):
其格式为:“222.20.121.102・222.20.121.254” 每个ip之间使用“-”间隔
表3.4路由表(ROUTE)
NameCode
Rol lteno
Type
IIlt

路由号
头IP
尾IP
idenfity(1,1)
Yes
N0
No
Routestart
Routeend
V撕ha“50)
Ⅵ∽har(50)


华中科技大 学硕士学位论文
路由号字段(R0uTENo):
唯一的标识路由得号,并且在此路由号上加上 INDEX,用来加速数据库的读取;
头"字段(ROUTEsTART)和尾IP字段(ROuTEE ND):
用来确定一个唯一的双工的路由路径。
表3.5路由器坐标点对应表(IPXYPOI NT)
NameCodc
IP
Xpoint
Ypoint

Yes
No
NO
Tylm
路由器IP
x坐标
Y坐标
Varehar(5∞
Int
Int
用于系统具有审计功能,需要向用户显示文件传输 路径。所以此处记录的是路
由器在显示图中的坐标。
3.5本章小结
本章介绍了网络安 全监控系统的总体结构设计,详细说明了系统的功能和设计
目标。系统结合传统的网络防火墙、入侵检测 和黑客监控系统的优点,采用多层分
布式CAS体系结构,将整个系统分成监控控制台,数据中心服务器 以及运行于网
关的监控代理几部分结构。之后,进一步的设计了流重组模块和控制台应用层协议
解析模块的详细结构。
设计了系统所需要的数据库系统,根据对数据的分析和数据字典的描述,分析本系统通主要用来监控网关的文件信息,同时考虑到开发的时间的限制,减少开发
维护的工作量,所 以将所有信息使用四个表来存储数据:文件信息表(FILEⅡ婚O)、
路由器连接表(ROUTE)、 路由器坐标点对应表(IPXYPOINT)、安全信息表
(SECuⅪTY),并对每个表中间重要字 段的具体含义进行了分析和说明。


华中科技大学硕士学位论文
4系统的实现与测 试
4.1监视代理模块的实现
根据对m数据报首部的分析,程序中使用了特定的数据结构定义I P数据报首
部。如此便只截取系统关心的信息,略去了系统不需要的信息。如下便是程序中对
I P数据报首部的定义。
typedefstruct_IPHEADER{
unsigned< br>char
unsigned
char
unsigned
char
unsigned
short
unsigned
short
unsigne d
short
ilnslgnezl
char
unsigned
ch ar
unsigned
short
unsigned
hat
unsl gne圮1
int
header_len:4;
version:4;
tos ;
//报头长度
//版本号
,,服务类型
total_len;
id ent;
flags;
//总长度
//唯一标志
标志字段
//生存期
//D议类型
//校验和
//源碑
//目的口
砌:
prot o;
checksum;
sourcelP;
destlP;
}IPHEAD ER;
根据这个定义,程序中略去了任选字段。在系统具体实现中,直接将TCP/UDP
数据 报截取下来,丢弃了任选字段【3卜341。
根据对TCP头信息的分析,程序中定义了如下的TCP头 部。
typedefstruct_TCPHEADER{
unsigned
shor t
SrcPort;
DstPort;
//源端口
//目的端口
un signed
unsigned
unsigned
unsigned
shor t
long
long
char
SeqNum;
AckNum;
DataOff;
//顺序号
//确认号
/,TCP头长


华 中科技大学硕士学位论文
unsigned
char
Flags;
/,标志( URG、ACK等)
unsigned
short
Chksum;
/,校验和
unsigned
short
Window;
,,窗口大小
unsi gned
UrgPtr;
,/紧急指针
}TCPHEADE飚
4.1.1网络 嗅探器
网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通
过使用网络 嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的
捕获与分析.
嗅探器作为 一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对
网卡的编程也是使用通常的套接字(s ocket)方式来进行。但是,通常的套接字程
序只能响应与自己硬件地址相匹配的或是以广播形式发 出的数据帧,对于其他形式
的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证 投递
地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包.
而网络嗅 探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以
是发给它的也可以是发往别处的 。显然,要达到此目的就不能再让网卡按通常的正
常模式工作,而必须将其设置为混杂模式【”l。具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw
socket)
来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原
始套接字后,需要通过 setsockopt0函数来设置m操作选项,然后再通过bind0函数
将原始套接字绑定到本地网 卡。为了让原始套接字能接收所有的数据,还需要通过
ioetlsocket0来进行设置,而且还可 以指定是否亲自处理璎头。至此,实际就可以
开始对网络数据包进行嗅探了,对数据包的获取仍象流式套 接字或数据报套接字那
样通过recvO函数来完成。但是与其他两种套接字不同的是,原始套接字此时 捕获
到的数据包并不仅仅是单纯的数据信息,而是包含有m头、TCP头等信息头的最
原始的数 据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输
的原始信息的分析可以得到有关 网络的一些信息。由于这些数据经过了网络层和传
输层的打包,因此需要根据其附加的帧头对数据包进行 分析【361。


华中科技大学硕士学位论文
4.1.2
TCP会话全过 程解析
根据对TCPflP协议的分析,如果要对数据报进行重组,需要定义系统自己的
数据结 构并使用特定的算法。所以数据报解析分为两个部分:数据结构的定义和流
重组算法。整个解析过程,就 是跟踪一次TCP会话的过程。因此着重解释TCP传
输过程中IP数据报的变化,以便程序监控。具体 根据一个实例来分析TCP/IP协议,
对于TCP/IP的基本原理基本不予以讲述。
为了更 好的分析协议,先根据一次FTP数据传输的步骤来分析。如图4.1所示。
图4.I一次FTP数据传 输
图中关键部分用数字标出并解释如下137】:
(1)FTP客户端请求TCP用服务器的m 地址建立连接。
(2)TCP发送一个连接请求分段到远端的主机,即用上述m地址发送一份口
数据报。
(3)如果目的主机在本地网络上,那么m数据报可以直接送到目的主机上。
如果目的 主机在一个远程网络上,那么就通过口选路函数来确定位于本地网络上


华中科技大学硕士 学位论文
的下一站路由器地址,并让它转发m数据报。在这两种情况下,坤数据报都是被
送到位 于本地网络上的一台主机或路由器。
(4)本例是一个以太网,那么发送端主机必须把32位的m地址变 换成48位
的以太网地址,该地址也称为MAC地址,它是出厂时写到网卡上的世界唯一的硬
件 地址。把球地址翻译到对应的MAC地址是由ARP协议完成的。
(5)如图的虚线所示,ARP发送一 份称作ARP请求的以太网数据帧给以太网
上的每个主机,这个过程称作广播。ARP请求数据帧中包含 目的主机的m地址,
其意思是“如果你是这个P地址的拥有者,请回答你的硬件地址。”
(6) 目的主机的ARP层收到这份广播后,识别出这是发送端在寻问它的P
地址,于是发送一个ARP应答。 这个ARP应答包含讲地址及对应的硬件地址.
(7)收到ARP应答后,使ARP进行请求一应答交换 的口数据包现在就可以
传送了。
(8)发送IP数据报到目的主机。
4.1.3
TCP通信过程中的数据包跟踪
通过上面的实例,可以了解到一次TCP传输的基本过程。为了更清晰 的解释数
据传送的过程,通过分析用捕获的包来分析一下TCP/IP的工作过程,按传输的不
同阶段抓了四组数据,分别是查找服务器、建立连接、数据传输和终止连接。每组
数据,按下面三步进行 解释[38.4¨。
(1)显示数据包
(2)解释该数据包
(3)按层分析该包的头信 息
第一组数据查找服务器
熬.。獗除。。攀”w魄~鬟掀濂~燕,§燃—二髓梦黪~~嫩零鳜; 缝。!魏a奠姜@
I塘8冀拼∞雏茸蕾tl重露库库雏瞎拜盥tV-轴e.t
2蝣e莹’m罄‘ ∞嚣糌铫稿∞雏托盈口I叠謦准曲
lgt|U113抛馓塌慨l一
堰随m1
腿越ln砑 一





(1)图4.2显示的是l、2行的数据。< br>一
图4.2查找服务器的数据包
(2)解释数据包
这两行数据就是查找服务器及 服务器应答的过程。


华中科技大学硕士学位论文
在第l行中,源端主机的MAC 地址是oo:50:FC:22:c7:BE。目的端主机的MAC
地址是FF:FF:FF:FF:F F:FF,这个地址是十六进制表示的,F换算为二进制就是1111,
全l的地址就是广播地址。所谓 广播就是向本网上的每台网络设备发送信息,电缆
上的每个以太网接口都要接收这个数据帧并对它进行处 理,这一行反映的是步骤5)
的内容,ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个 主机.网
内的每个网卡都接到这样的信息“谁是192.168.113.1的球地址的拥有者,请将你
的硬件地址告诉我”。.
第2行反映的是步骤6)的内容。在同一个以太网中的每台机器都会” 接收”到
这个报文,但正常状态下除了l号机外其他主机应该会忽略这个报文,而l号的主
机的 ARP层收到这份广搔报文后,识别出这是发送端在寻问它的IP地址,于是发
送一个ARP应答。告知 自己的坤地址和MAC地址。第2行可以清楚的看出l号
回答的信息是自己的MAC地址00:50:F C:22:C7:BE。
这两行反映的是数据链路层之间一问一答的通信过程。这个过程就像李四要在< br>一个坐满人的教室找一个叫“张三”的人,在门口喊了一声“张三”,这一声大家
都听见了,这就 叫广播。张三听到后做了回应,别人听到了没做回应,这样就与张
三取得了联系。
(3)头信息 分析
第1数据包包含了两个头信息:以太网(Ethemet)和ARP。
表4.1是以太网的 头信息,括号内的数均为该字段所占字节数,以太网报头中
的前两个字段是以太网的源地址和目的地址。 目的地址为全l的特殊地址是广播地
址。电缆上的所有以太网接口都要接收广播的数据帧。两个字节长的 以太网帧类型
表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0806。
第2 行中可以看到,尽管ARP请求是广播的,但是ARP应答的目的地址却是
l号机的(00
50 FC22
C7
BE)。ARP应答是直接送到请求端主机的。
表4.I以太网头信息< br>l行


以太罔目的地址(6)
FF
FF盯FF
Fi rFF
以太同源地址(6)I帧类型(2)
0050
Fc
22
c7雎 l
0806
009027It6
54530806
00
50
FC22C7Big
表4.2是ARP协议的头信息。硬件类型字段表示硬件地址的类型。它的值为l< br>即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为0800即


华中科技大学硕士学位论文
表示口地址。它的值与包含m数据报的以太网数据帧中的类型字段的值相同 。接
下来的两个l字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议
地址的长 度,以字节为单位。对于以太网上伊地址的ARP请求或应答来说,它们
的值分别为6和4。op即操作 (Opoperation),1是ARP请求、2是舢心应答、3
是RARP请求和4为RARP应答 ,第二行中该字段值为2表示应答。接下来的四个
字段是发送端的硬件地址、发送端的口地址、目的端的 硬件地址和目的端口地址。
注意,这里有一些重复信息:在以太网的数据帧报头中和ARP请求数据帧中 都有
发送端的硬件地址。对于一个ARP请求来说,除目的端硬件地址外的所有其他的
字段都有 填充值。
表4.2的第2行为应答,当系统收到一份目的端为本机的ARP请求报文后,它
就把 硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作
字段置为2,最后把它发送 回去。
表4.2

硬件类型(2)
协议类型(2)
硬件地址长度(1 )
协设地址长度(i)
Op(2)

00
08
06
04
00
00
01
50Fc22
0l
00
ARP协 议的头信息

00
08
06
04
0002
0100
发进端以太同地址(6)
发选蛐IP地址(4)
目的以太两地址(6)
目的IP地址(4)
c7髓
009027F65453
CO船71
DO00
00
00
T1
CO船T101
00鼬Fc
22cT弛
CO^8
00∞00
0lCO^8
7l∞
第二组数据建立 连接
1)图4.3显示的是3.5行的数据。
这三行数据是两机建立连接的过程。这三行的核心 意思就是TCP协议的三次
握手。由于页面原因不能显示整行图,便将图分成两个部分。
≥‰{ 龇曲㈣嘲僦∞㈣瓣{蹴馘嫩



l缸8辨:聊
拜黼l辟喃翻。l< br>护T毋'F静


l缸8辣,玎馘蝴弼搠辩
∞鞠矛C:站:口髓
∞:∞:27#嗨‘辅53
I取燃羽7∞:5耐纰灯:蟹
I豫鹏ti3幽
I蕾l拍I l气l
GO渤飘滋:c7蠖
静,f降
Ta~)F律
参m瓣…I^‘蔓瓣删一。 ^玲髂镌~i参魄%d缝。‰i捌噻…。麟m羞
^争黼
I篮啪113I
一一一
●争灌・■l,



l啦啪l拍蝴…
∞∞口悬辩:∞
图4 .3连接建立过程的数据包


华中科技大学硕士学位论文
2)解释数据包
TCP的数据包是靠口协议来传输的。但IP协议是只管把数据送到出去,但不
能保证口数据报能成功地 到达目的地,保证数据的可靠传输是靠TCP协议来完成
的。当接收端收到来自发送端的信息时,接收端 向发送端发送一条应答信息,意思
是:“我已收到你的信息了。”第三组数据将能看到这个过程。TCP 是一个面向连接
的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。
建立连接的过程就是三次握手的过程。
下面来分析一下此例的三次握手过程。
(1)请求端2 08号机发送一个初始序号(SEQ)987694419给l号机。
(2)服务器1号机收到这个序号 后,将此序号加l值为987694419作为应答信
号(ACK),同时随机产生一个初始序号(SE Q)1773195208,这两个信号同时发
回到请求端208号机,意思为:“消息已收到,让数据 流以1773195208这个数开始。”
(3)请求端208号机收到后将确认序号设置为服务器的初 始序号(SEQ)
1773195208加l为1773195209作为应答信号。
以上三步 完成了三次握手,双方建立了一条通道,接下来就可以进行数据传输了。
3)头信息分析
图4. 4的3个图分别为3.5行TCP协议的头信息,这三行是三次握手的过程,
注意握手的过程中标志位发 生的变化。


华中科技大学硕士学位论文

h自t
statue tte
歪曲whd口征thtIX)
萤Un“h・●_
善∞1口h・k
●S0 11"“pert=l惦I
一●Destinetsm'井t:21
FTP
一誓¥eq uace
t-小簟=967694心0
●Hetdhr
●^b帽1.d●_●“_如= 1773195∞g
l曲‘也:5
0口聃・t)
窜霸,l・p
啕箜..0.. ..驻‘“pointer:0
钢..0.}m=0
黝...1..。^cz=1
潮. .…0..置・l・t:0
掌,ln如-:I翩
删.….n锕=0
硼....0
m=0
芏a瞳d舶=a鹅r
●撕‘吐tpelzt盯:0
碡TCF
O’“● m=■曲●
‘D
gttt啦聃“)
Icl
日CorrecO
图4.4 连接过程中信息头变化
如图4.4(a)请求端208号机发送一个初始序号(SEQ)9876944 19给l号机。标
志位SYN置为1。
如图4.4(b)服务器l号机收到这个序号后,将应答 信号(ACK)和随机产生一
个初始序号(SEQ)1773195208发回到请求端208号机,因 为有应答信号和初始序
号,所以标志位AcK和SYN都置为l。
如图4.4(c)请求端20 8号机收到l号机的信号后,发回信息给l号机。标志位
ACK置为l,其它标志为都为0。注意此时S YN值为0,SYN是标示发起连接的,
上两部连接已经完成。
从此,便能得出三次握手过程的 实质。具体如图4.5。


华中科技大学硕士学位论文
第三组数据数据传输
(1)图4.6显示的是57-60行的数据。
该数据是数据传输中的数据包。这四行数据是数据传输 过程中一个发送一个接收
的过程。
§材16崞35_抖
§

£壁kj T_・伽㈣,峨_c蛾,弹磁掣iI磐cd憾*擀
一拇嘲…翱蛐黛如
∞盼静.r-6斜:髓甜5。‘魁越c7:睫,r伊
错169篓●7拿
辅16:9.35.●再
≈9’1 6泞葛●7’
∞鼽flc:越.c7蕾
孵稚臼!糖斟:髓
∞辅K:芷盯厦
∞} 口27辫和∞
∞轴:M:趁妫麟
00§0=聍ft5.∞
,TCP
f学
p}口

羹嘲。掺●-’携。赢。女毡,蚺~脚韪憋魄熬一—o搬…~一●毵鱼
图4 .6
TCP数据传输时数据包
(2)解释数据包
TCP提供一种面向连接的、可靠的字 节流服务。当接收端收到来自发送端的信
息时,接收端要发送一条应答信息,表示收到此信息。数据传送 时被TCP分割成认
为最适合发送的数据块。一般以太网在传送时TCP将数据分为1460字节。也就 是说
数据在发送方被分成一块一块的发送,接收端收到这些数据后再将它们组合在一起。
57行 显示l号机给208号机发送了大小为1514字节大小的数据,注意我们前
文讲过数据发送时是层层加 协议头的,1514字节=14字节以太网头+20字节IP头
+20字节TCP头+1460字节数据 58行显示的应答信号ACK为:1781514222,这
个数是57行得SEQ序号1781512 762加上传送的数据1460,208号机将这个应答
信号发给l号机说明已收到发来的数据。59、 60行显示的是继续传送数据的过程。
(3)头信息
图4.7分别是57行和58行的头信息, 解释请参考第二组数据包中的解释。
图4.7数据传输中TCP首部


华中科技大 学硕士学位论文
第四组数据终止连接
(1)图4.8显示的是93.96行的数据
,格 +擎,懿立二鬟盘削毋,矽也蜓龇j挚矾燃l船t檄黻一~^g
l镗-,确.113—208
l ,2。,勰,“氯I
t辩。l∞;l¨2∞
I镗,l确.,l氧l
t犍’,∞1t,2 0s
192.jE8“1l
(a)
1.92:.1辅.1t3
l镗+l鹅.1 13撕
l镗.N辞.1l乳蝴
t口0:£e1131
t90.;《0110二O§l1066
】僻,
106●
2l
la玎
l船‘

IO¨

l鸵.1柏IIil
l捧1粥哎Z
∞,6槲7.
17力I 懈∞Z
i0嚣力嚼36
~—J趣。量I
5●17e,5鬟浩22
17731蝴 5+
l。527氍∞,
∞76;《75

1舳4
2I
2t< br>钧%摊’‘
钾76钳,H,0
17,3l舻舻^q
l驼tI曲tll鲁Il辩, j柏.Il’2∞
t驼.郴.j13,拍●l镗.蝴.111I
10鲥
1773I啦昕 b
l拍●17力I粥僻6
缸钧,酗帏再
105'
懈酬{一
17乃I锄 ∞,


斟—一

(b)
图4.8连接中止数据包
(2)解释数据包
图4.8中93.96几行是两机通讯完关闭的过程。
建立一个连接需要三次 握手,而终止一个连接要经过4次握手。这是因为一个
TCP连接是全双T(即数据在两个方向上能同时 传递),每个方向必须单独地进行
关闭。4次握手实际上就是双方单独关闭的过程。
本例文件下 载完后,关闭浏览器终止了与服务器的连接图4.8的93.96行显示
的就是终止连接所经过4次握手 过程。
93行数据显示的是关闭浏览器后,图4.9(a)所示208号机将FIN置l连同序号
(SEQ)987695574发给1号机请求终止连接。
94行数据和图4.9@显示l号机收到F IN关闭请求后,发回一个确认,并将应
答信号设置为收到序号加l,这样就终止了这个方向的传输。< br>95行数据和图4.9(c)显示l号机将FIN置l连同序号(SEQ)1773196056发给20 8
号机请求终止连接。
96行数据和图4.9(d)显示208号机收到FIN关闭请求后,发 回一个确认,并将


华中科技大学硕士学位论文
应答信号设置为收到序号加1,至 此TCP连接彻底关闭。
(3)头信息
图4.9中为TCP连接关闭时TCP头部变化的信息。
jb藏嬲幽幽嚆——
%一H^[headeroeehemet町
IC-噍pu南砷’ }o虹∞open
¥口ipv4h☆
8tJ
T印header
’一,itw尊.soute.epoet-21m
,一●13eCdnetnl
port-1064
See,uencen』恬1177319蛹
i●础_如由嘣呲raJrnt措-蛔76945 75
鸯圈呻
●Headerh'曲・5(20砷be0
,r翻…0.…Ltomtpemter-O
’捌…I….^“-l
+挪…….OFIN-0
㈣….m..P ush・0
“….m..Reset-O
{蜊……0.S州-O
一●Whh-1736 6
一Z
一●Uoent∞№-0

a_|翊JlI-0red07(c∞E0
●TO)Opaom-Ham
Data《o㈣
(c)
图4.9
(d)
TCP关闭连接时的数据包首部
4.1.4模块中数据结构
首先给出三种在系统中用到 的数据结构,并解释结构的构成和其中所有字段的
用途:
typedefstruct_RLI STHEAD{
40


华中科技大学硕士学位论文
unsignedhat
SourccIP;
DcstIP;
SourccPort;
De stPort;
Proto;
ConnectStat;
,/源m
//目的口
//源端
//目的端
u璐igned
int
unslgned
short
unslgncd
short
unslgned
char
unsigned
char
//协议类型TCP
//连接状态
or
UDP
unsigned
int
TotalNum;
LIsTNODE.FirstNode;
//包含应用层包的个数
//链表头节点
LISTNODE .LastNode;/,链表尾节点
unsigned
int
FriendHead ;
boolBSour;
//友端头节点
//源端判断位
}RLISTHEA D;
RLISTHEAD
RStreamHead[HASHSIZE];
在该数组存 储一次TCP会话内容,包括源m、目的m、源端口、目的端口、
协议类型、TCP会话的连接状态、该 此会话中应用层数据包的个数以及应用层包队
列的头尾指针。由于一次TCP会话中涉及到通信双方,当 IP地址A给IP地址B
发送一个数据报时,源IP为A目的口为B,当地址B给地址A一个应答时,源
IP为B目的IP为B。根据这种情况,分别将这两个TCP报头为数组的两个地址中,
但指向 同一个应用层包队列。为了更好的跟踪整个连接,在该结构中还定义了两个
字段。假设A一>B的TCP 会话存储在数组位置l,B->的TCP会话存储在数组位
置100,为了跟踪整个TCP会话过程,将 数组位置l的友端定义为100,数组位置
100的友端定义为l,这个两个位置指向同一个TCP会话 链队。这样便不能判断哪
个是服务器端哪个是客户端,所有在该结构中还定义了一个服务器端判断位Is Sour。
如果该判断位为true,则该数组元素中的源IP为服务器端,目的m为客户端[柏421 。
typedefstruct
ListNode

unsignedlon g
AckNum;
SqeNum;
//tcp包的确认号
//tcp包的顺序 号
unsigned
long
unsigned
short
Sour ccPog;
朦端口号
41


华中科技大学硕士学位论文
uns igned
int
PackLen;
f隗长霞
//指向应用层数据包
cha—ptProtoText;
sttuct
ListNock*ptNextNode; //指向下一个数据节点
}LISTNODE;
该结构用来存储TCP会话中的数据报部分报文 。需要注意的是字段PackI肋
存储应用层数据包的长度。AckNum字段存储的是一个TCP包的 确认号,SqeNum
字段存储的是一个TCP包的顺序号,SourcePort字段存储的是一个T CP包中的源端
口号,另外还有一个指向下一个节点的指针。
另外一个重要的结构是五元组,一 次TCP传输中的五个固定的元素值,源m、
目的IP、源端口号、目的端口号码和TCP协议号称为五 元组。
以上是流重组模块中用到的两种重要的数据结构并加以分析。以上结构的设计
目的是为了 协议分析以及流重组时算法的快速准确。以下具体给出流重组的算法思
想。
4.1.5流重组算 法思想
流重组模块中,使用链队跟踪TCP会话,将整个会话过程中的TCP报文按顺
序存储在 一个链队中。该次TCP会话的信息存储在数组RStreamHead[HASHSIZE]
的两个元 素中,这两个元素用来跟踪整个TCP的会话过程直至连接的断开。整个
TCP会话流的重组分为两个模 块:哈希模块和会话跟踪模块【43】。
哈希模块有多重作用。首先,哈希模块能够根据m包的五元组计 算该TCP包
属于数组中哪个元素指向的TCP会话队列,其中涉及到冲突的解决方案。其次,哈
希模块能够判断该TCP报文是否是正确到达的TCP报文,如果不是则抛弃该报文。
最后,哈希模块 能够判断数组是否溢出,如果溢出则报出溢出信息。
哈希模块提供接口以供会话跟踪模块使用,接口定义 为unsigned
hashkey[13],PACKETSTATE
pacstaLtms igned
int
int
hash(char
hashflag);接口的输 入有三个:当前
的TCP包信息pacstat中存储该TCP包的相关信息,哈希关键字段hashk ey[13]存储
五元组按位拼接的13字节的信息,哈希标志位用来标志是否是计算友端对应的数组序列1441|4f1.
哈希算法好坏的选择关系到能否正确及时的计算出数组中的地址[461 。比较几种
哈希算法之后,选择了按位异或。先将五元组按位填入哈希关键字段hashkey[13] ,
42


华中科技大学硕士学位论文
做如下操作147-501。
for6nt
i20;i<sizeof(hashkey);i++)
hashnum“0 aashnum’17)Ahashkey[i];
hashnum=hashnum%HASHSlZ E;
hashnum的初值可以为0或者l。
图4.10给出了HASH算法的具体流程。图4.10
HASH算法具体流程
经过流重组模块后,系统抓取到的网关上的IP数据报能 根据不同会话来组成
一次一次的会话,并且能顺利跟踪一次TCP会话。当会话结束时,流重组模块能够


华中科技大学硕士学位论文
将一次会话中所传输的应用层数据报按顺序排列并传 递给应用层协议解析模块,以
便应用层协议解析模块解析应用层协议。
会话跟踪模块根据TCP 标志位的不同来存储一次TCP会话过程中的数据包,
根据对TCP包的观察,可以根据顺序号和确认号 来判断新来的TCP包是否正确。
设队尾的TCP包确认号为oldack,顺序号为oldsqe,长 度为oldlen。新来的包确认
号为newack,顺序号为newsqe,长度为newlen。如 果满足oldsqu+oldlcn==newack
和newsqe=-=oldack,那么新来的 包是正确的。图4.11给出了具体的会话跟踪算法。
图4.1l会话跟踪算法


华中科技大学硕士学位论文
4.2控制台中协议还原的实现
监控控制台有两部分的作用,一部分 是根据目前流行的协议分析数据报流,丢
弃无效信息,提取出所需要的网络会话信息。另外一个部分是控 制系统的运行和显
示统计信息。可见,控制台分为协议处理和用户控制界面两个部分用户。
4. 2.2
SMTP的还原
如2.2.1所介绍的,SMTP协议运转的基本模式是:处于“命令一 应答”状态时,
客户端发出命令,服务器端返回应答,这种交互重复进行,通讯都是以文本行为基
本单位,有效的命令和应答都只占有一行.当客户端发出“DATA”命令且服务器
端发回可以发送的 应答后,进入“数据”状态,客户端就发送电子邮件,发送完毕
后,服务器端发回应答,重新回到“命令 一应答”状态。如果客户端和服务端都支
持流水线方式,则客户端可以在一个命令的应答返回之前,继续 发出一个或多个命
令,服务器端则依次对这些命令进行应答。
由于SMTP协议中所有的命令、 应答和数据都是文本行为基本单位,SMTP还
原对象内部使用了两个文本行收集对象,用于客户端和服 务器端传输数据中文本行
的收集。SMTP还原对象根据状态的转换区分出命令、应答和数据。
为了区分出客户端发送的信息是命令还是数据,SMTP还原对象必须实现包含
了“命令一应答”和“数 据”两种状态的状态转换。
对于电子邮件的解码,SMTP还原对象生成一个电子邮件还原对象来实现. 注
意,SMTP还原对象不能直接将数据交给电子邮件还原对象处理,这是因为SMTP
协议为 了服务器端能监测到电子邮件的结尾,对电子邮件的每一行都进行了这样的
编码:如果行以“.”开始, 就在此行的开头添加一个。.”。为此,SMTP应该进行
相应的解码:如果行以“.”开始并包含了其 他字符,就去掉此“.”[51]1521。
对于命令的流水线式发送,SMTP还原对象用一个命令队 列来缓冲命令:每还
原出一个命令,就放入命令队列,每还原出一个应答,就从命令队列中按“先进先< br>出”的顺序取出一个命令,这个命令就是此应答所对应的命令。SMTP还原对象每
还原出一个命 令、应答和电子邮件的一部分,就实时地传递给文件信息收集模块进
行分析和处理。

华中科技大学硕士学位论文
4.2.2
POP3的还原
POP3协议运转的基本模 式和SMTP协议十分类似:处于“命令一应答”状态
时,客户端发出命令,服务器端返回应答。这种交 互重复进行,通讯都是以文本行
为基本单位,有效的命令和应答都只占有一行。当客户端发出“RETR ”命令且且
服务器端发回”+OK”的应答后,进入“数据”状态,服务器端就发送电子邮件,
直到发送“XrXn.XrXn”作为结束标志,结束电予邮件的发送,重新进入“命令一应答”
状态。 如果客户端和服务器端都支持流水线方式,则客户端可以在一个命令的应答
返回之前,继续发出一个或多 个命令,服务器端则依次对这些命令进行应答【5111521。
因此,和SMTP还原对象一样,PO P3还原对象也要区分出命令、应答和数据,
也要进行状态转换,也要进行去“.”的处理,也要使用命 令队列缓冲命令,也需要
将各种信息实时地传递给文件信息收集模块进行分析和处理。
4.2. 2
IrI’P的还原
如2.2.3所示,FTP协议的运转模式如下:在控制连接上,客户端发 出命令,
服务器返回应答,命令和应答都是以文本行作为基本单位,当需要传输目录信息和
文件 内容等数据时,数据通道就建立起来并传输数据,传输完毕时,数据通道马上
关闭,每一次数据的传输都 需要建立一次数据通道。
FTP还原对象对于控制连接的还原,和SMTP还原对象和POP3还原对象 一样,
生成了两个文本行收集器对象,用于收集客户端和服务器发出的文本行。由于FTP
协议 不支持流水线方式,命令和应答总是交互进行,因此,一个命令后的应答必然
和此命令相对应。只对控制 连接进行监视,无法获得数据连接中传输的数据。想象
这样一种情况:在实际的网络中,有多个FTP控 制连接同时存在,因此在监控系统
进程中有多个FTP还原对象与之对应,当一个FTP控制连接建立数 据连接时,监
控系统必须能找到和此数据连接相对应的FTP还原对象,才能让FTP还原对象获
得相应数据连接中传输的数据。为此,先了解一下FTP数据连接建立的过程。客户
端和服务器端有两 种方式建立数据连接,分别是主动模式和被动模式。
所谓主动模式就是,客户端在建立数据连接前发出“ PORT”命令,其中的参
数指明了客户端等待建立数据连接的m地址端口,服务器收到“PORT"命 令后,主
动向参数指明的地址和端口发起建立数据连接;所谓被动模式就是,客户端在建立数
据 连接前发出“PASV”命令,要求服务器在应答中指明等待建立连接的m地址和

借口作文-个人工作计划


民族风俗作文-羊年对联


山东艺考-实习总结报告


幼师面试自我介绍-中考成绩查询电话


国家奖学金申请条件-华东师范大学研究生招生网


责任感作文-教师节哪天


双龙洞的资料-个人年终总结报告


铁佛寺-育儿心得体会