《网络安全》课程论文.docx
《《网络安全》课程论文.docx》由会员分享,可在线阅读,更多相关《《网络安全》课程论文.docx(7页珍藏版)》请在冰点文库上搜索。
《网络安全》课程论文
学号
1042151114
安徽新华学院
《网络安全》课程论文
题目:
如何利用嗅探器TcpDump分析网络安全
学院信息工程学院
专业班级10计算机科学与技术
学生姓名何明俊
教师管锦亮
提交日期二零一二年十月
如何利用嗅探器TcpDump分析网络安全
前言:
在如令网络系统中,随着网络重要性、复杂性的不断增长,作为一名网络工程师、监测者、分析者或者是网络性能的评估者,您所扮演的角色对公司的成功是至关重要的。
为了更好的完成工作,您需要透视整个网络,识别关键的性能问题——从应用的响应时间到带宽的瓶颈以至于识别网络每一层所出现的问题。
在您每天的工作中,常常会着眼于未来用新的技术和应用扩展您的网络。
网络探针分布在重要网段,监视该网络线路上各协议,各计算机占用情况,监控网络上各种业务的网络流量及带宽,记录网络操作,实现分布集中的网络分析Sniffer系统。
本文将为你介绍如何利用嗅探器(sniffer)之网络数据采集分析工具TcpDump来详细网络及其安全分析。
一、嗅探器技术在网络中的应用
1、Sniffer简介
Sniffer即嗅探器的英文写法,嗅探器(sniffer)是最常见,也是最重要的技术之一。
用过windows平台上的sniffer工具(例如,netxray和snifferpro软件)的朋友可能都知道,在共享式的局域网中,采用sniffer工具简直可以对网络中的所有流量一览无余!
Sniffer工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。
由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。
其实,sniffer工具既可以适合于黑客的使用,也同样有利于网络管理员和网络程序员。
对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过sniffer工具来分析原因,找出造成网络阻塞的来源。
对于网络程序员来说,通过sniffer工具来调试程序。
它也可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。
简单一点解释:
一部电话的窃听装置,可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。
可是,计算机直接所传送的数据,事实上是大量的二进制数据。
因此,一个网络窃听程序必须也使用特定的网络协议来分解嗅探到的数据,嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。
计算机的嗅探器比起电话窃听器,有他独特的优势:
很多的计算机网络采用的是"共享媒体"。
就是说,你不必中断他的通讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。
我们称这种窃听方式为"基于混杂模式的嗅探"(promiscuousmode)。
尽管如此,这种"共享"的技术发展的很快,慢慢转向"交换"技术,这种技术会长期内会继续使用下去,它可以实现有目的选择的收发数据。
2、Sniffer在工作原理
以太网的数据传输是基于"共享"原理的:
所有的同一本地网范围内的计算机共同接收到相同的数据包。
这意味着计算机直接的通讯都是透明可见的。
正是因为这样的原因,以太网卡都构造了硬件的"过滤器"这个过滤器将忽略掉一切和自己无关的网络信息。
事实上是忽略掉了与自身MAC地址不符合的信息。
嗅探程序正是利用了这个特点,它主动的关闭了这个嗅探器,也就是前面提到的设置网卡"混杂模式"。
因此,嗅探程序就能够接收到整个以太网内的网络数据了信息了。
二、网络数据采集分析工具TcpDump的应用
1、网络数据采集分析工具TcpDump的简介
顾名思义,TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。
因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
我们用尽量简单的话来定义tcpdump,就是:
dumpthetrafficeonanetwork.,根据使用者的定义对网络上的数据包进行截获的包分析工具。
作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东西之一。
tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。
因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
2、网络数据采集分析工具TcpDump的安装
在linux下tcpdump的安装十分简单,一般由两种安装方式。
一种是以rpm包的形式来进行安装。
另外一种是以源程序的形式安装。
rpm包的形式安装:
这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。
以超级用户登录,使用命令如下:
#rpm-ivhtcpdump-3_4a5.rpm
这样tcpdump就顺利地安装到你的linux系统中。
怎么样,很简单吧。
源程序的安装:
既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢?
其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。
所以我特别建议朋友们都采取这种源程序的安装方法。
第一步.取得源程序在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包,这种分发包有两种形式,一种是tar压缩包(tcpdump-3_4a5.tar.Z),另一种是rpm的分发包(tcpdump-3_4a5.src.rpm)。
这两种形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
#tarxvfztcpdump-3_4a5.tar.Z
rpm的包可以使用如下命令安装:
#rpm-ivhtcpdump-3_4a5.src.rpm
这样就把tcpdump的源代码解压到/usr/src/redhat/SOURCES目录下.
第二步.做好编译源程序前的准备活动
在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpdump软件所需的库文件。
同样,你同时还要有一个标准的c语言编译器。
在linux下标准的c语言编译器一般是gcc。
在tcpdump的源程序目录中。
有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。
在Makefile.in文件中,可以根据系统的配置来修改BINDEST和MANDEST这两个宏定义,缺省值是
BINDEST=@sbindir@
MANDEST=@mandir@
第一个宏值表明安装tcpdump的二进制文件的路径名,第二个表明tcpdump的man帮助页的路径名,你可以修改它们来满足系统的需求。
第三步.编译源程序
使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。
并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make命令则根据Makefile文件中的规则编译tcpdump的源程序。
使用makeinstall命令安装编译好的tcpdump的二进制文件。
总结一下就是:
#tarxvfztcpdump-3_4a5.tar.Z
#viMakefile.in
#./configure
#make
#makeinstall
普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
#tcpdump
tcpdump:
listeningonfxp0
11:
58:
47.873028bios-ns>bios-ns:
udp50
11:
58:
47.9743310:
10:
7b:
8:
3a:
56>1:
80:
c2:
0:
0:
0802.1dui/Clen=43
00000000008000001007cf0809000000
0e800000902b46950980870100140002
000f0000902b4695000800
11:
58:
48.3731340:
0:
e8:
5b:
6d:
85>Broadcastsape0ui/Clen=97
ffff00600004ffffffffffffffffffff
0452ffffffff0000e85b6d8540080002
06404d41535445525f57454200000000
000000
^C
tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。
然而更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。
使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。
tcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。
请使用mantcpdump查看这些过滤规则的具体用法。
显然为了安全起见,不用作网络管理用途的计算机上不应该运行这一类的网络分析软件,为了屏蔽它们,可以屏蔽内核中的bpfilter伪设备。
一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP堆栈才行。
在FreeBSD下,这就需要内核支持伪设备bpfilter。
因此,在内核中取消bpfilter支持,就能屏蔽tcpdump之类的网络分析工具。
并且当网卡被设置为混杂模式时,系统会在控制台和日志文件中留下记录,提醒管理员留意这台系统是否被用作攻击同网络的其他计算机的跳板。
May1516:
27:
20host1/kernel:
fxp0:
promiscuousmodeenabled
虽然网络分析工具能将网络中传送的数据记录下来,但是网络中的数据流量相当大,如何对这些数据进行分析、分类统计、发现并报告错误却是更关键的问题。
网络中的数据包属于不同的协议,而不同协议数据包的格式也不同。
因此对捕获的数据进行解码,将包中的信息尽可能的展示出来,对于协议分析工具来讲更为重要。
昂贵的商业分析工具的优势就在于它们能支持很多种类的应用层协议,而不仅仅只支持tcp、udp等低层协议。
从上面tcpdump的输出可以看出,tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。
显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump截获数据并保存到文件中,然后再使用其他程序进行解码分析。
当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。
FreeBSD提供的一个有效的解码程序为tcpshow,它可以通过PackagesCollection来安装。
#pkg_add/cdrom/packages/security/tcpshow*
#tcpdump-c3-wtcpdump.out
tcpdump:
listeningonfxp0
#tcpshow<tcpdump.out
---------------------------------------------------------------------------
Packet1
TIME:
12:
00:
59.984829
LINK:
00:
10:
7B:
08:
3A:
56->01:
80:
C2:
00:
00:
00type=0026
<***Nodecodesupportforencapsulatedprotocol***>
---------------------------------------------------------------------------
Packet2
TIME:
12:
01:
01.074513(1.089684)
LINK:
00:
A0:
C9:
AB:
3C:
DF->FF:
FF:
FF:
FF:
FF:
FFtype=ARP
ARP:
htype=Ethernetptype=IPhlen=6plen=4op=request
sender-MAC-addr=00:
A0:
C9:
AB:
3C:
DFsender-IP-address=202.102.245.3
target-MAC-addr=00:
00:
00:
00:
00:
00target-IP-address=202.102.245.3
---------------------------------------------------------------------------
Packet3
TIME:
12:
01:
01.985023(0.910510)
LINK:
00:
10:
7B:
08:
3A:
56->01:
80:
C2:
00:
00:
00type=0026
<***Nodecodesupportforencapsulatedprotocol***>
tcpshow能以不同方式对数据包进行解码,并以不同的方式显示解码数据,使用者可以根据其手册来选择最合适的参数对截获的数据包进行分析。
从上面的例子中可以看出,tcpshow支持的协议也并不丰富,对于它不支持的协议就无法进行解码。