一、前言
曾写过《用协议分析工具学习TCP/IP》一文, 有幸受到一些人的关注, 该文中用的工具是Iris, 其实Sniffer Pro是非常优秀的协议分析软件, 许多下载网站说它是最好的网络协议分析软件。 做为一名合格的网管肯定需要有这么一套好的网络协议分析软件, 它对分析网络故障等极为有用。 Sniffer Pro同时又是非常优秀的嗅探器, 也就是说它可以捕捉到网络中其它机器的帐号和密码。 本文介绍它的基本功能和用几个例子来演示捕捉密码的过程, 也算是对学习TCP/IP的一些补充。 介绍嗅探(Sniffer)原理的文章非常多, 本文就不啰嗦了。
二、运行环境及安装
Sniffer Pro可运行在局域网的任何一台机器上, 如果是练习使用, 网络连接最好用Hub且在一个子网, 这样能抓到连到Hub上每台机器传输的包。
本文用的版本是4.6, Sniffer Pro软件的获取可在http://www.baidu.com/或http://www.google.com中输入sniffer%20pro%204.6/ 中输入Sniffer Pro 4.6, 查找相应的下载站点来下载。 该版本是不要序列号的。
安装非常简单, setup后一路确定即可, 第一次运行时需要选择你的网卡。
最好在win2000下运行, 在win2003下运行网络流量表有问题。
三、常用功能介绍
1、Dashboard (网络流量表)
点击图1中①所指的图标, 出现三个表, 第一个表显示的是网络的使用率(Utilization), 第二个表显示的是网络的每秒钟通过的包数量(Packets), 第三个表显示的是网络的每秒错误率(Errors)。 通过这三个表可以直观的观察到网络的使用情况, 红色部分显示的是根据网络要求设置的上限。
选择图1中②所指的选项将显示如图2所示的更为详细的网络相关数据的曲线图。 每个子项的含义无需多言, 下面介绍一下测试网络速度中的几个常用单位。
在TCP/IP协议中, 数据被分成若干个包(Packets)进行传输, 包的大小跟操作系统和网络带宽都有关系, 一般为64、128、256、512、1024、1460等, 包的单位是字节。
很多初学者对Kbps、KB、Mbps 等单位不太明白, B 和 b 分别代表 Bytes(字节) 和 bits(比特), 1比特就是0或1。 1 Byte = 8 bits 。
1Mbps (megabits per second兆比特每秒), 亦即 1 x 1024 / 8 = 128KB/sec(字节/秒), 我们常用的ADSL下行512K指的是每秒?512K比特(Kb), 也就是每秒512/8=64K字节(KB)
<img></img>
<img></img>
图2
2、Host table(主机列表)
如图3所示, 点击图3中①所指的图标, 出现图中显示的界面, 选择图中②所指的IP选项, 界面中出现的是所有在线的本网主机地址及连到外网的外网服务器地址, 此时想看看192.168.113.88这台机器的上网情况, 只需如图中③所示单击该地址出现图4界面。
<img></img>
图3
图4中清楚地显示出该机器连接的地址。
点击左栏中其它的图标都会弹出该机器连接情况的相关数据的界面。
<img></img>
图4
3、Detail(协议列表)
点击图5所示的“Detail”图标, 图中显示的是整个网络中的协议分布情况, 可清楚地看出哪台机器运行了那些协议。 注意, 此时是在图3的界面上点击的, 如果在图4的界面上点击显示的是那台机器的情况。
<img></img>
图5
4、Bar(流量列表)
点击图6所示的“Bar”图标, 图中显示的是整个网络中的机器所用带宽前10名的情况。 显示方式是柱状图, 图7显示的内容与图6相同, 只是显示方式是饼图。
<img></img>
<img></img>
图7
5、Matrix (网络连接)
点击图8中箭头所指的图标, 出现全网的连接示意图, 图中绿线表示正在发生的网络连接, 蓝线表示过去发生的连接。 将鼠标放到线上可以看出连接情况。 鼠标右键在弹出的菜单中可选择放大(zoom)此图。
<img></img>
图8
四、抓包实例
1、抓某台机器的所有数据包
如图9所示, 本例要抓192.168.113.208这台机器的所有数据包, 如图中①选择这台机器。 点击②所指图标, 出现图10界面, 等到图10中箭头所指的望远镜图标变红时, 表示已捕捉到数据, 点击该图标出现图11界面, 选择箭头所指的Decode选项即可看到捕捉到的所有包。
<img></img>
图9
<img></img>
图10
<img></img>
图11
2、抓Telnet密码
本例从192.168.113.208 这台机器telnet到192.168.113.50, 用Sniff Pro抓到用户名和密码。
步骤1:设置规则
如图12所示, 选择Capture菜单中的Defind Filter, 出现图13界面, 选择图13中的ADDress项, 在station1和2中分别填写两台机器的IP地址, 如图14所示选择Advanced选项, 选择选IP/TCP/Telnet ,将 Packet Size设置为 Equal 55, Packet Type 设置为 Normal.。
<img></img>
图12
<img></img>
图13
<img></img>
图14
步骤2:抓包
按F10键出现图15界面, 开始抓包。
<img></img>
图15
步骤3:运行telnet命令
本例使telnet到一台开有telnet服务的Linux机器上。
telnet 192.168.113.50
login: test
Password:
步骤4:察看结果
图16中箭头所指的望远镜图标变红时, 表示已捕捉到数据, 点击该图标出现图17界面, 选择箭头所指的Decode选项即可看到捕捉到的所有包。 可以清楚地看出用户名为test密码为123456。
<img></img>
图17
解释:
虽然把密码抓到了, 但大家也许对包大小(Packet Size)设为55不理解, 网上的数据传送是把数据分成若干个包来传送, 根据协议的不同包的大小也不相同, 从图18可以看出当客户端telnet到服务端时一次只传送一个字节的数据, 由于协议的头长度是一定的, 所以telnet的数据包大小=DLC(14字节)+IP(20字节)+TCP(20字节)+数据(一个字节)=55字节, 这样将Packet Size设为55正好能抓到用户名和密码, 否则将抓到许多不相关的包。
<img></img>
图18
3、抓FTP密码
本例从192.168.113.208 这台机器ftp到192.168.113.50, 用Sniff Pro抓到用户名和密码。
步骤1:设置规则
如图12所示, 选择Capture菜单中的Defind Filter出现图19界面, 选择图19中的ADDress项, 在station1和2中分别填写两台机器的IP地址, 选择Advanced选项, 选择选IP/TCP/FTP ,将 Packet Size设置为 In Between 63 -71, Packet Type 设置为 Normal。 如图20所示, 选择Data Pattern项, 点击箭头所指的Add Pattern按钮, 出现图21界面, 按图设置OFFset为2F,方格内填入18, name可任意起。 确定后如图22点击Add NOT按钮,再点击Add Pattern按钮增加第二条规则, 按图23所示设置好规则, 确定后如图24所示。
<img></img>
图19
<img></img>
图20
<img></img>
图21
<img></img>
图22
<img></img>
图23
<img></img>
图24
步骤2:抓包
按F10键出现图15界面, 开始抓包。
步骤3:运行FTP命令
本例使FTP到一台开有FTP服务的Linux机器上
D:\>ftp 192.168.113.50
Connected to 192.168.113.50. 220
test1 FTP server (Version wu-2.6.1(1) Wed Aug 9 05:54:50 EDT 2000) ready.
User (192.168.113.50none)): test
331 Password required for test.
Password:
步骤4:察看结果
图16中箭头所指的望远镜图标变红时, 表示已捕捉到数据, 点击该图标出现图25界面, 选择箭头所指的Decode选项即可看到捕捉到的所有包。 可以清楚地看出用户名为test密码为123456789。
<img></img>
图25
解释:
虽然把密码抓到了, 但大家也许设不理解, 将图19中Packet Size设置为 63 -71是根据用户名和口令的包大小来设置的, 图25可以看出口令的数据包长度为70字节, 其中协议头长度为:14+20+20=54, 与telnet的头长度相同。 Ftp的数据长度为16, 其中关键字PASS占4个字节, 空格占1个字节, 密码占9个字节, Od 0a(回车 换行)占2个字节, 包长度=54+16=70。 如果用户名和密码比较长那么Packet Size的值也要相应的增长。
Data Pattern中的设置是根据用户名和密码中包的特有规则设定的, 为了更好的说明这个问题, 请在开着图15的情况下选择Capture菜单中的Defind Filter, 如图20所示, 选择Data Pattern项, 点击箭头所指的Add Pattern按钮, 出现图26界面, 选择图中1所指然后点击2所指的Set Data按钮。 OFFset、方格内、Name将填上相应的值。
同理图27中也是如此。
这些规则的设置都是根据你要抓的包的相应特征来设置的, 这些都需要对TCP/IP协议的深入了解, 从图28中可以看出网上传输的都是一位一位的比特流, 操作系统将比特流转换为二进制, Sniffer这类的软件又把二进制换算为16进制, 然后又为这些数赋予相应的意思, 图中的18指的是TCP协议中的标志位是18。 OFFset指的是数据包中某位数据的位置, 方格内填的是值。
<img></img>
图26
<img></img>
图27
<img></img>
图28
4、抓HTTP密码
步骤1:设置规则
按照下图29、30进行设置规则, 设置方法同上。
<img></img>
图29
<img></img>
图30
步骤2:抓包
按F10 键开始抓包。
步骤3:访问http://www.ccidnet.com/网站
步骤4:察看结果
图16中箭头所 指的望远镜图标变红时, 表示已捕捉到数据, 点击该图标出现图31界面, 选择箭头所指的Decode选项即可看到捕捉到的所有包。 在Summary中找到含有POST关键字的包, 可以清楚地看出用户名为qiangkn997, 密码为?, 这可是我邮箱的真实密码!当然不能告诉你, 不过欢迎来信进行交流。
<img></img>
图31
五、后记
本文中的例子是网内试验, 若捕捉全网机器的有关数据请将图13中的station设置为any<->any, 作为学习研究可以, 可别做坏事!如果要用好Sniff Pro必须有扎实的网络基础知识特别是TCP/IP协议的知识, 其实Sniff Pro本身也是学习这些知识的好工具。 Sniffer Pro是个博大精深的工具, 由于水平有限, 本文这是介绍了其中的一小部分, 希望能起到抛砖引玉的作用。
……