网络协议分析

chshji666666 2013-07-03 02:43:01

一、TCP/IP协议整体构架概述
TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据
以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:
 1. IP
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2. TCP
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
3.UDP
UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
4.ICMP
ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。
5. TCP和UDP的端口结构
TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。
两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:
源IP地址  发送包的IP地址。
目的IP地址 接收包的IP地址。
源端口   源系统上的连接的端口。
目的端口  目的系统上的连接的端口。
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。
二、网络协议分析工具IRIS
1.IRIS特性简介
Iris师出名门---eeye,eeye是一家以网络安全见长的公司,它的扫描器以及其他安全方案在业界也算鼎鼎大名了。 好了,我也不废话了,先简单但说说Iris有哪些特性和优点。
简单小巧
Iris的最大特点,在你安装完成之后,只需简单的点一下界面上一个按钮就可以开始Sniffing抓包了!
Iris的安装文件也不到5M,安装下来才占用10多M。对比Sniffer Pro这些而言可谓苗条身材。
见下图中话圆圈的地方:

易上手
没有那么繁多的功能+简单易用的界面。上手当然是易如反掌。

再说说Iris有那些值得称道的功能。
(1)抓包
嘿嘿,只要是Sniffing软件这个功能是必备的!
Iris的一个非常好的方面就是把抓包和Decode,察看包的内容集成在一个界面里面。这样你就可以在一边抓包一边察看包的内容,以及包头含义等等。
(2)解码
支持大部分的TCP/IP协议!这样对一般的抓包分析应用就已经足够了。
(3)包的编辑以及重新发送功能
你可以对自己抓到的数据报文进行简单修改然后重新发送。
同时,IRIS也带简单的流量统计分析功能!
二.IRIS的安装
Iris可以运行在Win95/98/Me/NT/2k/XP环境下。
Iris的安装和普通的windows应用程序安装一样都是向导式的安装,按下一步一直到完成就可以方便的安装完成!所以对于Iris的安装我就不一一叙述了
三.IRIS的主界面
安装好Iris之后,我们就可以马上运行了,Iris第一次运行时需要选择在那块网络适配卡上运行Iris。
Iris的主界面如下图: 这个界面是可以调整的,但是建议大家如没特殊需求还是不要更改,因为这个缺省界面已经是经过优化了的。

四.简单实例
在简单了解了Iris的大体全貌之后,接着我们就进入学习具体功能的部分,最好的学习方法,当然就是实际操练。所以我准备了三个简单的事例。
(1)利用Iris捕获邮箱密码
有时候我们经常会忘记一些事情,比如邮箱密码。如果你把密码保存在客户端软件上那么你就能够找回密码的希望!当然找回密码的方式多种多样,我在这里介绍一种笨方法;
介绍笨方法不是我的本意,我的本意是让大家从这个事例中学习Iris的功能! 好了,废话少说,切入正题!
在开工之前,我们需要简单了解了解收发E-Mail涉及的两种协议SMTP和POP3
SMTP是发送邮件的协议,POP3是收发邮件的协议。在收发邮件的时候,密码和拥护名都是明文发送,所以就给了我们找回密码的机会!
第一步:开启抓包功能
点选工具栏上类似播放健的那个按钮(Start/Stop Capture),就是 这个按钮!
第二步:开启Filter功能
在没有开启Filter功能之前,你可能抓获的是所有进出你网卡的流量,有过路的,有看热闹的,当然也有你要找的,为了方便我们查找目标,我们需要简单的过滤一下! Iris内置了几个预先定义好了的Filter,刚好有一个email.flt,那我们就不用费劲的自己定义了!
选择菜单Filter-->àemail.flt
第三步:运行你的邮件客户端软件,收一下邮件
第四步:停止抓包
点工具栏上Stop Capture按钮
第五步:寻找密码
因为Email收发邮件的用户名和密码都是明文传输的,所以你的密码就藏在你捕获的那些报文里面现在你只需要一个一个检视。 如下图:

(2)利用Iris捕获Telnet会话密码
在讲完上面那个例子之后大家肯定对Iris的抓包功能有了一定的了解,为了大家对 IRIS 的解码(decode)功能有个深刻的认识, 刚好在网络分析论坛看到一个抓包分析Telnet会话密码的,刚好借鉴过来作为这个简易教程的第二个实例!
在开始之前简单说一下Telnet这个协议的特点。当然它也是明文的,但是它有两个麻烦的地方相比POP3这些协议,由于Telnet是个交互式协议,所以当你敲一个字符的时候有可能就被发往服务器端了,服务器端又发回相应的回显字符!再加上它没有POP3 明显的PASS命令,所以如果还是采用第一个例子里面的一个报文一个报文的查看肯定是非常麻烦的。所以我们必须有某种新的方法来解决这个问题!
第一步 抓包!
还不会?那继续看前面那个例子。。。
第二步 开启Filter功能
刚好这次又有现成的!
菜单Filteràtext_protocol.flt
第三步 开个Telnet会话
第四步 停止抓包
第五步 切换到Decode解码模式
切换的方法有多种
第一种你可以选择工具栏里面的
第二种你可以选在左边工具栏里面的
第三种 菜单 DecodeàSend Buffer To decode
这样我们就进入了Iris的Decode模式!这个时候Iris会根据Capture的报文对TCP会话进行解码。这样我们就可以清晰的看到一个Telnet会话的过程! 如下图: 红圈处大家就可以看到我输入的密码!
是:ixix 而不是[mi*x*i*x*, 这是因为[m是控制字符,*是回显字符!

五.如何得到进一步的帮助
看完上面事例,大家肯定对Iris有了一定的了解,可以基本使用它了,但是如果大家在使用过程中可能还会遇到各种各样的问题。所以最后我给大家准备了几条锦囊妙计
...全文
343 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshinia 2013-07-04
  • 打赏
  • 举报
回复
然后呢?然后呢?
杀意已决 2013-07-04
  • 打赏
  • 举报
回复
锦囊呢~~~~~~~~~~~~

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧