CN107256358A - 工业组态监控软件执行过程动态保护方法 - Google Patents
工业组态监控软件执行过程动态保护方法 Download PDFInfo
- Publication number
- CN107256358A CN107256358A CN201710536142.3A CN201710536142A CN107256358A CN 107256358 A CN107256358 A CN 107256358A CN 201710536142 A CN201710536142 A CN 201710536142A CN 107256358 A CN107256358 A CN 107256358A
- Authority
- CN
- China
- Prior art keywords
- internal memory
- program
- space
- file
- dynamic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了工业组态监控软件执行过程动态保护方法,属于工业控制领域和信息技术领域。第一、对于程序固有空间采用动态完整性度量方法进行度量,以保证程序完整性并在不被破坏的条件下运行,一旦发现程序完整性被破坏就发出报警,必要时结束程序进程;第二、对于非固有内存空间在内存分配环节进行阻止,防止远程代码注入;通过这两个环节,进程运行空间环境都有了监测和保护机制,保证进程在正确的状态下运行。
Description
技术领域
本发明涉属于工业控制领域和信息技术领域,特别涉及一种进程内存动态度量和内存增强保护方法。
背景技术
随着工业化与信息化进程的不断交叉融合,越来越多的信息技术应用到了工业领域。目前,工业控制***已广泛应用于电力、水力、石化、医药、食品制造、交通运输、航空航天等工业领域,其中,超过80%的涉及国计民生的关键基础设施依靠工业控制***来实现自动化作业。工业控制***已经成为国家关键基础设施的重要组成部分,工业控制***的安全关系到国家的战略安全。
与此同时,由于工业控制***广泛采用通用软硬件和网络设施,以及与企业管理信息***的集成,导致工业控制***越来越开放,并且与企业内网,甚至是与互联网产生了数据交换。也就是说以前工业控制***在物理环境上的相对封闭性以及工业控制***软、硬件的专用性将会被打破,通过互联网或企业内网将有可能获取相关工业控制***较为详细的信息,再加上运营工业控制***的企业安全意识普遍较差,这样就给敌对政府、恐怖组织、商业间谍、内部不法人员、外部非法入侵者等创造了可乘之机。
传统的信息安全技术比如病毒查杀、防火墙、入侵检测面对如今越来越隐蔽的病毒技术已经越来越难;即使是比较先进的静态白名单技术在面对诸如反射内存注入(RMI)的入侵方式也是无能为力;本发明是一种***化的方法来防范包括反射内存注入在内的病毒攻击展现的防范方法。比较典型的例子有破坏伊朗核设施的网震病毒、入侵孟加拉国央行的木马病毒。
发明内容
为了解决诸如RMI(reflective memory injection,反射内存注入)这类绕过计算机文件***以及以文件***为基础的安全软件监控***的木马病毒,采用在关键点对进程固有内存进行扫描验证以及对非法执行内存申请进行控制的方法。
RMI通过修改进程空间代码达到侵害目的,这种入侵方式运行的病毒代码不通过LoadLibrary加载到内存,也没有实际的病毒文件载体存在,因此无论是病毒查杀还是白名单在加载时度量都无法将病毒阻止掉。
程序固有内存空间就是根据程序的可执行文件中模块正常加载到内存中占用的空间,区别于远程注入内存新申请的线程内存等空间。其计算方法根据进程内模块信息(模块在内存的起始地址、大小)来进行计算。如图1所示。
程序固有内存空间在程序加载之后是不允许改变的,衡量是否改变可以通过密码学原理采用Hash值来度量,也就是在关键点计算每个模块的HASH值,并与原始HASH进行比较,两个HASH值相等才视为程序没有被非法篡改。监视篡改行为是艰难的,通过篡改的结果来出发程序动态度量;比如配置文件被修改时触发程序度量(程序内存模块hash计算),一旦程序被修改就阻止程序继续运行或者发出报警信息。
在工业控制***中远程代码注入也是不允许的,通过监控执行内存分配来进行控制。
本发明采用的技术方案为工业组态监控软件执行过程动态保护方法,第一、对于程序固有空间采用动态完整性度量方法进行度量,以保证程序完整性并在不被破坏的条件下运行,一旦发现程序完整性被破坏就发出报警,必要时结束程序进程;第二、对于非固有内存空间在内存分配环节进行阻止,防止远程代码注入;通过这两个环节,进程运行空间环境都有了监测和保护机制,保证进程在正确的状态下运行。示意图如图2所示:
步骤如下:
第一步、消除所有已知的基于内存的安全漏洞,确保被攻击面尽可能小;
第二步、确保操作***的本地保护功能事实上是启用,使成功的基于内存的开发不可能;本地保护功能为DEP和ASLR。
DEP是Data Execution Prevention的缩写,是一种基于软硬件技术的内存防护方法,能够在内存上执行额外检查以帮助防止在***上运行恶意代码。DEP有OS软件技术也有EVP硬件支持,新的AMD和Intel CPU支持EVP技术。
ALSR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,以及通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。ALSR能够有效降低缓冲区溢出攻击的成功率,Linux、FreeBSD、Windows等主流操作***都已采用了该技术。
第三步、使用进程内存动态检测技术和增强的内存保护技术来识别和阻止企图进行内存注入的侵害:在进程执行的关键节点进行进程内存的动态监测,及时预警、阻止危害行为的发生,如图3所示。
3.1在进程执行的关键节点进行进程内存空间检测,检测进程的内存hash值有无被修改;
3.1.1关键节点是指进程进行的可捕捉而又很重要的操作,这些重要的操作为修改注册表、非法查看配置文件、日志、关键业务文件等;
文件的查看拦截使用已有的节点安全软件DTE功能即达到控制目的;在禁止的同时要触发进程内存检测。注册表修改拦截使用window API拦截技术,这个在节点安全软件上也有详细使用,需要拦截的api是RegSetValueEx;将需要拦截的注册项存储起来;待这些API函数被使用时触发检测消息传送给检测服务函数。
DTE是指增强的domain-type访问控制安全模型;DTE根据主体所在域权限实现对型所属客体进行访问,如图4DTE控制模型,首先文件打开进入Open hook(process+user:file),Open hook(process+user:file)对应权限属性Domain-Type:RWE,Domain/域主题(进程+用户)集合以及Type/型客体(文件)集合。
3.1.2进程内存空间检测:每个进程的内存hash在数据库中进行记录,检测时要对比数据库中的hash值是否有变动;每个进程都包含一系列的模块,包括程序本身和一系列DLL;其枚举过程如下:
*使用函数OpenProcess打开进程;
*使用Module32First/Module32Next遍历进程,每个调用获取到MODULEENTRY32数据结构,其成员modBaseAddr/modBaseSize标识模块在内存中的位置和大小,用于计算其HASH值;szModule/szExePath用于标识模块的名称和路径。对比库中已有HASH值,如果不匹配则代表进程内存已经被改变,根据已有策略阻止进程运行或者发出预警;
3.2拦截WINDOWS API函数VirtualAllocEx
病毒进行远程代码注入时要调用VirtualAllocEx函数来为自己注入代码分配空间,这些被分配的代码是为新的线程和参数来分配的;如果能够识别/拦截病毒分配内存的行为,那么代码自然无法注入到新的线程里;如果病毒选择注入到进程固有空间,那么步骤3.1的进程空间动态度量技术发出预警甚至关闭受害程序。
当VirtualAllocEx函数第五个参数是PAGE_EXECUTE_READWRITE时进行拦截,首先检测此进程是否在步骤3.1中允许动态修改代码的权限表中;如果不在直接拒绝;如果在则检测第二个函数参数地址是不是在进程固有空间中,如果第二个函数参数地址在进程固有空间在则允许,如果第二个函数参数地址不在进程固有空间则禁止;地址是否在固有空间参考步骤3.2.2来进行计算。
4、拒绝任何通过验证的白名单程序来安装程序的企图。
即使通过白名单验证的程序也不能安装新软件,安装了新软件也无法运行。
附图说明
图1为进程固有空间示意图。
图2为本方法的实施流程图。
图3为进程内存动态检测应用示意图。
图4为DTE控制模型图。
图5为WindowsAPI VirtualAllocEx拦截示意图。
图6为远程代码注入拦截流程图。
具体实施方式
1消除所有已知的安全漏洞:比如使用GS编译选项编译软件,尽可能消除缓冲区溢出漏洞;比如实现SEH校验机制;及时打OS补丁,升级软件到安全版本等等;
2确保操作***的本地保护功能已经启用
2.1启用DEP
在计算机属性--->***--->性能能属性--->数据执行保护,打开DEP设置;使操作***、服务以及应用启用DEP功能。
2.2使用启用ALSR的操作***
现在主流操作***基本上都实现了ALSR:OpenBSD、Linux2.6.12及以后、windowserver 2008、windows 7、Vista、Windows Server 2008R2、MAC OS X、IOS 4.3。
3实现进程内存空间动态度量和执行内存分配检测
3.1***关键节点进行保护
3.1.1注册表修改通知
对***注册表修改函数RegSetValueEx进行拦截,对于关键的修改要通知***服务程序进行对应程序的进程内存动态度量;拦截方法见VirtualAllocEx拦截方法如图5所示。
3.1.2配置文件修改保护
使用DTE访问控制模型对***配置文件进行保护;如果配置文件受到攻击向***发送消息进行进程动态度量;
3.1.3修改业务文件保护
使用DTE访问控制模型对***业务文件进行保护;对于业务文件受到攻击时要向***发送消息进行进程动态度量;
3.1.4修改敏感文件保护
使用DTE模型对***敏感文件进行保护;对于敏感文件受到的攻击要向***发送消息进行进程的动态度量;
3.2进程动态度量
3.2.1进程HASH值计算
*使用函数OpenProcess打开进程;
*使用Module32First/Module32Next遍历进程,每个调用获取到MODULEENTRY32数据结构,其成员modBaseAddr/modBaseSize标识模块在内存中的位置和大小,用于计算其HASH值;szModule/szExePath用于标识模块的名称和路径。对比库中已有HASH值,如果不匹配则代表进程内存已经被改变,根据已有策略阻止进程运行或者发出预警;每个模块计算一个HASH值并进行对比,任何一个模块除了问题都要进行预警或者结束进程;进程HASH可以在进程启动时建立HASH表来完成初始值的构建,或者使用PE文件进行进程HASH值初始化,也可以使用扫描方式将所有HASH计算好后存取来使用。本方法必须要和传统白名单方式结合使用。
3.2.2动态度量
***收到步骤3.1传送来的消息后即可启动进程动态检查。通过计算进程每个模块的HASH值并和存储在数据库初始化到内存中的HASH值进行对比,任何一个模块出了问题都代表进程已经被篡改了。
3.2.3拦截VirtualAllocEx
对于***调用VirtualAllocEx进行拦截,如果它在分配一个可执行可写的内存空间,将拒绝分配内存;内存属性使用其函数第五个参数是不是PAGE_EXECUTE_READWRITE来判断。如果待分配的内存位于程序的固有内存空间,也就是其在使用函数Module32First/Module32Next找到的内存区域之内将允许内存分配。远程代码注入需要为注入的代码提供运行空间,包括线程空间和参数的空间;示意图见图6所示。通过拦截VirtualAllocEx函数将使注入代码无法获得运行空间从而阻止其运行。选择拦截VirtualAllocEx是因为结合进程固有内存完整性检擦可以覆盖进程环境空间,覆盖代码注入的存在基础。
4.拒绝任何通过白名单验证程序进行安装程序企图
即使通过白名单验证的程序也不能随便安装新的软件,安装后也无法运行。
Claims (1)
1.工业组态监控软件执行过程动态保护方法,第一、对于程序固有空间采用动态完整性度量方法进行度量,以保证程序完整性并在不被破坏的条件下运行,一旦发现程序完整性被破坏就发出报警,必要时结束程序进程;第二、对于非固有内存空间在内存分配环节进行阻止,防止远程代码注入;通过这两个环节,进程运行空间环境都有了监测和保护机制,保证进程在正确的状态下运行;
其特征在于:本方法的实施步骤如下,
第一步、消除所有已知的基于内存的安全漏洞,确保被攻击面尽可能小;
第二步、确保操作***的本地保护功能事实上是启用,使成功的基于内存的开发不可能;本地保护功能为DEP和ASLR;
DEP是Data Execution Prevention的缩写,是一种基于软硬件技术的内存防护方法,能够在内存上执行额外检查以帮助防止在***上运行恶意代码;
ALSR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射线性区布局的随机化,以及通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的;ALSR能够有效降低缓冲区溢出攻击的成功率;
第三步、使用进程内存动态检测技术和增强的内存保护技术来识别和阻止企图进行内存注入的侵害:在进程执行的关键节点进行进程内存的动态监测,及时预警、阻止危害行为的发生;
3.1在进程执行的关键节点进行进程内存空间检测,检测进程的内存hash值有无被修改;
3.1.1关键节点是指进程进行的可捕捉而又很重要的操作,这些重要的操作为修改注册表、非法查看配置文件、日志、关键业务文件;
文件的查看拦截使用已有的节点安全软件DTE功能即达到控制目的;在禁止的同时要触发进程内存检测;注册表修改拦截使用window API拦截技术,这个在节点安全软件上也有详细使用,需要拦截的api是RegSetValueEx;将需要拦截的注册项存储起来;待这些API函数被使用时触发检测消息传送给检测服务函数;
DTE是指增强的domain-type访问控制安全模型;DTE根据主体所在域权限实现对型所属客体进行访问,首先文件打开进入Open hook(process+user:file),Open hook(process+user:file)对应权限属性Domain-Type:RWE,Domain/域主题(进程+用户)集合以及Type/型客体(文件)集合;
3.1.2进程内存空间检测:每个进程的内存hash在数据库中进行记录,检测时要对比数据库中的hash值是否有变动;每个进程都包含一系列的模块,包括程序本身和一系列DLL;其枚举过程如下:
*使用函数OpenProcess打开进程;
*使用Module32First/Module32Next遍历进程,每个调用获取到MODULEENTRY32数据结构,其成员modBaseAddr/modBaseSize标识模块在内存中的位置和大小,用于计算其HASH值;szModule/szExePath用于标识模块的名称和路径;对比库中已有HASH值,如果不匹配则代表进程内存已经被改变,根据已有策略阻止进程运行或者发出预警;
3.2拦截WINDOWS API函数VirtualAllocEx
病毒进行远程代码注入时要调用VirtualAllocEx函数来为自己注入代码分配空间,这些被分配的代码是为新的线程和参数来分配的;如果能够识别/拦截病毒分配内存的行为,那么代码自然无法注入到新的线程里;如果病毒选择注入到进程固有空间,那么步骤3.1的进程空间动态度量技术发出预警甚至关闭受害程序;
当VirtualAllocEx函数第五个参数是PAGE_EXECUTE_READWRITE时进行拦截,首先检测此进程是否在步骤3.1中允许动态修改代码的权限表中;如果不在直接拒绝;如果在则检测第二个函数参数地址是不是在进程固有空间中,如果第二个函数参数地址在进程固有空间在则允许,如果第二个函数参数地址不在进程固有空间则禁止;地址是否在固有空间参考步骤3.2.2来进行计算;
4、拒绝任何通过验证的白名单程序来安装程序的企图;
即使通过白名单验证的程序也不能安装新软件,安装了新软件也无法运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710536142.3A CN107256358A (zh) | 2017-07-04 | 2017-07-04 | 工业组态监控软件执行过程动态保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710536142.3A CN107256358A (zh) | 2017-07-04 | 2017-07-04 | 工业组态监控软件执行过程动态保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107256358A true CN107256358A (zh) | 2017-10-17 |
Family
ID=60024849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710536142.3A Pending CN107256358A (zh) | 2017-07-04 | 2017-07-04 | 工业组态监控软件执行过程动态保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107256358A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287996A (zh) * | 2018-01-08 | 2018-07-17 | 北京工业大学 | 一种恶意代码混淆特征清洗方法 |
CN110737264A (zh) * | 2019-09-11 | 2020-01-31 | 北京戴纳实验科技有限公司 | 一种实验室远程监控*** |
CN112487413A (zh) * | 2020-12-11 | 2021-03-12 | 北京中软华泰信息技术有限责任公司 | 一种基于Linux白名单程序控制***及方法 |
CN113791596A (zh) * | 2021-11-15 | 2021-12-14 | 西安热工研究院有限公司 | 基于动态申请内存小时均值计算方法和***、设备及介质 |
CN116108440A (zh) * | 2023-04-12 | 2023-05-12 | 北京网藤科技有限公司 | 针对工控关键软件被注入的处理方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344904A (zh) * | 2008-09-02 | 2009-01-14 | 中国科学院软件研究所 | 一种动态度量方法 |
CN104217157A (zh) * | 2014-07-31 | 2014-12-17 | 珠海市君天电子科技有限公司 | 一种漏洞防利用方法及*** |
US20150033299A1 (en) * | 2013-07-23 | 2015-01-29 | Kaspersky Lab Zao | System and methods for ensuring confidentiality of information used during authentication and authorization operations |
CN104573516A (zh) * | 2014-12-25 | 2015-04-29 | 中国科学院软件研究所 | 一种基于安全芯片的工控***可信环境管控方法和平台 |
CN106257481A (zh) * | 2015-06-19 | 2016-12-28 | 卡巴斯基实验室股份制公司 | 用于恢复修改的数据的***和方法 |
-
2017
- 2017-07-04 CN CN201710536142.3A patent/CN107256358A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344904A (zh) * | 2008-09-02 | 2009-01-14 | 中国科学院软件研究所 | 一种动态度量方法 |
US20150033299A1 (en) * | 2013-07-23 | 2015-01-29 | Kaspersky Lab Zao | System and methods for ensuring confidentiality of information used during authentication and authorization operations |
CN104217157A (zh) * | 2014-07-31 | 2014-12-17 | 珠海市君天电子科技有限公司 | 一种漏洞防利用方法及*** |
CN104573516A (zh) * | 2014-12-25 | 2015-04-29 | 中国科学院软件研究所 | 一种基于安全芯片的工控***可信环境管控方法和平台 |
CN106257481A (zh) * | 2015-06-19 | 2016-12-28 | 卡巴斯基实验室股份制公司 | 用于恢复修改的数据的***和方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287996A (zh) * | 2018-01-08 | 2018-07-17 | 北京工业大学 | 一种恶意代码混淆特征清洗方法 |
CN110737264A (zh) * | 2019-09-11 | 2020-01-31 | 北京戴纳实验科技有限公司 | 一种实验室远程监控*** |
CN110737264B (zh) * | 2019-09-11 | 2022-09-06 | 北京戴纳实验科技有限公司 | 一种实验室远程监控*** |
CN112487413A (zh) * | 2020-12-11 | 2021-03-12 | 北京中软华泰信息技术有限责任公司 | 一种基于Linux白名单程序控制***及方法 |
CN113791596A (zh) * | 2021-11-15 | 2021-12-14 | 西安热工研究院有限公司 | 基于动态申请内存小时均值计算方法和***、设备及介质 |
CN116108440A (zh) * | 2023-04-12 | 2023-05-12 | 北京网藤科技有限公司 | 针对工控关键软件被注入的处理方法、装置、设备和介质 |
CN116108440B (zh) * | 2023-04-12 | 2024-01-26 | 北京网藤科技有限公司 | 针对工控关键软件被注入的处理方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107256358A (zh) | 工业组态监控软件执行过程动态保护方法 | |
US11171974B2 (en) | Distributed agent based model for security monitoring and response | |
US8272059B2 (en) | System and method for identification and blocking of malicious code for web browser script engines | |
KR101626424B1 (ko) | 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법 | |
US20040025015A1 (en) | System and method for the managed security control of processes on a computer system | |
JP2003535414A (ja) | 情報を盗んだり及び/又は損害を引き起こしたりするかもしれない邪悪なプログラムに対するコンピュータの包括的一般的共通的保護のためのシステム及び方法 | |
CN104217157B (zh) | 一种漏洞防利用方法及*** | |
CN110233817B (zh) | 一种基于云计算的容器安全*** | |
US8782809B2 (en) | Limiting information leakage and piracy due to virtual machine cloning | |
CN106228078A (zh) | 一种Linux下基于增强型ROST的安全运行方法 | |
Anand et al. | Vulnerability-based security pattern categorization in search of missing patterns | |
CN115987644A (zh) | 智能配电物联安全认证*** | |
CN100520797C (zh) | 一种防止病毒动态攻击程序的装置和方法 | |
KR100825726B1 (ko) | 정보거부공격에 대비한 사용자의 신용정보 및 지적재산보호를 위한 장치 및 그 보호 방법 | |
CN105912945A (zh) | 一种操作***安全加固装置及运行方法 | |
CN106598713A (zh) | 虚拟机安全动态迁移的方法及*** | |
Goertzel et al. | Software survivability: where safety and security converge | |
Ginter et al. | Cybersecurity for chemical engineers | |
Brunil et al. | Security vulnerabilities and mitigation strategies for application development | |
Lewis | Characterizing risk | |
Treaster et al. | Detection of privilege escalation for linux cluster security | |
GB2411748A (en) | Anti-virus system for detecting abnormal data outputs | |
Pfleeger | Data security | |
Dhiman et al. | Artificial Intelligence and Machine Learning-Enabled Cybersecurity Tools and Techniques | |
Bishop et al. | Results-oriented security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171017 |
|
RJ01 | Rejection of invention patent application after publication |