编者按: Sniffer是一款有名的网络监听技术,它是进行网络管理、网络取证的有力工具。然而,成也Sniffer,败也Sniffer,当被黑客或不怀好意之人利用时,则非常危险。现在,我们通过正反两篇来分析Sniffer,上篇介绍通过Sniffer来学习网络管理,本篇极有实际价值,而下篇则介绍Sniffer被黑客操纵而作乱。
【IT168 专稿】最近正在学习SNMP编程,从而进行更有效的网络管理,近期的重点是SNMP的5个基本操作(参见RFC1157文档,即get-request get-next-request get-response set-request trap),但是只看书中的描述不直观,如果能看到实在的操作就更好了,Sniffer 软件可以很好的提供给我们这方面的信息,下面我结合Sniffer Pro这款软件的操作介绍一下SNMP的5个基本操作。
说起Sniffer Pro这款软件,大家可能都听说过,比如利用Sniffer Pro查看网络故障,或是用Sniffer Pro盗取用户资料等,但是相信大家把Sniffer Pro下载下来使用以后都发现,并不能像网络高手那样运用自如,为什么呢?其实还是我们对于网络协议不够了解,渐渐的就对Sniffer Pro失去了兴趣。但是最近随着学习的深入,我渐渐的转变了观念,Sniffer Pro应该是一款让我们学习网络协议的工具,我们可以通过学习Sniffer Pro的使用来学习和熟悉网络协议,下面就是我这一段时间来的学习心得。
一、网络拓朴:网络管理学习的环境
这次组网所需的设备是一台CISCO3550交换机和一台PC机,交换机支持SNMP协议,PC机上运行Sniffer Pro和MIB浏览器程序,朴拓如下:

|
设备 |
Ip地址 |
|
CISCO3550交换机 |
10.66.0.1 |
|
PC机 |
10.66.1.118 |
软件设置如下:
(一)交换机上设置
snmp-server community public RO ――启用SNMP协议,但是只设置了只读属性
snmp-server packetsize 484 ――产生的应答PDU大小不超过484字节
snmp-server enable traps snmp authentication warmstart linkdown linkup coldstart warmstart
――发送5种标准定义的Trap
snmp-server host 10.66.1.188 public ――发送Trap的目的主机
PC机上相关程序如下:
Sniffer 程序我选用是Sniffer Pro,MIB浏览器程序我选择是MG-SOFT MIB Browser,这两款程序都是非常经典的程序。
二、Sniffer Pro的初步设置
Sniffer Pro要进行包的捕获,但是捕获到的信息太多了,我们如何在开始捕获的时候就开始筛选呢?进行如下的设置即可:"捕获"-"定义过滤器"-"地址"-"地址类型","位置1"中填入"10.66.1.188","位置2"中填入"10.66.0.1",点击"确定"就可以了。如图1所示

图1
这下子就简单多了,会定义过滤器,使我们能够自如的使用Sniffer Pro软件又近了一步。
三、MIB浏览器的使用:捕获报文内部信息
打开MIB Browser程序,在"Remote SNMP agent"中填入10.66.0.1,然后依次进入MIB Tree-iso-org-dod-internet-mgmt-mib-2-system,里面有sysDescr、sysObjectID、sysUpTime各项,这时打开Sniffer程序,打开捕获,然后再进入MIB Browser程序,选中sysDescr,点鼠标右键,选"Get",在界面的右边会出现"1: sysDescr.0 (octet string) Cisco Internetwork Operating System Software IOS (tm) C3550 Software (C3550-I5Q3L2-M), Version 12.1(14)EA1a, RELEASE SOFTWARE (fc1)Copyright (c) 1986-2003 by cisco Systems, Inc.Compiled Tue 02-Sep-03 04:08 by antonino",如图2所示

图2
这时就可以进入Sniffer程序,点击"捕获"-"停止并显示"
得到的结果分析如图3所示:

图3
以下为报文:
30 82 01
整个报文是一个ASN.1序列结构,根据TLV编码(即传输数据的类型(Tag)、大小(Length)、值(Value))原则,解释如下:
30:序列类型(Message)的传输标志
01 0a:表示后面数据的字节数,十进制266。后面跟的字节数手工统计不太方便,其实只要将后面的字节全部选中,利用WORD的字数统计功能统计一下就可以了。
02 01 00:Message的第1个组件version,整数0的BER(基本编码规则Basic Encoding Rules)编码
04 06 70 75 62 6c 69 63:Message的第2个组件community,字符串类型值"public"的BER编码,我们可以用一个表来让这个结构更清晰。
|
十六进制数(ASCII码) |
字符值 |
|
70 |
p |
|
75 |
u |
|
62 |
b |
|
|
l |
|
69 |
i |
|
|
c |
四、01组合里查到只读密码
到这儿,我们认识网络协议又近了一步,即那些0101的组合里真的可以带给我们一些实实在在的信息,这里就告诉了我们只读共同体(即只读密码)是public。
余下的所有字节,是PDU(Message的第3个组件,Get response)的BER编码
a2 序列结构(Getreponse-PDU)的传输标志
fc 数据所占字节度,十进制为252(用WORD统计了一下,又是一点不差)。
02 02 01 dd Getreponse-PDU的第1个组件request-id,十进制整数477的BER编码
02 01 00 Getreponse-PDU的第2个组件error-status,整数0的BER编码
02 01 00 Getreponse-PDU的第3个组件error-status,整数0的BER编码
余下的所有字节,是Getreponse-PDU的第4个组件variable-bindings的BER编码
30:序列类型(VARBINDLIST)的传输标志
ef 数据所占长度,十进制为239
06 08 2b 06 01 02 01 01 01 00:第1个组件name,对象标识符1.3.6.1.2.1.1.1.0的BER编码
下面这一长串
04 81 df 43 69 73 63
是第二个组件value的BER编码,也就是"Cisco Internetwork Operating System Software IOS (tm) C3550 Software (C3550-I5Q3L2-M), Version 12.1(14)EA1a, RELEASE SOFTWARE (fc1)Copyright (c) 1986-2003 by cisco Systems, Inc.Compiled Tue 02-Sep-03 04:08 by antonino"这一串字符的编码。
好了,介绍到这儿就结束了,以上就是我学习Sniffer软件和SNMP协议的心得,供大家参考。