4.2 RPC服务远程漏洞的防黑实战

RPC协议是Windows操作系统使用的一种协议,提供了系统中进程之间的交互通信,允许在远程主机上运行任意程序。在Windows操作系统中使用的RPC协议,包括Microsoft的其他一些特定的扩展,系统大多数的功能和服务都依赖于它,是操作系统中极为重要的一个服务。

4.2.1 什么是RPC服务远程漏洞

RPC的全称是“Remote Procedure Call”,在操作系统之中,其默认是开启的,为各种网络通信和管理提供了极大的方便,但也是危害极严重的漏洞攻击点,曾经的冲击波、震荡波等大规模攻击和蠕虫病毒都是由于Windows系统的RPC服务漏洞造成的。可以说,每一次的RPC服务漏洞出现且被攻击后,都会给网络系统带来一场灾难。

启动RPC服务的具体操作步骤如下:

Step 01 在Windows操作界面中单击【开始】按钮,选择【设置】→【控制面板】命令,然后单击【管理工具】图标,打开【管理工具】窗口。

Step 02 在【管理工具】窗口中双击【服务】选项,打开【服务】窗口。

Step 03 在服务(本地)列表中双击【Remote Procedure Call】服务项,打开【Remote Procedure Call(RPC)的属性】对话框,在【常规】选项卡中可以查看该协议的启动类型。

Step 04 选择【依存关系】选项卡,可以查看一些服务的依赖关系。

分析:从上图的显示服务可以看出,受其影响的系统组件有很多,其中包括了DCOM接口服务。这个接口用于处理由客户端机器发送给服务器的DCOM对象激活请求(如UNC路径)。攻击者成功利用此漏洞可以以本地系统权限执行任意指令,还可以在系统上执行任意操作,如安装程序,查看或更改、删除数据以及建立系统管理员权限的账户。

若想对DCOM接口进行相应的配置,其具体操作步骤如下:

Step 01 单击【开始】按钮,选择【运行】命令,在打开的【运行】对话框中输入“Dcomcnfg”命令。

Step 02 单击【确定】按钮,打开【组件服务】窗口,单击【组件服务】前面的“+”号,依次展开各项,直到出现【DCOM配置】项为止,即可查看DCOM中的各个配置对象。

Step 03 根据需要选择DCOM配置的对象,例如DirectAccess Class,然后右击,从弹出的快捷菜单中选择【属性】命令,打开【DirectAccess Class属性】对话框,在【身份验证级别】下拉列表中根据需要选择相应的选项。

Step 04 选择【位置】选项卡,在打开的设置对话框中对DirectAccess Class对象进行位置的设置。

Step 05 选择【安全】选项卡,在打开的设置对话框中对DirectAccess Class对象进行启动和激活权限、访问权限和配置权限进行设置。

Step 06 选择【终结点】选项卡,在打开的设置对话框中对DirectAccess Class对象进行终结点的设置。

Step 07 选择【标识】选项卡,在打开的设置对话框中对DirectAccess Class对象进行标识的设置,在其中选择运行此应用程序的用户账户。设置完成后,单击【确定】按钮即可。

由于DCOM可以远程操作其他计算机中的DCOM程序,而技术使用的是用于调用其他计算机所具有的函数的RPC(远程过程调用),因此,利用这个漏洞,攻击者只需要发送特殊形式的请求到远程计算机上的135端口,轻则可以造成拒绝服务攻击,重则远程攻击者可以以本地管理员权限执行任何操作。

4.2.2 RPC服务远程漏洞入侵演示

DcomRpc接口漏洞对Windows操作系统乃至整个网络安全的影响,可以说超过了以往任何一个系统漏洞。其主要原因是由于DCOM是目前几乎所有Windows系统的基础组件,应用比较广泛。下面就以DcomRpc接口漏洞的溢出为例介绍溢出的方法,其具体的操作步骤如下:

Step 01 将下载好的DcomRpc.xpn插件复制到X-Scan的plugins文件夹中,作为X-Scan插件。

Step 02 运行X-Scan扫描工具,选择【设置】→【扫描参数】命令,打开【扫描参数】对话框,然后选择【全局设置】→【扫描模块】选项,即可看到添加的【DcomRpc溢出漏洞】模块。

Step 03 在使用X-Scan扫描到具有DcomRpc接口漏洞的主机时,可以看到在X-Scan中有明显的提示信息。如果使用RpcDcom.exe专用的DcomRPC溢出漏洞扫描工具,可先打开【命令提示符】窗口,进入RpcDcom.exe所在的文件夹,执行“rpcdcom -d IP地址”命令,之后开始扫描并显示最终的扫描结果。

4.2.3 RPC服务远程漏洞的防御

RPC服务远程溢出漏洞可以说是Windows系统中最严重的一个系统漏洞,下面介绍几个RPC服务远程溢出漏洞的防御方法,从而让自己的计算机或系统处于相对安全的状态。

(1)及时为系统打补丁

防御系统出现漏洞最直接、最有效的方法是打补丁,对于RPC服务远程溢出漏洞的防御也是如此。不过在对系统打补丁时,务必要注意补丁相应的系统版本。

(2)封锁135端口

RPC服务远程开启的过程需要开放135端口,因此,对于RPC服务远程溢出漏洞的防御可以采用封锁135端口的方式。

封锁135端口最直接、最有效的方法是关闭RPC服务,除了该方法外,用户还可以采用以下两种方法。

1)可以在防火墙中增加一条规则:封锁135端口,源端口是7、19或者135,这样可以保护内部系统,防止来自外部攻击,下图所示为防火墙添加阻止的端口号。

2)打开网络连接中的【本地连接 属性】对话框,双击打开“Internet协议(TCP/IP)”属性对话框,接着单击【高级】按钮进入【高级TCP/IP设置】对话框,并切换到“选项”设置页面。单击【属性】按钮,在进入【TCP/IP筛选】对话框后添加筛选器,指定需要使用的端口即可。

(3)关闭RPC服务

关闭RPC服务也是防范DcomRpc漏洞攻击的方法之一,而且效果非常彻底。其具体的方法为:单击【开始】按钮,选择【设置】→【控制面板】命令,然后单击【管理工具】图标,在打开的【管理工具】窗口中双击【服务】选项,打开【服务】窗口。接着,双击【Remote Procedure Call】服务项,打开其属性对话框,在属性对话框中将启动类型设置为【已禁用】,这样自下次启动开始RPC就将不再启动。

另外,用户还可以在注册表编辑器中将“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs”的“Start”值由0X04变成0X02,然后重新启动机器。

不过,在进行这种设置后,将会给Windows的运行带来很大的影响。例如,Windows XP Professional从登录到显示桌面画画需要等待相当长的时间。这是由于Windows的很多服务都依赖于RPC,因此,这些服务在把RPC设置为无效后将无法正常启动。这样做的弊端非常大,一般不能关闭RPC服务。

(4)手动为计算机启用(或禁用)DCOM

针对具体的RPC服务组件,用户还可以采用具体的方法进行防御。例如禁用RPC服务组件中的DCOM服务,可以采用以下方式进行,这里以Windows XP为例,其具体的操作步骤如下:

Step 01 单击【开始】按钮,选择【运行】命令,打开【运行】对话框,在【打开】文本框中输入“Dcomcnfg”命令,单击【确定】按钮,打开【组件服务】窗口,然后依次单击【控制台根目录】→【组件服务】→【计算机】→【我的电脑】,进入【我的电脑】文件夹。

Step 02 对于本地计算机,需要右击【我的电脑】文件夹,从弹出的快捷菜单中选择【属性】命令,打开【我的电脑 属性】对话框。选择【默认属性】选项卡,进入【默认属性】设置界面,取消勾选【在此计算机上启用分布式COM】复选框,然后单击【确定】按钮。

Step 03 对于远程计算机,则需要右击【计算机】文件夹,从弹出的快捷菜单中选择【新建】下的【计算机】命令,打开【添加计算机】对话框。

Step 04 在【添加计算机】对话框中直接输入计算机名称,或单击右侧的【浏览】按钮搜索计算机。