引言
远程启动协议是指为计算机提供从网络下载启动程序镜像,并引导计算机启动的一类网络协议,它的功能主要有:
远程新系统引导,为没有安装操作系统的计算机提供安装新操作系统的能力;
紧急远程引导,当本地计算机所安装的操作系统发生异常时,从远程进行引导,进行修复;
远程启动,为无本地存储能力的计算机提供操作系统,也就是我们常说的无盘工作站。
    远程启动协议从早期的BOOTP,DHCP 发展到现在的PXE(Preboot Execution Environment),为用户提供了越来越丰富的功能,不但能远程启动DOS 这样的单机操作系统,也能够启动Windows 及Linux 这样的全功能系统,在许多场合得到了广泛的应用。但是,这类协议在通讯过程中,为了满足简单性的需要,对安全性问题考虑不够充分,为网络攻击提供了可能性。本文将对攻击PXE 协议的方法进行初步的研究。
PXE 协议分析
    PXE 协议是由Intel 公司于2000 年提出的远程启动协议,目前已得到了包括Intel,3COM 等主流厂商的支持,成为Intel 架构计算机(主要是个人计算机)的标准远程启动协议。它建立在一系列已经广泛使用的网络标准基础上,包括TCP/IP,DHCP 及TFTP,通过下列三种技术,为远程启动提供了可靠保证:
(1)、获取本机网络地址及下载启动镜像的协议;
(2)、固化在网卡硬件中的一套API,可供启动程序或BIOS 调用;
启动网卡硬件中固化的PXE 协议的一种标准方法。
(3)、PXE 协议在使用中分客户端与服务器端两方,客户端首先使用扩展的DHCP 协议,从服务器端获得本机的IP 地址及启动程序镜像存放的服务器地址;接着,客户端使用TFTP 协议从启动服务器下载启动镜像;最后,客户端使用启动镜像进行启动。
     CIFS和NFS向一个文件服务器发送文件级别的请求, 请求可以包含整个文件系统。这样,这些请求依赖于已经存在的网络实体(不管是典型的文件服务器还是网络附加存储NAS),这些网络实体拥有自己的文件系统并且向其他网络实体提供文件服务。当收到一个文件级别的请求(如打开文件myfile.txt的请求)时。文件服务器和NAS设备检查他们的文件表格,并且根据物理介质上数据存放的位置将本地文件名转换为一系列的物理块地址.然后执行物理块访问。这个访问过程需要主机CPU参与.并且由于CPU的参与可能带来相当长的响应时间。类似于事务数据库的应用需要很高的响应速度来处理数据的访问,无法忍受附加的负担。这些应用需要直接的块级别的硬盘访问。SAN就是被用来处理直接的块级别的数据访问的存储设备。
攻击原理
   目前支持PXE 协议的网卡已经非常普遍,主要的网卡生产厂商及主板生产厂商都开始在他们的新产品中支持PXE 协议,而一些老式网卡也可以通过使用新版BOOT ROM 的方式支持PXE 协议。由于PXE 协议在查找DHCP 服务器的过程中,并没有对DHCP 服务器的真实性进行验证,从而使攻击者有可能通过假冒DHCP 服务器的方法,向客户机传送错误的启动镜像程序,从而实现对客户机的攻击。实际的攻击方法可以有三种:
 

1、网络中使用PXE 协议时
   当网络中存在多台DHCP 服务器的时候(可能包含攻击者所建立的DHCP 服务器),PXE 客户端对于收到的多个DHCP 应答时应该采用哪个并没有明确选择方法,通常使用最先得到的响应。这就给攻击造成了一定的可能性。当网络中的计算机使用PXE 协议启动时,如一个包含多台无盘工作站的网络,攻击者可
以通过:1)采用DoS 之类的攻击使原有DHCP 服务器停止响应,而用自己的DHCP 服务器进行应答;2)或仅仅使自己的DHCP 服务器能够较快的应答,使PXE 客户端使用攻击者伪造的DHCP 应答。
    接下来,无盘工作站在启动时会从攻击者的计算机中下载启动程序镜像,并使用此镜像启动计算机。攻击者可以很方便地将启动程序修改为对PXE 客户端计算机进行攻击的程序,如伪造正常操作系统的登录界面,盗取用户密码等。
2、对于松散的网络环境
    目前许多计算机在安装过程中,缺省的启动顺序设为了网卡启动,而很多的使用者并没有发现这个问题。因为在正常使用过程中,网络上没有配置DHCP服务器,网卡启动会在超时后自动转为由本地设备启动,不会带来什么不良后果。校园网环境就是这样一种比较松散的局域网环境,许多机器位于不同的地理位置,但却可能属于同一网段,如笔者在所使用的校园网环境中,就经常可以在所使用的计算机中收到其它计算机启动时发出的PXE 扩展的DHCP 请求。如果有攻击者在这样的网络中任何一台计算机上安装具有攻击作用的DHCP 服务程序及启动程序镜像,利用用户的大意,就可以攻击其使用的计算机,格式化硬盘等。
3 、在用户关机离开的时候进行攻击
目前的很多计算机都具备通过网卡唤醒功能(WOL),这项功能本来是为了方便对计算机的管理,但却可能被攻击者利用。攻击者可以在用户关机离开时,通过网络唤醒其它计算机,再利用PXE 协议进行攻击,而这种攻击可能是用户无法查觉的。
模拟攻击方法
当对象X 有更新操作发生时,更新扩散策略分为两种情况:Linux 操作系统是由GNU组织发布的开放源码操作系统,由于它代码的公开性,任何人都可以进行修改,目前已经出现许多非常小的Linux 运行环境。文中以修改的Linux 操作系统作为攻击程序,简单介绍这种攻击方法的可行性。模拟攻击环境由两台计算机组:一台运行Linux操作系统的服务器模拟攻击计算机,运行ISC dhcp-3.0软件提供支持PXE 的DHCP 服务;运行tftp-hpa 软件提供TFTP 服务。另一台安装有支持PXE 协议网卡的计算机模拟PXE 客户端计算机,并将启动顺序设为网卡优先。
1、攻击计算机的配置
    PXE 客户端在工作过程中,需要三个二进制文件:启动镜像、Linux 内核和Linux 根文件系统。启动镜像文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux 内核以及Linux根文件系统。PXELinux 提供的pxelinux.0 原本是为利用PXE 协议远程启动Linux 操作系统设计的启动镜像,由于本文的攻击程序也是采用Linux 实现的,因此在模拟攻击中也可以使用。通过配置可以取消pxelinux.0 运行时与用户的交互,保证攻击的进行。Linux 内核以及Linux 根文件系统构成了一个操作系统环境,可以对系统资源进行访问。为了达到攻击的目的,需要对使用的Linux 操作系统进行定制,具体方法可以参考Linux 文档。最终的Linux 内核可以去除大量不需要的功能,如网络功能、USB 功能等,只需要具有访问硬盘的能力即可。目前的个人计算机硬盘基本都为IDE 接口,这种接口最多只能使用4 块硬盘,在Linux 操作系统中表示为:/dev/had,/dev/hdb,/dev/hdc,/dev/hdd。因此在不知道PXE 客户端计算机具体配置的情况下,攻击程序也可以通过简单的查询访问到实际的硬盘。接下来修改系统启动脚本,加入想实行的攻击命令,如格式化硬盘等。制作根文件系统的方法请参考Linux 文档,此处不再赘述。
    在攻击计算机中,将pxelinux.0、Linux 内核文件、Linux 根文件系统三个文件安装在服务器TFTP 服务软件指定的位置,并配置DHCP 服务程序及TFTP 服务程序。
2、攻击过程及结果
    首先运行攻击计算机,接着启动PXE 客户端计算机。攻击过程是:
1) PXE 客户端计算机首先通过DHCP 服务器得到启动镜像文件名(pxelinux.0)及其位置;
2) PXE 客户端计算机通过TFTP 协议下载pxelinux.0 并运行;
3) Pxelinux.0 也通过TFTP 协议下载Linux 内核文件及Linux 根文件系统;
4) 启动Linux 内核。
   在实际模拟中,这种攻击方法成功地格式化客户端计算机的硬盘,造成数据丢失。上述过程中步骤1 及步骤2 是由PXE 协议实现的,而之后的过程则是由pxelinux.0 程序及Linux 完成的。这种方法主要的好处是方便,不需要攻击者编写大量的代码。在真实环境中,攻击者也可能不采用这样的过程,而是直接在启动镜像中就加入攻击代码,省去了再次下载Linux 内核及根文件系统的过程。
结论
   综上所述,我们可以看出,远程启动协议一方面给计算机的管理带来了很大的方便;另一方面,如果使用时不加注意,也可能被利用进行破坏。因此管理人员及使用者应该注意下列几点:
   在确实要使用PXE 协议的网络中,管理人员应该经常检查有无陌生的DHCP 服务器在网络上工作;
 无盘工作站的使用者一定要注意系统启动时的情况是否正常,如果发现启动过程异常,及时向管理人员汇报;
 个人计算机的使用者如果不需要使用网络启动功能,一定不要在设置中使用网卡成为第一启动设备。

文章如转载,请注明转载自:http://www.5iadmin.com/post/985.html