矛与盾:黑客攻防与脚本编程
上QQ阅读APP看书,第一时间看更新

第2章 剖析黑客的攻击方式

重点提示

网络欺骗攻击

口令猜解攻击

缓冲区溢出攻击

在很多人的眼中,黑客使网络中充斥着太多骗局和陷阱,黑客使用各种攻击手段来达到其不可告人的目的。黑客常用攻击手段有网络欺骗攻击、口令猜解攻击和缓冲区溢出攻击等。

2.1 网络欺骗攻击

近年来,在与入侵者周旋的过程中,另一种有效的信息安全技术正渐渐地进入了人们的视野,那就是网络欺骗。网络欺骗攻击也是黑客常用的攻击方式,下面介绍几种常见的网络欺骗攻击方式。

2.1.1 攻击原理

用户可以通过IE等浏览器访问各种各样的Web站点,一般的用户不会意识到有这些问题存在:正在访问的网页已经被黑客篡改过,网页上的信息是虚假的。例如,黑客将用户要浏览的网页的URL改写为指向黑客自己的服务器,当用户浏览目标网页的时候,实际上是向黑客服务器发出请求,这样黑客就可以实现欺骗的目的。网络欺骗的主要方式有ARP欺骗、IP欺骗、DNS欺骗、Web欺骗以及电子邮件欺骗等,下面将介绍这几种欺骗的攻击原理。

1.ARP欺骗

ARP(Address Resolution Protocol,地址解析协议)的作用是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信能够顺利进行。在局域网中,网络中实际传输的是“帧”,而帧里面是有目标主机的MAC地址的。所以一个主机和另一个主机要进行直接通信,必须通过地址解析协议获得目标主机的MAC地址。而“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP欺骗是黑客常用的攻击方式之一,ARP欺骗分为对路由器ARP表的欺骗和对内网的网关欺骗两种方式。

❑ 对路由器ARP表的欺骗:其本质是截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常计算机无法收到信息。

❑ 对内网的网关欺骗:其本质是伪造网关。它是通过建立假网关,让被它欺骗的计算机向假网关发送数据,而不是通过正常的路由器途径上网。

一般来说,ARP欺骗攻击带来的后果非常严重。只需成功感染一台电脑,就可能导致整个局域网都无法上网,严重的甚至可能带来整个网络的瘫痪。

2.IP欺骗

IP欺骗的技术比较复杂,不是简单地照猫画老虎就能掌握,但作为常规攻击手段,有必要理解其原理,至少有利于提高自己的安全意识。

IP欺骗就是伪造他人的源IP地址,其实质就是让一台计算机来扮演另一台计算机,以达到欺骗的目的。IP欺骗就是利用主机之间的信任关系来实现的。如果两台主机之间的信任关系是基于IP地址建立起来的,那么在可以冒充另一台计算机IP地址的前提下,就可以使用rlogin命令登录到该主机上,而不需任何口令验证,这就是IP欺骗的最根本的理论依据。

IP欺骗的实现过程如下:

(1)选定目标计算机。且其信任模式已被发现,并找到一个被目标主机信任的主机。

(2)一旦发现被信任的主机,为了实现伪装,则往往使其丧失工作能力。由于黑客将要代替真正的被信任主机,所以必须确保真正被信任的主机不能接收到任何有效的网络数据,否则将会被揭穿。

(3)使得被信任的主机丧失工作能力后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客可以使用一种简单的命令来放置系统后门,以进行非授权操作。

这就是IP欺骗攻击的全过程。该过程看起来很完美简单,但实际上还需要做很多工作。虽然可以通过编程的方法来改变发出的数据包的IP地址,但TCP对IP进行进一步的封装,是不会让黑客轻易得逞的。

由于TCP是面向连接的协议,所以在双方正式传输数据之前,需要使用三次握手来建立一个稳定的连接。假设还是主机A和主机B进行通信,主机B先发送带有SYN标志的数据段通知主机A建立TCP连接,TCP的可靠性就是由数据包中的多位控制字来提供的,其中最重要的是数据序列SYN和数据确认标志ACK,且将TCP报头中的SYN设为自己本次连接中的初始值(ISN)。当主机A收到主机B的SYN包之后,会发送给主机B一个带有SYN+ACK标志的数据段,告之自己的ISN并确认主机A发送来的第一个数据段,将ACK设置成主机B的SYN+1。

当主机B确认收到主机A的SYN+ACK数据包后,将ACK设置成主机A的SYN+1。主机A收到主机B的ACK后,连接成功建立,双方可以正式传输数据了。假如黑客想冒充主机B对主机A进行攻击,就要先使用主机B的IP地址发送SYN标志给A,但当A收到后,并不会把SYN+ACK发送到黑客的主机上,而是发送到真正的B上去,这时IP欺骗就失败了,因为B根本没发送SYN请求。所以如果要冒充B,首先要让B失去工作能力。

此时最难的是对A进行攻击,必须知道A使用的ISN。TCP使用的ISN是一个32位的计数器,从0~4294 967295。TCP为每一个连接选择一个初始序列号ISN,为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同的系统有着不同的算法。

所以要对目标主机进行攻击,还必须知道目标主机使用的数据包序列号。黑客首先与被攻击主机的一个端口(如SMTP对应的端口)建立起正常的连接。通常,这个过程被重复若干次,并将目标主机最后所发送的ISN存储起来。黑客还需要猜测他的主机与被信任主机之间的RTT时间(往返时间),这个RTT时间是通过多次统计平均求出的。RTT对于估计下一个ISN是非常重要的。每秒钟ISN增加128000,每次连接增加64000。

现在就不难估计出ISN的大小了,它是128000乘以RTT的一半,如果此时目标主机刚刚建立过一个连接,再加上一个64000。在估计出ISN大小后,立即就开始进行攻击。如果攻击者估计正确,目标主机将会接收该ACK。至此,将开始数据传输。一般地,攻击者将在系统中放置一个后门,以便侵入。

3.DNS欺骗

当一台主机发送一个请求要求解析某个域名时,先把解析请求发到自己的DNS(Domain Name Server,域名服务器)上。DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。如果可以冒充域名服务器,再把查询的IP地址设为攻击者的IP地址,这样,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗。

实际上,就是把攻击者的计算机设成目标域名的代理服务器,这样,所有外界进入目标计算机的数据流都在黑客的监视之下了,黑客可以任意窃听甚至修改数据流里的数据,收集到大量的信息。与IP欺骗相似,DNS欺骗的技术在实现上仍然有一定的困难,为了克服这些困难,有必要了解DNS查询包的结构。

在DNS查询包中有个标识IP,它是一个很重要的域,其作用是鉴别每个DNS数据包的印记,从客户端设置,由服务器返回,使用户匹配请求与相应。如果某用户要打开百度主页(www.baidu.com),黑客要想通过假的域名服务器(如220.181.6.45)进行欺骗,就要在真正的域名服务器(220.181.6.18)返回响应前,先给出查询的用户的IP地址。

但在DNS查询包中有一个重要的域就是标识ID,如果要使发送伪造的DNS信息包不被识破,就必须伪造出正确的ID。如果无法判别该标记,DNS欺骗将无法进行。只要在局域网上安装有嗅探器,通过嗅探器就可以知道用户的ID。但要在Internet上实现欺骗,就只有发送大量的一定范围的DNS信息包,来得到正确的ID。

4.电子邮件欺骗

电子邮件欺骗是指对电子邮件的信息头进行修改,以使该信息看起来好像来自其真实源地址之外的其他地址。这类欺骗只要用户提高警惕,一般危害性不是太大。攻击者使用电子邮件欺骗有三个目的:隐藏自己的身份;冒充别人的身份发送邮件;电子邮件欺骗能被看作是社会工程的一种表现形式。例如,如果攻击者想让用户发给他一份敏感文件,攻击者伪装他的邮件地址,使用户以为这是老板的要求,用户可能会发给他这份文件。

执行电子邮件欺骗有如下几种基本方法,每一种有不同难度级别,执行不同层次的隐蔽:(1)相似的电子邮件地址。使用这种类型的攻击,攻击者找到一个公司的管理人员的名字。有了这个名字后,攻击者注册一个看上去类似高级管理人员名字的邮件地址,然后在电子邮件的别名字段填入管理者的名字。因为邮件地址似乎是正确的,所以收信人很可能会回复它,这样攻击者就会得到想要的信息。

(2)远程联系,登录到端口25。邮件欺骗的更复杂的一个方法是远程登录到邮件服务器的端口25(邮件服务器通过此端口在因特网上发送邮件)。当攻击者想发送给用户信息时,他先写一个信息,再单击发送。接下来其邮件服务器与用户的邮件服务器联系,在端口25 发送信息,转移信息。

5.Web欺骗

黑客通过Web欺骗攻击对Web站点进行复制并进行修改,而修改后的Web站点看起来十分逼真,它拥有相同的网页和链接。这样,黑客就可以控制错误的Web站点,以获得攻击者浏览器和Web之间的所有网络信息。黑客可以监视目标计算机的网络信息,记录访问的网页和内容等。当用户填写完一个表单并发送后,这些数据将被传送到Web服务器,Web服务器将返回必要的信息,但不幸的是,攻击者完全可以截获并加以使用。绝大部分在线公司都是使用表单来完成业务的,这意味着攻击者可以获得用户的账户和密码。

在得到必要的数据后,攻击者可以通过修改受攻击者和Web服务器之间任何一个方向上的数据,来进行某些破坏活动。攻击者修改受攻击者的确认数据,如果在线订购某个产品,黑客就可能修改产品编码、数量或要求等。黑客也能修改Web服务器所返回的数据信息。例如,插入易于误解或者攻击性的资料,破坏用户和在线公司的关系等。

2.1.2 攻击与防御实战

网络欺骗攻击方式是黑客经常使用的一种攻击方式,也是一种隐蔽性较高的网络攻击方式。这里以网络钓鱼为例,来介绍其攻击过程和防御措施。

1.网络钓鱼攻击概念

网络钓鱼(Phishing,与钓鱼的英语fishing发音相近,又名钓鱼法或钓鱼式攻击)是通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人回复敏感信息(如用户名、口令、账号ID、ATM PIN码或信用卡详细信息)的一种攻击方式。最典型的网络钓鱼攻击将收信人引诱到一个通过精心设计与目标组织的网站非常相似的钓鱼网站上,并获取收信人在此网站上输入的个人信息,通常这个攻击过程用户是不会察觉的。

这些个人信息对黑客们具有非常大的吸引力,因为这些信息使其可以假冒受害者进行一系列非法活动,从而获得经济利益。受害者经常遭受显著的经济损失或全部个人信息被窃取并被用于犯罪的目的。虽然网络钓鱼攻击的网站生存的时间很短,几天甚至更短,但在所有接触诈骗信息的用户中,仍然会有一部分人对这些骗局做出响应。

由于网络钓鱼是一个非自我复制的恶意代码,所以需要向其他人发送拷贝文件。网络钓鱼可以作为电子邮件附件传播,或其可能隐藏在用户与其他用户进行交流的文档和其他文件中,还可以被其他恶意代码(如蠕虫)所携带。网络钓鱼有时也会隐藏在从互联网上下载的免费软件中。当用户安装这个软件时,木马就会在后台被自动安装。

2.网络钓鱼攻击的常用手段

从最初的电子邮件虚假信息欺诈到后来的假冒网上银行、网上证券等,都说明了近年来网络钓鱼攻击愈演愈烈的形势。

(1)发送电子邮件,以虚假信息引诱用户中圈套。

黑客以垃圾邮件的形式大量发送欺诈性邮件,这些邮件多以中奖、对账等内容引诱用户在邮件中填入金融账号和密码,或以各种理由要求收件人登录某网页提交用户名、密码、身份证号、信用卡号等信息,继而达到盗窃用户资金的目的。

最近发现的一种骗取用户的账号和密码的“网络钓鱼”电子邮件,该邮件利用了IE的图片映射地址欺骗漏洞,并精心设计脚本程序,通过一个弹出窗口遮挡住了IE浏览器的地址栏,使用户无法看到该网站的真实地址。当用户使用未打补丁的Outlook打开此邮件时,状态栏显示链接是虚假的。当用户单击链接时,实际连接的是钓鱼网站,而且用户一旦输入自己的账号和密码,则个人信息很有可能给黑客窃取。

(2)建立假冒网上银行、网上证券网站,骗取用户账号和密码实施盗窃。

黑客通过创建域名和网页内容都与真正网上银行系统、网上证券交易平台极为相似的网站,来引诱用户输入账号和密码等信息,进而通过真正的网上银行、网上证券系统或伪造银行储蓄卡、证券交易卡盗窃资金。另外,还可以利用跨站脚本,即利用合法网站服务器程序上的漏洞,在某些网页中插入恶意HTML代码,屏蔽住一些可以用来辨别网站真假的重要信息,利用Cookies窃取用户信息。

如要假冒某假冒银行网站,网址为http://www.1cbc.com.cn,而真正银行网站是http://www.icbc.com.cn,犯罪分子利用数字1和字母i非常相近的特点企图欺骗粗心的用户。

(3)利用虚假的电子商务进行诈骗。

该种方式是通过建立电子商务网站,或在比较知名、大型的电子商务网站上发布虚假商品销售信息,黑客在收到受害人的购物汇款后就销声匿迹。

除少数人自己创建电子商务网站外,大部分人都采用在某些电子商务网站上,如“易趣”、“淘宝”、“阿里巴巴”等,发布虚假信息,以“超低价”、“免税”、“走私货”、“慈善义卖”的名义出售各种产品。很多人在低价的诱惑下上当受骗。同时又因为网上交易大多都是异地交易,通常需要汇款。不法分子一般要求消费者先付部分款,再以各种理由诱骗消费者付余款或者其他各种名目的款项,得到钱款或被识破时,就立即切断与消费者的一切联系。

(4)利用木马和黑客技术等手段窃取用户信息后实施盗窃活动。

木马一般都是通过发送邮件或在网站中隐藏木马等方式大肆传播,当感染木马的用户进行网上交易时,木马程序即可以键盘记录的方式获取用户账号和密码,并发送到指定邮箱,这样用户资金将受到严重威胁。

如网上出现的盗取银行个人网上银行账号和密码的木马Troj_HidWebmon及其变种,它甚至可以盗取用户数字证书。又如“证券大盗”木马,可以通过屏幕快照将用户的网页登录界面保存为图片,并发送到指定邮箱。黑客通过对照图片中鼠标的点击位置,来破译出用户的账号和密码,从而突破软键盘密码保护技术,严重影响股民网上证券交易安全。

(5)利用用户弱口令等漏洞破解、猜测用户账号和密码。

黑客利用部分用户贪图方便设置弱口令的漏洞,对银行卡等密码进行破解。如某些黑客从网上搜寻某银行储蓄卡卡号,然后登录该银行网上银行网站,尝试破解弱口令并屡屡获得成功。事实上,黑客在实施网络诈骗的犯罪活动过程中,经常把几种方法结合起来进行,还可以手机短信、QQ、MSN等通信工具进行各种各样的“网络钓鱼”不法活动。

3.网络钓鱼攻击的预防

针对不法分子通常采取的网络欺诈手法,广大用户要防范网络钓鱼,应做到如下几点:

❑ 不要在网上留下证明自己身份的任何资料,包括手机号码、身份证号、银行卡号码等。

❑ 不要把自己的隐私资料通过网络传输,包括银行卡号码、身份证号、电子商务网站账户等资料不要通过QQ、MSN、E-mail等软件传播,往往可能被黑客利用来进行诈骗。

❑ 不要相信网上的消息,除非得到权威途径的证明。如网络论坛、新闻组、QQ等往往有人发布谣言,伺机窃取用户的身份资料等。

❑ 不要在网站注册时透露自己的真实资料,如住址、住宅电话、手机号码、自己使用的银行账户等。骗子可能利用这些资料去欺骗自己的朋友。

❑ 如果涉及金钱交易、商业合同、工作安排等重大事项,不要仅仅通过网络完成,有心计的骗子可能通过这些途径了解用户的资料,伺机进行诈骗。

❑ 不要轻易相信通过电子邮件、网络论坛等发布的中奖信息、促销信息等,除非得到另外途径的证明。因为正规公司一般不会通过电子邮件给用户发送中奖信息和促销信息的。

❑ 其他网络安全防范措施。一是安装防火墙和防病毒软件,并经常升级;二是注意经常给系统打补丁,堵塞软件漏洞;三是禁止浏览器运行JavaScript和ActiveX代码;四是不要浏览陌生的网站,不要执行从网上下载后未经杀毒处理的软件等;五是提高自我保护意识,尽量避免在网吧等公共场所使用网上电子商务服务。

2.2 口令猜解攻击

口令认证是目前防止黑客进入和使用系统最有效也是最常用的做法之一。获取合法用户的账号和口令已经成为黑客攻击的重要手段之一。在有些情况下,黑客必须取得合法用户或管理员的口令才能进入和控制系统。现在,有一部分人喜欢破解他人的各种口令,如系统账户口令、压缩文件口令等。

2.2.1 攻击原理

攻击者攻击目标主机时常常把破译用户的口令作为攻击的开始。只有猜测或者确定用户的口令,才能获得其访问权,并能访问到该用户能访问到的任何资源。如果这个用户有域管理员或root用户权限,这是极其危险的。猜解口令的前提是必须先获得该主机上某个合法用户的账号,然后再进行合法用户口令的破译。下面有三种方法可以实现口令猜解攻击。

1.通过网络监听非法得到用户口令

这类方法具有一定的局限性,但危害性极大。监听者往往采用中途截击的方法来获取用户账户和密码。当前,很多协议根本就没有采用任何加密或身份认证技术,如在Telnet、FTP、HTTP、SMTP等传输协议中,用户账户和密码信息都是以明文格式传输的,此时若攻击者利用数据包截取工具便可很容易收集到账户和密码。

还有一种中途截击攻击方法,它在同服务器端完成“三次握手”建立连接之后,在通信过程中扮演“第三者”的角色,假冒服务器身份进行欺骗,再假冒向服务器发出恶意请求,其造成的后果不堪设想。

另外,攻击者还可以利用软件和硬件工具时刻监视系统主机的工作,等待记录用户登录信息,从而取得用户密码;或编制有缓冲区溢出错误的SUID程序来获得超级用户权限。

2.利用专门的软件破解口令

在知道用户的账号后(如电子邮件@前面的部分)利用一些专门软件强行破解用户口令,这种方法不受网段限制,但攻击者要有足够的耐心和时间。例如,采用字典穷举法(或称暴力法)来破解用户的密码。

攻击者可以通过一些工具,自动地从电脑字典中取出一个单词,作为用户口令再输入给远端的主机,申请进入系统;弱口令错误就是按序取出下一个单词,进行下一个尝试,并一直循环下去,直到找到正确的口令或字典的单词试完为止。由于这个破译过程由计算机程序来自动完成,因而几个小时就可以把上十万条记录的字典里所有单词都尝试一遍。

3.利用系统管理员的失误

在操作系统中,用户的基本信息存放在passwd文件中,而所有的口令则经过DES加密方法加密后,专门存放在一个叫shadow的文件中。黑客们获取口令文件后,就会使用专门的破解DES加密法的程序来解口令。同时,由于为数不少的操作系统都存在许多安全漏洞、Bug或一些其他设计缺陷,这些缺陷一旦被找出,黑客就可以长驱直入。为了保护自己密码的安全,用户要慎重设置自己的口令。要想设置好的口令需要做到如下几点:

❑ 不要使用/关于自己的信息作为口令,如执照号码、电话号码、身份证号码、工作证号码、生日、所居住的街道名字等。

❑ 不使用简单危险口令,推荐使用口令设置为8 位以上的大小写字母、数字和其他符号的组合。设置口令的一个最好选择就是将两个不相关的词用一个数据字或非字母字符相连。

❑ 要定期更换口令,因为8 位数以上的字母、数字和其他符号的组合也不是绝对无懈可击的,但更换口令前要确保所使用电脑的安全。

❑ 不要把口令轻易告诉任何人。尽可能避免因为对方是网友或现实生活中的朋友,而把密码告诉他。

❑ 避免多个资源使用同一个口令,一旦一个口令泄露,所有的资源都受到威胁。

❑ 不要让Windows或者IE保存任何形式的口令,因为“*”符号掩盖不了真实的口令,而且在这种情况下,Windows都会将口令储存在某个文件中。

❑ 不要随意保存账号和口令,注意把账号和口令存放在相对安全的位置。把口令写在台历上、记在钱包上等都是危险的做法。

❑ 申请密码保护,即设置安全码,安全码不要和口令设置的一样。如果没有设置安全码,别人一旦破解密码,就可以把密码和注册资料(除证件号码)全部修改。

2.2.2 攻击与防御实战

根据口令猜解的方法可以知道,在进行攻击时,各种密码破解工具是必不可少的,下面通过几款常见软件来介绍黑客进行密码破解的具体过程。

1.使用LC5破解计算机密码

L0phtCrack5.02(简写为LC5)是L0phtCrack组织开发的Windows平台口令审核的程序的新版本,提供了审核Windows账号的功能,以提高系统的安全性。另外,LC5也被一些黑客用来破解Windows用户口令,给用户的网络安全造成很大的威胁。所以,了解LC5的使用方法,可以避免使用不安全的密码,从而提高用户本身系统的安全性。

在Windows操作系统中用户账号的安全管理使用了安全账号管理SAM(Securiy Account Manager)机制,用户和口令经过Hash加密变换后以Hash列表的形式存放在%System Rot%\System32\config下的SAM文件中。LC5是通过破解这个SAM文件来获得用户名和密码的。LC5可以从本地系统、其他文件系统、系统备份中获得SAM文件,从而破解出口令。

使用LC5破解密码的具体操作步骤如下:

步骤1 下载并安装LC5,单击桌面上的快捷图标即可打开【LC5向导】对话框,如图2-1所示。单击【下一步】按钮,即可打开【取得加密口令】对话框,在其中选择相应单选按钮来设置导入加密口令的方法,这里选择“从本地机器导入”单选按钮,如图2-2所示。

图2-1 【LC5向导】对话框

图2-2 【取得加密口令】对话框

步骤2 单击【下一步】按钮,即可打开【选择破解方法】对话框,如图2-3所示。LC5提供了快速口令破解、普通口令破解、复杂口令破解以及自定义等4种破解方式。

图2-3 【选择破解方法】对话框

步骤3 选择“自定义”单选按钮,单击【自定义选项】按钮,即可打开【自定义破解选项】对话框,如图2-4所示。LC5提供了字典攻击、混合字典、预定散列以及暴力破解等4种自定义破解方式,这里勾选“使用‘字典攻击’破解口令”复选框。

图2-4 【自定义破解选项】对话框

步骤4 单击【确定】按钮,即可返回【选择破解方法】对话框。单击【下一步】按钮,即可打开【选择报告风格】对话框,在其中选择所需的报告风格,如图2-5所示。

图2-5 【选择报告风格】对话框

步骤5 单击【下一步】按钮,即可打开【开始破解】对话框,在其中可以看到提示准备破解密码提示信息,如图2-6所示。

图2-6 【开始破解】对话框

步骤6 单击【完成】按钮,即可打开【LC5】的主窗口,并开始破解密码,如图2-7所示。在其中可以看到本地计算机中所有的账户名称以及其属性。待破解完成后,即可在【LC5】主窗口的“口令”列中,看到破解出来的账户口令,如图2-8所示。

图2-7 开始破解

图2-8 破解完成

LC5是一款比较常用的密码破解工具,其使用过程非常方便,但是当遇到密码比较复杂的情况时,破解密码可能会需要很多时间。

2.使用SAMInside破解计算机密码

SAMInside为一款俄罗斯人出品Windows密码恢复软件,可在Windows NT/2000/XP/Vista操作系统中使用,主要用来恢复Windows用户登录密码。与一般Windows密码破解软件有不同:多数Windows密码恢复软件都是将Windows用户密码重置,而如果此时用户恰好使用了NTFS文件系统,且将文件用NTFS的特性EFS(加密文件系统)加密,则这些文件将变成永久不可读数据。SAMInside是将用户密码以可阅读的明文方式破解出来,且SAMInside可使用分布式攻击方式同时使多台计算机进行密码破解,从而大大提高了破解速度。

下面以SAMInside-v2.6.0汉化版为例来介绍破解计算机密码,主要使用步骤如下:

步骤1 从网上下载得到SAMInside-v2.6.0的软件包,解压缩之后双击SAMInside.exe程序,即可打开【SAMInside】主窗口,如图2-9所示。

图2-9 【SAMInside】主窗口

步骤2 单击工具栏中的【导入】按钮,在快捷菜单中可以看出该软件提供了8种导入方式,如图2-10所示。从上到下分别是从SAM和SYSTEM注册表文件导入、从SAM注册表文件和用系统密钥文件导入、从PWDUMP文件导入、从*.HDT文件导入、从*.LCP文件导入、从*.LCS文件导入、从*.LC文件导入、从*.LST输入文件。

图2-10 选择密码导入方式菜单

步骤3 如果想把账户导出到指定的文件中,则单击工具栏中的【导出】按钮,在快捷菜单中选择相应的导出方式。SAMInside提供了导出PWDUMP文件中的用户、导出PWDUMP文件中选定的用户、导出已猜解的密码、导出统计表等多种导出方式,如图2-11所示。

图2-11 选择导出账户

步骤4 如果想破解本地计算机密码,则可单击工具栏中的第三个按钮,在快捷菜单中相应的选项。如选择“使用LSASS导入本地用户”选项,即可快速导入本地账户;如选择“使用计划任务导入本地用户”选项,则需要进行等候才可导入,如图2-12所示。

图2-12 选择导入本地账户

步骤5 单击工具栏中的 按钮即可进行“标记所有用户”、“取消标记所有用户”、“反向标记”、“编辑用户”和“添加用户”等操作,如图2-13所示。在快捷菜单中选择“添加用户”选项,即可弹出【SAMInside】对话框,在其中可以设置新增加的账户的信息,还可以在相应位置输入LM和NT的哈希值(hash),如图2-14所示。

图2-13 对用户进行操作

图2-14 【SAMInside】对话框

步骤6 单击工具栏中的【删除】按钮,在弹出的快捷菜单中选择相应的选项即可进行删除选择的账户、删除已经创建了密码的账户、删除所有的账户等操作,如图2-15所示。

图2-15 删除用户菜单

步骤7 单击工具栏中的 按钮,即可打开【生成器】窗口,从中可以分别看出LM和NT的哈希值,如图2-16所示。SAMInside提供了LM哈希攻击、NT哈希攻击、暴力攻击、掩码攻击、字典攻击、预计算式攻击等多种攻击方式。

图2-16 【SAMInside】窗口

注意

如果密码前3位是数字,后2位是字母,中间有3位不详,此时需要设置一下以增加破解速度。这种破解方式就是掩码攻击。

步骤8 单击工具栏中的【攻击】按钮,在快捷菜单中选择相应的方式,如图2-17所示。单击工具栏中的 按钮或 按钮,即可恢复密码,当然,黑客们会利用该菜单猜解目标口令,而 按钮的作用是停止猜解。

图2-17 选择攻击方式菜单

下面以一个本地计算机账户Administrator的密码破解为例介绍密码破解过程。

具体的操作步骤如下:

步骤1 在【SAMInside】主窗口单击工具栏中的第三个按钮,在快捷菜单中选择“使用LSASS导入本地用户”选项,即可自动读入本机的用户账户信息,如图2-18所示。

图2-18 导入本地账户信息

步骤2 选中“Administrator”账户之后,单击工具栏中的【攻击】按钮,在弹出的快捷菜单中选择NT哈希攻击和暴力攻击方式,如图2-19所示。

图2-19 选择攻击方式

步骤3 选择“选项”选项,即可打开【Options】对话框,在勾选“[0...9]”复选框之后,选择7位的密码个数上限,如图2-20所示。

图2-20 【Options】对话框

步骤4 单击【OK】按钮,返回到【SAMInside】主窗口中。单击工具栏中的 按钮或按钮,即可开始猜解密码,待猜解完毕后即可看到【暴力攻击完成】提示框,如图2-21所示。

图2-21 【暴力攻击完成】提示框

步骤5 单击【确定】按钮,即可看到猜解出的密码,如图2-22所示。猜解的过程往往需要一段时间,这就要耐心等待了。另外,还可以根据需要选择其他攻击方式。

图2-22 猜解出的账户密码

3.压缩包密码的暴力破解

RAR Password Cracker是一款专门用来破解RAR压缩文件密码的工具,通过暴力破解、密码字典等方法,来快速破解被密码保护的文件。其最新版本具备了状态存储、并行计算、多卷文件支持等新功能。使用RAR Password Cracker破解压缩包密码的具体操作步骤如下:

步骤1 安装RAR Password Cracker后启动该软件,即可打开【RAR密码解密向导-欢迎】对话框,选择“创建新的工程”单选按钮,如图2-23所示。

图2-23 【RAR密码解密向导-欢迎】对话框

步骤2 单击【下一步】按钮,即可打开【RAR密码解密向导-需要解密的文件】对话框,如图2-24所示。单击【加载RAR压缩包】按钮,即可打开【打开】对话框,在其中选择需要解密的压缩包,如图2-25所示。

图2-24 【RAR密码解密向导-需要解密的文件】对话框

图2-25 【打开】对话框

步骤3 单击【打开】按钮返回到【RAR密码解密向导-需要解密的文件】对话框,此时在“加密文件”列表中即可看到刚加载的压缩包的属性,如图2-26所示。

图2-26 加载的压缩包的属性

步骤4 单击【添加至工程】按钮,即可将加载的压缩包加入破解列表中,如图2-27所示。单击【下一步】按钮,即可打开【RAR密码解密向导-选择解密方式】对话框,如图2-28所示。该软件提供字典解密和暴力解密两种破解方式,在这里选择“暴力解密”单选按钮。

图2-27 把压缩包添加到解密列表中

图2-28 【RAR密码解密向导-选择解密方式】对话框

步骤5 单击【下一步】按钮即可打开【RAR密码解密向导-暴力解密】对话框,如图2-29所示。单击【添加】按钮,在弹出的快捷菜单中选择相应的字符类型,然后设置密码的范围以及最大长度和最短长度。

图2-29 【RAR密码解密向导-暴力解密】对话框

步骤6 单击【下一步】按钮,即可打开【RAR密码解密向导-保存您的工程并开始解密】对话框,如图2-30所示。单击【浏览】按钮,即可打开【另存为】对话框,在其中选择工程保存位置和名称,如图2-31所示。

图2-30 【RAR密码解密向导-保存您的工程并开始解密】对话框

图2-31 【另存为】对话框

步骤7 单击【保存】按钮,即可返回到【RAR密码解密向导-保存您的工程并开始解密】对话框中。单击【完成】按钮,即可开始对压缩包密码进行破解,如图2-32所示。其破解速度与压缩包密码强度和计算机运行速度有关。

图2-32 对压缩包密码进行破解

4.防御措施

要预防口令攻击的最好方法就是设置安全性高的密码,而安全性高的密码应该遵循如下几下基本原则:

❑ 尽量设置便于记忆的长密码,可以使用完整的短语,而非单个的单词或数字作为密码。因为密码越长,则被破解的可能性就越小;

❑ 尽量在密码中插入特殊符号。如果密码中包含有特殊符号,那么黑客成功破解密码的几率就会大大降低;

❑ 不要在密码中出现账号,也不要个人信息作为密码的内容,如生日、身份证号码、亲人或者伴侣的姓名等;

❑ 要定期更新密码。每隔一段时间更新一次自已的密码,但是新密码也遵守以上原则,同时,新密码不应包括旧密码的内容,并且不应与旧密码相似。

2.3 缓冲区溢出攻击

缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统当机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。

2.3.1 攻击原理

缓冲区溢出是指当计算机程序向缓冲区内填充的数据位数超过了缓冲区本身的容量时,理想情况是,程序检查数据长度并且不允许输入超过缓冲区长度的字符串。但绝大多数程序都会出现假设数据长度与所分配的存储空间不相匹配的情况,这就为缓冲区溢出埋下隐患。

在各个操作进程之间,指令被临时存储在堆栈当中,堆栈也会出现缓冲区溢出。当一个超长的数据进入到缓冲区时,超出部分就会被写入其他缓冲区,其他缓冲区存放的可能是数据、下一条指令的指针或其他程序的输出内容,这些内容都被覆盖或者破坏掉。由此可见,数据或一套指令的溢出,就可能会导致一个程序或操作系统崩溃。

黑客制造的溢出往往是有一定企图的,他们可以编写一个超过缓冲区长度的字符串植入到缓冲区,再向一个有限空间的缓冲区中植入超长的字符串,此时可能会出现如下两个结果:

❑ 过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;

❑ 利用溢出漏洞可执行任意指令,甚至可取得系统root特级权限。

1.溢出根源

缓冲区溢出是由编程错误引起的。如果缓冲区被写满,而程序没有去检查缓冲区边界,也没有停止接收数据,此时就会发生缓冲区溢出。缓冲区溢出之所以泛滥,是由于开放源代码程序的本质决定的。一些编程语言对于缓冲区溢出是具有免疫力的,但被广泛使用的C语言却没有建立检测机制。标准C语言具有许多复制和添加字符串的函数,这使得标准C语言很难进行边界检查。C++稍微好一些,但仍然存在缓冲区溢出。

一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误,但如果输入数据是经过“黑客”或病毒精心设计的,覆盖缓冲区数据恰恰是“黑客”或病毒的入侵程序代码,一旦多余字节被编译执行,“黑客”或病毒就有可能为所欲为,获取系统的控制权。

2.溢出原理

一个程序在内存中通常分为三部分,分别是程序段、数据段和堆栈。其中程序段里放着程序的机器码和只读数据,数据段中放的是程序中的静态数据,动态数据则通过堆栈来存放。在内存中的位置如图2-33所示。

图2-33 内存中的程序

通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他指令以实现入侵。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序:

        void function(char *str) {
        char buffer[25];
        strcpy(buffer,str);
        }

上述代码是使用strcpy()函数直接把str中的内容复制到buffer中。这样,只要str的长度大于25,就会造成buffer的溢出,使程序运行出错。存在像strcpy这样问题的标准函数还有strcat()、sprintf()、vsprintf()、gets()、scanf()等。当然,随便往缓冲区中填东西造成的溢出,一般只会出现“分段错误”(Segmentation fault),而不能实现攻击。最常见手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其他命令。如果攻击者已经获得了一个有root权限的shell,就可以对系统进行任意操作。

缓冲区溢出攻击之所以成为一种常见远程攻击手段,其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。一般都是通过植入缓冲区溢出漏洞的程序,来获得被攻击主机的控制权。

3.攻击方式

黑客进行缓冲区溢出攻击的目的是扰乱具有某些特权运行的程序的功能,从而取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。在一般情况下,黑客利用缓冲区溢出漏洞攻击root程序,执行类似“exec(sh)”的执行代码来获得root的shell。为实现这个目的,攻击者必须达到两个目标:在程序的地址空间里安排适当的代码;通过适当地初始化寄存器和存储器,让程序跳转到事先安排的地址空间执行。

根据这两个目标,可以将缓冲区溢出攻击分为如下三类。

(1)在程序的地址空间里安排适当的代码。

在程序的地址空间中安排适当的代码往往比较简单。常见的方法有如下两种。

❑ 植入法。在大多数情况下在所攻击的程序中是不存在攻击代码的,此时就需要使用“植入法”的方式来完成。黑客向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。这个字符串包含的数据是可以在这个被攻击的硬件平台上运行的指令序列。

❑ 利用已经存在的代码。如果攻击者想要的代码已经在被攻击的程序中了,攻击者所要做的只是对代码传递一些参数,然后使程序跳转到指定目标。如在C语言中,攻击代码要求执行“exec("/bin/sh")”,而在libc库中的代码执行“exec(arg)”,其中arg是指向一个字符串的指针参数,那么攻击者只要把传入的参数指针指向"/bin/sh",就可以调转到libc库中的相应的指令序列。

(2)控制程序转移到攻击代码。

该种方法是改变程序的执行流程,使之跳转到攻击代码。最基本的方法就是溢出一个没有边界检查或者其他弱点的缓冲区,这样就扰乱了程序的正常的执行顺序。通过溢出一个缓冲区,黑客就可以改写相邻的程序空间而直接跳过系统对身份的验证。

但由于不同地方的定位也会有所不同,也会产生多种转移的方式。常见的有下面三种:

❑ 激活记录(Activation Records)。这是一种比较常见的溢出方式,每当调用一个函数时,在堆栈中留下一个激活记录,它包含了函数结束时返回的地址。攻击者通过溢出这些自动变量,使这个返回地址指向攻击代码。通过改变程序的返回地址,当函数调用结束时,程序就跳转到攻击者设定的地址,而不是原先的地址。

❑ 函数指针(Function Pointers)。在C语言中,“void (* foo) ()”声明了一个返回值为void函数指针的变量foo。函数指针可以用来定位任何地址空间,所以攻击者只需在任何空间内的函数指针附近找到一个能够溢出的缓冲区,然后溢出这个缓冲区来改变函数指针。

在某一时刻,当程序通过函数指针调用函数时,程序的流程就按攻击者的意图实现。

❑ 长跳转缓冲区(Longjmp buffers)。在C语言中包含了一个简单的检验/恢复系统,即setjmp/longjmp。其作用是在检验点设定“setjmp(buffer)”,而用“longjmp(buffer)”来恢复检验点。但是如果攻击者能够进入缓冲区的空间,“longjmp(buffer)”实际是跳转到攻击者的代码。与函数指针一样,longjmp缓冲区能够指向任何地方,所以攻击者所要做的就是找到一个可供溢出的缓冲区。

(3)综合代码植入和流程控制技术。

在进行溢出缓冲区攻击时,常常需要在一个字符串里综合了代码植入和激活记录。攻击者需要定位一个可供溢出的自动变量,然后向程序传递一个很大的字符串,在引发缓冲区溢出改变激活记录的同时植入了代码。代码植入和缓冲区溢出不一定要在一次动作内完成。攻击者可以在一个缓冲区内放置代码,这时不能溢出缓冲区。然后,攻击者通过溢出另外一个缓冲区来转移程序的指针。这种方法一般用来解决可供溢出的缓冲区不够大的情况。

如果攻击者想使用已经驻留的代码而不是从外部植入代码,就必须先把代码作为参数化。如在libc中的部分代码段会执行“exec(some)”,其中some就是参数。攻击者使用缓冲区溢出改变程序的参数,再利用另一个缓冲区溢出使程序指针指向libc中特定的代码段。

4.缓冲区溢出攻击防御

由于缓冲区溢出攻击可以带来恶劣的后果,所以要采取措施对缓冲区溢出攻击进行防御。目前有如下几种方法可以保护缓冲区免受缓冲区溢出的攻击和影响:

❑ 编写正确的代码。编写正确的代码是一件非常有意义但耗时的工作,特别像编写C语言那种具有容易出错倾向的程序。尽管花了很长的时间使得人们知道了如何编写安全的程序,具有安全漏洞的程序依旧出现。因此需要开发一些工具和技术来帮助经验不足的程序员编写安全正确的程序。

❑ 非执行的缓冲区。通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行植入被攻击程序输入缓冲区的代码,这种技术被称为非执行的缓冲区技术。但Windows系统为了要实现更好的性能和功能,往往在数据段中动态地放入可执行的代码。所以为了保持程序的兼容性,不可能使所有程序的数据段不可执行,所以缓冲区漏洞是存在的。

❑ 数组边界检查。该种方式和非执行缓冲区的不同在于:数组边界检查完全放置了缓冲区溢出的产生和攻击。所以只要数组不能被溢出,溢出攻击也就无从谈起。为了实现数组边界检查,则所有的对数组的读写操作都应该被检查,以确保对数组的操作在正确的范围内。最直接的方法是检查所有的数组操作,但是通常可以采用一些优化的技术来减少检查的次数。

❑ 程序指针完整性检查。程序指针完整性检查和边界检查略微不同,程序指针完整性检查在程序指针被引用之前检测到它的改变。即使一个攻击者成功地改变了程序的指针,由于系统事先检测到了指针的改变,所以这个指针将不会被使用。

程序指针完整性检查不能解决所有的缓冲区溢出问题,但是这种方法在性能上有很大的优势,而且在兼容性方面也很好。

2.3.2 攻击与防御实战

缓冲区溢出攻击是远程网络攻击中最常见的一种攻击方式,这种攻击可以使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权。如果能有效地消除缓冲区溢出的漏洞,则很大一部分的安全威胁可以得到缓解。

1.针对IIS.printer缓冲区溢出漏洞攻击

IIS.printer漏洞(应用程序映射缓冲溢出)是比较流行的漏洞,国内外仍有很多台计算机存在此漏洞。该漏洞只存在于运行IIS 5.0的服务器中。由于IIS 5.0打印ISAPI扩展接口建立了.printer扩展名到Msw3prt.dll的映射关系(默认情况下该映射也存在)。

当远程用户提交对.printer的URL请求时,IIS 5.0会调用Msw3prt.dll文件来解释该请求,但Msw3prt.dll缺乏足够的缓冲区边界检查。如果黑客提交一个精心构造的针对.printer的URL请求,且其“Host:”域包含大约420B的数据,此时在Msw3prt.dll中发生典型的缓冲区溢出。在溢出发生之后,Web服务将会停止用户响应,而计算机就会自动重启,这样系统管理员就很难检查到已发生的攻击。

(1)漏洞的检测。可以使用专门的扫描工具对目标主机进行扫描,从扫描的结果中可查看是否存在.printer缓冲区溢出漏洞。

这里使用X-Scan来扫描远程主机是否存在.printer缓冲区漏洞,具体的操作步骤如下:

步骤1 双击X-Scan_gui主应用程序,即可打开【X-Scan】主窗口,在其中可以浏览此软件的功能简介、常见问题解答等信息,如图2-34所示。

图2-34 【X-Scan】主窗口

步骤2 在【X-Scan主窗口】中选择【设置】→【扫描参数】菜单项或单击工具栏中的 按钮,即可打开【扫描参数】对话框,在其中可以输入目标主机IP地址的扫描范围,也可以输入IP段,如图2-35所示。

图2-35 【扫描参数】对话框

步骤3 选择【全局设置】→【扫描模块】菜单项,即可打开【扫描模块】窗口,在其中选择要扫描的模块并对其进行相应设置,如图2-36所示。在设置完成之后,单击【确定】按钮,即可结束对扫描参数的设置。

图2-36 设置扫描模块

步骤4 单击工具栏中的【开始】 按钮,即可开始对主机进行扫描,如图2-37所示。如果对方主机存在.printer漏洞,则会在【命令行提示】窗口中出现“Found IIS remote .printer overflow bug!!!”的提示信息。

图2-37 对目标计算机进行扫描

(2)漏洞的利用。如果目标主机存在.printer漏洞,即可利用该漏洞进行攻击。可以使用IIShack5.0打开远端计算机的端口,在得到远程主机的system权限后,制作后门账号并查看其权限,从而实现可以完全控制该计算机。

(3)预防措施。由于IIs.printer漏洞是.printer后缀的脚本输送给msw3prt.dll的存在溢出而形成的。要避免黑客利用该漏洞进行攻击,可以删除.printer映射。

具体的操作步骤如下:

步骤1 选择【开始】→【设置】→【控制面板】菜单项,即可打开【控制面板】窗口。双击“管理工具”图标,即可打开【管理工具】窗口,如图2-38所示。双击“Internet信息服务”图标,即可打开【Internet信息服务】窗口,如图2-39所示。

图2-38 【控制面板】窗口

图2-39 【Internet信息服务】窗口

步骤2 右击“默认网站”图标,在弹出的快捷菜单中选择“属性”选项,即可打开【默认网站 属性】对话框,如图2-40所示。

图2-40 【默认网站 属性】对话框

步骤3 在“主目录”选项卡中单击【配置】按钮,即可打开【应用程序配置】对话框,如图2-41所示。在“应用程序映射”列表中找到.printer映射后直接将其删除就可以了。

图2-41 【应用程序配置】对话框

2.RPC缓冲区溢出攻击

Microsoft的RPC(Remote Procedure Call,远程过程调用)部分在通过TCP/IP处理信息交换时漏洞,该漏洞是由于不正确处理畸形信息所致,该漏洞影响使用RPC的DCOM接口。该接口处理由客户端计算机发送给服务器的DCOM对象激活请求。攻击者成功利用该漏洞可以在本地系统权限执行安装程序,查看、更改、建立系统管理员权限的账户及删除数据等操作。

注意

其中分布式对象(DCOM)是一种可以使软件组件通过网络直接进行网络通信的协议可以跨越Internet协议(如HTTP)在内的多种网络传输。

(1)漏洞检测。检测这类漏洞使用RPC漏洞专用扫描器Retina(R)–DCOM Scanner。它是eEye安全公司针对微软MS03-026以及最新MS03-039 RPC DCOM漏洞的扫描工具。

使用该软件扫描RPC漏洞的具体操作步骤如下:

步骤1 运行Retina(R)–DCOM Scanner主程序,即可打开【Retina(R)–DCOM Scanner】主窗口,在“Start IP”文本框和“End IP”文本框中分别输入起始和终止的IP地址,如图2-42所示。

图2-42 【Retina(R) –DCOM Scanner】主窗口

步骤2 单击【Scan】按钮,即可开始扫描,如图2-43所示。如果在设置的IP范围中有存在RPC漏洞的主机,则该主机的详细信息将出现在扫描结果中。

图2-43 设置扫描的IP范围

(2)漏洞利用。RPC溢出漏洞带来的危害很严重,如基于RPC漏洞的著名病毒“冲击波”,可导致目标计算机反复重启系统,不能正常复制文件和浏览网站,DNS、IIS、路由器等受到非法拒绝服务攻击,甚至整个网络系统处于瘫痪状态。

漏洞利用工具有两个:Rpcdcom和OpenRpcss。先使用Rpcdcom对远程主机发送畸形数据包,再使用OpenRpcss攻击远程主机,最终会在远程主机内部建立一个管理员账号。

其中Rpcdcom命令格式:Rpcdcom Server。

OpenRpcss命令格式:OpenRpcss \\Server。

使用这两种工具入侵存在RPC漏洞的主机的具体步骤如下:

步骤1 使用“Rpcdcom存在漏洞远程主机的IP地址”命令给远程主机发送畸形数据。

步骤2 使用“OpenRpcss.exe\\存在漏洞远程主机的IP地址”命令在该远程主机中建立管理员账号。

步骤3 在远程主机内部成功建立一个管理员账号后,使用“net use \\存在漏洞远程主机的IP地址\IPC$ "密码"/user:"用户名"”命令,即可通过IPC$管道连接证明管理员账号是否创建成功。

(3)漏洞的防范。黑客可以利用RPC漏洞,给远程服务器监听的特定RPC端口发送畸形请求,如135、139、445等任何配置了RPC端口的计算机,在受到攻击时,Windows系统也出现蓝屏、重启以及自动关机的现象。下面有两种方法可很好地预防RPC漏洞攻击。

❑ 更改RPC服务设置。在Windows系统中可以通过设置相关的服务来预防RPC缓冲区溢出攻击,具体操作步骤如下:

步骤1 在【管理工具】窗口中双击“服务”图标,即可打开【服务】窗口,在其中可以看到本机中所有的服务,如图2-44所示。在“服务”列表中右击“Remote Proceduce Call(RPC)”服务,在弹出的快捷菜单中选择“属性”选项,即可打开【Remote Procedure Call(RPC)的属性】对话框。

图2-44 【服务】窗口

步骤2 切换到“恢复”选项卡,将其中的第一、二次失败以及后续失败都设置为“不操作”选项,如图2-45所示。

图2-45 【Remote Procedure Call

(RPC)的属性】对话框

❑ 安装微软提供的RPC补丁。

3.即插即用功能远程控制缓冲区溢出漏洞

UPnP(Universal Plug and Play,通用即插即用)是一种用于PC机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。它允许不同的设备(如电脑、扫描仪、打印机等)联成网络,可以在彼此之间自动识别并进行通信,这样,用户就不需要为每个外设来配置计算机。

但UPnP对缓冲区(Buffer)的使用没有进行检查和限制,黑客可利用这一漏洞控制同一网络上的电脑或发动DoS攻击。更为严重的是,同一网络的其他用户甚至不需要知道该计算机的IP地址,就可以对其发起攻击。这个缺陷导致的后果很严重,不论哪个版本的Windows系统,只要运行UPnP,就都存在这个危险。

但严格地说,这并不完全是UPnP技术本身的问题,更多的是程序设计的疏忽。UPnP协议存在安全漏洞问题,是由eEye数字安全公司最早发现并通知微软的。其中的UPnP缓冲区溢出,是Windows中有史以来最严重的缓冲溢出漏洞。

(1)漏洞检测。可以使用MS05-039Scan工具检测此类漏洞,它是一款用于Microsoft Windows即插即用功能远程缓冲区溢出漏洞的专用扫描工具。

只探测出远程主机存在的漏洞还远远不够,还需要使用X-Scan来对远程主机进行扫描,得到远程主机上使用的Windows操作系统类型等信息。

(2)漏洞利用。如果检测到UPnP缓冲区溢出漏洞,则可以利用专门的工具对目标计算机进行攻击。在入侵过程中使用的工具是ms05039.exe,其命令格式如下:

ms05039.exe<host><conIP><conPort>[target],其中各个参数的含义如下:

❑ host:指远程主机IP地址或远程主机名;

❑ conIP:本地IP地址;

❑ conPort:溢出成功后远程主机的端口号;

❑ target:选择操作系统类型。

具体的操作步骤如下:

步骤1 在【MS05-039Scan】主窗口中输入远程主机IP的起始和结束地址之后,单击 按钮,即可把输入的IP地址添加到扫描范围中,如图2-46所示。

图2-46 设置扫描的IP范围

步骤2 单击 按钮,即可开始对远程主机进行扫描,在其中查找存在Windows即插即用远程缓冲区溢出漏洞的远程主机,如图2-47所示。

图2-47 扫描结果

步骤3 利用X-Scan扫描存在漏洞的远程主机,查看它的主机类型。在【命令提示符】窗口中进入nc.exe工具所在的目录后,在其中输入“nc-1-p 7755”命令进行监听状态(7755代表在本地中打开用于监听的端口号)。

步骤4 在【命令提示符】窗口中进到ms05039.exe所在的目录之后,在其中输入“ms05039.exe存在漏洞的远程主机IP本地机IP 7755 1”命令对远程主机添加账号。如果账号添加成功,则说明获得了管理员权限。

(3)预防措施。由于Windows XP打开了UPnP功能,所以所有Windows XP用户都应立即安装该补丁;而对于Windows Me用户,只有在运行UPnP时才需要该补丁,因为Windows Me的UPnP功能在安装时是关闭的。

2.4 专家点拨

点拨1:IP欺骗是针对TCP/IP缺陷进行攻击的吗?

解答:IP欺骗就是利用TCP/IP缺陷进行攻击。即使很好地实现了TCP/IP,但其本身也还是存在着一些不安全的地方的,从而可以利用IP欺骗进行TCP/IP网络攻击。这些攻击包括序列号欺骗、路由攻击、源地址和授权欺骗等。

点拨2:如何防范DNS欺骗攻击?

解答:防范DNS欺骗攻击可采取两种措施。直接用IP访问重要的服务,至少可避开DNS欺骗攻击,但需记住要访问的IP地址;加密所有对外的数据流,对服务器就是尽量使用SSH之类有加密支持的协议,对一般用户应用PGP之类软件加密所有发到网络上的数据,这也并不是怎么容易的事情。

2.5 总结与经验积累

本章着重介绍网络欺骗入侵、口令猜测入侵和缓冲区溢出入侵等三种常见的攻击方式,对黑客的入侵原理进行了详细的剖析,并对其入侵过程进行了模拟。

通过对本章的学习,读者可以了解黑客常用的几种攻击方式,并对其攻击原理有了比较详细的认识,再通过亲自实践一些攻击实例的过程,从而体会到了黑客常用的入侵手段。这样,当计算机或服务器被攻击时,可以很快找到破解之法。