返回首页

黑客入侵具体环节

时间:2005-12-19 来源: 作者: 点击:
因特网上的网络系统多数使用UNIX主机,当然也有许多采用Solaris、Digital Unix、Linux等主机的。此处主要以针对UNIX主机为例,阐述如下: 1.系统目标分析 a.锁定目标 因特网上每一台网络主机都有一个符合自己的名字,就像每个人都有一个合适的称呼一样,术语称做域名;
  因特网上的网络系统多数使用UNIX主机,当然也有许多采用Solaris、Digital Unix、Linux等主机的。此处主要以针对UNIX主机为例,阐述如下:


   1.系统目标分析
   a.锁定目标
   因特网上每一台网络主机都有一个符合自己的名字,就像每个人都有一个合适的称呼一样,术语称做域名;然而一个人可能会有几个名字,域名的定义也会有同样的情况,在网上能真正标识主机的是IP地址,域名只是用IP地址指定的主机便于好记而起的名字。
   当然,利用域名和IP地址都可以顺利找到主机(除非你的网络不通)。要开始入侵谁,首先要确定目标,就是要知道这台主机的域名或者IP地址,例如:www.gun.com或124.18.65.1等。知道了要攻击目标的位置还很不够,还需要了解系统类型、操作系统、提供服务等全面的资料,才能做到“知己知彼,百战不怠”。如何获取相关信息,下面我们将予以介绍,如果对网络域名和IP地址概念不清楚的,赶紧翻一下手头的书吧!并且现在练习使用一下ping命令吧!相信在实战中会用到!


   b.服务分析
   因特网上的主机大部分都提供WWW、MAIL、FTP、BBS等日常网络服务,每一台网络主机原则上可以同时提供几种服务,一台主机为何能够提供如此多的服务呢?因为,UNIX系统是一种多用户、多任务的系统,将网络服务划分许多不同的端口,每一个端口提供一种不同服务,一个服务会有一个程序时刻监视端口活动,并且给予应有的应答。并且,端口的定义已经成为了标准,例如:FTP服务的端口是21,Telnet服务的端口是23,WWW服务的端口是80等,如果还想了解更多请进行下面的步骤:


   进入MS-DOS PROMPT
   C:\WINDOWS>edit services (回车)
   慢慢阅读吧!不过很多的端口都没有什么用,不必把它们都记住!


   我们如何知道目标主机提供了什么服务呢?很简单,用提供不同服务的应用程序试一试就知道了,例如:使用Telnet、FTP等用户软件向目标主机申请服务,如果主机有应答就说明主机提供了这个服务,开放了这个端口的服务,但我们现在只需知道目标主机的服务端口是否处于“激活”状态,不过这样试比较麻烦并且资料不全。
   黑客经常使用一些象PORTSCAN这样的工具软件,对目标主机一定范围的端口进行扫描。这样可以全部掌握目标主机的端口情况。现在介绍一个好工具HAKTEK,这是一个非常实用的一个工具软件,它将许多应用集成在一起的工具,其中包括: Ping、IP地址范围扫描、目标主机端口扫描、邮件炸弹、过滤邮件、Finger主机等都是非常实用的工具。完成目标主机扫描任务,首先告诉HAKTEK目标主机的位置,即域名或IP地址。然后选择端口扫描,输入扫描范围,开始扫描,屏幕很快返回激活的端口号以及对应的服务。对资料的收集非常迅速完整。
   为什么要掌握目标的服务资料?如果目标主机上几个关键的端口的服务都没有提供,还是放弃进攻的计划吧,不要浪费太多时间放在这个胜率不大的目标上,赶紧选择下一个目标。先看一个扫描实例:


   Scanning host xx.xx.xx, ports 0 to 1000
   Port 7 found. Desc='echo'
   Port 21 found. Desc='ftp'
   Port 23 found. Desc='telnet'
   Port 25 found. Desc='smtp'
   Port 53 found. Desc='domain/nameserver'
   Port 79 found. Desc='finger'
   Port 80 found. Desc='www'
   Port 90 found.
   Port 111 found. Desc='portmap/sunrpc'
   Port 512 found. Desc='biff/exec'
   Port 513 found. Desc='login/who'
   Port 514 found. Desc='shell/syslog'
   Port 515 found. Desc='printer'
   Done!


   如果系统主要端口被“激活”,也不要高兴太早,因为系统可能加了某些限制,不允许任何用户远程连接或不允许ROOT远程连接,或者进入后限制用户只能做指定的活动便又被强行中断,这仅仅指Telnet服务而言,其实还会遇到很多复杂的情况。

  c.系统分析
   现在开始讲解如何了解系统,目标主机采用的是什么操作系统。其实很简单,首先打开WIN95的RUN窗口,然后输入命令:


   Telnet xx.xx.xx.xx(目标主机)
   然后按“确定”,看一看你的屏幕会出现什么?
   Digital UNIX (xx.xx.xx) (ttyp1)
   login:


   不用我说你也会知道,你的目标主机和操作系统是什么啦!对,当然是UNIX机,使用的是Digital UNIX啦!好,我们再看一个操作例子:


   UNIX(r) System V Release 4.0 (xx.xx.xx)
   login:
   这是什么?可能是SUN主机、Sun Os或Solaris,具体是什么?我也说不清楚!这一方法不是对所有的系统都有用,例如像下面的情况,就不好判断是什么系统:
   XXXX OS (xx.xx.xx) (ttyp1)
   login:
  有些系统将显示信息进行了更改,因此就不好判断其系统的信息,但根据一些经验可以进行初步的判断,它可能是HP Unix。


   另外,利用上面介绍的工具HAKTEK,利用目标主机的Finger功能,也可以泄露系统的信息。
   Establishing real-time userlist... (Only works if the sysadmin is a moron)
   ---[ Finger session ]---
   Welcome to Linux version 2.0.30 at xx.xx.xx...


   上面的这句话就已经提示了足够多的系统信息!


   如何知道系统中其它端口使用的是什么服务?例如23、25、80等端口。采用同样上面的手段,利用TELNET、FTP等。使用TELNET是请将端口号作为命令行参数,例如:
   Telnet xx.xx.xx 25
   就会有类似下面的信息提供给你:
   220 xx.xx.xx Sendmail 5.65v3.2 (1.1.8.2/31Jan97-1019AM) Wed, 3 Jun 1998 13:50:47 +0900
   这样,很清楚目标主机Sendm-ail的版本。当然,有时这种操作对检测有很多端口和不同的系统共处一机根本没有用。因此,需要对应的应用工具才能获得相应的信息。例如:
   Connected to xx.xx.xx.220 xx.xx.xx FTP server (Digital UNIX Version 5.60) ready.
   User (xx.xx.xx:(none)):
   因特网上大多数是WWW主机,如何知道目标主机使用的是什么样的WEB服务器,其实网上有许多可供下载的免费查询工具,只要你告诉它目标主机的地址和WEB服务端口,它立刻会告诉你有关信息。

  2.突破防线
   在上一小节,介绍了一下如何对系统的目标分析。实际上,要得到系统详细资料还要费一番工夫。当前的问题是如何取得系统密码文件,从而对密码文件进行破解,得到较高权限帐户的口令。
   现在来分两种情况,第一种考虑黑客是目标主机的一个普通用户,第二种当然考虑黑客不是目标主机的用户。
   对于第一种用户应该对目标主机的系统资料应该有一定了解,当然可能还不知道具体,例如:你是一个免费主页空间的用户。无论第一种用户还是第二种用户,每一个人都想成为目标主机的超级用户,这就象解一道数学题,越难的题就越想解出来,尽管可能要花费好几天的时间。
   得到密码文件又有两种情况,通过普通用户登录后取得文件,例如利用FTP、Telnet等工具,第二种是利用其它服务端口的BUG或漏洞取得密码文件,例如利用WWW服务、电子邮件等服务。
   对于使用普通用户登录取得密码文件,除了你本身已经是目标主机的普通用户这一有利条件外,对于陌生的目标主机可能只知道它有一个ROOT用户,至于其他帐户我们一无所知,这又是我们面临的难题,要想登录目标主机我们至少要知道一个普通用户,现在我们连帐号都不知道,就更不用说密码了。怎么办?真是急死人!
   不要急,我们有办法可以获得一些帐号,具体方法有很多,我们现在就介绍几种:


   a.利用目标主机的Finger功能
   还记得上一小节介绍的工具吗?对,就是HAKTEK,它的Finger功能可以完全胜任,在TARGET中输入目标主机的地址,域名或IP地址都可以,选择Finger按钮,就会出现例如下面的信息:
   Target changed to xx.xx.xx
   Establishing real-time userlist... (Only works if the sysadmin is a moron)


   ---[ Finger session ]---
   Logi Name TTY
   Idle When Where
   xxxx ??? pts/8
   2d fri 16:15 xx.xx.xx.xx...
   记录上述帐号信息,经过一段时间的监测,就会积累一定的帐号信息。


   b.来源于电子邮件地址
   有些用户电子邮件地址(指@符号前面的部分)与其取邮件的帐号是一致的,这样就能使我们轻松地获得目标主机的一个普通帐号,当然你可能没有目标主机的邮件地址,你可以去找啊,到其网站的主页上去寻找,肯定上面有一些业务联系、制作人员的邮件地址,这不是就有所收获了吗!


   c.非常全面的X.500功能
   有些主机提供了X.500的目录查询服务,这就给我们提供了非常好的获得信息的途径。如何知道是否提供X.500的功能,我们不是有HAKTEK这个工具吗?扫描目标主机的端口,如果端口105的状态已经被“激活”,在自己的机器上安装一个X.500的客户查询的工具,选择目标主机,可以获得意想不到的信息。


   d.习惯性常用帐号
   根据平时的经验,一些系统总有一些习惯性的常用帐号,这些帐号都是系统中因为某种应用而设置的。例如:制作WWW网站的帐号可能是html、www、web等,安装ORACLE数据库的可能有oracle的帐号,用户培训或教学而设置的user1、user2、student1、student2、client1、client2等帐户,一些常用的英文名字也经常会使用,例如:tom、john等,因此可以根据系统所提供的服务和在其主页得到的工作人员的名字信息进行猜测。

说了这么多,还是没有用啊?只得到了一些帐号,那密码怎样能够得到呢?其实对很多黑客入侵系统实例的分析表明,由于普通用户对系统安全没有具体的认识,因此其密码很容易被猜测出来,一般用户的初始密码大部分和其帐号相同,这根本没有一点安全性,在得到其帐号信息后就得到了它的密码,真让人兴奋,另外一部分使用的密码比较简单,例如:将帐号的第一个字母大写、后面加一个数字,或者使用简单数字0、1等作为密码。还有一些成对的帐号和密码,例如:帐号是admin,那么密码可能是:manager等。在对普通用户进行测试密码时,实际上也可以对目标主机系统的重要帐号进行猜测,例如:一些系统管理员将ROOT的密码定为主机的名字,象Sun、Digital、sparc20、alpha2100等,oracle数据库的帐号密码为oracle7、oracle8等,如果能迅速得到高级权限的密码,我们将能节省很多工作,但这并不容易,因为经常发生系统安全的事故,现在很难在系统的帐号的密码有所突破。
   请记住:
   一般用户常用口令可以通过经验性的分析得到。
   用户帐号本身的使用往往是帐号第一字母简单地大写或全部大写(system、manager、admin等词或简单变化)、后面加上几个简单数字(一般是0、1、123、12345、888、168等)。
   我们还是继续以普通用户的身份进入吧! 现在每个系统管理员都有一定系统安全管理的知识,利用一些系统帐号不能轻易进入。虽然是这样,但它一般用户却没有注意对系统安全的理解,因此我们突破口也就在这里,许多黑客用上面的猜测方法试过不少机器,大都可以成功。如果一个网站上传主页的帐号和口令猜中,那就可以随便在它的网站留下任何信息。
   现在,我们以普通用户的身份进入了主机,当然是用Telnet或FTP啦!对于某些系统能够进入系统已经是致命的打击了,例如:上面提到的网站主页上传帐号可以轻松用于更改网站内容,入侵者完全可以给其致命一击。但真正的黑客不应该做这些,应该只想考虑一道难题有一个完美的答案就行了。而且,莽撞行事还会带来法律上的麻烦。
   好了,现在可以轻松一下了,因为已经取得了一个小小的胜利,但这并不是我们这道数学题的最后结果,我们现在只是找到计算这道题的一个公式,如何利用这个公式计算出结果,还有一条比较漫长的路。


   3.智取文档
   通过自己的努力进入别人的主机,可能有很大的运气因素,但只要进入,就是一件让人非常兴奋的事。现在做什么呢?入侵者现在只是一个没有任何权限的普通用户,我们能做什么呢?对于一个只想进入看一看,到这里也就足够了,但入侵者想成为管理者,成为这台主机临时的主人,但不想伤害任何人和破坏任何系统。
   为了实现这个目标,将如何进行下面的行动呢?要想成为超级用户,最简单的方法是拥有超级用户的口令,通常UNIX所指的是root用户的口令。
   但是,每个系统管理员都不是“傻子”,他们不会使用一个非常简单易猜的口令让你那么容易成为英雄,但如果你运气很好,可能会碰上这样的系统管理员。所以使用猜的方法效果非常小。所以只有使用其他的方法,使自己成为超级用户。


   a.程序突破法
   利用UNIX系统某些具有超级用户SID、UID等权限的应用程序和一些系统漏洞,利用C语言开发一些突破程序,使自己成为超级用户。这种方法有很强的实用性,但是会受到很多的限制,例如你需要有系统的C语言编译技能。因此,首先你要判断你是否有这样的权限,进入系统后,敲cc或者gcc等命令,看一看系统会有那些提示,你便知道你有没有这样的使用权限。


   b.密码破解法
   对于第一种方法对人的要求比较高,你必须了解系统的内部结构和原理,并且要有非常熟练的程序开发能力,才能很好地利用第一种方法,因此第一种方法只适合于各种系统的测试。密码破解法适合于各种水平的人使用,现在唯一的问题,就是如何取得系统的密码文件?
   先看一看,要找的目标文件放在了什么地方?叫什么名字?各种系统有着自己独特的方式。
   大部分的系统都对其密码文件进行了处理,我们只能看到密码文件的用户名,而不能看到和用户名对应的加密后密码的文本,但有些系统没有做特殊处理,就可以抓取,例如象Digital Unix等。怎样才能获得真正的密码文件呢?
   利用系统管理员的失误。系统管理员经常对系统的重要文件进行备份,但在备份时忘记了文件权限的限制,找到这些文件吧!
   利用系统安全漏洞。某些系统在安装后忘记安装升级补丁,因此系统系统便留下许多后门,利用这些后门我们可以轻松获得这些文档。
   某些系统工具的错误文件。例如Solaris的FTPD进程产生的CORE文档,WWW服务器可以抓取密码文件等。
   利用黑客工具软件将SHADOW文件进行转换。

   c.信息截取法
   这种方法要求比较高,利用软件和硬件工具时刻监视系统主机的工作,等待用户登录,记录登录信息,从而取得用户密码。
   取得密码文件的方法是非常多的,我们这里不能详细介绍,针对于各种系统和环境的不同,应该采取非常灵活的方法。

------分隔线----------------------------
顶一下
(5)
100%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容