CN102598008A - Windows内核改变搜索方法 - Google Patents
Windows内核改变搜索方法 Download PDFInfo
- Publication number
- CN102598008A CN102598008A CN2010800425779A CN201080042577A CN102598008A CN 102598008 A CN102598008 A CN 102598008A CN 2010800425779 A CN2010800425779 A CN 2010800425779A CN 201080042577 A CN201080042577 A CN 201080042577A CN 102598008 A CN102598008 A CN 102598008A
- Authority
- CN
- China
- Prior art keywords
- driver
- change
- function
- address
- destination drive
- 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
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/83—Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及通过使用构成内核中数据的最恒定形式的系统模块信息而搜索Windows内核驱动器和系统改变的方法。根据本发明的Windows内核改变搜索方法包括:第一步骤,改变-搜索驱动器从系统模块信息读取正被搜索的驱动器的名称以及开始地址和结束地址;第二步骤,通过使用正被搜索的驱动器的名称来提取由正被搜索的驱动器的驱动器对象所使用的数学函数;以及第三步骤,如果数学函数的因子是所述开始地址和所述结束地址之间的值,则识别出正被搜索的驱动器未改变,并且如果数学函数的因子不是所述开始地址和所述结束地址之间的值,则识别出正被搜索的驱动器已改变。
Description
技术领域
本发明涉及检测Windows内核的改变的方法,并更具体地涉及使用系统模块信息来检测Windows内核和系统的驱动器的改变的方法,系统模块信息是Windows内核的不可改变的信息。
背景技术
一般来说,存储器中可执行图像代码的许多改变以钩挂的形式出现。对于一些黑客工具的情况,通过随机地改变特定代码而作出改变,以生成与可执行图像的原始操作不同的操作。
这样的改变修改了将实际由可执行图像执行的操作,由此引起许多安全问题。例如,通过钩挂特定可执行图像,恶意程序形成使恶意程序保持隐藏而不被检测的Rootkit,由此生成可执行图像的持续错误操作。
在Windows系统中代表内核改变的改变包括驱动器改变和系统改变。上述恶意程序不仅作出改变,而且安全程序也使用内核改变来执行各种安全功能。
例如,在韩国提供的键盘安全程序包括各种产品,诸如INCAInternet的nProtectKeyCrypt、SoftCamp的Secure KeyStroke、AhnLab的AhnLab online SecurityMyKeyDefense、Kings Information & Network的K-Defense等。这些键盘安全程序的大多数通过改变内核来执行键盘安全功能。
即,键盘安全程序改变Windows内核、钩挂键盘输入数据,并使键盘输入数据遵循由它们设置的过程,而不遵循正常的Windows处理过程。在这样做时,即使键盘记录器已经安装在客户端计算机上时,也防止键盘输入数据遵循正常Windows处理过程,使得键盘记录器不能读取或截获键盘输入数据。
当今,由于多个网站通过因特网向用户客户端提供各种键盘安全程序,因此至少两个或更多个键盘安全程序已经安装在多数客户端系统中。当多个键盘安全程序已经安装在单个客户端系统中时,所有键盘安全程序改变Windows内核,并因此在键盘安全程序之间出现冲突,使得它们不再保证操作系统(OS)的稳定性。
事实上,键盘安全程序可以仅当键盘记录器已经安装在客户端系统上时运行。即,如果键盘安全程序仅当键盘记录器已经改变键盘处理相关内核时运行,则在键盘安全程序之间的上述冲突将不出现。但是,由于常规键盘安全程序不能检测通过键盘记录器对内核的改变,因此无论用户客户端系统何时访问特定网站,这些键盘安全程序都将运行,结果是产生了键盘安全程序之间不可避免地出现的冲突的问题。
发明内容
因此,谨记现有技术中出现的上述问题而做出本发明,并且本发明的目的是提供检测恶意程序对内核的改变并向用户通知对安全的威胁的方法。
技术方案
为了实现上述目的,本发明提供一种检测Windows内核的改变的方法,该方法包括以下步骤:
第一步骤,由改变检测驱动器从系统模块信息读取关于检测目标驱动器的名称、开始地址和结束地址的信息;
第二步骤,使用检测目标驱动器的名称来提取由检测目标驱动器的驱动器对象所使用的函数;以及
第三步骤,如果函数的地址是开始地址和结束地址之间的值,确定检测目标驱动器未改变,并且如果函数的地址不是开始地址和结束地址之间的值,则确定检测目标驱动器已经改变。
有利效果
上面描述的本发明具有以下效果:向用户通知对安全的威胁并使用户能够处理对安全的威胁,这是因为本发明能够使用内核的系统模块信息来检测内核和系统的驱动器是否已经改变。
附图说明
图1是示出了典型的Windows内核存储器结构的图;
图2是示出了加载在Windows内核存储器中的恶意驱动器改变了驱动器对象空间的驱动器对象函数表的情况的图;
图3是示出了改变检测驱动器已经被加载在图2的Windows内核存储器中的状态的图;以及
图4是示出了根据本发明的实施方式的使用改变检测驱动器检测Windows内核的改变的方法的流程图。
具体实施方式
参照附图将详细地描述根据本发明的实施方式检测内核的改变的方法。
图1是示出了典型的Windows内核存储器结构的图。
以各种形式将关于在Windows OS上运行的全部驱动器的信息存储在Windows内核存储器中。存储在Windows内核存储器中的信息包括系统模块信息11、驱动器对象空间12、驱动器图像空间(便携式可执行(PE)结构)13、中断描述符表(IDT)14和系统服务描述符表(SSDT)16。
NT内核17负责通常在Windows内核存储器中使用的各种数据结构的管理、驱动器的加载、设备的输入和输出、以及系统调用的提供。
当前加载的驱动器的列表存储在系统模块信息11中。即,存储每个驱动器图像的驱动器名称和关于加载驱动器图像的位置的开始地址和结束地址的信息。
每个驱动器对象的函数表存储在驱动器对象空间12中。构成驱动器的驱动器对象的函数所涉及的地址值应该是在相应驱动器的驱动器图像空间(PE结构)13内的地址值。
驱动器文件当前已经被加载在存储器中的驱动器的图像(驱动器文件已经被加载在存储器中的状态被称为图像)存储在驱动器图像空间(PE结构)13中。驱动器文件和驱动器图像按照PE结构的形式配置。PE结构存储信息,该信息包括可执行文件的机器语言的定位、输入和输出表的定位、相应文件可以运行的平台的类型、以及当OS执行文件时第一开始代码的定位。
IDT 14存储中断处理机的地址。SSDT 16存储当生成系统调用时针对每个函数应该调用的例程的地址。
包括键盘记录器的恶意程序通过改变驱动器对象空间12、驱动器图像空间(PE结构)13、IDT 14、SSDT 16和存储器的钩子回调而试图进行破坏。但是,这些恶意程序根本不能改变内核的系统模块信息11。如果系统模块信息11被改变,则OS错误地操作并且系统重新启动。
图2是示出了加载在Windows内核存储器中的恶意驱动器改变了驱动器对象空间的驱动器对象函数表的情况的图。
当恶意程序加载在存储器中时,相应恶意程序的可执行驱动器图像(malicious.sys)也加载在驱动器图像空间(PE结构)13中。此外,存储有相应恶意驱动器的名称和可执行驱动器图像的位置的开始地址和结束地址存储在系统模块信息11中。此外,由相应恶意驱动器对象使用的函数表存储在驱动器对象空间12中,并且相应信息存储在IDT(未示出)、SSDT(未示出)和驱动器图像空间(PE结构)13它们自身中。
例如,当三个驱动器(hello.sys、world.sys和malicious.sys)加载在该计算机系统中时,每个驱动器图像加载并存储在驱动器图像空间(PE结构)13中,并且加载在存储器中的驱动器图像的列表存储在系统模块信息11中。驱动器名称以及每个驱动器图像的开始地址和结束地址被存储。
同时,驱动器实际运行所需要的函数被设置并存储在必要的驱动器对象空间12中。当恶意驱动器将world.sys驱动器对象的函数所涉及的地址值改变为恶意驱动器图像内的地址值时,发生钩挂。例如,当将world.sys驱动器对象的键盘值处理函数所涉及的地址值改变为恶意驱动器图像内的地址值(例如,530)时,world.sys驱动器向恶意驱动器输出键盘值,因而恶意驱动器可以截获键盘值。
本发明提出检测恶意驱动器是否如上所述改变内核的方法。
根据本发明的检测内核的改变的方法按照改变检测程序的形式提供,并在用户计算机上运行。图3是示出了改变检测驱动器已经被加载在图2的Windows内核存储器中的状态的图。
当执行内核改变检测程序时,改变检测驱动器图像被加载在驱动器图像空间(PE结构)13中,并且改变检测驱动器的名称以及图像空间中的改变检测驱动器的开始地址和结束地址存储在系统模块信息11中。此外,由改变检测驱动器使用的函数表存储在驱动器对象空间12中。
本发明通过如上所述的加载在Windows内核存储器中的改变检测驱动器而实现,并且本发明检测内核驱动器是否已经被改变。
图4是示出了根据本发明的实施方式的使用改变检测驱动器检测Windows内核的改变的方法。
首先,在步骤S41,改变检测驱动器从系统模块信息读取驱动器列表并提取关于当前在系统上运行的驱动器的名称以及开始地址和结束地址的信息。
在步骤S42,改变检测驱动器从自系统模块信息读取的驱动器列表中选择检测目标驱动器,并将检测目标驱动器的开始地址设为变量i,以及将检测目标驱动器的结束地址设为变量j。
然后,在步骤S43,改变检测驱动器提取由检测目标驱动器对象使用的函数的自变量。在该情况下,使用ObReferenceObject函数、ObReferenceObjectByName函数、ObReferenceObjectByHandle函数和ObReferenceObjectByPointer函数,改变检测驱动器可以发现存储检测目标驱动器的驱动器对象的函数表的位置,并可以从检测目标驱动器对象的函数表提取每个函数的地址。
在步骤S44,改变检测驱动器确定在步骤S43提取的地址是否是变量i和变量j之间的值,如果提取的地址是变量i和变量j之间的值,则在步骤S45确定在相应的检测目标驱动器中没有发生改变,并且在步骤S46确定是否已经对整个驱动器列表执行了改变检测。
如果存在将执行改变检测的驱动器,则处理返回到步骤S42,其中开始重复开始于选择检测目标驱动器的处理的部分。相反,如果不存在将执行改变检测的驱动器,处理结束。
同时,如果在步骤S44确定在步骤S43提取的地址不是变量i和变量j之间的值,则改变检测驱动器在步骤S47确定相应检测目标驱动器已经改变,在步骤S48向用户通知相应的可执行程序的改变,并行进到步骤S46。
本发明不仅可以检测上面描述的驱动器对象的改变,而且可以检测IDT、驱动器图像空间(PE结构)、SSDT和钩子回调的改变。
对于IDT 14的情况,使用HalGetInterruptVector函数来获得检测目标设备的中断号,并且使用asm sidt命令来获得相应的检测目标设备的IDT。同时,可以通过检验IDT的地址和服务例程地址而检查IDT是否已经被改变。
对于驱动器图像空间(PE结构)13的情况,打开检测目标驱动器,将检测目标驱动器的开始部分设置为IMAGE_DOS_HEADER结构,从IMAGE_DOS_HEADER结构获得IMAGE_OPTIONA_ HEADER结构的定位,并且从IMAGE_OPTIONAL_HEADER结构获得IMAGE_IMPORT_DESCRIPTOR结构的定位。同时,通过检验包括在IMAGE_IMPORT_DESCRIPTOR结构中的函数表,而针对改变检查每个函数的地址。
对于SSDT的情况,通过检验包括在KeServiceDescriptorTable中的函数地址来检测改变。
对于钩子回调的情况,使用ObReferenceObject函数、ObReferenceObjectByName函数、ObReferenceObjectByHandle函数和ObReferenceObjectByPointer函数而获得检测目标驱动器的驱动器对象,并使用获得的驱动器对象来获得设备对象。同时,通过检验包括在设备对象中的钩子回调地址来检测改变。
尽管已经结合附图描述了本发明的技术精神,但这是为了例示本发明的优选实施方式,并不是要限制本发明。此外,对于本领域普通技术人员明显的是,在不偏离技术精神的范围的界限内,可以有各种修改和改变。
Claims (4)
1.一种检测Windows内核的改变的方法,该方法包括以下步骤:
第一步骤,由改变检测驱动器从系统模块信息读取关于检测目标驱动器的名称、开始地址和结束地址的信息;
第二步骤,使用所述检测目标驱动器的名称来提取由所述检测目标驱动器的驱动器对象所使用的函数;以及
第三步骤,如果所述函数的地址是所述开始地址和所述结束地址之间的值,则确定所述检测目标驱动器未改变,并且如果所述函数的地址不是所述开始地址和所述结束地址之间的值,则确定所述检测目标驱动器已经改变。
2.根据权利要求1所述的方法,其中,所述第二步骤使用ObReferenceObject函数、ObReferenceObjectByName函数、ObReferenceObjectByHandle函数和ObReferenceObjectByPointer函数中的一个。
3.根据权利要求1所述的方法,其中,所述改变检测驱动器还检测所述检测目标驱动器的驱动器对象、IDT、PE结构、SSDT和/或钩子回调是否已经改变。
4.根据权利要求1所述的方法,其中,所述改变检测驱动器确定所述检测目标驱动器已经改变并接着向用户通知所述检测目标驱动器的可执行程序的改变。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2009-0090370 | 2009-09-24 | ||
KR1020090090370A KR101042858B1 (ko) | 2009-09-24 | 2009-09-24 | 윈도우즈 커널 변조 탐지방법 |
PCT/KR2010/005297 WO2011037321A2 (ko) | 2009-09-24 | 2010-08-12 | 윈도우즈 커널 변조 탐지방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102598008A true CN102598008A (zh) | 2012-07-18 |
Family
ID=43796323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800425779A Pending CN102598008A (zh) | 2009-09-24 | 2010-08-12 | Windows内核改变搜索方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20120246723A1 (zh) |
JP (1) | JP2013506185A (zh) |
KR (1) | KR101042858B1 (zh) |
CN (1) | CN102598008A (zh) |
BR (1) | BR112012006142A2 (zh) |
CA (1) | CA2774802A1 (zh) |
MX (1) | MX2012003344A (zh) |
WO (1) | WO2011037321A2 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569618B2 (en) * | 2013-08-28 | 2017-02-14 | Korea University Research And Business Foundation | Server and method for attesting application in smart device using random executable code |
US20180267818A1 (en) * | 2017-03-17 | 2018-09-20 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on notification data |
US10489185B2 (en) * | 2017-03-17 | 2019-11-26 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on attribute matching |
KR102154595B1 (ko) * | 2017-12-05 | 2020-09-10 | 가톨릭대학교 산학협력단 | 키보드 소리를 이용한 입력 변조 탐지 장치 및 그 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100666562B1 (ko) * | 2005-08-11 | 2007-01-09 | 주식회사 웨어플러스 | 커널 드라이버 및 프로세스 보호 방법 |
US20090217377A1 (en) * | 2004-07-07 | 2009-08-27 | Arbaugh William A | Method and system for monitoring system memory integrity |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7574346B2 (en) | 2000-10-30 | 2009-08-11 | Microsoft Corporation | Kernel emulator for non-native program modules |
KR100745640B1 (ko) * | 2005-08-11 | 2007-08-02 | 주식회사 웨어플러스 | 커널 메모리를 보호하는 방법 및 그 장치 |
US7644271B1 (en) * | 2005-11-07 | 2010-01-05 | Cisco Technology, Inc. | Enforcement of security policies for kernel module loading |
US20080034350A1 (en) * | 2006-04-05 | 2008-02-07 | Conti Gregory R | System and Method for Checking the Integrity of Computer Program Code |
US7904278B2 (en) * | 2006-05-02 | 2011-03-08 | The Johns Hopkins University | Methods and system for program execution integrity measurement |
EP1912149A1 (en) * | 2006-10-09 | 2008-04-16 | Texas Instruments France | Monitor mode integrity verification |
US8281393B2 (en) * | 2006-11-08 | 2012-10-02 | Mcafee, Inc. | Method and system for detecting windows rootkit that modifies the kernel mode system service dispatch table |
KR100762973B1 (ko) | 2007-02-07 | 2007-10-02 | (주)노애드 | 컴퓨터의 악성코드 탐지 및 제거 방법과 그 장치, 그방법을 컴퓨터에서 실행시키기 위한 프로그램 코드를기록한 기록매체 |
US8364910B2 (en) * | 2007-03-08 | 2013-01-29 | Daniel Shawcross Wilkerson | Hard object: hardware protection for software objects |
-
2009
- 2009-09-24 KR KR1020090090370A patent/KR101042858B1/ko active IP Right Grant
-
2010
- 2010-08-12 CN CN2010800425779A patent/CN102598008A/zh active Pending
- 2010-08-12 BR BR112012006142A patent/BR112012006142A2/pt not_active Application Discontinuation
- 2010-08-12 JP JP2012530763A patent/JP2013506185A/ja active Pending
- 2010-08-12 WO PCT/KR2010/005297 patent/WO2011037321A2/ko active Application Filing
- 2010-08-12 MX MX2012003344A patent/MX2012003344A/es not_active Application Discontinuation
- 2010-08-12 CA CA2774802A patent/CA2774802A1/en not_active Abandoned
- 2010-08-12 US US13/498,113 patent/US20120246723A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090217377A1 (en) * | 2004-07-07 | 2009-08-27 | Arbaugh William A | Method and system for monitoring system memory integrity |
KR100666562B1 (ko) * | 2005-08-11 | 2007-01-09 | 주식회사 웨어플러스 | 커널 드라이버 및 프로세스 보호 방법 |
Also Published As
Publication number | Publication date |
---|---|
WO2011037321A2 (ko) | 2011-03-31 |
WO2011037321A3 (ko) | 2011-05-12 |
KR101042858B1 (ko) | 2011-06-20 |
KR20110032731A (ko) | 2011-03-30 |
US20120246723A1 (en) | 2012-09-27 |
MX2012003344A (es) | 2012-07-23 |
BR112012006142A2 (pt) | 2016-06-28 |
CA2774802A1 (en) | 2011-03-31 |
JP2013506185A (ja) | 2013-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3295647B1 (en) | Malware warning | |
US9703958B2 (en) | Rollback feature | |
US9686303B2 (en) | Web page vulnerability detection method and apparatus | |
US9135443B2 (en) | Identifying malicious threads | |
US7860971B2 (en) | Anti-spam tool for browser | |
US9679139B1 (en) | System and method of performing an antivirus scan of a file on a virtual machine | |
US20130239214A1 (en) | Method for detecting and removing malware | |
US11531748B2 (en) | Method and system for autonomous malware analysis | |
US9659173B2 (en) | Method for detecting a malware | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
US10007788B2 (en) | Method of modeling behavior pattern of instruction set in N-gram manner, computing device operating with the method, and program stored in storage medium to execute the method in computing device | |
CN103019778A (zh) | 开机启动项的清理方法和装置 | |
US8490861B1 (en) | Systems and methods for providing security information about quick response codes | |
CN106250761B (zh) | 一种识别web自动化工具的设备、装置及方法 | |
US8485428B1 (en) | Systems and methods for providing security information about quick response codes | |
CN103279707A (zh) | 一种用于主动防御恶意程序的方法、设备及系统 | |
CN103679027A (zh) | 内核级恶意软件查杀的方法和装置 | |
CN102598008A (zh) | Windows内核改变搜索方法 | |
CN109492403B (zh) | 一种漏洞检测方法及装置 | |
US9842018B2 (en) | Method of verifying integrity of program using hash | |
US8464343B1 (en) | Systems and methods for providing security information about quick response codes | |
RU2583712C2 (ru) | Система и способ обнаружения вредоносных файлов определенного типа | |
CN112351008B (zh) | 网络攻击分析方法、装置、可读存储介质及计算机设备 | |
CN105631327A (zh) | 病毒查杀方法和系统、及客户端 | |
CN112580038A (zh) | 反病毒数据的处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1171527 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120718 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1171527 Country of ref document: HK |