扫一扫
关注微信公众号

封包探嗅器(Sniffer)
2005-12-05   

1. 什么是封包探嗅器 ?
封包探嗅器是一种类似于窃听器的装置.主要是用来探测网络上他人的封包内容.就像一个电话窃听器一样,可以让FBI(美国联邦调查局)去监听其它人的谈话内容..而"封包探嗅器"这个程序乃是让你去拦截他人的所有封包信息.
无论如何,计算机之间的对谈包含了许多看似杂乱的二进制编码资料,因此网络封包探嗅器同样提供了一个叫做"通讯协议分析"的功能,它可以将所有计算机之间所传递的封包信息予以译码及分析,以利我们更加暸解其封包的内容.

2. 封包探嗅器的用途 ?
封包探嗅器程序有两个主要的使用领域 ..
商业类型的封包探嗅器通常被使用于网管维护网络上的通讯是否是正常,另一种就是地下类型的封包探嗅器,主要是被用来入侵他人计算机之用..典型的封包探嗅器程序特征包括了<1>自动从网络中过滤及转换有用的信息,如使用者名称及密码,让骇客或刽客可用于入侵系统之用.<2>将封包资料转换成人类可易于辨读的格式.<3>网络环境中通讯失效分析,例如为何A电脑无法与B计算机沟通.<4>探测网络环境下的通讯瓶颈.<5>或者是可用来探测有无骇客存在于网络上,以防止其入侵.<6>网络通讯记录,记录下每一笔通讯的资料,此记录可用于暸解骇客入侵的路径.

3. 封包探嗅器是如何工作的 ?
由于以太网络是建立在资源共享的概念下,因此所有区域内的计算机都是共享同一条以太网线.这喑喻着所有在这局域网络内的计算机沟通都可以被探知.另外由于以太网络卡内建了一个称之为"封包过滤器Filter"的功能,它会将不属于它的封包讯息给忽略掉,也就是它会忽略掉与它MAC(Media Access Control)地址不同的封包.但封包探嗅器的程序则会把这项硬件功能给关闭,并将以太网络卡设定成"随机处理模式Promiscuous Mode",也就是不做任何封包的过滤,但前提是要在同一个局域网络中.

4. 何谓MAC(Media Access Control)
在多部计算机共同分享同一条以太网络线的环境下,每台计算机都有一个独一无二的身份验证码,这个身份验证码也就是MAC Address(也就是所谓的网络卡实体地址).当每一片网络卡被生产出来时,网络卡生产厂商会付予每片网络卡一个流水编号,这个流水编号是不可能重复的.其格式看起像是MAC:00-40-05-A5-4F-9D(例子而己,每片网络卡的实体地址都是不一样的,除非生产者有特别用途,才会付予同样的MAC编号)

5. 以太网络通讯格式
一个以太网络通讯封包标头格式看起来像是..
Destination MAC ->6Bytes
Source MAC->6Bytes
08 00->2Bytes
20Bytes IP Header
20Bytes TCP Header
Packet
CRC->4Bytes

Destination MAC与 Source MAC共有12个字节,也就是每个MAC地址有6Bytes*8Bit=48Bits,..这48个Bits的前24Bits是用来验证以太网卡的生产厂商,另24Bits则是用来存放由网络卡生产厂商所指定的流水编号(也就
是MAC编号),这可用来保证世界上没有任何一片网络卡拥有同一流水编号,除非厂商另有用途…因此我们给予后面这24个bits一个专有名称,叫做"Organizationally Unique Identifier",简称OUI,翻成中文就是组织化单一验证码.其实这个OUI真正也只用到了22Bits,另外的2个Bits是被用来做为其它目地的用途.1个Bit用来指示假如它是一个"Broadcast/Multicast"地址,另外1个Bit用来做为假如它的网络卡被重新指定为"Locally Adminis-tered Address".
08 00则是指出紧接着的封包格式是TCP/IP型式的封包(不知有无翻译错误,原文为"The ethertype 0x0800 to
indicate that the other end's TCP/IP stack Should process the frame" ,.TCP及IP的标头同样各有20个Bytes存放着IP及TCP层的标头信息.

它同样附加了4个Bytes于结尾的Checksun/CRC(一种用来验证封包资料在传输的过程中有无任何资料遗失的方式).然后网络适配卡把上述的资料以位(0与1)的方式传送到网络上,所有在网络上的其它网络硬件(包括路由器Router's等硬件)看到这个封包时,首先会去比较这个封包中的Destination MAC地址是否为自己所吻合的MAC地址.假如不吻合,则丢弃这个封包.这些动作都己在网络硬件层被执行完成.(也就是你的ISP那边,因为你一上网时,你的ISP主机就会将你的MAC地址给记录下来).当一个Router路由器的以太网络接口收到这个吻合的封包时,它会将封包由网络上读取下来,并且将封包的前14Bytes和封包的后4Bytes给移除掉,它只保留在0x0800后的网络封包格式资料,并决定是否要不要送到下一个Router去做处理或根据TCP/IP内所指定的地址传送到正确的目的地(也就是你的计算机上).上述的这些, 应只有拥有Router的机器才可以看到以太网络上的封包标头资料,其它的机器 应该都会忽略掉(Ignore it).

6.何谓通讯协议分析 (Protocol Analysis)?
通讯协议分析是用来进行截取网络封包并予以解析以得知其封包内容.当一笔封包资料被传输上网络,它是一个己"被封包化"的资料,意思是一笔资料可能被分割成多个封包,并且每个封包都是被单独的传送到网络上,然后由接收端进行封包资料的重组工程.来个范例:你可能从网络上去下载一个档案,假如这个档案有
45000个Bytes(一般典型的封包大小约为1500Bytes左右),因此这个你要下载的档案就会被切割成30个封包,并且一一的传送给你,再由你计算机的网络层予以组
合成一个完整档案.
底下是一个范例,这个封包乃是由封包探嗅器所截取而来的.

Offset Hex(16进位值) ASCII值
----------------------------------------------------------------------
000 00 00 BA 5E BA 11 00 A0 C9 B0 5E BD 08 00 45 00 ...^......^...E.
010 05 DC 1D E4 40 00 7F 06 C2 6D 0A 00 00 02 0A 00 ....@....m......
020 01 C9 00 50 07 75 05 D0 00 C0 04 AE 7D F5 50 10 ...P.u......}.P.
030 70 79 8F 27 00 00 48 54 54 50 2F 31 2E 31 20 32 py.'..HTTP/1.1.2
040 30 30 20 4F 4B 0D 0A 56 69 61 3A 20 31 2E 30 20 00.OK..Via:.1.0.
050 53 54 52 49 44 45 52 0D 0A 50 72 6F 78 79 2D 43 STRIDER..Proxy-
060 6F 6E 6E 65 63 74 69 6F 6E 3A 20 4B 65 65 70 2D onnection:.Keep-
070 41 6C 69 76 65 0D 0A 43 6F 6E 74 65 6E 74 2D 4C Alive..Content-
080 65 6E 67 74 68 3A 20 32 39 36 37 34 0D 0A 43 6F ength:.29674..Co
090 6E 74 65 6E 74 2D 54 79 70 65 3A 20 74 65 78 74 ntent-Type:.text
0A0 2F 68 74 6D 6C 0D 0A 53 65 72 76 65 72 3A 20 4D /html..Server:.M
0B0 69 63 72 6F 73 6F 66 74 2D 49 49 53 2F 34 2E 30 icrosoft-IIS/4.0
0C0 0D 0A 44 61 74 65 3A 20 53 75 6E 2C 20 32 35 20 ..Date:.Sun,.25.
0D0 4A 75 6C 20 31 39 39 39 20 32 31 3A 34 35 3A 35 Jul.1999.21:45:5
0E0 31 20 47 4D 54 0D 0A 41 63 63 65 70 74 2D 52 61 1.GMT..Accept-Ra
0F0 6E 67 65 73 3A 20 62 79 74 65 73 0D 0A 4C 61 73 nges:.bytes..Las
100 74 2D 4D 6F 64 69 66 69 65 64 3A 20 4D 6F 6E 2C t-Modified:.Mon,
110 20 31 39 20 4A 75 6C 20 31 39 39 39 20 30 37 3A .19.Jul.1999.07:
120 33 39 3A 32 36 20 47 4D 54 0D 0A 45 54 61 67 3A 39:26.GMT..ETag:
130 20 22 30 38 62 37 38 64 33 62 39 64 31 62 65 31 ."08b78d3b9d1be1
140 3A 61 34 61 22 0D 0A 0D 0A 3C 74 69 74 6C 65 3E :a4a"....
150 53 6E 69 66 66 69 6E 67 20 28 6E 65 74 77 6F 72 Sniffing.(networ
160 6B 20 77 69 72 65 74 61 70 2C 20 73 6E 69 66 66 k.wiretap,.sniff
170 65 72 29 20 46 41 51 3C 2F 74 69 74 6C 65 3E 0D er).FAQ.
180 0A 0D 0A 3C 68 31 3E 53 6E 69 66 66 69 6E 67 20 ...Sniffing.
190 28 6E 65 74 77 6F 72 6B 20 77 69 72 65 74 61 70 (network.wiretap
1A0 2C 20 73 6E 69 66 66 65 72 29 20 46 41 51 3C 2F ,.sniffer).FAQ
1B0 68 31 3E 0D 0A 0D 0A 54 68 69 73 20 64 6F 63 75 h1>....This.docu
1C0 6D 65 6E 74 20 61 6E 73 77 65 72 73 20 71 75 65 ment.answers.que
1D0 73 74 69 6F 6E 73 20 61 62 6F 75 74 20 74 61 70 stions.about.tap
1E0 40 69 6E 67 20 69 6E 74 6F 20 0D 0A 63 6F 6D 70 ping.into...comp
1F0 75 74 65 72 20 6E 65 74 77 6F 72 6B 73 20 61 6E uter.networks.an
....
14Bytes的以太网路标头值(Ethernet Header)
20Bytes的IP标头值(IP Header)
20Bytes的TCP标头值(TCP Header)
之后就是档案的内容并用一组换行位代表资料结束(0D 0A 0D 0A.因资料太多
所以省略掉不列出来),最后就是Checksum/CRC的4个Bytes.
这是一笔网络封包的16进位格式资料"Hexdump",一个"Hexdump"共分成三个主要字段,<1>每段资料的位移地址(Offset)
<2>16进位格式的资料 <3>ASCII文字
资料.同时检视16进位值hex及ASCII总比起单独检视一种格式好;例如,在这个
封包的标头栏前14个Bytes以ASCII看起来像是一堆乱码,但是由hex来看就可
看出是MAC地址.
通讯协议分析程序会把所拦截到的封包以下列的方式逐条列出并予以阐明..

ETHER: Destination address : 0000BA5EBA11
ETHER: Source address : 00A0C9B05EBD
ETHER: Frame Length : 1514 (0x05EA)
ETHER: Ethernet Type : 0x0800 (IP)
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 1500 (0x5DC)
IP: Identification = 7652 (0x1DE4)
IP: Flags Summary = 2 (0x2)
IP: .......0 = Last fragment in datagram
IP: ......1. = Cannot fragment datagram
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 127 (0x7F)
IP: Protocol = TCP - Transmission Control
IP: Checksum = 0xC26D
IP: Source Address = 10.0.0.2
IP: Destination Address = 10.0.1.201
TCP: Source Port = Hypertext Transfer Protocol
TCP: Destination Port = 0x0775
TCP: Sequence Number = 97517760 (0x5D000C0)
TCP: Acknowledgement Number = 78544373 (0x4AE7DF5)
TCP: Data Offset = 20 (0x14)
TCP: Reserved = 0 (0x0000)
TCP: Flags = 0x10 : .A....
TCP: ..0..... = No urgent data
TCP: ...1.... = Acknowledgement field significant
TCP: ....0... = No Push function
TCP: .....0.. = No Reset
TCP: ......0. = No Synchronize
TCP: .......0 = No Fin
TCP: Window = 28793 (0x7079)
TCP: Checksum = 0x8F27
TCP: Urgent Pointer = 0 (0x0)
HTTP: Response (to client using port 1909)
HTTP: Protocol Version = HTTP/1.1
HTTP: Status Code = OK
HTTP: Reason = OK

尽管通讯协议分析程序所分析出来的资料是难懂的,也需要相当程度的网络通讯
协议知识去暸解,但无论如何它也提供了一个更易于暸解的信息,这对网管人员来讲是有很大的助益去明暸网络的通讯状态及试着去排除通讯障碍,甚或是让骇
客试着去入侵他人的计算机系统.

7.我是否可以更动我的MAC地址 ?
当然,第一..你能够"Spoof隐藏"你的地址,记住MAC地址只是封包信息中的一部份而己,因此当你送出一个以太网络封包到网络上前,你能够去覆写你封包中所有的内容,当然使用相当效果的程序也是可以的.第二..大多数的网络卡允许你去重新组态化"Runtime执行时期"的MAC地址,例如某些网络卡则提供了直接于WINDOWS的控制台组态MAC地址的功能.第三..你也能够重新烧录新的MAC地址到网络卡的EEPROM(电子式可抹写内存)中,但前题是你要暸解你的网络卡是使用何种规格的网络芯片组(Chipset),这也将永远的更改你的网络卡上的MAC地址.

8.我是否能够探嗅两台计算机间的对谈而不连结上他们的局域网络吗 ?
(注意这只是针对局域网络而言,A及B计算机均属于同一局域网络)..
例如:A计算机在士林,B计算机在天母,两台计算机正在交换封包讯息,而你在桃园..一个距离遥远的地方(你不是属于这个局域网络的一份子),你想要去探嗅他们的计算机..答案是不可能,因为你必须要是这个局域网络的一位成员,才有可能探嗅双方的封包传递(也就是说首先你要先入侵这个局域网络才可).
假如你真的是一位技术高超的骇客或刽客的话,底下有二个方法可让你入侵及探嗅对方,典型的方法如下..
1> 入侵A或B的计算机并且安装一个可让你远程控制的探嗅器软件.
2> 入侵其局域网络内的伺服主机并安装可远程控制的探嗅器软件.

9.要如何让他人无法使用封包探嗅器来得知你的封包内容 ?
你或许可以着手于局域网络内的预防措施,但你却很难去防范由外界网络而来的
探嗅,因此最好的防范措施就是把你的资料加密,让对方就算拦截到你的封包,也无法进行解密.

以上的文章是由一份外国的FAQ翻译而来,或许不甚详尽,但却有助于对封包探嗅器作动原理的粗略认识.


热词搜索:

上一篇:用sniffer诊断Linux网络故障
下一篇:用SNIFFER透视动态域名

分享到: 收藏