分类: LINUX
2008-04-27 23:22:32
前言:在网络中,当信息进行传播的时候,可以利用工具,将网络接口设置在监听的模式,便可将网络中正在传播的信息截获或者捕获到,从而进行攻击。网络监听在网络中的任何一个位置模式下都可实施进行。而黑客一般都是利用网络监听来截取用户口令。比如当有人占领了一台主机之后,那么他要再想将战果扩大到这个主机所在的整个局域网话,监听往往是他们选择的捷径。很多时候我在各类安全上看到一些初学的爱好者,在他们认为如果占领了某主机之后那么想进入它的内部网应该是很简单的。其实非也,进入了某主机再想转入它的内部网络里的其它机器也都不是一件容易的事情。因为你除了要拿到他们的口令之外还有就是他们共享的绝对路径,当然了,这个路径的尽头必须是有写的权限了。在这个时候,运行已经被控制的主机上的监听程序就会有大收效。不过却是一件费神的事情,而且还需要当事者有足够的耐心和应变能力。主要包括: 数据帧的截获 对数据帧的分析归类 dos攻击的检测和预防 IP冒用的检测和攻击 在网络检测上的应用 对的初步过滤 研究的意义: 1)我国的网络正在快速发展中,相应的问题也就显现出来,网络管理及相应应用将越发重要,而监听技术正是网络管理和应用的基础,其意义当然重要,放眼当前相关工具linux 有snort tcpdump ,snift 等,window 有nexray, sniffer等五一不是国外软件,随着中国网络的发展,监听系统必将大有用武之地,因此监听技术的研究已是时事的要求。 2)为什么选择linux 作为环境?中国入世,各种针对盗版的打击力度和对于正版软件的保护力度都将大大加强,的盗版软件随处可见的现象将会一去不返,面对这样的情况,大部分的公司只有两种选择:要么花大价钱向购买正版软件,要么是用自由linux,特别是重要部门,如国家机关,政府部门,难道要把自己的办公系统操纵在国外大公司手里?北京的政府办公系统已经转用红旗linux,而且linux的界面也在不但的改进,更加友好易操作,我们有理由相信.linux将在我国大有作为,这也是研究Linux 下网络监听的原因。 关于Linux下网络监听技术主要有两个要点: 1)如何尽可能完整的截取网络上的数据帧,因为以太网上每时每刻都可能有信息传递,而且根据以太网的规模不同网络上的信息量也变化不大,所以截取数据帧不仅要保证数据帧的完整,而且还要考虑到如何才能减少漏截取数据帧。 2)就是对截取的数据帧的过滤分析,所谓监听当然要“听”得懂才行,所以把截取的数据帧翻译成我们能用的数据,监听才算成功。 网络监听的原理 Ethernet协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的那台主机才能接收到信息包,但是当主机工作在监听模式下的话不管数据包中的目标物理地址是什么,主机都将可以接收到。许多局域网内有十几台甚至上百台主机是通过一个电缆、一个集线器连接在一起的,在协议的高层或者用户来看,当同一网络中的两台主机的时候,源主机将写有目的的主机地址的数据包直接发向目的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层。网络接口不会识别IP地址的。在网络接口由IP层来的带有IP地址的数据包又增加了一部分以太祯的祯头的信息。在祯头中,有两个域分别为只有网络接口才能识别的源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与IP地址相对应的,换句话说就是一个IP地址也会对应一个物理地址。对于作为网关的主机,由于它连接了多个网络,它也就同时具备有很多个IP地址,在每个网络中它都有一个。而发向网络外的祯中继携带的就是网关的物理地址。 Ethernet中填写了物理地址的祯从网络接口中,也就是从网卡中发送出去传送到物理的线路上。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台主机。再当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数字信号也就能到达连接在集线器上的每个主机了。当数字信号到达一台主机的网络接口时,正常状态下网络接口对读入数据祯进行检查,如果数据祯中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据祯交给IP层软件。对于每个到达网络接口的数据祯都要进行这个过程的。但是当主机工作在监听模式下的话,所有的数据祯都将被交给上层协议软件处理。 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。 在UNIX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监听模式,只需要向Interface(网络接口)发送I/O控制命令,就可以使主机设置成监听模式了。而在Windows9x的系统中则不论用户是否有权限都将可以通过直接运行监听工具就可以实现了。 在网络监听时,常常要保存大量的信息(也包含很多的垃圾信息),并将对收集的信息进行大量的整理,这样就会使正在监听的机器对其它用户的请求响应变的很慢。同时监听程序在运行的时候需要消耗大量的处理器时间,如果在这个时候就详细的分析包中的内容,许多包就会来不及接收而被漏走。所以监听程序很多时候就会将监听得到的包存放在文件中等待以后分析。分析监听到的数据包是很头疼的事情。因为网络中的数据包都非常之复杂。两台主机之间连续发送和接收数据包,在监听到的结果中必然会加一些别的主机交互的数据包。监听程序将同一TCP会话的包整理到一起就相当不容易了,如果你还期望将用户详细信息整理出来就需要根据协议对包进行大量的分析。Internet上那么多的协议,运行进起的话这个监听程序将会十分的大哦。 现在网络中所使用的协议都是较早前的,许多协议的实现都是基于一种非常友好的,通信的双方充分信任的基础。在通常的网络环境之下,用户的信息包括口令都是以明文的方式在网上传输的,因此进行网络监听从而获得用户信息并不是一件难点事情,只要掌握有初步的TCP/IP协议知识就可以轻松的监听到你想要的信息的。前些时间美籍华人China-babble曾提出将望路监听从局域网延伸到广域网中,但这个想法很快就被否定了。如果真是这样的话我想网络必将天下大乱了。而事实上现在在广域网里也可以监听和截获到一些用户信息。只是还不够明显而已。在整个Internet中就更显得微不足道了。 以太网上数据帧的监听剖析 的。因为运行监听程序的主机在进监听的过程中只是被动的接收在以太网中传输的信息,它不会跟其它的主机交换信息的,也不能修改在网络中传输的信息包。这就说明了网络监听的检测是比较麻烦的事情。 一般情况下可以通过ps -ef或者ps -aux来检测。但大多实施监听程序的人都会通过修改ps的命令来防止被ps -ef的。 上边提到过。当运行监听程序的时候主机响应一般会受到影响变的会慢,所以也就有人提出来通过响应的速率来判断是否受到监听。如果说当你怀疑网内某太机器正在实施监听程序的话,可以用正确的IP地址和错误的物理地址去ping它,这样正在运行的监听程序就会做出响应的。这是因为正常的机器一般不接收错误的物理地址的ping信息的。但正在进监听的机器就可以接收,要是它的IP stack不再次反向检查的话就会响应的。不过这种方法对很多系统是没效果的,因为它依赖于系统的IP stack。 另一种就是向网上发大量不存在的物理地址的包,而监听程序往往就会将这些包进行处理,这样就会导致机器性能下降,你可以用icmp echo delay来判断和比较它。还可以通过搜索网内所有主机上运行的程序,但这样做其的难度可想而知,因为这样不但是大的工作量,而且还不能完全同时检查所有主机上的进程。可是如果管理员这样做也会有很大的必要性,那就是可以确定是否有一个进程是从管理员机器上启动的。 在Unix中可以通过ps –aun或ps –augx命令产生一个包括所有进程的清单:进程的属主和这些进程占用的处理器时间和内存等。这些以标准表的形式输出在STDOUT上。如果某一个进程正在运行,那么它将会列在这张清单之中。但很多黑客在运行监听程序的时候会毫不客气的把ps或其它运行中的程序修改成Trojan Horse程序,因为他完全可以做到这一点的。如果真是这样那么上述办法就不会有结果的。但这样做在一定程度上还是有所作为的。在Unix和Windows NT上很容易就能得到当前进程的清单了。 还有一种方式,这种方式要靠足够的运气。因为往往黑客所用的监听程序大都是免费在网上得到的,他并非专业监听。所以做为管理员用来搜索监听程序也可以检测。使用Unix可以写这么一个搜索的小工具了。有个叫Ifstatus的运行在Unix下的工具,它可以识别出网络接口是否正处于调试状态下或者是在进听装下。要是网络接口运行这样的模式之下,那么很有可能正在受到监听程序的攻击。Ifstatus一般情况下不会产生任何输出的,当它检测到网络的接口处于监听模式下的时候才回输出。管理员可以将系统的cron参数设置成定期运行Ifstatus,如果有好的cron进程的话可以将它产生的输出用mail发送给正在执行cron任务的人,要实现可以在crontab目录下加****/usr/local/etc/ifstatus一行参数。这样不行的话还可以用一个脚本程序在crontab下00****/usr/local/etc/run-ifstatus。 一般情况下监听只是对用户口令信息比较敏感一点(没有无聊的黑客去监听两台机器间的聊天信息的那是个浪费时间的事情)。所以对用户信息和口令信息进行加密是完全有必要的。防止以明文传输而被监听到。现代网络中,SSH协议一直都被沿用,SSH所使用的端口是22,它排除了在不安全信道上通信的信息,被监听的可能性使用到了RAS算法,在授权过程结束后,所有的传输都用IDEA技术加密。但SSH并不就是完全安全的。因此,总的说来,监听的检测属于安全防范的内容,需要非常综合的知识和技能进行分析设计。 安全方面的考虑 DOS 攻击的检测与预防 我国还在网络的发展阶段,有网络“hacker”、“crack”出现,也正是由于是发展阶段,这些人的攻击手段一般靠一些工具,这些工具一般分为破解性和破坏性,破解性耗时长成功率低,而破坏性的工具较符合这些人的性格故受欢迎,而DOS攻击工具攻击方便,成功率高,一般是“hacker”的首选。 所谓的DOS攻击是一种拒绝服务攻击,它并不是入侵系统,而只是让系统崩溃,或处于拒绝连接状态,DOS攻击的方法主要是发送大量假的syn包使服务器忙于应答和等待假syn的请求无法对正常的连接作出反应,或发送大量的广播包利用某系系统对一些广播包会产生回应得bug来形成广播风暴阻塞网络,消耗服务器资源达到进攻目的。现在还出现了分布式的DOS攻击工具,它通过控制多台分机同时发送到攻击包,威力巨大,同时,DOS攻击还可能是另一种供给的前奏,这就是IP欺骗攻击(该攻击可以获得ROOT权限,危险系数最高),如果出现了DOS攻击但又不阻塞网络,且攻击目标不起眼,那么这很可能就是一个IP欺或TCP截取的开始,所以DOS攻击是一种破坏力大,效果明显,且暗藏杀机的攻击。 热而DOS攻击是较容易检测的,其攻击现象明显,攻击特征突出,通过对网络的监听不难发现,如上所述我们已经可以从网络上监听数据帧并能分析他们,于是编写一个程序使用户可以通过定义自己的规范与数据帧比较然后对符合规范的数据作出相应的反应,对于DOS攻击我们可以通过定义一个带有时间限制的规范来检测,如我们可以定义在1秒如出现100个以上的syn数据包为DOS攻击,然后定义处理方法,如MAIL,LOG,SHUTDOWN或与_blank">防火墙联动等。 IP冒用的检测与攻击 网络的飞速发展导致了原有的32位地址协议不能满足飞速扩充的庞大计算机群,。利益不能均分,导致了IP冒用的出现,使网络秩序产生混乱。 在这里先解释一下ARP协议的应用。ARP协议是将IP地址转换成MAC地址的协议,是局域网数据交流的基础,一台计算机是如何将自己和某一IP地址绑定?首先,一台计算机启动,他将向局域网发送其IP的ARP询问包,这是为了防止IP冲突,如无人回答,其将发送其IP的ARP应答包,向局域网申明绑定其物理地址和ip地址,如果没有在服务器上使用固定的ip/mac表那么没有ip使用权的计算机也可以乘机绑定ip,这就是ip冒用。 对网络监测的利用可以达到检测ip冒用的出现并对之进行攻击的目的。具体方法是将检测到的arp数据帧中的ip 和 eth 地址取出来与我们建立的对应表比较,如发现ip冒用的情况,则向其发送反向arp包使其网络中断实现攻击,该做法适用于那些无法控制路由器配置,又不想修改网关配置的网络管理。在程序中我采用的是被动式的arp查询,也就是不发arp查询包,可以说出了发攻击包外对网络没有增加另外的负担。 监听技术在网络测试中的应用 网络监听不只是网络管理的基础,还能应用在网络测试中,现在的网络测试工具大都建立在监听基础上,对监听到的数据帧的种类和数量进行统计,从而实现网络的测试。同理可以使用本监听程序对数据分类统计达到测试网络的作用。 例如目前较多用到的网络测试: 1)检测广播包在网络中的负载,即检测广播包在所有包中的比例,只要在程序中比较数据帧中目的地址的物理地址为ff:ff:ff:ff:ff:ff与总帧数的比例就可得知。从而给出了配置VLAN等的数据基础。 2)检测网络中因冲突产生的坏数据帧的数量,因为共享式以太网采取的CSMA/CD协议,每台计算机发送信号时不能保证没有有其它计算机也在发送信号,而在冲突后就停止发送,故会产生一些损坏的数据帧,检测损坏的数据帧在网络数据中的比例是体现网络性能的重要参数,这种检测对于监听程序而言和第一种检测大体相同,只是把统计的数据包改成冲突的数据帧,也就是数据帧大小小于64个字节的数据帧的数量,同理类是网络测试都可以通过监听程序实现,由此我们可以分析出更合适具体情况的布线方法等等。 过滤的初步实现 垃圾邮件就是过滤到那些我们不想接受的,内容不安全的电子邮件,由于电子邮件的服务特点,使得电子邮件成为当代社会信息传递的便捷途径之一,但同时也有一些人利用这一点发送不安全的危害社会的宣传,于是垃圾邮件过滤就成为了必要,由于当前邮件服务器管理的松懈,随便一个人有台计算机有个IP就可以组建服务器,使得邮件的来源相当复杂,所以要完全过滤不容易,但我们还是可以通过网络监听来实现邮件的初步过滤. 第一种方法:就是屏蔽某些ip的swtp连接,通过监听程序可以实现这点,如设定规则当源IP地址为****且TCP连接端口为25时就屏蔽连接。 第二种方法:由于很多电子邮件服务器允许邮件转发(这也是必要的,我们不可能能连接到每一台机),所以通过ip地址不一定可以屏蔽这个用户的邮件他可以通过其他的服务器转发,因此在第一种方法无效的情况下我们可以通过账号来屏蔽服务,由于电子邮件服务器的统一命令要求需要用户在发邮件时申明用户例如:mail from XXX@XXX ,所以我们可以通过监听程序来发现我们不喜欢的用户并屏蔽,这要求我们对数据帧不仅分析报头,还要分析数据,将其与我们设定的字符串比较,如相同,则找到了屏蔽连接.的。但是由于它有着截获网络数据的功能所以也是黑客所惯用的伎俩之一。 本文出自 51CTO.COM技术博客 |