一种基于白名单机制的电力监控主机恶意代码防御方案
2017-09-23胡海生
胡 海 生
(广东电网有限责任公司电力科学研究院 广东 广州 510080)
一种基于白名单机制的电力监控主机恶意代码防御方案
胡 海 生
(广东电网有限责任公司电力科学研究院 广东 广州 510080)
杀毒软件等基于黑名单匹配的恶意代码防御方案无法应对新恶意代码(即利用0day漏洞的恶意代码),针对该问题提出基于白名单的电力监控主机恶意代码防御方案。该方案在监控主机上构建一个可信执行软件模块,利用白名单匹配指纹的方法保护可信软件的启动、阻止不可信软件的执行,提高监控主机的安全性;此外设计管理服务器对可信执行模块进行集中管理,同时对白名单进行维护。根据方案研发系统,并在电力现场环境进行试点应用和实验。实验证明本方案能够识别可信程序和不可信程序,阻止新老恶意代码执行,同时其时间消耗和新增流量不大,处于可控范围。
白名单 电力监控主机 恶意代码防御
0 引 言
电力监控系统作为电力调度控制的大脑中枢,为输、变、配电等系统的实时数据采集、开关状态检测及远程控制提供了基础平台[1]。电力监控系统包括监控主机、服务器、通信设备、测控单元等,作为最重要的电力设施,其安全性决定整个电力生产和服务的安全可靠性[2]。随着电力监控系统的快速发展,其面临的恶意代码问题也越发严峻。2008年震网病毒给以电力监控系统为代表的工控系统敲响了警钟[3-4],2015年乌克兰停电事件则是第一起对电力基础设施具有针对性的恶意软件攻击事件[5],2016年初以色列电力局称遭受到严重的网络攻击,其监控主机重要存储被加密以致无法正常工作[6]。在这些事件中,黑客利用病毒、木马等恶意代码攻击控制系统、监控主机造成系统和主机工作异常且难以恢复,造成严重的攻击后果[7]。
针对当前电力监控系统遭受恶意代码攻击的现状,现阶段通用的做法是在监控系统的服务器和工作站安装杀毒软件,并在电力监控系统网络边界处安装防火墙、加密网关或防病毒网关设备等[8-9]。但是这些方法存在如下不足:
1) 杀毒软件采用黑名单的方法对匹配病毒特征值,对新恶意代码(利用0 day漏洞的恶意代码)无能为力,无法应对类似“震网事件”、“乌克兰停电事件”的APT攻击[10-13]。
2) 杀毒软件容易误杀电力监控软件和漏杀恶意代码,严重影响电力监控系统的可靠性和功能连续性。
针对电力监控系统目前防御方案存在的不足,本文引入基于白名单的可信执行机制[14,16],提出一种基于白名单机制的电力监控主机恶意代码防御方案。该方案在监控主机上构建一个可信程序执行模块,对监控主机上执行程序进行指纹验证,确保只有在白名单中注册的软件版本(即可信软件)才能执行,未经注册的软件(即不可信软件)不可执行。本方案引入一个管理服务器维护白名单,并对可信执行模块的统一管理和配置。基于白名单机制的恶意代码防御方案通过对监控主机的验证和执行约束,保证除已注册软件外的所有恶意代码不再具备执行发作的机会,从根本上切断病毒木马等恶意代码的破坏途径。
根据方案设计,本研究开发基于白名单机制的电力监控主机恶意代码防御系统,并在变电站监控系统中进行了试点运行和实验验证。实验结果表明,本系统能够识别可信和不可信程序,有效阻止不可信程序代码的运行。同时对具备新特征的恶意代码(如利用0day漏洞的恶意代码)具备良好的拦截能力,弥补现有防御方案无法抵御新恶意代码的问题。
1 相关研究
1.1 杀毒软件
常见的恶意代码防控技术方案为杀毒软件、防病毒网关等[9-10,12]。这一类技术方案可归纳为基于黑名单的防控方案,其将可疑代码的特征或者行为作为评判标准,通过与病毒库、恶意代码库进行匹配,确认可疑代码是否是恶意的攻击代码。基于黑名单的恶意代码防控技术本质上为被动查杀方法,针对电力监控系统的恶意代码防御时,其存在如下不足:1) 较少考虑电力监控系统可靠性、功能连续性的要求,容易造成电力监控系统计算、网络、存储负载过大,以致影响功能稳定性[15];2) 无法应对新的恶意代码或者新病毒;3) 恶意代码库在使用过程中需要不断获取恶意代码特征更新,导致库的规模不断扩大,其存储、查询、计算效率不断降低,严重影响主机、系统的正常运行[16]。
基于对当前恶意代码防御技术方案的不足,包括杀毒软件在内的现有方案无法适用于电力监控系统。因此急需一种新的技术方案实现对电力监控系统恶意代码防御。
1.2 白名单技术
白名单与黑名单主要作为一种访问控制的形式,白名单对应于允许的行为或实体,黑名单对应于不允许的行为和实体[17-19]。与黑名单相反,白名单其将“好”的特征或者“可信”的特征作为匹配的标准,将“可信”特征构建成一个白名单匹配库,执行和访问的时候,通过匹配白名单库,查看访问实体和执行实体是否可信,从而确定是否允许该实体执行和访问。
白名单技术适用于功能单一、程序数量少、安全需求高的主机和网络设备。电力监控主机在生产现场中仅安装监控程序,其程序简单;同时其安全需求级别较高[1-2],因此适合采用白名单技术进行安全防护。
白名单技术目前在产业界应用较为广泛,国外大型安全厂商Lumension 、卡巴斯基、CoreTrace均推出沿用白名单思想的安全防护方案,国内也出现中网S3、E盾等基于白名单的安全产品,这些方案和产品目前仅针对通用主机、服务器的防护,缺乏对电力监控系统主机具有针对性的防护方案。
1.3 常见电力监控主机与其软件特性[1-2]
常见的电力监控系统包括能量管理系统(即EMS)、继电保护与故障信息管理系统、计量自动化系统、变电站视频监控及环境系统等。这些系统由各类功能子系统、服务器、数据库、工作站、应用软件、操作系统和网络设备等构成。一般意义上的电力监控主机包括各类服务器(包括应用服务器、中间件服务器、采集服务器、前置服务器、Web服务器、网管服务器等)与工作站(维护工作站、调度员工作站、培训工作站等)。电力监控主机常采用“胖服务器和瘦工作站”的形式。
电力监控系统服务器的软件一般为“精简操作系统-中间件-单个应用”的模式,其软硬件均为成熟的可靠性高的产品,其具备软件版本固定、软件更新周期长等特点。后台工作站一般为瘦终端,具备远程登录和简单的操作,一般包括登录client、浏览器、常见的ssh服务、ftp服务等。
根据电力监控主机的工作模式,其具备如下的特点:
1) 软件功能和行为单一,合法的软件行为特征易识别,生成维护软件白名单较容易。
2) 监控软件更新缓慢,更新换代周期为几年甚至是十几年。其白名单几乎没有维护的成本。
根据1.2节的分析,白名单技术从“未知的软件中识别可信的程序”,因此,其适用于功能单一、程序数量少、安全需求高的电力监控主机。
2 基于白名单机制的恶意代码防御方案
本文基于白名单的思想,设计基于白名单机制的电力监控主机恶意代码防御方案,对电力监控主机、服务器上运行代码执行指纹生成和白名单匹配验证,确保只有在白名单注册的合法程序才能执行,使电力监控主机免受恶意代码的威胁,弥补杀毒软件等常见方案无法查杀新病毒新木马的缺陷。
2.1 整体架构
本方案整体架构为客户端-服务器架构,如图1所示,其包含两个部分:白名单管理服务器和可信执行模块。
图1 基于白名单机制的恶意代码防御方案整体架构
其中管理服务器连接在主干网交换机上,提供对电力监控系统中监控主机和服务器的可信软件的认证、白名单库的生成、维护、白名单管理、安全审计、可信执行模块的配置管理。可信程序执行模块作为agent程序安装在监控主机和业务服务器上,受管理服务器的集中控制,其提供对业务服务器、监控主机的程序执行验证功能,包括程序执行拦截、指纹值计算、白名单匹配、执行判定等操作。保护可信程序(在白名单中有注册的程序)正常执行,拦截并阻止不可信程序或不可信代码执行,有效切断不可信程序(如恶意代码、非授权软件等)的执行途径,保护电力监控主机的安全。
2.2 管理服务器
管理服务器的设计目的是实现对主机本地可信执行模块和白名单缓存的有效管理。管理服务器对分散在电力监控主机上的可信执行模块进行集中配置,并针对电力监控主机上的软件安装、版本更新、软件卸载等过程更新维护白名单库,确保白名单库和白名单缓存的时效性。
管理服务器包含如下几大功能:可信执行模块配置、可信软件管理、白名单生成、白名单维护、白名单下发、白名单撤销管理、日志管理和审计。
可信执行模块配置该功能集中配置各可信执行模块,对不同的监控主机、业务服务器提供配置模板和可定制配置接口,允许运行维护人员对可信执行模块的有效配置。
可信软件管理该功能提供对软件可信性的认证:1) 运维人员将干净的软件版本(即未受恶意代码感染的软件版本,一般为经过安全验证的出厂软件)上传到管理服务器;2) 对软件的版本、权限、使用者进行认证,确保在电力监控主机上运行的软件都是来源于可信的软件厂商,其版本正确,且对应使用者的权限准确无误。
白名单生成管理服务器需对可信软件、程序进程关键区域(如关键的数据段和代码段等)、脚本等内容生成白名单,白名单为一个7元组WHITELIST:{ID, name,version,hash,softsize,authority,description}Sig_server 其中白名单7个字段分别为软件ID、软件名、版本号、指纹值、软件大小、执行权限、软件描述,除了description可选,其他字段必须提供。整个白名单需要由管理服务器签名。值得注意的是,白名单最重要的字段为指纹值、执行权限和整个白名单的签名,这三个字段供主机端的可信执行模块进行匹配和验证,保证只有与白名单匹配的程序才能执行。
白名单维护该功能提供对白名单的增、查、改功能。
白名单下发管理服务器提供两种方法供可信执行模块查询白名单:1) 白名单下发。管理服务器定时向或者实时向监控主机推送下发白名单,由于电力监控软件更新频率低,也就决定下发推送的频率不高,不会造成显著的流量增加;2) 白名单主动查询。工作站和业务服务器运行软件时,发现该软件指纹无法匹配本地白名单缓存,需要向管理服务器进行主动查询,管理服务器收到消息对白名单库进行搜索,将搜索结果反馈给主机的可信执行模块。
白名单撤销管理当工作站和服务器软件失效或者过期,需要对软件白名单进行撤销管理,该过程需要运维人员的参与,必须提供运维人员的账户口令和对应权限才能执行这一操作。
日志管理和审计当可信执行模块无法在主机本地匹配白名单时,需要访问管理服务器;管理服务器接收到消息,将相关操作记录在日志以供后续审计。该功能提供对本地非匹配执行情况进行记录,为后续判定疑似恶意代码执行提供审计日志支撑。
管理服务器利用可信软件管理功能,完成对电力监控主机上的软件安装、版本更新、软件卸载等过程的管控,并通过白名单生成、维护、下发、撤销等功能实现对主机本地白名单缓存的有效管理,确保白名单的时效性,完成对可信执行模块的有效管理。
2.3 可信执行模块
可信执行模块为一个软件模块,其作为目标保护主机和目标保护服务器上的agent程序,如图2所示。从底向上分为四层:驱动层、核心处理层、接口层和应用层。其中驱动层为核心处理层提供必要的底层驱动程序,包括进程消息拦截驱动等。核心处理层实现可信执行模块核心功能,包括软件执行管理模块、白名单缓存管理模块、证书管理模块和告警日志生成模块。接口层为提供给本地配置管理和远程配置管理的接口;应用层提供可信执行模块全部的功能,包括程序拦截、指纹值计算、白名单匹配、白名单缓存更新和程序执行判定。
图2 可信执行模块层次图
需要重点提到的是,可信执行模块中的白名单缓存和证书均是通过加密存储在本地,加密密钥和证书的签发和管理由管理服务器进行统一管理。此外,白名单缓存的访问权限由可信执行模块控制,确保白名单不会被外部攻击者窃取和篡改。
2.4 防护方案的执行流程
基于白名单机制的恶意代码防御方案执行流程如图3所示。
图3 应用白名单保护方案的程序执行流程
1) 程序加载进内存,准备获取CPU执行权;2) 由可信执行模块截获执行的进程消息,并将该进程挂起;3) 可信执行模块计算该进程关键代码区、数据区等关键区域的指纹;4) 将该指纹作为关键字在本地的白名单缓存中匹配查找和验证;5) 判断验证结果,如果白名单缓存有记录且验证成功则直接运行并结束,如果无记录或验证不成功则向管理服务器请求在服务器端的白名单中查找指纹记录;6) 客户端接收管理服务器反馈的结果,如果该指纹未注册,则交由管理员决定是否运行;否则7)将管理服务器的白名单更新本地缓存,并进入到4)。
值得一提的是,白名单缓存存在于可信执行模块本地,受到可信执行模块的保护。管理服务器管理电力监控主机上的软件的安装、更新、卸载等过程,并主动对主机本地白名单缓存进行更新,确保白名单的时效性。
3 实验验证
本研究开发基于白名单机制的恶意代码防御系统,并将该系统在某供电局调度控制中心EMS系统(调度自动化系统)进行实验和试点应用。
3.1 实 验
地点:某供电局EMS系统及其备用EMS系统机房。
工作站配置:工作站#1、工作站#2和工作站#3主机配备 Intel (R) Core(TM) i3 CPU;2 GB RAM; Windows 2000 NT 5.0;应用为open3000 login client;在工作站#1安装Windows版可信执行模块。
服务器配置: 服务器#1、服务器#2和服务器#3配备Intel(R) Xeon(R) CPU E7-4830,32 GB RAM ;Linux NewWatch2-1 2.6.18-194 ;应用为DF8003;在服务器#1安装Linux版可信执行模块。
实验1在工作站#1(安装可信执行模块)和工作站#2(普通监控主机)上分别运行可信程序(白名单注册过的)和非可信程序(未在白名单注册过的)20次;在服务器#1(安装有可信执行模块)和服务器#2(普通服务器)上分别运行可信程序(已经在白名单中注册)与非可信程序(未在白名单中注册)20次,查看运行情况和平均运行时间。实验效果如表1和表2所示。
表1 安装有可信执行模块的机器与普通机器的程序执行对比情况
表2 程序启动20次平均增加的时间
根据表1,工作站#1和服务器#1能够识别可信和不可信程序,并对不可信程序实施拦截;根据表2,相比普通主站#2,工作站#1成功启动程序增加的平均时间为9.2 s-8.7 s=0.5 s,增长率为0.5 s/8.7 s=5.7%;相比普通服务器#2,服务器#1成功启动程序增加的平均时间为21.1 s-19.4 s=1.7 s,增长率为1.7 s/19.4 s=8.8%。
由表1和表2可得,安装有可信执行模块的工作站和服务器能够有效识别可信程序和不可信程序,保证可信程序正常启动运行,阻止不可信程序运行;同时本系统对程序启动时间的影响不大。
实验2测试安装有可信执行模块的工作站#1、安装有可信执行模块服务器#1,普通工作站#2、普通服务器#2,安装有杀毒软件的工作站#3和安装有杀毒软件的服务器#3对新老恶意代码的检测防御能力。如表3所示,本实验采用4个漏洞编写相应的POC(漏洞验证攻击代码)。其中新漏洞尚未发布相关的补丁,可以作为攻击入口编写新攻击代码POC#1、POC#2。同理,旧攻击代码POC#3和POC#4均以旧漏洞为攻击入口。
表3 Windows和Linux攻击代码
攻击代码POC#1和POC#2分别执行对三台工作站的攻击;攻击代码POC#3和POC#4分别执行对三台服务器的攻击;查看运行攻击结果,如表4所示。
表4 工作站针对新老恶意代码的防护对比情况
根据表4可得,安装杀毒软件的工作站#3和服务器#3只能对老恶意代码有识别能力,无法识别新恶意代码。而配有可信执行模块的工作站#1和服务器#1对新老恶意代码均具备良好的防御能力。
实验3部署恶意代码防御方案的系统新增的流量情况。即测试与管理服务器和工作站连接的骨干交换机的流量,测试时间段为24小时,每隔3小时采样一次。
如表5,安装防御系统的平均流量为398.625 KB/s,未安装防御系统的流量为374.25 KB/s,平均新增流量为(398.625-374.25) KB/s=24.375 KB/s,增长率为24.375/374.25=6.5%。如图4所示,流量增加处于较为平稳的状态,24小时内未出现流量陡增的情况。
表5 部署安全防御系统的流量与普通流量的对比
图4 部署安全防御系统的流量与普通流量的对比
3.2 讨 论
本文对电力监控主机白名单防护系统的安全功能、效率进行了实验,实验证明基于白名单的电力监控主机防护系统对新老攻击代码均具备良好的防控能力,且额外增加的时间消耗不大。但是将该系统部署于电力监控系统中,需要结合电力监控主机可靠性要求高、功能连续性的特点对基于白名单的防护系统进行进一步改进和优化。
1) 基于白名单机制的电力监控系统恶意代码防御方案目前适用于Windows版和Linux环境,针对其他环境如AIX等尚需进行扩展和完善。
2) 可信执行模块在软件启动前需要进行指纹生成、比对等操作,本次实验中Windows版可信执行模块时间消耗增加了5.7%;服务器版可信执行模块时间消耗增加了8.8%,需要进一步提高效率,降低额外增加的时间消耗。
3) 本方案保护对象为增量和存量电力监控主机,针对大量存量主机软硬件老化严重的现状,需要做针对性的定制,降低可信执行模块的计算存储资源的消耗,保证安装有可信执行模块的存量系统的正常运行。
4 结 语
本文针对电力监控系统的恶意代码防御问题,提出基于白名单的电力监控主机恶意代码防御方案。该方案利用白名单对执行前的程序进行指纹验证,确保只有在白名单中注册过的程序(即可信的程序)才能执行,切断恶意代码在电力监控主机和服务器上执行的条件。本研究开发基于白名单的恶意代码防御系统,包括Windows版和Linux版,将两个版本的系统在电力调控中心主站系统环境进行实验和试点运行。实验结果表明,防护系统对Windows和Linux版本的新老恶意代码均具备良好的识别能力和阻止其运行的能力。同时本系统的时间消耗不大,此外基于白名单的恶意代码防御系统所产生的流量不大,处于可控范围。
本文结合电力监控主机可靠性、功能连续性要求高的特点以及存量电力监控主机软硬件老化的现状,对本方案以及防护系统防护方案的适用性、性能等内容进行了讨论,并指出了下一步需要改进的方向。
[1] 姚建国,杨胜春,高宗和,等.电网调度自动化系统发展趋势展望[J].电力系统自动化,2007,31(13):7-11.
[2] 陈树勇,宋书芳,李兰欣,等.智能电网技术综述[J].电网技术,2009,33(8):1-7.
[3] 巴维尔,孙书贵,杨国辉.震网病毒与应对防护[J].中国信息安全,2011(2):46-50.
[4] 苏盛,吴长江,马钧,等.基于攻击方视角的电力CPS网络攻击模式分析[J].电网技术,2014,38(11):3115-3120.
[5] 童晓阳,王晓茹.乌克兰停电事件引起的网络攻击与电网信息安全防范思考[J].电力系统自动化,2016,40(7):144-148.
[6] 郭庆来,辛蜀骏,王剑辉,等.由乌克兰停电事件看信息能源系统综合安全评估[J].电力系统自动化,2016,40(5):145-147.
[7] 李中伟,佟为明,金显吉.智能电网信息安全防御体系与信息安全测试系统构建乌克兰和以色列国家电网遭受网络攻击事件的思考与启示[J].电力系统自动化,2016,40(8):147-151.
[8] 张涛.电网信息安全有四大核心问题[J].国家电网,2016(2):25-26.
[9] 孔德光,谭小彬,奚宏生,等.提升多维特征检测迷惑恶意代码[J].软件学报,2011,22(3):522-533.
[10] 刘巍伟,石勇,郭煜,等.一种基于综合行为特征的恶意代码识别方法[J].电子学报,2009,37(4):696-700.
[11] 向林泓.主动防御技术的研究和实现[D].成都:电子科技大学,2011.
[12] 芦天亮.基于人工免疫系统的恶意代码检测技术研究[D].北京:北京邮电大学,2013.
[13] 王蕊,冯登国,杨轶,等.基于语义的恶意代码行为特征提取及检测方法[J].软件学报,2012,23(2):378-393.
[14] 李振.应用程序白名单系统的设计与实现[D].北京:北京工业大学,2015.
[15] 邹春明,郑志千,刘智勇,等.电力二次安全防护技术在工业控制系统中的应用[J].电网技术,2013,37(11):3227-3232.
[16] 孟令强,关勇,张向红,等.基于可信计算的应用程序白名单管理系统[J].计算机安全,2010(10):16-17.
[17] 汪锋,周大水.白名单主动防御系统的设计与实现[J].计算机工程与设计,2011,32(7):2241-2244.
[18] 林曦君.基于白名单机制的安全办公系统的设计与实现[D].北京:北京工业大学,2014.
[19] 汪锋.白名单主动防御系统的设计与实现[D].济南:山东大学,2011.
ASOLUTIONOFMALWAREDEFENSEBASEDONWHITE-LISTFORPOWERSUPERVISORYHOSTS
Hu Haisheng
(ElectricPowerResearchInstituteofGuangdongPowerGrid,Guangzhou510080,Guangdong,China)
Traditional defense solutions against malware are based on blacklist (e.g., anti-virus software.), which cannot cope with new Malwares (i.e., malicious code that exploits 0day vulnerabilities). Therefore, we present a malware defense solution based on white-list for power supervisory hosts. This scheme built a code execution control module on the monitoring hosts, which protected the startup of trusted software and blocked the execution of malware. Hence, security of monitoring hosts was improved. Moreover, the design management server centrally managed the trusted execution module, and maintained the white list. We designed and developed the system according to the solution, and carried out pilot application and experiment in the transformer substation. The experiment showed the system could recognize trusted software and malware to prevent the execution of both new and old malware. Meanwhile, its time consumption and new traffic were in reasonable scope during the process of recognition.
White-list Power supervisory hosts Malware defense
TP309
A
10.3969/j.issn.1000-386x.2017.09.023
2016-11-04。胡海生,工程师,主研领域:信息安全,可信计算,电力自动化。