CN100521687C - 识别访问网络的模块的方法及装置 - Google Patents

识别访问网络的模块的方法及装置 Download PDF

Info

Publication number
CN100521687C
CN100521687C CNB2006101059775A CN200610105977A CN100521687C CN 100521687 C CN100521687 C CN 100521687C CN B2006101059775 A CNB2006101059775 A CN B2006101059775A CN 200610105977 A CN200610105977 A CN 200610105977A CN 100521687 C CN100521687 C CN 100521687C
Authority
CN
China
Prior art keywords
module
storehouse
accesses network
identification characteristics
unit
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.)
Active
Application number
CNB2006101059775A
Other languages
English (en)
Other versions
CN1980237A (zh
Inventor
罗学军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing net an Technology Limited by Share Ltd
Original Assignee
Beijing Rising International Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Rising International Software Co Ltd filed Critical Beijing Rising International Software Co Ltd
Priority to CNB2006101059775A priority Critical patent/CN100521687C/zh
Publication of CN1980237A publication Critical patent/CN1980237A/zh
Application granted granted Critical
Publication of CN100521687C publication Critical patent/CN100521687C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提出一种通过追溯堆栈来智能地确定进程中访问网络时所调用的模块序列的方法。该方法包括,当应用程序访问网络的时候,拦截访问网络的动作,以获得所拦截的线程的堆栈信息;根据该堆栈信息,追溯该堆栈,以根据压入堆栈的指令地址查找出访问网络的动作是由哪些模块调用序列发出的,从而确定是哪些模块要访问网络;然后根据模块的特征自动识别出不可信的模块,以向用户发出警告。

Description

识别访问网络的模块的方法及装置
发明领域
本发明涉及一种用于识别访问网络的进程的方法,特别涉及一种能够具体识别出进程中访问网络的模块的方法和装置,以及采用这种装置的计算机系统。
背景技术
随着网络技术的发展,安全问题逐步成为人们关注的焦点。目前,不仅形形色色的病毒威胁着用户计算机系统的安全,那些能够通过访问网络盗取用户信息、复制用户文件,甚至破坏用户计算机系统的“木马”程序更让广大计算机用户感到防不胜防。
这种攻击性极强的“木马”程序实质上是一种按客户/服务模式运行的远程控制工具,它可以在用户的计算机中自动装载服务端程序,并根据远程控制端(客户端)程序的请求在用户不知情的情况下自动运行相应的程序,例如在用户的计算机上上传、下载文件,偷窥用户的私人文件,窃取各种密码及口令信息等等。
“木马”程序之所以难以防范是因为它通常采用极其狡猾的手段来隐蔽自己,使普通用户在中了“木马”后难以发觉。例如,“木马”程序可以通过修改文件属性、文件名或修改端口等方法藏匿起来。此外例如JavaScript、VBScript、ActiveX、XLM等等也都可以成为“木马”程序的传播介质。现今,针对“木马”程序的这些常规的隐身手段,现有的杀毒软件采用了相应的应对方法,从而可在一定程度上清除“木马”程序。
然而,随着病毒技术的更新,除了这些常用的隐身技术外,近期又出现了一种更新、更隐蔽的“木马”程序加载方法。这种新的“木马”程序通过钩子或者远程线程注入等方式将其自身的模块注入到某一正常程序的内存模块组中,变成该程序的内存模块的组成部分。甚至,有些“木马”程序还用自身的模块替换正常程序的模块,从而实现加载。
这种新的“木马”隐身技术使得“木马”程序在加载后不增加任何新的文件,不需要打开新的端口,不启动新的进程。也就是说,在正常运行时“木马”程序几乎没有任何表征症状,因而使用常规的查寻“木马”程序的方法根本监测不到它。但是,一旦“木马”程序的控制端向服务端发出特定的信息后,隐藏的程序就立即开始运行,从而侵袭用户的计算机系统。
因此,目前需要提出一种新的防范“木马”侵袭的方法,以确保能够及时发现“木马”程序,特别是能够发现采用这种新的隐身技术的“木马”程序,从而避免其破坏或者控制用户的计算机系统。
发明内容
本发明的一个目的在于提供一种能够智能地识别出访问网络的模块是否为“木马”程序注入模块的方法,从而为用户及时发现“木马”程序提供可能。
为了实现上述目的,本发明提出了一种识别访问网络的模块的方法,该方法包括以下步骤:拦截一个进程中的一个线程访问网络的动作;通过根据所拦截的所述线程的堆栈信息追溯所述堆栈,获取压入所述堆栈的指令地址;根据所述指令地址,搜索与所述访问网络的动作相关的模块;根据搜索出的所述模块的特征,判断所述模块是否可信。
此外,本发明还提出了用于实现上述方法的装置,以及包括该装置的计算机系统。
本发明提出的方法能够查找出访问网络的动作是由哪些模块顺序调用而启动的,并且可以识别出这些参与该访问网络动作的模块是可信的正常程序的模块还是“木马”程序的注入模块,从而为及时发现并阻止“木马”程序侵袭创造了可能。
通过以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面了解,本发明的上述及其它目的和效果将变得更加清楚和易于理解。
附图说明
以下将结合附图和具体实施例对本发明进行详细描述,其中:
图1示出本发明实施例中用于识别访问网络的模块的方法的流程图;
图2示出根据本发明一个实施例的用于实现本发明提出的方法的装置的结构框图。
具体实施方式
尽管“木马”程序种类繁多且千差万别,但所有“木马”程序都具有一个共同的特点,那就是通过网络向外(控制端)发送信息。鉴于这一特点,本发明提出:在应用程序访问网络的时候,拦截访问网络的动作,以获得所拦截的线程的堆栈;然后通过追溯堆栈搜索出该访问网络的动作是由哪些模块发出的;最后根据这些模块的特征,判断出这些模块是可信的程序模块还是“木马”的注入模块。这样,按照本发明提出的方法,可在“木马”程序通过网络向外发送信息之前,发现“木马”程序并阻止其侵害行为。
下面将结合附图详细描述本发明提出的上述思想的具体实施过程。
图1是根据本发明实施例的用于识别访问网络的模块的方法流程图。如图1所示,本发明提出的方法可包括拦截访问网络动作,追溯堆栈并搜索访问网络的模块,以及识别搜索出的模块三大部分。以下将逐一详细描述这三个部分的具体操作。
拦截访问网络的动作
如图1所示,当一个应用程序的进程要进行某些网络访问活动的时候,该进程中的某一线程会发出访问网络的动作(步骤S110)。根据不同的协议,该访问网络的动作可以有多种可能,例如,按照传输控制协议(TCP),该动作为开始监听来自对方TCP端口的连接请求,即开始Listen;而按照用户数据报协议(UDP),该动作则为开始创建地址对象等。
当线程发出该访问网络的动作时,防火墙软件可以拦截到这些事件(步骤S120)。随后,根据所拦截到的事件找到发出该访问网络动作的线程,并由此获得该线程的堆栈信息,如基址指针寄存器(EBP)的值等(步骤S130)。
当然,还可以采用其他方式获得堆栈信息,例如在驱动中直接查找堆栈的位置等。这些方法对于本领域技术人员而言是显而易见的,因而此处略去具体描述。
追溯堆栈
由于每次函数调用时都会将当前的寄存器EBP和EIP(指令指针,用于指向内存中待执行的指令地址)的值压入堆栈,因而总可以由每次调用时压入堆栈的当前调用所使用的堆栈区的基地址(EBP),追溯整个堆栈,从而获得每次调用时压入堆栈的指令地址——EIP(步骤S210)。
继而,在步骤S220中,将追溯堆栈过程中获得的每次调用的EIP值与进程中每个模块的开始地址和结束地址进行比较。如果该EIP值在某个模块的地址范围内,则表示找到了与该访问网络的动作相关的模块。否则,表示没有找到相应的模块且不必再继续寻找。如果在步骤S220中找到了对应的模块,则将搜索到的这个模块加入到与该访问网络的动作相关的模块链表中(步骤S230)。随后,继续读取堆栈(步骤S240)以得到前一次调用时的EBP和EIP(步骤S210),并重复执行步骤S220至S240,从而找到当前线程中调用的所有模块。
在所有与该访问网络动作相关的模块均已找到后,结束追溯堆栈。此时,流程转至步骤S310,继续判断搜索出的模块链表中的每个模块是可信的程序模块,还是“木马”程序注入的模块。
模块识别
如图1所示,在追溯堆栈而找到参与这次访问网络动作的所有模块之后,根据模块的特征,识别模块链表中的模块是否可信。在本发明中,模块的特征识别可以根据模块的不同属性采用多种方式来实现,以下示例性地给出模块识别的方法,但本发明并不限于此。
例如,可根据模块的标识信息,如公司名称或公司签名(数字签名)来识别模块是否可信。
通常,可信的模块一般都在模块中包含有公司名称。如果某个模块没有公司名称标识,那么该模块就可被认定为一个不可信的模块,换言之,其可能为“木马”程序注入的模块。
如果模块有公司签名(如数字签名),则可以根据该模块的签名和该应用程序的签名是不是为同一个公司的签名来判断该模块是否可信。例如,对于微软的系统模块,一般会有微软公司的签名,这是公知的。如果模块中的公司签名和应用程序的公司签名不同,而这个模块又没有微软的签名,那么这个模块就很可能是一个不可信的模块。
另外,为了使用户使用方便,本发明提出的方法还可包括建立一个具备自学习功能的知识库。当按照本发明而设计的程序在某一系统中第一次运行时,该知识库可自动学习系统中正常的模块,并将该模块以及该模块的标识信息,如公司签名等记录到知识库中,供以后的查询使用。当然,也可在运行前预装一个已知的知识库,该知识库包含了已知的可信模块,以及已知公司的签名等,例如包含微软认证的程序模块等,以便于用户使用。用户在运行按照本发明设计的程序时,程序的自学习功能可逐步向知识库中加入可信的模块信息。当具有这样一个知识库后,在识别模块是否可信的步骤中,将搜索出的模块的标识信息(如模块名称或公司签名)与知识库中的可信模块的信息进行比较,从而识别出该模块是否可信。
此外,针对采用替换正常模块的方式进行注入的“木马”程序,本发明还提出在所述知识库的自学习过程中计算可信模块的特征值,例如计算可信模块的一段特征代码或行为特征(如循环次数等)等。这样,在下一次检测到该可信模块时,可将检测到的模块的特征值与知识库中的该模块的特征值进行比较,如果比较结果表示这两个模块的特征值不同,则此模块为不可信的模块,否则表示该模块可信。采用这种方法可以防止可信的模块被“木马”程序模块替换。
按照以上方法可识别出访问网络的模块是否可信。根据识别的结果,允许可信模块访问网络(步骤S320),而对于不可信的模块,只要每检测到一个不可信模块,就向用户发出警告(步骤S410)。具体警告方式如下:在应用程序访问网络的时候,防火墙提示用户;同时,将参与网络访问的模块列举出来,对于不可信的模块,使用红色引起用户注意,以防止“木马”程序通过网络向外传播信息。如果用户允许某个不可信模块访问网络,则将该模块信息记入知识库中。这样,采用本发明提出的方法,用户就有可能在“木马”程序实施侵袭前及时发现并阻止其运行。
以上结合附图描述了本发明提出的识别访问网络的模块的方法。本发明所提出的方法可以由软件来实现,也可以根据需要由硬件来实现,或者由软硬件相结合的方式来实现。
下面将结合附图2简要描述一种用于识别访问网络的模块的装置的结构。如图2所示,本发明提出的识别访问网络的模块的装置100包括:拦截单元110,追溯单元120和识别单元130,其中追溯单元120具体包括堆栈回溯单元121、指令地址获取单元123以及搜索单元125。
在图2中,拦截单元110用于拦截一个进程中的一个线程访问网络的动作,并获得所拦截的线程的堆栈信息。在追溯单元120中,堆栈回溯单元121根据每次调用时压入堆栈的当前调用所使用的堆栈区的基地址追溯堆栈。指令获取单元123用于获得每次调用时压入所述堆栈的EIP。继而,搜索单元125将获得的每次调用压入堆栈的EIP与所述进程中所有模块的起始和终止地址进行比较,以搜索出对应的模块。最后,识别单元130根据搜索出的所述模块的特征,判断所述模块是否可信。
图2仅仅示出了本发明提出的识别访问网络的模块的装置的一种可能结构。然而,本领域技术人员应该理解,本发明提出的用于实现本发明方法的具体结构并不限于此,还可以采用多种其他结构来实现。
有益效果
以上结合附图详细描述了本发明。本发明提出的识别访问网络的模块的方法,通过追溯堆栈而搜索到参与网络访问的所有模块,从而能够将访问网络的动作定位到模块级。继而,该方法通过对搜索出的所有模块的可信性的判别,识别出这些访问网络的模块是正常程序还是“木马”程序。因而,本发明提出的方法可以拦截通过模块注入方式隐身的“木马”程序。
另外,由于本发明提出的方法首先是拦截访问网络的动作并获得参与网络访问的所有模块,然后根据参与网络访问的模块特征识别其是否可信,因而可以帮助用户发现新的、未知的“木马”程序。
此外,本发明提出的方法还包括建立具有自学习功能的知识库,从而能够自动更新可信模块的信息,便于用户使用。
再者,本发明提出的方法还计算知识库中可信模块的特征值,包括特征代码或行为特征,因而能够根据模块的特征值识别原可信模块是否被“木马”程序的模块所替代。
因此,采用本发明提出的方法,用户能够及时发现注入正常进程的已知或未知“木马”程序的模块,为用户使用计算机系统增加了一道安全屏障。
本领域技术人员应当理解,对上述本发明所公开的用于识别访问网络的模块的方法和装置,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。

Claims (15)

1、一种用于识别访问网络的模块的方法,包括:
a)拦截一个进程中的一个线程访问网络的动作,以获得所拦截的线程的堆栈信息;
b)根据所述线程的堆栈信息追溯所述堆栈,以根据压入所述堆栈的指令地址,搜索与所述访问网络的动作相关的模块;
c)根据搜索出的所述模块的特征,判断所述模块是否可信。
2、如权利要求1所述的方法,其中所述步骤b还包括:
获得每次函数调用时压入堆栈的所述指令地址;
将所述每次函数调用时压入堆栈的所述指令地址与所述进程中所有模块的起始和终止地址进行比较,若所述指令地址落入所述进程中某个模块的地址范围,则该模块为搜索出的与所述访问网络的动作相关的所述模块;否则表示已经搜索出所有与所述访问网络的动作相关的所述模块。
3、如权利要求1或2中所述的方法,其中所述步骤c包括:
所述模块的特征包括所述模块的标识特征。
4、如权利要求3所述的方法,其中所述模块的标识特征包括:所述模块的公司名称,或所述模块的公司签名。
5、如权利要求3所述的方法,其中所述步骤c包括:
若搜索出的所述模块的标识特征不存在,或者所述标识特征不是公知的标识特征且所述模块的标识特征与所述进程执行的应用程序的标识特征不同,则判断所述模块不可信。
6、如权利要求3所述的方法,其中所述步骤c还包括建立一个包含可信模块及其标识特征的知识库;且
根据该知识库中的可信模块的标识特征和搜索出的所述模块的标识特征,判断搜索出的所述模块是否可信。
7、如权利要求6所述的方法,其中所述知识库是通过自学功能建立的。
8、如权利要求6所述的方法,其中所述知识库还包括可信模块的特征值,并根据搜索出的所述模块的特征值与所述可信模块的特征值,判断搜索出的所述模块是否可信,其中该特征值用于标识可信模块本身的属性。
9、如权利要求8所述的方法,其中在用户许可所述不可信模块访问网络后,将所述不可信模块特征作为可信模块特征记录在知识库中。
10、一种用于识别访问网络的模块的装置,包括:
拦截单元,用于拦截一个进程中的一个线程访问网络的动作,并获得所拦截的线程的堆栈信息;
追溯单元,用于根据所述拦截单元获得的所述线程的堆栈信息追溯所述堆栈,以根据压入所述堆栈的指令地址,搜索与所述访问网络的动作相关的模块;
识别单元,用于根据搜索出的所述模块的特征,判断所述模块是否可信。
11、如权利要求10所述的装置,其中所述追溯单元包括:
堆栈回溯单元,用于基于每次调用压入堆栈的当前调用所使用的堆栈区的基地址追溯所述堆栈;
指令地址获取单元,用于基于所述堆栈回溯单元获得的堆栈区的基地址,获得每次调用时压入所述堆栈的所述指令地址。
12、如权利要求11所述的装置,其中所述追溯单元还包括:
搜索单元,用于将每次函数调用时压入堆栈的所述指令地址与所述进程中所有模块的起始和终止地址进行比较,若所述指令地址落入所述进程中某个模块的地址范围,则该模块为搜索出的与所述访问网络的动作相关的所述模块。
13、如权利要求10-12中任一所述的装置,其中所述追溯单元还包括一个包含可信模块及其标识特征的知识库;且
所述识别单元,根据该知识库中的可信模块的标识特征和搜索出的所述模块的标识特征,判断搜索出的所述模块是否可信。
14、如权利要求13所述的装置,其中所述知识库还包括可信模块的特征值,其中该特征值用于标识可信模块本身的属性,且
所述识别单元根据搜索出的所述模块的特征值与所述可信模块的特征值,判断搜索出的所述模块是否可信。
15、一种计算机系统,包括如权利要求10-14中任一所述的用于识别访问网络的模块的装置。
CNB2006101059775A 2005-12-09 2006-07-21 识别访问网络的模块的方法及装置 Active CN100521687C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101059775A CN100521687C (zh) 2005-12-09 2006-07-21 识别访问网络的模块的方法及装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN200510129499.7 2005-12-09
CN200510129499 2005-12-09
CNB2006101059775A CN100521687C (zh) 2005-12-09 2006-07-21 识别访问网络的模块的方法及装置

Publications (2)

Publication Number Publication Date
CN1980237A CN1980237A (zh) 2007-06-13
CN100521687C true CN100521687C (zh) 2009-07-29

Family

ID=38131235

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101059775A Active CN100521687C (zh) 2005-12-09 2006-07-21 识别访问网络的模块的方法及装置

Country Status (1)

Country Link
CN (1) CN100521687C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009113924A1 (en) 2008-03-12 2009-09-17 Telefonaktiebolaget Lm Ericsson (Publ) Device and method for adaptation of target rate of video signals
CN102148844B (zh) * 2010-02-09 2014-08-27 深圳市金蝶中间件有限公司 定位内存泄漏的方法、服务器端、客户端和系统
CN103455757B (zh) * 2012-05-31 2016-08-17 北京金山安全软件有限公司 一种识别病毒的方法及装置
CN108345492A (zh) 2014-04-08 2018-07-31 华为技术有限公司 一种虚拟化环境中的数据通信的方法、装置及处理器
CN107122663B (zh) * 2017-04-28 2021-04-02 北京梆梆安全科技有限公司 一种注入攻击检测方法及装置
CN116595527B (zh) * 2023-07-18 2023-10-20 中孚安全技术有限公司 一种内存木马的检测方法、系统、装置及可读存储介质

Also Published As

Publication number Publication date
CN1980237A (zh) 2007-06-13

Similar Documents

Publication Publication Date Title
EP2653994B1 (en) Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
CN100521687C (zh) 识别访问网络的模块的方法及装置
KR101700731B1 (ko) 애플리케이션에 접근하기 위한 방법 및 장치
US8561192B2 (en) Method and apparatus for automatically protecting a computer against a harmful program
US20120324575A1 (en) System, Method, Program, and Recording Medium for Detecting and Blocking Unwanted Programs in Real Time Based on Process Behavior Analysis and Recording Medium for Storing Program
US8397292B2 (en) Method and device for online secure logging-on
CN111651757A (zh) 攻击行为的监测方法、装置、设备及存储介质
US10185825B2 (en) System and method for generating rules for detecting modified or corrupted external devices
RU2634173C1 (ru) Система и способ обнаружения приложения удалённого администрирования
CN102932329A (zh) 一种对程序的行为进行拦截的方法、装置和客户端设备
US20150101055A1 (en) Method, system and terminal device for scanning virus
CN113055399A (zh) 注入攻击的攻击成功检测方法、系统及相关装置
CN111352761B (zh) 一种车辆检测方法、装置、存储介质和电子设备
CN111241546B (zh) 一种恶意软件行为检测方法和装置
CN104426836A (zh) 一种入侵检测方法及装置
WO2021212739A1 (zh) 网络攻击的防御方法、装置、设备、系统和存储介质
GB2574209A (en) Threat control
CN110417615B (zh) 校验开关控制方法、装置、设备及计算机可读存储介质
JP2003006027A (ja) アクセス制御ポリシーの自動設定方法およびそのシステム
KR101410289B1 (ko) 악성코드의 원격지 접속 서버 추적 시스템 및 방법
CN112565162B (zh) 一种检测账户窃取行为的方法及装置
CN108650257B (zh) 基于网站内容的安全检测设置方法、装置及存储介质
CN106022111B (zh) 隐藏弹出式窗口的处理方法、装置及电子设备
CN116055222B (zh) 一种防止攻击文件绕过waf检测的方法与装置
CN103716284A (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING RISING INTERNATIONAL TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: BEIJING RISING INTERNATIONAL SOFTWARE CO., LTD.

Effective date: 20100413

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100080 NO.1302, ZHONGKE BUILDING, NO.22, ZHONGGUANCUN AVENUE, BEIJING CITY TO: 100190 ROOM 1301, ZHONGKE BUILDING, NO.22, ZHONGGUANCUN AVENUE, HAIDIAN DISTRICT, BEIJING CITY

TR01 Transfer of patent right

Effective date of registration: 20100413

Address after: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee after: Beijing Rising Information Technology Co., Ltd.

Address before: 100080, No. 22, Zhongguancun Avenue, 1302, Beijing

Patentee before: Beijing Rising International Software Co., Ltd.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee after: Beijing Rising Information Technology Co., Ltd

Address before: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee before: Beijing Rising Information Technology Co., Ltd.

CP01 Change in the name or title of a patent holder

Address after: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee after: Beijing net an Technology Limited by Share Ltd

Address before: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee before: Beijing Rising Information Technology Co., Ltd

CP01 Change in the name or title of a patent holder