黑客技术【5-7】

来源:百度文库 编辑:神马文学网 时间:2024/04/17 01:39:21
黑客技术(5)-Sniffer
Sniffer
了解什么是Sniffer之前,我想先说说网络的基本构成,通常的网络看起来
是这样的:
一个控制软件的控制台(可以是pc机、工作站等)
一套用来控制网络硬件的软件
一个支持Ethernet封包的网络控制卡
一条用来使封包从这里流到那里的传输设备
另一套和上述相同设备的硬件、软件。
可见,这其中的一个关键环节是封包如何在网上跑,当然,可以用tcp/ip、ipx等。。或是多个的组合,那么,Sniffer的目的就是将整个的网络界面变成不区分的状态,然后再截取网络上的封包。传统上的Sniffer可以是硬件或软件或硬件和软件的结合。由于Ethernet的工作方式,网络请求在网上一般以广播的方式传送,这个广播是非验证的,也就是每个nodes都可以收到,除了目标接受者会回应这个信息外,其他的接受者会忽略这个广播。Sniffer就是一个专门收集广播而决不回应的东东。 由于sniffer是工作在封包这一级的产品,因而,它对网络的安全威胁是相当大的,因为它可以:
1。抓到正在传输的密码。
2。抓到别人的秘密(信用卡号)或不想共享的资料。
3。可以通过管理员封包破解相互信任的系统域。
可见,通常的安全分析将sniffer放在第二级的攻击不是没道理的,如果你在你管理的网络中发现了sniffer, 那么它代表的是有个cracker已经进入你的网络了,并且正在收集使用者的id和密码。现在我想你可能已经知道sniffer的工作原理了,如果你想多了解它攻击目标后会如何,请参考:
http://yahi.csustan.edu/studnotw.html
http://www.securitymanagement.com/library/000215.html
(美国陆军导弹研究中心和Whist Sands导弹发射基地事件)
在中国,我没有收集到可靠的sniffer攻击的例子,但是,可以肯定的是,有人在广州网易上这样做过,但是我没有证据来说明。(请注意如果有人在你的网络上放sniffer,你的封包传送丢失的机会将大增)。
那么如何得到一个sniffer来研究研究呢? 在ms-dos平台上有个杰出的sniffer
:Gobbler
你可以到这里找到它:
http://www.cse.rmit.edu.au/~rdss ... t/other/gobbler.zip
ftp://ftp.mzt.hr/pub/tools/pc/sniffers/gobbler/gobbler.zip
它可以在pc上执行,并且只分析区域内的封包,还可以设定只分析每个封包的前200到300个字节,这其中包含了用户名称和密码,通常,Cracker要这些就可以了。(这一点很重要,想象一下,如何没有节制的收集封包,几分钟内,你的硬盘就可能放不下任何文件了),还有,我个人认为很重要的一点,Gobbler可以很轻易的看到每个封包从哪里来,要到哪里去,我觉得这起码使我的工作变的很有针对性。
还有一个 C 的sniffer, Ethload.一个相当完整的sniffer.它可以在这些协议
上跑:
Novell odi
2Com/Microsoft Protocol Manager
PC/TCP/Clarkson/Crynwr
可以分析这些封包:
Tcp/Ip
DECnet
OSI
XNS
Netware
NetEBUI
你可以到这些地方下载:
ftp://oak.oakland.edu/simtel/msdos/lan/ethld104.zip
http://wwww.med.ucalgary.ca:70/1/ftp/dos/regular
Netman :http://www.cs.curtin.edu.au/~netman/
这是一个可以在X-windows中执行的sniffer.可我觉得这个功能不太可能用上,试想一下,如果有个Cracker在你的网络中执行X-windows而你不知道,呵呵。。。那我觉得,你的问题比被别人放sniffer更粗。
Esniff.c 这是一个专门用来收集Sun平台的封包流量的产品。原始的C代码只抓取封包的开始部分,(使用者id和密码)。你可以将它修改成抓取其他信息。
可以从这里下载这个C代码:
http://pokey.nswc.navy.mil/docs/progs/ensnif.txt
ftp.infonexus.com
其他的sniffer产品包括:
Sunsniff :http://mygale.mygale.org/08/datskewl/elite
http://hacked-inhabitants.com/warez/sunsniff.c
Linux_sniffer.c
http://mygale.mygale.org/08/datskewl/elite
Nitwit.c (在你使用之前,提醒你先看一遍源程序)
www.catch22.com/twilight.net/phuncent/hacking/proggies/sni
ffers/nitwit.c
Ok.现在我们都知道了什么是sniffer, 从哪里你可以得到sniffer, 那么,我如何知道我的网络有没有被装上sniffer呢? 理论上的答案是:没有办法。这也是为什么我们说sniffer的危险程度相当高的原因之一,因为它太安静了。换句话说,它不在你的系统中留下什么。并且你不知道它在你网络的哪个地方跑。
两种建议的方法:
1。列出当前在你机器上的所有进程。使用dos,windows,win95的用户可能有问题。但是Nt和Unix用户可以很容易。注意在Unix下,我通常的做法是:
想办法将ps放入一只特洛伊木马,(如果有权限的话)当别人使用ps -augx时,先kill我的sniffer进程。
所以,请你用root path中的ps.
2。直接去找sniffer.因为网上也就那么20来种sniffer,大多数cracker不会自己去花时间专门为你的网络写个sniffer(除非你每次在物理食堂吃的比他好很多),但是,如果他真的写了,呵呵。。你最好花几个小时来检查你的目录的一致性。如果你使用Unix ,你最好先和你女朋友打声招呼。
那么假设很不幸的,你花了几个小时后,你得出了结论:我的网络被放了一个sniffer。我要怎么办?
通常我一定要先停止网络运行。然后,我考虑一个能加密封包的产品。SSH和f-SSH,这个产品使用ports 22,用RSA来计算连线的封包。可惜的是,你必须叫你的用户习惯这个产品,虽然SSH有免费的版本在网上等你。(win95,Unix 的都有。)
第二:我考虑重新架构我的网络,但是要花很多钱。(可以用Bridge或路由重新分割网络,重新考虑信任域等。。)重新架构网络超过我的讨论范围。
建议你不要只考虑火墙,因为火墙是给hacker破解用的。就好象shadow密码一样。在NIS中,shadow依然是个BUG.
最后说明一点:使用sniffer不那么单纯,要具备一定的网络知识才能真正使用它来获取你想要的信息。(否则,它会帮你收集一大把垃圾的)因为它要工作的环境是很底层的网络界面。
黑客技术(6)- 再议 Sniffer
停了很久没有再写了,近来有太多的人在提级sniffer , 我发现还是有很多人对sniffer这个概念很模糊,所以想再说一下Sniffer. 所说全是个人观点,欢迎指正。
sniffing 和 spoofing 一样是作用在网络基础结构的底层。通常情况下,用户并不直接和该层打交道,有些甚至不知道有这一层存在,呵呵。他们只是用ftp.http.telnet.email 等,所以,应该说snffer的危害是相当之大的,通常使用sniffer 是一次spoofing的开始。
那么到底sniffer是怎样的一种概念呢?
sniffer 是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。
(ISS)
在合理的网络中,sniffer的存在对系统管理员是致关重要的,系统管理员通过sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于sniffer %2C系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主 机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。但是,同时,如果有心之人(非系统管理员)使用了sniffer ,那么,他同样也可以获得和管理员一样多的信息,同样也可以对整个的网络做出判断。当然,SPP相信他不会用这些信息去管理网络。
现在网络上到处可见免费的sniffer , 各种平台下的都有,我真不知道,这对管理员来说是好事还是坏事。(参看上一篇关于sniffer的文章,你可以知道现在找个sniffer多容易)
话说回来,那么sniffer是如何在网络上实施的呢?
谈这个问题之前还应该先说一下Ethernet的通讯. 通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
2、帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
而sniffer 就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种“混杂”方式时,该nc具备“广播地址”,它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具备置成promiscuous方式的能力)
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
通常sniffer所要关心的内容可以分成这样几类:
1、口令
我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid 和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。
2、金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而 sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.
3、偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。
4、窥探低级的协议信息。
这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的 ip 地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出) 如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大条得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
那么,通过交换设备(网桥、交换机、路由等)所形成的网络边界是否可以有sniffer存在的空间呢? 我想这是一个有趣的问题。能形成网络边界的交换设备并不是把来自一边的所有的帧都丢到另一边的。他们通常允许某些报文通过边界而阻止某些报文(特别是网络广播)通过边界。因此从理论上讲,通过交换设备对网络进行分段后,sniffer将无法透过边界而窥探另一边的数据包。但是,请注意:这是在边界设备不转发广播包的情况下(这也是通常的网络情况)。一旦入侵者使用spoofer 诱骗某个边界设备而将自己的广播包流入不该进入的网段后,原理上还是在一个共享设备端使用sniffer 而实际上将是听到了边界的另一边。(详细的spoofer应用我会再整理出来)当然,这样会牵涉到ip 欺诈和Mac欺诈的问题,然而,你别忘了,sniffer和spoofer是很少分开来 的。
既然sniffer如此嚣张又安静,我要如何才知道有没有sniffer在我的网上跑呢?这也是一个很难说明的问题,比较有说服力的理由证明你的网络有sniffer目前有这么两条:
1、你的网络通讯掉包率反常的高。
通过一些网络软件,你可以看到你的信息包传送情况(不是sniffer),向ping这样的命令会告诉你掉了百分几的包。如果网络中有人在听,那么你的信息包传送将无法每次都顺畅的流到你的目的地。(这是由于sniffer拦截每个包导致的)
2、你的网络带宽将出现反常。
通过某些带宽控制器(通常是火墙所带),你可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在听。实际操作中,我还发现,如果某台机器(非服务器)在不该使用广播的网络中使用了ICMP 类型10 、11、9等这一类的广播,呵呵。。有可能。。。非常有可能。。。如果同时出现udp520口的rip广播。呵呵。。那就百分之N接近。。。。。
在非高速信道上,如56K ddn 等,如果网络中存在sniffer ,你应该也可以察觉出网络通讯速度的变化。
最后再说明的是,并不是使用了交换设备就可以完全阻止sniffer , 如果系统管理员错误的使用了网络的拓扑结构,比如,工作站或终端通过某个集连设备集中到交换集线器,然后通过路由再进入主机群。这样的布线表面看来好象有物理上的分割,但实际上,从逻辑的观点,任何一台机器的数据除了到达主机外,还同时流向别的机器。任何一台机器都有可能架个sniffer 来监控从本地网络流向主机的所有数据。安全的布线应该是从各终端就使用交换设备。(在没有spoofer的情况下)
黑客技术(7)- ARP欺骗
ARP 欺骗技术
本来不打算写这接下的一系列讨论欺骗的文章(计划中有arp欺骗、icmp欺骗、路由rip欺骗、ip地址欺骗等),这主要是自己有些担心有些人会给网管增加日常工作量,但是想想还是写的好,因为通常在你猛打完补丁后,你可能觉得你的系统安全了,但是,实际上,打补丁只是安全措施里的一个很基本的步骤而已,通常一个hacker要进入你的系统,他所要做的并不是你打补丁就可以避免的,象这些欺骗都要求你必须掌握相当的网络底层知识和合理安排物理布线才可阻止得了的。特别是多种手法混用的时候,特别要说明的是:有些人往往以为会使用某些工具入侵就觉得自己是个hacker, 呵呵。。其实,我认为这只是入门而已(有些是连门都找不到),通过本文,我想让人们知道,一个hacker在真正入侵系统时,他并不是依靠别人写的什么软件的。更多是靠对系统和网络的深入了解来达到这个目的。
我想我会尽可能将我知道的写出来,同时也将尽可能把防止欺骗的解决办法写出来,当然,这只是我知道的而已,如果有失误的地方,欢迎指正。 呵呵。。
首先还是得说一下什么是 ARP ,如果你在UNIX Shell下输入 arp -a
(9x下也是),你的输出看起来应该是这样的:
Interface: xxx.xxx.xxx.xxx
Internet Address Physical Address Type
xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic
xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic
...... ......... ....
这里第一列显示的是ip地址,第二列显示的是和ip地址对应的网络接口卡的硬件地址(MAC),第三列是该ip和mac的对应关系类型。
可见,arp是一种将ip转化成以ip对应的网卡的物理地址的一种协议,或者说ARP协议是一种将ip地址转化成MAC地址的一种协议,它靠维持在内存中保存的一张表来使ip得以在网络上被目标机器应答。
为什么要将ip转化成mac 呢? 呵呵。。解释下去太多了,简单的说,这是因为在tcp网络环境下,一个ip包走到哪里,要怎么走是靠路由表定义,但是,当ip包到达该网络后,哪台机器响应这个ip包却是靠该ip包中所包含的mac地址来识别,也就是说,只有mac地址和该ip包中的mac地址相同的机器才会应答这个ip包(好象很多余,呵呵。。),因为在网络中,每一台主机都会有发送ip包的时候,所以,在每台主机的内存中,都有一个 arp--> mac 的转换表。通常是动态的转 换表(注意在路由中,该arp表可以被设置成静态)。也就是说,该对应表会被
主机在需要的时候刷新。这是由于乙太网在子网层上的传输是靠48位的mac地址而决定的。
通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的mac地址,如果没有找到,该主机就发送一个ARP广播包,看起来象这样子:
“我是主机xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip为xxx.xxx.xxx.xx1的
主机请报上你的mac来”
ip为xxx.xxx.xxx.xx1的主机响应这个广播,应答ARP广播为:
“我是xxx.xxx.xxx.xx1,我的mac为xxxxxxxxxx2”
于是,主机刷新自己的ARP缓存。然后发出该ip包。
了解这些常识后,现在就可以谈在网络中如何实现ARP欺骗了,可以看看这样一个例子:
一个入侵者想非法进入某台主机,他知道这台主机的火墙只对192.0.0.3(假设)这个ip开放23口(telnet),而他必须要使用telnet来进入这台主机,所以他要这么做:
1、他先研究192.0.0.3这台主机,发现这台95的机器使用一个oob就可以让他死掉。
2、于是,他送一个洪水包给192.0.0.3的139口,于是,该机器应包而死。
3、这时,主机发到192.0.0.3的ip包将无法被机器应答,系统开始更新自己的arp对应表。将192.0.0.3的项目搽去。
4、这段时间里,入侵者把自己的ip改成192.0.0.3
5、他发一个ping(icmp 0)给主机,要求主机更新主机的arp转换表。
6、主机找到该ip,然后在arp表中加如新的ip-->mac对应关系。
7、火墙失效了,入侵的ip变成合法的mac地址,可以telnet 了。
(好象很罗嗦,呵呵。。不过这是很典型的例子)
现在,假如该主机不只提供telnet , 它还提供r命令(rsh,rcopy,rlogin等)那么,所有的安全约定将无效,入侵者可以放心的使用这台主机的资源而不用担心被记录什么。
有人也许会说,这其实就是冒用ip嘛。。呵呵。。不错,是冒用了ip,但决不是ip欺骗,ip欺骗的原理比这要复杂的多,实现的机理也完全不一样。
上面就是一个ARP的欺骗过程,这是在同网段发生的情况,但是,提醒注意的是,利用交换集线器或网桥是无法阻止ARP欺骗的,只有路由分段是有效的阻止手段。(也就是ip包必须经过路由转发。在有路由转发的情况下,ARP欺骗如配合ICMP欺骗将对网络造成极大的危害,从某种角度将,入侵者可以跨过路由监听网络中任何两点的通讯,如果有装火墙,请注意火墙有没有提示过类似:某某IP是局域IP但从某某路由来等这样的信息。详细实施以后会讨论到。)
在有路由转发的情况下,发送到达路由的ip的主机其arp对应表中,ip的对应值是路由的mac。
比如:
我 pingwww.nease.net 后,那么在我主机中,www.nease.net的IP对应项不是nease的mac 而是我路由的mac。其ip也是我路由的IP.(有些网络软件通过交换路由ARP可以得到远程IP的MAC)
有兴趣做深入一步的朋友可以考虑这样一种情况:
假设这个入侵者很不幸的从化学食堂出来后摔了一跤,突然想到:我要经过一个路由才可以走到那台有火墙的主机!!! ^^^^
于是这个不幸的入侵者开始坐下来痛苦的思考:
1、我的机器可以进入那个网段,但是,不是用192.0.0.3的IP
2、如果我用那个IP,就算那台正版192.0.0.3的机器死了,那个网络里的机器也不会把ip包丢到路由传给我。
3、所以,我要骗主机把ip包丢到路由。
通过多种欺骗手法可以达到这个目的。所以他开始这样做:
1、为了使自己发出的非法ip包能在网络上活久一点,他开始修改ttl为下面的过程中可能带来的问题做准备。他把ttl改成255.(ttl定义一个ip包如果在网络上到不了主机后,在网络上能存活的时间,改长一点在本例中有利于做充足的广播)
2、他从贴身口袋中掏出一张软盘,这张有体温的软盘中有他以前用sniffer时保存的各种ip包类型。
3、他用一个合法的ip进入网络,然后和上面一样,发个洪水包让正版的192.0.0.3死掉,然后他用192.0.0.3进入网络。
4、在该网络的主机找不到原来的192.0.0.3的mac后,将更新自己的ARP对应表。于是他赶紧修改软盘中的有关ARP广播包的数据,然后对网络广播说“能响应ip为192.0.0.3的mac 是我”。
5、好了,现在每台主机都知道了,一个新的MAC地址对应ip 192.0.0.3,一个ARP欺骗完成了,但是,每台主机都只会在局域网中找这个地址而根本就不会把发送给192.0.0.3的ip包丢给路由。于是他还得构造一个ICMP的重定向广播。6、他开始再修改软盘中的有关ICMP广播包的数据,然后发送这个包,告诉网络中的主机:“到192.0.0.3的路由最短路径不是局域网,而是路由,请主机重定向你们的路由路径,把所有到192.0.0.3的ip包丢给路由哦。”
7、主机接受这个合理的ICMP重定向,于是修改自己的路由路径,把对192.0.0.3 的ip通讯都丢给路由器。
8、不幸的入侵者终于可以在路由外收到来自路由内的主机的ip包了,他可以开始telnet到主机的23口,用ip 192.0.0.3.
9、这个入侵者一把冲出芙蓉一(229),对着楼下来往的女生喊到:“一二一。。”
呵呵。。他完成了。
注意,这只是一个典型的例子,在实际操作中要考虑的问题还不只这些。
现在想想,如果他要用的是sniffer会怎样?
假如这个入侵者实在是倒霉 (因为喊“一二一。。”而被女生痛殴),当他从地上爬起来后突然发现:其实我要经过好几个路由才可以到那台主机啊。。。。。这时他要怎么做?
呵呵。。。有兴趣做更深入了解的朋友可以自己构思。通常入侵者是这样做的:
1、苦思冥想六天六夜。。。。。
.
.
.
N、一把冲出芙蓉一(229),狂叫一声,一头栽向水泥马路。
可见,利用ARP欺骗,一个入侵者可以得到:
1、利用基于ip的安全性不足,冒用一个合法ip来进入主机。
2、逃过基于ip的许多程序的安全检查,如NSF,R系列命令等。
甚至可以得到:
栽账嫁祸给某人,让他跳到黄河洗不清,永世不得超生。
那么,如何防止ARP欺骗呢?从我收集整理的资料中,我找出这几条:(欢迎补充)
1、不要把你的网络安全信任关系建立在ip基础上或mac基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在ip+mac基础上。
2、设置静态的mac-->ip对应表,不要让主机刷新你设定好的转换表。
3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
5、使用"proxy"代理ip的传输。
6、使用硬件屏蔽主机。设置好你的路由,确保ip地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
7、管理员定期用响应的ip包中获得一个rarp请求,然后检查ARP响应的真实性。
8、管理员定期轮询,检查主机上的ARP缓存。
9、使用火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。
以下是我收集的资料,供做进一步了解ARP协议和掌握下次会说到的sniffer on arp spoofing
ARP的缓存记录格式:
每一行为:
IF Indexhysical Address:IP Address:Type
其中: IF Index 为:1 乙太网
2 实验乙太网
3 X.25
4 Proteon ProNET (Token Ring)
5 混杂方式
6 IEEE802.X
7 ARC网
ARP广播申请和应答结构
硬件类型:协议类型:协议地址长:硬件地址长:操作码:发送机硬件地址:
发送机IP地址:接受机硬件地址:接受机IP地址。
其中:协议类型为: 512 XEROX PUP
513 PUP 地址转换
1536 XEROX NS IDP
2048 Internet 协议 (IP)
2049 X.752050NBS
2051 ECMA
2053 X.25第3层
2054 ARP
2055 XNS
4096 伯克利追踪者
21000 BBS Simnet
24577 DEC MOP 转储/装载
24578 DEC MOP 远程控制台
24579 DEC 网 IV 段
24580 DEC LAT
24582 DEC
32773 HP 探示器
32821 RARP
32823 Apple Talk
32824 DEC 局域网桥
如果你用过NetXRay ,那么这些可以帮助你了解在细节上的ARP欺骗如何配合ICMP欺骗而让一个某种类型的广播包流入一个网络。