CN108830078A - 一种针对工控设备的恶意代码发现方法 - Google Patents
一种针对工控设备的恶意代码发现方法 Download PDFInfo
- Publication number
- CN108830078A CN108830078A CN201810438839.1A CN201810438839A CN108830078A CN 108830078 A CN108830078 A CN 108830078A CN 201810438839 A CN201810438839 A CN 201810438839A CN 108830078 A CN108830078 A CN 108830078A
- Authority
- CN
- China
- Prior art keywords
- industrial control
- malicious code
- code
- control equipment
- operating system
- 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.)
- Granted
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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种针对工控设备的恶意代码发现方法,是对系统中所有线程或操作系统的执行单元的CPU的PC寄存器定时进行检查,通过对线程或操作系统的执行单元的PC寄存器位置所属的可执行模块进行比对,根据执行位置来判断是否属于系统自身可执行文件,还是可读写内存区域(非代码区域),还是位于临时位置的可执行文件,从而发现针对工控设备的恶意代码。本发明对远程注入并执行的工控设备恶意代码尤其有效。
Description
技术领域
本发明涉及信息安全技术领域,公开了一种通过工控系统的保护应用在工控设备中发现恶意代码的方法。
背景技术
工控设备由于其生命周期久,不间断运行,通常采用的操作系统较为老旧,且不便于打补丁。导致针对大量老旧系统的安全漏洞的工具能较为顺利地对工控系统发动攻击,其中尤其以远程执行恶意代码危害性为最大。
现有技术中,已有尝试采用黑白名单制方法进行实现恶意代码识别的技术。例如中国专利CN 104573516 A,以完整性度量与管控技术为依托,以防止不受信任的程序在工业控制终端(操作站)运行为目的。
CN 104573516 A通过完整性度量与管控技术解决计算机程序在加载时的识别问题,并禁止不被信任程序的运行。其主要缺陷在于代码识别(既术语完整性度量所表达的主要意义)机制的触发时机需要在计算机程序加载时得到控制权。其关键步骤在于“2-1)修改工控终端操作系统内核,通过钩子函数捕获已加载到操作系统即将运行的程序进程,通过特定算法对加载入内存的程序进程代码进行计算,得到摘要值即为度量值,在进程正常运行前完成度量;”,由于系统的执行权限的获取,并不局限于通过启动“即将运行的程序进程”,欠缺对“即将运行的程序进程”所依赖的自身的各个库的完整性度量的机制设计。
但CN 104573516 A尤其缺乏针对远程恶意代码通过远程溢出等技巧,绕过系统内核加载而直接获得执行的恶意代码的完整性度量机制。
发明内容
为了克服上述现有技术的不足,针对工控系统远程执行的代码,本发明提出了一种恶意代码的发现方法由工控终端实现,通过对正在执行中的代码的所属位置推测其是否为恶意代码。推测恶意代码的核心原理基于如下事实:正常编译器所产生的代码均位于代码段,而需要远程恶意注入的代码则因其动态出现,无法进入由编译器固化的代码段,因而需要借助运行时刻可动态改写的堆或者栈来进行留存,并通过特殊技巧获得执行。
本发明对操作系统要求不限,适用与任意工控操作系统。
本发明的具体技术方案是:一种针对工控设备的恶意代码发现方法,对系统中所有线程(或操作系统的执行单元)的CPU的Programm Count(PC)寄存器定时进行检查,通过对线程(或操作系统的执行单元)的PC寄存器位置所属的可执行模块进行比对,根据执行位置来判断是否属于系统自身可执行文件,还是可读写内存区域(非代码区域),还是位于临时位置的可执行文件,从而发现针对工控设备的恶意代码。
进一步的,本发明所的发现方法包括如下步骤:
1)工控终端操作系统启动;
2)工控终端保护应用启动;
3)工控终端保护应用开始对操作系统内核,已经运行的所有进程依次进行快照;所述快照内容包含:
3.1)进程内存镜像;
3.2)进程执行单元镜像;
3.3)进程执行者身份标识及开启的特权状态快照;
3.4)工控操作系统所带有的特有属性的状态快照;
4)工控终端保护应用开始步骤3获得的信息进行恶意代码可疑度分析;
5)在步骤3.4过程中,工控终端保护应用周期性检测自身CPU资源占用量,适当约束CPU使用量;
6)当检测出可疑代码时,根据如果可疑代码位置位于可执行文件映射区域,则计算出可执行文件名;当所属可执行代码位置位于动态链接库映射区域,则可以计算出动态链接库名;当所属可执行代码位置位于进程堆或栈区域,则可判断为远程恶意代码已注入正常进程。
进一步的,所述的工控终端保护应用,并不指代某一特定应用程序。“工控终端保护应用”的实际呈现形式,可以是1个单独的可执行程序。也可以是集成至操作系统内核的一个内核模块。也可以是可执行程序的一部分,以库的形式存在。本文所声明的权利主张,不局限于技术实现的体裁,而在于是否与本文表述的内容和方法是否一致。
进一步的,所述的快照所指的含义,为给定时间下的静态视图。本文所指的获取快照,是指获取运行中的程序在某时间点下的静态视图。
进一步的,所述的镜像所指的含义,是与目标完全一致的副本。可以制作镜像的对象,可以是内存,线程的上下文状态,进程的地址空间布局,进程执行者的身份信息,特权信息,特权启用状态信息。
进一步的,所述的资源所指的含义,是CPU使用时间。限于CPU性能,单位时间内的指令可执行条数有其上限,当单位时间内所有执行的指令均从属于工控终端保护应用时,代表工控终端保护应用占满了CPU的单位使用时间(资源在单位时间内耗尽)。
本发明对远程注入并执行的工控设备恶意代码尤其有效。
附图说明
图1为本发明相关的恶意代码发现方法的重点检测部位示意.
图2为本发明方法以应用程序形式存在的应用型系统构成形态例。
图3为本发明方法以内核模块形式存在的内核型系统构成形态例。
图4为本发明方法的流程示意图。
具体实施方法
为使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和实施例对本发明做进一步的说明。此处所描述的具体实施例仅用于解释本发明的算法,并不限定本发明的实现语言。
工控终端保护应用由下述模块构成:
1)定时模块;
2)进程快照捕捉模块;
3)线程快照分析模块;
4)地址分析模块;
5)代码分析模块;
工控终端保护应用启动后执行下述逻辑:
1)工控终端保护应用启动时,初始化定时模块,进程快照捕捉模块,现场快照分析模块,地址分析模块。
2)定时模块激活,触发进程快照捕捉模块。
3)进程快照捕捉模块向操作系统询问进程清单。
4)操作系统返回进程清单。
5)进程快照捕捉模块以读取VM的模式,向操作系统要求打开清单中第一进程。
6)如果打开进程成功,向操作系统要求从地址0~0xffffffffffffffff区间的内存分配状态。对于所有处于已分配及已commit状态的内存块读取。
6‐1)如果打开进程成功,向操作系统要求从读取所有执行单元(以WIN32为例,执行单元为线程)清单。
6‐2)打开返回结果的第一个执行单元。
6‐3)读取执行单元的CONTEXT,所述CONTEXT指包含所有CPU寄存器信息的数据。
6‐4)打开返回结果的下一个执行单元。
6‐5)读取执行单元的CONTEXT。
6‐6)重复6‐4与6‐5,直至所有执行单元状态均被读取。
7)如果打开进程成功,向操作系统要求读取从进程所代表的用户。
8)操作系统返回用户身份。
9)如果打开进程成功,向操作系统要求读取从进程所代表的用户所具有的特权。
10)操作系统返回用户具有的特权清单。
11)如果打开进程成功,向操作系统要求读取从进程所代表的用户所具有的特权的启用状态。
12)操作系统返回用户具有的特权的启用状态。
13)如果打开进程成功,向操作系统要求其他关联信息。
14)操作系统返回其他信息。
15)调用线程快照分析模块。从执行单元中获取第一个执行单元。进入线程分析状态。
15‐1)获得执行单元当前执行位置,返回地址。
15‐2)判断当前执行地址所属可执行文件。
15‐3)检验所属可执行文件的代码节。当地址位于可执行文件区域中,计算可执行文件的可执行部分与当前内存映射差异。当内容一致,视同通过检验。
15‐4)检验可执行单元当前执行地址。当地址位于堆区域中,线程进入异常待诊断状态。
15‐5)检验可执行单元当前执行地址。当地址位于栈区域中,线程进入异常待诊断状态。
15‐6)检验可执行单元当前检查状态如果为异常待诊断状态。根据白名单库判断是否属于异常。如果不处于白名单中的,则视同恶意代码发现,并且进行后续处置。后续处置不属于本工控恶意发现技术描述范畴。
15‐7)获得返回地址,将返回地址视同当前执行位置。重复步骤15‐2至15‐6。
获取下一执行单元,重复执行步骤15。
休眠特定时间段,从步骤2重复执行。
休眠特定时间段,从步骤2重复执行。
Claims (7)
1.一种针对工控设备的恶意代码发现方法,是对系统中所有线程或操作系统的执行单元的CPU的PC寄存器定时进行检查,通过对线程或操作系统的执行单元的PC寄存器位置所属的可执行模块进行比对,根据执行位置来判断是否属于系统自身可执行文件,还是可读写内存区域(非代码区域),还是位于临时位置的可执行文件,从而发现针对工控设备的恶意代码。
2.一种针对工控设备的恶意代码发现方法,其特征在于,所述发现方法包括如下步骤:
1)工控终端操作系统启动;
2)工控终端保护应用启动;
3)工控终端保护应用开始对操作系统内核,已经运行的所有进程依次进行快照;所述快照内容包含:
3.1)进程内存镜像;
3.2)进程执行单元镜像;
3.3)进程执行者身份标识及开启的特权状态快照;
3.4)工控操作系统所带有的特有属性的状态快照;
4)工控终端保护应用开始步骤3获得的信息进行恶意代码可疑度分析;
5)在步骤3.4过程中,工控终端保护应用周期性检测自身CPU资源占用量,适当约束CPU使用量;
6)当检测出可疑代码时,根据如果可疑代码位置位于可执行文件映射区域,则计算出可执行文件名;当所属可执行代码位置位于动态链接库映射区域,则可以计算出动态链接库名;当所属可执行代码位置位于进程堆或栈区域,则可判断为远程恶意代码已注入正常进程。
3.根据权利要求2所述的一种针对工控设备的恶意代码发现方法,其特征在于,所述的工控终端保护应用,是单独的可执行程序、或集成至操作系统内核的内核模块、或可执行程序的部分或以库的形式存在。
4.根据权利要求2所述的一种针对工控设备的恶意代码发现方法,其特征在于,所述的快照,为给定时间下的静态视图;所述的获取快照,是指获取运行中的程序在某时间点下的静态视图。
5.根据权利要求2所述的一种针对工控设备的恶意代码发现方法,其特征在于,所述的镜像所,是与目标完全一致的副本。
6.根据权利要求5所述的一种针对工控设备的恶意代码发现方法,其特征在于,所述副本是制作镜像的对象、或内存,或线程的上下文状态、或进程的地址空间布局、或进程执行者的身份信息、或特权信息或特权启用状态信息。
7.根据权利要求2所述的一种针对工控设备的恶意代码发现方法,其特征在于,所述的资源,是CPU使用时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810438839.1A CN108830078B (zh) | 2018-05-09 | 2018-05-09 | 一种针对工控设备的恶意代码发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810438839.1A CN108830078B (zh) | 2018-05-09 | 2018-05-09 | 一种针对工控设备的恶意代码发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108830078A true CN108830078A (zh) | 2018-11-16 |
CN108830078B CN108830078B (zh) | 2022-04-19 |
Family
ID=64147673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810438839.1A Active CN108830078B (zh) | 2018-05-09 | 2018-05-09 | 一种针对工控设备的恶意代码发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108830078B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110460623A (zh) * | 2019-09-27 | 2019-11-15 | 杭州九略智能科技有限公司 | 一种针对工业控制通用协议的处理系统、方法及终端 |
CN111831609A (zh) * | 2020-06-18 | 2020-10-27 | 中国科学院数据与通信保护研究教育中心 | 一种虚拟化环境中二进制文件度量值统一管理和分发的方法和系统 |
CN114707149A (zh) * | 2022-03-18 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种傀儡进程检测方法、装置、电子设备和存储介质 |
CN116108440A (zh) * | 2023-04-12 | 2023-05-12 | 北京网藤科技有限公司 | 针对工控关键软件被注入的处理方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408917A (zh) * | 2008-10-22 | 2009-04-15 | 厦门市美亚柏科资讯科技有限公司 | 应用程序行为合法性检测方法及系统 |
CN103907098A (zh) * | 2011-10-11 | 2014-07-02 | 迈可菲公司 | 用于管理程序环境中的关键地址空间保护的系统和方法 |
CN103927484A (zh) * | 2014-04-21 | 2014-07-16 | 西安电子科技大学宁波信息技术研究院 | 基于Qemu模拟器的恶意程序行为捕获方法 |
US20170032118A1 (en) * | 2015-07-31 | 2017-02-02 | Digital Guardian, Inc. | Systems and methods of protecting data from injected malware |
CN107533524A (zh) * | 2015-11-25 | 2018-01-02 | 慧与发展有限责任合伙企业 | 用于写时复制的存储器控制器的配置 |
-
2018
- 2018-05-09 CN CN201810438839.1A patent/CN108830078B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408917A (zh) * | 2008-10-22 | 2009-04-15 | 厦门市美亚柏科资讯科技有限公司 | 应用程序行为合法性检测方法及系统 |
CN103907098A (zh) * | 2011-10-11 | 2014-07-02 | 迈可菲公司 | 用于管理程序环境中的关键地址空间保护的系统和方法 |
CN103927484A (zh) * | 2014-04-21 | 2014-07-16 | 西安电子科技大学宁波信息技术研究院 | 基于Qemu模拟器的恶意程序行为捕获方法 |
US20170032118A1 (en) * | 2015-07-31 | 2017-02-02 | Digital Guardian, Inc. | Systems and methods of protecting data from injected malware |
CN107533524A (zh) * | 2015-11-25 | 2018-01-02 | 慧与发展有限责任合伙企业 | 用于写时复制的存储器控制器的配置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110460623A (zh) * | 2019-09-27 | 2019-11-15 | 杭州九略智能科技有限公司 | 一种针对工业控制通用协议的处理系统、方法及终端 |
CN111831609A (zh) * | 2020-06-18 | 2020-10-27 | 中国科学院数据与通信保护研究教育中心 | 一种虚拟化环境中二进制文件度量值统一管理和分发的方法和系统 |
CN111831609B (zh) * | 2020-06-18 | 2024-01-02 | 中国科学院数据与通信保护研究教育中心 | 虚拟化环境中二进制度量值统一管理和分发的方法和系统 |
CN114707149A (zh) * | 2022-03-18 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种傀儡进程检测方法、装置、电子设备和存储介质 |
CN116108440A (zh) * | 2023-04-12 | 2023-05-12 | 北京网藤科技有限公司 | 针对工控关键软件被注入的处理方法、装置、设备和介质 |
CN116108440B (zh) * | 2023-04-12 | 2024-01-26 | 北京网藤科技有限公司 | 针对工控关键软件被注入的处理方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108830078B (zh) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113384B2 (en) | Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes | |
CN108830078A (zh) | 一种针对工控设备的恶意代码发现方法 | |
US7788535B2 (en) | Means and method for debugging | |
US9081954B2 (en) | Verifying firmware integrity of a device | |
US8117660B2 (en) | Secure control flows by monitoring control transfers | |
CN106991324B (zh) | 一种基于内存保护类型监控的恶意代码跟踪识别方法 | |
CN109508536B (zh) | 一种篡改程序流攻击的检测方法和装置 | |
US10984096B2 (en) | Systems, methods, and apparatus for detecting control flow attacks | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
WO2015072689A1 (ko) | 안티디버깅 방법 | |
US10162966B1 (en) | Anti-malware system with evasion code detection and rectification | |
US10650147B2 (en) | Method and apparatus for ensuring control flow integrity | |
CN107690645A (zh) | 使用解释器虚拟机的行为恶意软件检测 | |
US20180349603A1 (en) | System, Apparatus And Method For Instruction Level Behavioral Analysis Without Binary Instrumentation | |
KR20120031745A (ko) | 커널 콜백 매커니즘을 이용한 악성코드 자동 분석 방법 | |
CN105184169A (zh) | Windows操作环境下基于插桩工具的漏洞检测方法 | |
US20180046804A1 (en) | Apparatus and method for monitoring confidentiality and integrity of target system | |
CN109471800A (zh) | 一种基于Windows操作系统的软件无限断点设置方法 | |
Salehi et al. | Discovery and identification of memory corruption vulnerabilities on bare-metal embedded devices | |
Malenko et al. | Device driver and system call isolation in embedded devices | |
US20220335135A1 (en) | Vulnerability analysis and reporting for embedded systems | |
US11934517B2 (en) | Systems and methods for reliably injecting control flow integrity into binaries without source code | |
Eresheim et al. | On the impact of kernel code vulnerabilities in iot devices | |
Ragab et al. | GhostRace: Exploiting and Mitigating Speculative Race Conditions | |
Gozzini | PINvader: a dynamic analysis tool for evasive techniques detection and bypass in 64-bit windows binaries |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |