谈诚,邓入弋,王丽娜,马婧
(1.武汉大学计算机学院,湖北武汉430072;2.信息保障技术重点实验室,北京1000172)
摘要:文章针对APT攻击中的恶意USB存储设备设计了一套安全防护方案。该方案构
造USB存储设备的白名单,只允许白名单中的USB存储设备与计算机系统进行交互,从而防止APT攻击中定制的恶意USB存储设备对主机的非授权访问;将USB存储设备与单位各级员工绑定,在特定主机对特定的USB存储设备写保护,有效阻止了APT攻击者利用社会工程学的方法诱导内部人员对系统中数据进行越权访问:通过监控向USB存储设备复制数据的进程行为,防止隐藏的恶意程序暗中窃取系统中的数据。文章方案可以很好地防止系统中的数据遭到窃取和泄露,具有良好的实用性。文章方案进行了相关的功能测试,测试结果表明该方案可行。
0引言
随着互联网信息技术的发展,网络攻击也在不断进化。近几年出现的较为复杂和高级的网络攻击是APT(Advanced Persistent Threat,高级可持续性威胁)攻击,它主要针对性地攻击企业和政府部门。APT攻击手段难以防范,给当前的诸多防御措施带来了挑战。由于APT攻击常常针对一些工控系统( Industrial Control System,ICS),而这类系统大多跟外部通用网络相隔离,因此USB(Universal Serial Bus,通用串行总线)存储设备成为APT攻击者们钟爱的攻击工具。攻击伊朗核电站的Stuxnet病毒和有能力关闭国家电网的Havex病毒都是通过USB存储设备侵入目标系统的。
多年来,USB存储设备因其经济实用、方便快捷的特点得到广泛使用。根据Gatner的报告,2009年就已经有2亿多的USB存储设备被售卖。虽然USB存储设备能够方便地传输信息,但它同时也成为传播恶意程序的攻击载体。此外,USB存储设备支持各类数据的复制,传输也不受限制,在内外网还可以交叉使用,这些方便之处给数据安全带来了隐患。在APT攻击环境下,攻击者可能会使用特制的USB存储设备或者利用社会工程学的方法通过正常的USB存储设备窃取数据。特制的USB存储设备中的恶意程序难以检测,而正常的USB存储设备本身就是无毒的,这使得一些传统的方法无法奏效。所以应完善现有措施,构建针对性更强的安全防护方案。本文首先研究了USB存储设备的唯一性标识,提出利用唯一性标识形成USB存储设备白名单,从而构建USB存储设备的可信接入策略。当有USB存储设备连入主机时,防护系统会在白名单中查询该USB存储设备的标识信息,若没有查到,则阻止其访问。其次本文研究了USB过滤驱动和Windows系统中的进程监控。利用过滤驱动实现USB存储设备的写保护,并对主机进程在USB存储设备中的文件操作进行监控,构成数据防泄露策略。本文针对APT攻击中的USB存储设备,使用可信接入和数据防泄露策略,提出了一套多层次的USB防护方案。最后,本文对防护方案的功能进行了测试,验证了方案的可行性。
1 APT攻击的特点
美国国家标准与技术研究院( NIST)曾经给出了一个APT攻击的定义:“攻击者拥有丰富的专业知识和强大的资源,使得其可以使用多种攻击载体(网络载体如网页、邮件,物理载体如USB存储设备和移动硬盘)创造出达成其目的的机会。这些目的通常包括:在目标组织的信息技术基础设施中建立和扩展据点以泄露信息(如将信息从内部网络传输到外部服务器),损害或者妨碍一个任务、项目或者组织的关键环节;或者为将来实现这些目的做准备。APT攻击会在很长一段时间内反复追求它的目标,适应防御者对它的抵抗,维持为达成目的所需的交互等级。”
这个定义为区分传统攻击和APT攻击提供了一个良好的基础。APT攻击的几个显著特点如下:
1)特定的攻击对象和清晰的目标
APT攻击是针对性很强的攻击,总有一个清晰的目标。这个目标通常是拥有大量数据资产的政府或者组织。FireEye根据201 3年的APT攻击数量得出结论,APT攻击针对的10大领域是教育、金融、高科技、政府、咨询、能源、化学、电信、医疗保健和航空航天。传统攻击往往尽可能地广泛传播以提升成功的机会,从而最大化收益,但APT攻击只关心它预设的目标,自我限制攻击范围。
对于攻击目标,APT攻击者试图从中寻找那些能带来竞争优势或者战略利益的数据资产,如国家安全相关数据、知识产权、商业机密信息等。传统攻击大多是为寻找一些私人数据,如信用卡数据或者其他能帮助自己获得经济利益的有价值的信息。
2)高度组织化和拥有良好资源的攻击者
APT攻击背后的参与者常是一些熟练的黑客,并_且协同工作。这些黑客或是在政府部门或者军事部门工作,或是被私人公司雇佣。他们在经济和技术层面都堪称实力雄厚,这让他们能够长期工作,并且可以使用开发或者采购的零日漏洞和特定的攻击工具。
3)为了达成目的会进行长期的活动
APT攻击是一种长期活动,在目标网络中能够几个月甚至几年不被发现。APT攻击者会持续攻击他们的目标,当早先的攻击失败时,他们还会反复努力以达成目的。这和传统攻击不同,传统攻击常常瞄准大范围的受害者,攻击者很少会浪费时间在安全措施齐全的攻击目标上,多是寻找其他相对不那么安全的目标进行攻击。
4)使用秘密的和逃避检测的攻击技术
APT攻击是隐秘进行的,拥有躲避检测的能力,只执行为达成既定目标所必须的交互。例如,APT攻击者会使用零日漏洞避免基于特征的检测,通过加密混淆网络流量。而传统攻击常用的策略与APT攻击相比简陋很多,属于短期的抢劫式的单次尝试。
2基于恶意USB存储设备的攻击场景
APT攻击的主要目的是窃取机密信息或破坏工业控制系统。在工业控制系统这类物理隔离网络中,攻击者利用USB存储设备传输恶意程序进入系统进行破坏,或者通过USB存储设备窃取机密信息。
当前因为移动存储设备的使用不当或者恶意使用造成的泄露日渐增多。无论是普通公司员工还是政府工作人员都喜欢使用小巧方便的移动设备,利用这些大容量的存储设备从公司内部带出大量文件和数据可谓轻而易举,且近乎所有的计算机都有USB接口。APT攻击者正是看准了这一点,大量使用USB存储设备作为恶意程序的摆渡工具而入侵系统。
在现在的USB标准下,攻击者需要与系统取得物理连接才能通过USB存储设备窃取数据。如果攻击者是公司的员工,那么他有很多机会可以悄悄地在系统上接入恶意USB设备。如果攻击者不是公司员工,他也可以寻找到许多其他方式非直接地将恶意USB设备连入系统。例如,攻击者可能利用社会工程学方法诱骗有合法物理途径接入系统的人按攻击者的指示行事。
3 USB安全防护方案设计
本文提出的针对USB存储设备的数据防泄露方案,旨在防止非法复制主机敏感信息到USB存储设备中。通过USB过滤驱动和Windows系统的消息机制,可以防止恶意程序往USB存储设备隐蔽写入数据,某些特殊机器直接将USB存储设备进行写保护也可以杜绝数据泄露。在USB存储设备的可信接入方面,本文使用USB存储设备白名单技术,拒绝读取未授权的USB存储设备。通过在应用层和驱动层部署本文方案,可以有效防止USB存储设备的非授权访问和用户对USB存储设备的滥用。
3.1 USB安全防护方案模块结构
USB安全防护方案的模块结构如图l所示,包含了3个部分,分别是USB存储设备白名单模块、USB操作监控模块和USB写保护模块。其中,USB存储设备白名单模块位于白名单服务器或者系统主机上,USB操作监控模块和USB写保护模块都位于系统主机上。这3个模块包含了若干子功能模块,这些模块相辅相成,共同完成了对USB存储设备的安全防护功能。
1) USB存储设备白名单模块
USB存储设备白名单模块位于白名单服务器或者系统主机上,其主要作用是在USB存储设备接入系统主机时,根据该USB存储设备所拥有的属性判断其是否具有访问主机的权限。USB存储设备白名单模块又分为两个子模块,分别是授权模块和访问控制模块。
授权模块用于在白名单建立时提取USB存储设备的相关参数。该模块只在建立或更新白名单时使用,通过将USB存储设备的VID、PID和序列号信息存储起来,构成USB存储设备的白名单。
访问控制模块用于在USB存储设备接入系统主机时,将其信息与USB存储设备白名单作比对。如果其信息在白名单中,则放行;若不在,则禁止其访问主机。
2) USB操作监控模块
USB操作监控模块在USB存储设备白名单模块的基础上,对合法的USB存储设备可能面临的恶意程序感染做防护。该模块也由两个子模块组成,分别是进程监控模块和事件响应模块。
进程监控模块主要对系统主机上的进程进行监控,防止恶意程序秘密传输数据到USB存储设备进而造成数据泄露。
事件响应模块用于对系统主机进程在USB存储设备
中的文件操作做出响应,通知用户有这类操作发生。
3) USB写保护模块
USB写保护模块用于对USB存储设备进行写保护,防止非法复制。利用该模块可以控制对授权USB存储设备的滥用。一些密级更高的主机可能不用USB存储设备复制数据,而直接禁止USB口的使用会带来对键盘和鼠标口的限制,因此利用该模块可以对这些主机实施对所有或者特定USB存储设备(如权限较低的USB存储设备)的禁止写入功能。写保护的功能通过USB过滤驱动实现。
3.2 USB存储设备白名单
某些机密系统通常只使用一套很固定的USB存储设备。通过构建USB存储设备白名单,可以只允许已知的合法USB存储设备访问系统,实现USB存储设备的可信接入。白名单的保护可能通过模拟白名单中的设备被绕过,然而,这需要知道白名单中的内容,此外每个USB存储设备都有一个唯一的序列号,通过知道USB存储设备的序列号来成功模拟设备非常困难。
固件重编程攻击BadUSB可以改变设备类型,添加一个隐藏的接口到设备中(例如,在USB闪存盘上添加USB键盘或者网卡接口)。这些行为会导致设备属性的变化,使得被改变的USB存储设备不再匹配白名单。
Windows Vista或者以上版本的操作系统提供了组策略,可以通过它来构建USB存储设备白名单。但这种方式需要用户手动去查看USB存储设备的硬件ID并且输入到白名单,操作不便。
每个USB存储设备一般都有VID(Vendor ID,厂商ID),PID(Product ID,产品ID)和SN(Serial Number,序列号)。将这几个信息组合起来构成了USB存储没备的唯一性标识,可以唯一地确定一个USB存储设备。PID和VID是4个字符的16进制ID。在Windows注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB下可以看到USB存储设备的VID和PID,而它们的子键则是序列号。在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControISet\Enum\USBSTOR下也有一组类似的值,只是被用更直观的形式呈现了出来。USBSTOR键下的子键更少,因为USBSTOR键下只针对USB大容量存储设备(即U盘或移动硬盘),而USB键用于所有通过USB连接的设备。图2展示了同- USB存储设备在USB键和USBSTOR键下的形式。
通过编写程序将合法USB存储设备的VID、PID和序列号提取出来。为了防止唯一性标识泄露,将这3个数据信息利用Hash算法做一个变换,然后保存在数据库中,构成USB存储设备白名单,如图3所示。
白名单方案的架构如图4所示。当USB存储设备接入主机时,防护系统会监听到该设备插入的消息并提取设备的标识信息,将标识信息的各部分进行Hash变换,并与白名单中的信息进行比对。通过这样的方式,系统主机可以判断该USB存储设备是否合法。如果不是系统中的合法USB存储设备,则将其弹出。由专人统一管理USB存储设备白名单的添加、删除和查改。每当购买新的USB存储设备,则需要向白名单中添加USB的唯一性标识以提供使用授权。当合法USB存储设备被感染时,白名单也要及时更新,删除被感染的USB存储设备。
白名单检测有两种方式:
1)在线检测。这意味着USB接入的主机是联网的。在这种场景下,白名单存于在线白名单服务器上。
2)离线检测。这种情况下USB接入的主机是网络隔离的,白名单存于本地系统中,手动维护。
3.3 USB写保护
系统中有些信息极为机密,合法的USB存储设备也不能从中复制信息。对于这些信息还需要实现对USB存储设备的写保护,以阻止非法复制。对USB存储设备的写保护是建立在USB存储设备可信接入的基础之上的。USB写保护的功能通过USB过滤驱动实现。
1) USB过滤驱动
USB过滤驱动的分层架构模型称为WDM( WindowsDriver Model,视窗驱动程序模块),如图5所示。
图5中左边一列表示内核DEVICE_OBJECT结构的一个向上连接的栈,每一层都与系统管理者如何管理硬件设备有关。中间一列表示设备驱动栈。右边一列表示IRP通过各个驱动的流程。
许多设备都有过滤驱动。如果过滤驱动被附加在FD0下,也就是说,过滤驱动在FDO和PDO之间,则被称作下层过滤驱动。如果过滤驱动被附加在FDO之上,则被称作上层过滤驱动。
2) USB设备访问控制的实现
USB设备所有的写操作最终都会转化成SCSIOP_WRITE请求。因此,为了将USB存储设备变为一个只读设备,设置SCSIOP_WRITE为“失败”可以实现该功能。但是,一旦操作系统发现SCSIOP- WRITE请求失败,就会不停地发送请求直到系统超时。因此,系统需要比较长的一段时间才能知道在USB存储设备上的写操作失败。
鉴于上述方法的不足,我们采用另一个简单实用的方法。利用过滤驱动拦截操作USB存储设备的SCSI命令,判断操作码是否是SCSIOP_MODE_SENCE。如果是,且当前操作是写操作,则设置DeviceSpecificParameter的参数由MODE_PARAMETER_EADER变为MODE_DSP_WRITE_PROTECT。完成上述操作后,就可以设置该USB存储设备为不可写。
3) USB过滤驱动的安装
在准备好USB过滤驱动后,下一步就是安装USB过滤驱动了。首先,USB过滤驱动被复制到system32\drivers目录下,然后手动修改注册表。驱动被成功加载后,系统当试图写USB存储设备时,便会收到一个USB存储设备被写保护的提示。
3.4 USB操作监控
APT攻击的主要目的是窃取机密信息,而在物理隔离网络中,窃取到的数据要脱离系统传出主要通过USB这样的移动存储设备。如果USB存储设备白名单中的USB存储设备不幸遭到感染,白名单方法便无法奏效了。所以在白名单和USB存储设备写保护的基础上.需要进一步对系统进程在合法USB存储设备中的操作行为进行监控。
系统进程对USB存储设备内文件的操作主要有创建、读写、删除、重命名等,这些操作都由IRP请求来实现。各个操作对应的IRP主功能码如表1所示。
在驱动程序入口函数DriverEntry()中注册相应IRP的派遣函数,截获相应的IRP请求,进而对其进行处理。在相应的IRP派遣函数中,可以得到当前操作的类型、操作目标文件名和发起该操作的进程等信息。
在各个派遣函数中,通过IRP指针和I/O堆栈可以得到操作类型的相关信息。文件的创建、读写、删除和重命名等操作所对应的IRP主功能码都可以在派遣函数中通过I/O堆栈的参数域进行区分。
操作的目标文件对象指针是存储在I/O堆栈的FileObject域中的。Fil。Object是文件对象结构体类型,包含了文件名等信息。在诸多IRP主功能码中,只有主功能码是IRP_MJ_CREATE的派遣函数中的I/O堆栈的FileObject域中才保存了绝对有效的文件名称。在Windows中,任何程序要操作文件,首先要打开文件,获得该文件的句柄。在内核驱动程序中,我们可以在主功能码是IRP_MJ_CREATE的派遣函数中得到所操作的文件名称,并将文件名称和文件对象对应起来存储在链表中。这样当在其他地方需要获取文件名称时,就可以利用文件对象查询链表获得对应的文件名称。
同样还需要获得进程的名称。当进程操作USB存储设备中的文件时,I/O管理器将这些操作封装成IRP请求,并发送给与之对应的派遣函数。派遣函数运行于发起操作的进程的上下文中,在派遣函数中使用IoGetCurrentProcess得到指向当前进程的EPROCESS结构体。在操作系统中运行的进程都有EPROCESS结构体,里面包含了进程的各种信息,包括进程名称和相关结构指针等。通过WinDbg软件查看可以得知,进程名称字符串存放在EPROCESS结构体中的一个固定偏移量中,一般认为在Oxl74偏移处存放着进程名称。对于驱动程序来说,其入口函数DriverEntry()是由系统进程SysIem加载的,所以可以在DriverEntry()中通过IoGetCurrentProcess获取System进程的EPROCESS结构体,然后从该结构体地址开始寻找“System.exe”字符串,找到的地方便是EPROCESS结构体存放进程名称的偏移量。得到了进程名称在EPROCESS结构体中的偏移量,进程调用驱动时就可以通过该偏移量获得当前的进程名称。
获得了进程名称、文件名称和操作类型这几个信息,就可以设定访问控制规则了。在系统中维护着一张表,记录了对USB存储设备操作的安全规则,如表2所示。
当系统中有进程对USB存储设备进行操作时,防护系统会基于进程名称对操作进行安全检查。首先从主功能码是读、写的IRP派遣函数中得到操作文件的进程名称,然后在表2中查询是否有该进程的记录。如果有记录,根据表2中的安全规则决定当前进程执行的操作可否被允许;如果没有记录,则人为判断此进程是否可以执行,并将结果添加到安全规则表中。
4 USB安全防护方案实现
4.1应用场景
设定一个应用场景,该场景中,被保护系统的网络与外部互联网隔绝。该系统中的各个主机中存储着各种机密数据,一般通过内部人员手中的USB存储设备进行数据转移,因此存在数据通过USB存储设备泄露的风险。
为了保证数据的安全性,本文使用USB存储设备白名单实现对USB存储设备的访问控制。该方案将USB存储设备的厂商号、产品号和序列号等信息组合起来作为其唯一性标识,创建USB存储设备白名单。使用过滤驱动技术实现USB存储设备的写保护。
本系统具有以下优点:
1) USB存储设备访问主机首先需要经过白名单的验证,避免了由于USB存储设备的不可信导致数据泄露;
2)使用进程监控对复制行为进行管理,防止恶意进程的秘密复制;
3)在驱动层实现USB存储设备的写保护,安全机制不易被绕过。
4.2系统架构
该安全防护系统的系统架构如图6所示。当USB存储设备插入主机时,防护系统首先提取出该USB存储设备的属性,即厂商号、产品号和序列号,然后调用数据库中的USB存储设备白名单,将这些数据的Hash运算结果与白名单中的数据进行比对,查找名单中是否有该USB存储设备的信息。如果系统发现该USB存储设备没有在白名单中,则阻止该设备的使用;否则允许使用。图6中为实施BadUSB攻击特制的USBO不在USB存储设备白名单中,所以它无法接入系统;而USBI在白名单中,因此它可以访问系统中的主机。
验证通过白名单比对的USB存储设备可能会从主机中复制数据。如果在该主机上事先设置了写保护的USB存储设备名单中没有此时插入的设备,那么用户就可以复制数据;否则会得到该USB存储设备写保护的提示。图6中主机2对USB1是写保护的,所以USB1无法从主机2中复制数据;主机1提供了USBI的复制权限,USB1可从主机1中复制数据。与此同时,防护系统也会监控有没有进程在用户不知道的情况下复制文件到USB存储设备中,如果发现有非法进程进行复制,则会阻止并提醒用户。
5系统功能测试
本文的USB安全防护方案包括3个模块,白名单和进程监控模块采用已有开源程序实现,本文主要实现了一个基于图形界面的USB存储设备写保护程序。该程序主要包含USBFilter、InstFilters和USBblock三个部分。USBFilter是实现写保护的过滤驱动,InstFilters用于安装过滤驱动,USBblock是一个对指定USB存储设备进行写保护的图形界面。首先将USBFilter编译生成.sys文件,利用Usbinstall.inf安装USBFilter.sys驱动文件,如图7所示。
同样,InstFilters也被编译生成驱动程序InstFilters.sys,使用驱动加载工具InstDrv.exe选择InstFilters,sys,单击“安装”,再单击“启动”,如图8所示。
USBFilter安装好后,在USBblock图形界面中有展示各个USB存储设备的下拉选框、“开写保护”按钮和“关写保护”按钮。在下拉选框中选中一个USB存储设备,单击“开写保护”,如图9所示。
此时若要往该USB存储设备中写入数据就会得到如图10所示的无法写入的提示,说明该USB存储设备已经被写保护了。若要关闭写保护,选中USB存储设备,单击“关写保护”即可。
本文中的写保护模块是针对特定USB存储设备进行写保护。若要对所有USB存储设备进行写保护,直接在注册表HKEY_LOCAL_MACHINE\SYSTE\C urrentC ontroISet\Control\Class\{4D36E967- F325-11CE -BFCl-08002BE10318l位置进行设置就可以了。
6结束语
多年来,USB存储设备一直得到人们的广泛使用,然而USB存储设备方便的数据复制能力使它也成为信息泄露的载体,因此安全研究者对其投入了大量精力进行研究,并提出了很多解决办法,但这些方法没有引起人们的重视。近年来APT攻击甚嚣尘上,它攻击的目标多是工控系统,这类系统往往与外界互联网隔离,所以USB存储设备成为APT攻击者用来摆渡恶意程序和泄露信息的绝佳工具。随着BadUSB攻击的出现,APT攻击者会更多地利用USB存储设备进行攻击。据调查,社会上的大多数企业都没有对APT攻击有足够的认识,防护方案也没有针对性。本文研究TAPT攻击的相关特点和防护方法,针对USB存储载体提出了一套防护方案,并设计实现了一个防护系统,实现了对系统主机中机密信息的保护和访问控制。但该方案仅针对通过USB存储设备导致的恶意入侵和信息泄露进行讨论,在系统的设计实现过程中也存在诸多不足之处,以后的工作中还将对其他阶段的防护措施进行研究。此外,USB存储设备白名单模块和监控模块采用已有开源软件,效果不是太好,下一步会对这两个模块做完整开发,以实现一个完整的安全防护系统。
上一篇:责任矩阵在隐患排查治理中的应用