论文部分内容阅读
摘要:该文介绍了一种利用计算机网络接口进行侦听的网络新技术——sniffer。首先介绍了sniffer实施侦听的工作原理,其次介绍了目前常见的免费sniffer工具及其实现步骤,最后对sniffer用于网络入侵的危害及其局限性进行了阐述。
关键词:sniffer;网络侦听;网络安全
中图分类号:TP393.08文献标识码:A文章编号:1009-3044(2008)33-1321-01
Research on Network Interception Technology about Sniffer
WANG Mei-hua
(Zhejiang Provincial Tongxiang Puyuan Central Hospital, Tongxiang 314502, China)
Abstract: The paper introduced one kind carries on the interception using the computer network connection network new technology about sniffer. First, introduced the sniffer implementation interception principle of work, then introduced the present common free sniffer tool and the realization step, finally used in the network invasion to sniffer the harm and the limitation has carried on the elaboration.
Key Words: sniffer; network interception; network security
1 sniffer及其工作原理
sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。sniffer(侦听仪)的通用意义是网络协议分析仪。在合理的网络中,sniffer的存在对系统管理员是致关重要的,系统管理员通过sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯,有些甚至牵涉到各种的协议,借助于sniffer,系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或者相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。但同时,如果有心之人(非系统管理员)使用了sniffer,那么,他同样也可以获得和管理员一样多的信息,同样也可以对整个的网络做出判断。
sniffer是如何在网络上实施的呢?在共享媒体(共享媒体指示这样一种网络:在组成其网络段的物理媒体上广播所有帧)的网络中(例如Ethemet),在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址(代表所有的接口地址)。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
第一,帧的目标区域具有和本地网络接口相匹配的硬件地址;
第二,帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,网卡通过CPU产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
而sniffer就是一种能将本地网卡状态设成混杂模式(promiscuous)状态的软件,当网卡处于这种“混杂”方式时,该网卡对遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,当它用来攻击时,是一种消极的安全攻击。
2 常见sniffer与sniffer的实现
sniffer网络分析仪有专用硬件和软件的产品,尖端的网络分析仪产品可以找出一般网络接口检测不出的错误;中等商业市场的分析仪产品往往是带有特定软件的普通便携计算机;而基于各个平台的很多普通的网络侦听软件则在Internet上可以自由下载。比较知名的被广泛用于调试网络故障的免费sniffer工具有:
Tcpdump(运行在FreeBSD,Linux,DEC Unix,Irix,SunOS等)
Nfswatch(运行在HP-UX,Irix,SunOS等)
Etherfind,Snooper(SunOS)
Ipman,Etherload,Gobbler(运行在DOS,Windows等)
Ethereal(运行在Linux,Windows等)
Netman系列(Pachetman,Interman,Etherman,Loadman),Lanwatch,Lanpatrol
在Linux下侦听器基本实现过程是通过Socket实现的。Linux中支持一种特殊的套接字,即SOCK-PACKET型套接字。在这种套接字下,应用程序可以读到网卡传递给系统内核的所有报文。一般情况下,网卡只将那些目的地址为自身的报文传送给系统内核。因此,需要将网卡的工作方式设定为混杂模式。这样,系统内核就可以读到网卡侦听到的所有报文,从而侦听器应用程序也就可以读到这些报文了。侦听器的实现步骤如下:
1) 打开套接字。使用socket函数打开SOCK-PACKET型套接字;
2) 设置混杂模式。使用ioctl函数将网卡设置为混杂模式;
3) 读取报文。使用读取函数将报文读入缓冲区中;
4) 处理报文。该部分由过滤子模块和处理子模块组成,过滤子模块用用户事先定好的规则对读到的报文进行过滤,只将用户关心的报文交由处理子模块作进一步处理。
3 sniffer用于网络入侵的危害及其局限性
网络侦听是很高级别的危险,可以导致几类严重的信息泄漏。通常sniffer所要关心的内容可以分成这样几类:
1) 口令
这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd。就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里悠闲地想办法算出你的算法。
2) 金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而,sniffer可以很轻松截获在网上使用明文传送的用户姓名、口令、信用卡号码、截至日期、帐号和PIN。
3) 偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的会话过程。
4) 窥探低级的协议信息
这是很可怕的事,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口IP地址、IP路由信息和TCP连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的IP地址欺诈就要求你准确插入TCP连接的字节顺序号)。如果某人(例如高级入侵者)很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要多得多。
sniffer工作的前提是同一冲突域的共享媒体,但考虑此类广播型网的协议工作方式,即向同一子网的所有网络接口轮询,会不可避免的造成广播风暴和碰撞,占用带宽,因此经常将同一子网的机器适当分成几个网段(冲突域),在网段间用Switch相连.这也是为什么用HUB相连的同一以太网段可编程实现监听(raw socket方式,windows下Vpacket的VXD),但如果用Switch连接不同的冲突域则从理论上无法监听。
那么,通过交换设备(网桥、交换机、路由等)所形成的网络边界外是否完全没有sniffer存在的空间呢?并非全然如此,能形成网络边界的交换设备并不是把来自一边的所有的帧都丢到另一边的。他们通常允许某些报文通过边界而阻止某些报文(特别是网络广播)通过边界。因此从理论上讲,通过交换设备对网络进行分段后,sniffer将无法透过边界而窥探另一边的数据包。但是,请注意,这是在边界设备不转发广播包的情况下,这也是通常的网络情况。某些交换机会有特殊的状态会转发数据包,比如很多10M/100M的交换机有将所有10M端口数据包复制到100M端口的功能。同时对于级连的交换机,如果在上出口处进行监听,仍然可以截获所有上行数据。因此必须对于网络拓扑和交换机进行小心的设置和管理。
参考文献:
[1] David A. Solomon, Mark E. Russinovich. Inside Microsoft Windows 2000. Microsoft Press. 2000.
[2] 樊宸丰,林东.网络信息安全与数据加密[M].北京:清华大学出版社,2002.
[3] 许治坤,王伟,郭添森,杨翼龙.网络渗透技术[M].北京:电子工业出版社,2005.
关键词:sniffer;网络侦听;网络安全
中图分类号:TP393.08文献标识码:A文章编号:1009-3044(2008)33-1321-01
Research on Network Interception Technology about Sniffer
WANG Mei-hua
(Zhejiang Provincial Tongxiang Puyuan Central Hospital, Tongxiang 314502, China)
Abstract: The paper introduced one kind carries on the interception using the computer network connection network new technology about sniffer. First, introduced the sniffer implementation interception principle of work, then introduced the present common free sniffer tool and the realization step, finally used in the network invasion to sniffer the harm and the limitation has carried on the elaboration.
Key Words: sniffer; network interception; network security
1 sniffer及其工作原理
sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。sniffer(侦听仪)的通用意义是网络协议分析仪。在合理的网络中,sniffer的存在对系统管理员是致关重要的,系统管理员通过sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯,有些甚至牵涉到各种的协议,借助于sniffer,系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或者相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。但同时,如果有心之人(非系统管理员)使用了sniffer,那么,他同样也可以获得和管理员一样多的信息,同样也可以对整个的网络做出判断。
sniffer是如何在网络上实施的呢?在共享媒体(共享媒体指示这样一种网络:在组成其网络段的物理媒体上广播所有帧)的网络中(例如Ethemet),在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址(代表所有的接口地址)。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
第一,帧的目标区域具有和本地网络接口相匹配的硬件地址;
第二,帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,网卡通过CPU产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
而sniffer就是一种能将本地网卡状态设成混杂模式(promiscuous)状态的软件,当网卡处于这种“混杂”方式时,该网卡对遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,当它用来攻击时,是一种消极的安全攻击。
2 常见sniffer与sniffer的实现
sniffer网络分析仪有专用硬件和软件的产品,尖端的网络分析仪产品可以找出一般网络接口检测不出的错误;中等商业市场的分析仪产品往往是带有特定软件的普通便携计算机;而基于各个平台的很多普通的网络侦听软件则在Internet上可以自由下载。比较知名的被广泛用于调试网络故障的免费sniffer工具有:
Tcpdump(运行在FreeBSD,Linux,DEC Unix,Irix,SunOS等)
Nfswatch(运行在HP-UX,Irix,SunOS等)
Etherfind,Snooper(SunOS)
Ipman,Etherload,Gobbler(运行在DOS,Windows等)
Ethereal(运行在Linux,Windows等)
Netman系列(Pachetman,Interman,Etherman,Loadman),Lanwatch,Lanpatrol
在Linux下侦听器基本实现过程是通过Socket实现的。Linux中支持一种特殊的套接字,即SOCK-PACKET型套接字。在这种套接字下,应用程序可以读到网卡传递给系统内核的所有报文。一般情况下,网卡只将那些目的地址为自身的报文传送给系统内核。因此,需要将网卡的工作方式设定为混杂模式。这样,系统内核就可以读到网卡侦听到的所有报文,从而侦听器应用程序也就可以读到这些报文了。侦听器的实现步骤如下:
1) 打开套接字。使用socket函数打开SOCK-PACKET型套接字;
2) 设置混杂模式。使用ioctl函数将网卡设置为混杂模式;
3) 读取报文。使用读取函数将报文读入缓冲区中;
4) 处理报文。该部分由过滤子模块和处理子模块组成,过滤子模块用用户事先定好的规则对读到的报文进行过滤,只将用户关心的报文交由处理子模块作进一步处理。
3 sniffer用于网络入侵的危害及其局限性
网络侦听是很高级别的危险,可以导致几类严重的信息泄漏。通常sniffer所要关心的内容可以分成这样几类:
1) 口令
这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd。就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里悠闲地想办法算出你的算法。
2) 金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而,sniffer可以很轻松截获在网上使用明文传送的用户姓名、口令、信用卡号码、截至日期、帐号和PIN。
3) 偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的会话过程。
4) 窥探低级的协议信息
这是很可怕的事,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口IP地址、IP路由信息和TCP连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的IP地址欺诈就要求你准确插入TCP连接的字节顺序号)。如果某人(例如高级入侵者)很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要多得多。
sniffer工作的前提是同一冲突域的共享媒体,但考虑此类广播型网的协议工作方式,即向同一子网的所有网络接口轮询,会不可避免的造成广播风暴和碰撞,占用带宽,因此经常将同一子网的机器适当分成几个网段(冲突域),在网段间用Switch相连.这也是为什么用HUB相连的同一以太网段可编程实现监听(raw socket方式,windows下Vpacket的VXD),但如果用Switch连接不同的冲突域则从理论上无法监听。
那么,通过交换设备(网桥、交换机、路由等)所形成的网络边界外是否完全没有sniffer存在的空间呢?并非全然如此,能形成网络边界的交换设备并不是把来自一边的所有的帧都丢到另一边的。他们通常允许某些报文通过边界而阻止某些报文(特别是网络广播)通过边界。因此从理论上讲,通过交换设备对网络进行分段后,sniffer将无法透过边界而窥探另一边的数据包。但是,请注意,这是在边界设备不转发广播包的情况下,这也是通常的网络情况。某些交换机会有特殊的状态会转发数据包,比如很多10M/100M的交换机有将所有10M端口数据包复制到100M端口的功能。同时对于级连的交换机,如果在上出口处进行监听,仍然可以截获所有上行数据。因此必须对于网络拓扑和交换机进行小心的设置和管理。
参考文献:
[1] David A. Solomon, Mark E. Russinovich. Inside Microsoft Windows 2000. Microsoft Press. 2000.
[2] 樊宸丰,林东.网络信息安全与数据加密[M].北京:清华大学出版社,2002.
[3] 许治坤,王伟,郭添森,杨翼龙.网络渗透技术[M].北京:电子工业出版社,2005.