利用协议分析工具学习TCP/IP并捕获内网用户密码

简介:
一、前言
  曾写过《用协议分析工具学习TCP/IP》一文,有幸受到一些人的关注,该文中用的工具是Iris,其实Sniffer Pro是非常优秀的协议分析软件,许多下载网站说它是最好的网络协议分析软件。做为一名合格的网管肯定需要有这么一套好的网络协议分析软件,它对分析网络故障等极为有用。 Sniffer Pro同时又是非常优秀的嗅探器,也就是说它可以捕捉到网络中其它机器的帐号和密码。本文介绍它的基本功能和用几个例子来演示捕捉密码的过程,也算是对学习TCP/IP的一些补充。介绍嗅探(Sniffer)原理的文章非常多,本文就不啰嗦了。

二、运行环境及安装
  Sniffer Pro可运行在局域网的任何一台机器上,如果是练习使用,网络连接最好用Hub且在一个子网,这样能抓到连到Hub上每台机器传输的包。
  本文用的版本是4.6,Sniffer Pro软件的获取可在 [url]http://www.baidu.com/[/url] [url]http://www.google.com[/url] 中输入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)

learnTCP-IP_101.gif
                                              图1
learnTCP-IP_102.jpg
                                              图2
2、Host table(主机列表)
  如图3所示,点击图3中①所指的图标,出现图中显示的界面,选择图中②所指的IP选项,界面中出现的是所有在线的本网主机地址及连到外网的外网服务器地址,此时想看看192.168.113.88这台机器的上网情况,只需如图中③所示单击该地址出现图4界面。
learnTCP-IP_103.jpg
                                               图3
图4中清楚地显示出该机器连接的地址。
  点击左栏中其它的图标都会弹出该机器连接情况的相关数据的界面。
learnTCP-IP_104.jpg
                                              图4
3、Detail(协议列表)
  点击图5所示的“Detail”图标,图中显示的是整个网络中的协议分布情况,可清楚地看出哪台机器运行了那些协议。注意,此时是在图3的界面上点击的,如果在图4的界面上点击显示的是那台机器的情况。
learnTCP-IP_105.gif
                                             图5
4、Bar(流量列表)
  点击图6所示的“Bar”图标,图中显示的是整个网络中的机器所用带宽前10名的情况。显示方式是柱状图,图7显示的内容与图6相同,只是显示方式是饼图。
learnTCP-IP_106.jpg
                                             图6
learnTCP-IP_107.jpg
                                             图7
5、Matrix (网络连接)
  点击图8中箭头所指的图标,出现全网的连接示意图,图中绿线表示正在发生的网络连接,蓝线表示过去发生的连接。将鼠标放到线上可以看出连接情况。鼠标右键在弹出的菜单中可选择放大(zoom)此图。
learnTCP-IP_108.jpg
                                           图8
四、抓包实例
  1、抓某台机器的所有数据包
  如图9所示,本例要抓192.168.113.208这台机器的所有数据包,如图中①选择这台机器。点击②所指图标,出现图10界面,等到图10中箭头所指的望远镜图标变红时,表示已捕捉到数据,点击该图标出现图11界面,选择箭头所指的Decode选项即可看到捕捉到的所有包。
learnTCP-IP_109.gif
                                          图9
learnTCP-IP_110.gif
                                          图10
learnTCP-IP_111.jpg
                                          图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.。
learnTCP-IP_112.gif
                                          图12
learnTCP-IP_113.jpg
                                          图13
learnTCP-IP_114.gif
                                           图14
      步骤2:抓包
  按F10键出现图15界面,开始抓包。
learnTCP-IP_115.jpg
                                          图15
      步骤3:运行telnet命令
  本例使telnet到一台开有telnet服务的Linux机器上。
  telnet 192.168.113.50
  login: test
  Password:
  步骤4:察看结果
  图16中箭头所指的望远镜图标变红时,表示已捕捉到数据,点击该图标出现图17界面,选择箭头所指的Decode选项即可看到捕捉到的所有包。可以清楚地看出用户名为test密码为123456。
learnTCP-IP_116.gif
                                           图16
learnTCP-IP_117.jpg
                                          图17
解释:
  虽然把密码抓到了,但大家也许对包大小(Packet Size)设为55不理解,网上的数据传送是把数据分成若干个包来传送,根据协议的不同包的大小也不相同,从图18可以看出当客户端telnet到服务端时一次只传送一个字节的数据,由于协议的头长度是一定的,所以telnet的数据包大小=DLC(14字节)+IP(20字节)+TCP(20字节)+数据(一个字节)=55字节,这样将Packet Size设为55正好能抓到用户名和密码,否则将抓到许多不相关的包。
learnTCP-IP_118.jpg
                                          图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所示。
learnTCP-IP_119.jpg
                                              图19
learnTCP-IP_120.gif
                                              图20
learnTCP-IP_121.gif
                                              图21
learnTCP-IP_122.gif
                                              图22
learnTCP-IP_123.gif
                                              图23
learnTCP-IP_124.gif
                                              图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.50 sad.gif none)): test
  331 Password required for test.
  Password:
  步骤4:察看结果
  图16中箭头所指的望远镜图标变红时,表示已捕捉到数据,点击该图标出现图25界面,选择箭头所指的Decode选项即可看到捕捉到的所有包。可以清楚地看出用户名为test密码为123456789。
learnTCP-IP_125.jpg
                                           图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指的是数据包中某位数据的位置,方格内填的是值。
learnTCP-IP_126.gif
                                                图26
learnTCP-IP_127.gif
                                              图27
learnTCP-IP_127.gif
                                               图28
4、抓HTTP密码
  步骤1:设置规则
  按照下图29、30进行设置规则,设置方法同上。
learnTCP-IP_129.gif
                                               图29
learnTCP-IP_130.gif
                                               图30
步骤2:抓包
  按F10 键开始抓包。
  步骤3:访问 [url]http://www.ccidnet.com/[/url] 网站
  步骤4:察看结果
  图16中箭头所 指的望远镜图标变红时,表示已捕捉到数据,点击该图标出现图31界面,选择箭头所指的Decode选项即可看到捕捉到的所有包。在Summary中找到含有POST关键字的包,可以清楚地看出用户名为qiangkn997,密码为?,这可是我邮箱的真实密码!当然不能告诉你,不过欢迎来信进行交流。
learnTCP-IP_131.jpg
                                             图31

五、后记
  本文中的例子是网内试验,若捕捉全网机器的有关数据请将图13中的station设置为anyany,作为学习研究可以,可别做坏事!如果要用好Sniff Pro必须有扎实的网络基础知识特别是TCP/IP协议的知识,其实Sniff Pro本身也是学习这些知识的好工具。Sniffer Pro是个博大精深的工具,由于水平有限,本文这是介绍了其中的一小部分,希望能起到抛砖引玉的作用。

[  Last edited by 逍遥杀手 on 2006-6-4 at 02:41  ]

top_r2.gif

foot_l1.gif
foot_l3.gif

foot_r.gif本文转自 song8575 51CTO博客,原文链接:http://blog.51cto.com/song8575/11486



相关文章
|
5月前
|
缓存 网络协议 Linux
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
|
2天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
9月前
|
存储 缓存 网络协议
网络基础学习:什么是tcp/ip协议
网络基础学习:什么是tcp/ip协议
107 0
|
11月前
|
消息中间件 网络协议 安全
TCP/IP 应用层常用协议
TCP/IP 应用层常用协议
291 0
|
负载均衡 网络协议 网络安全
TCP/IP:有层次的协议栈
TCP/IP:有层次的协议栈
175 0
TCP/IP:有层次的协议栈
|
网络协议
TCP/IP协议的介绍
TCP/IP协议是众多协议的统称,通过分层结构来管理。可分为七层模型或四层结构
|
网络协议 算法
【网络篇】第十二篇——TCP协议通讯流程
【网络篇】第十二篇——TCP协议通讯流程
【网络篇】第十二篇——TCP协议通讯流程
|
网络协议 网络架构
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
211 0
IP协议, TCP协议 和DNS 服务分别是干什么的?
|
网络协议
TCP/IP协议族有哪些?
大家好,我是阿萨。昨天我们学习了[URI 和URL 的区别是什么?]了解了URI 和URL的区别。 学习HTTP, 绕不开TCP/IP,那么TCP/IP 协议族分为哪4层?
254 0
TCP/IP协议族有哪些?