用于防止非法程序窃取用户信息的方法及装置制造方法及图纸

技术编号:2841322 阅读:273 留言:0更新日期:2012-04-11 18:40
本发明专利技术提出一种用于防止非法程序窃取用户信息(如用户帐户和密码)的方法,该方法包括:拦截一个可能被非法程序利用以窃取用户信息的系统调用;根据该系统调用的参数和/或调用所述系统调用的进程数据,判断运行所述系统调用是否安全;若判断不安全,则执行相应的处理使得所述系统调用失效。需要拦截的所述系统调用至少包括用于向一个进程中加载钩子(Hook)动态链接库(dll)的系统调用,或者用于打开一个目标进程的系统调用中的一个。

【技术实现步骤摘要】

本专利技术涉及一种用于防止非法程序窃取用户信息的方法及装置,尤其涉及一种用于防止用户向计算机系统输入的帐户或密码等信息被窃取的方法及装置。
技术介绍
随着信息产业的发展,安全问题也日益突出。各种形形色色的“网络窃贼”不仅让广大电脑用户防不胜防,同时也极大地制约着包含电子商务在内的互联网相关产业的发展。因而,个人信息的客户端安全问题,已经成为包括网上身份认证、网上支付在内的,整个电子商务产业的发展瓶颈,而网络游戏、即时通信等领域,也面临着同样的问题。目前,常见的一种密码盗取方法是通过嵌入木马程序来截获用户的帐户和密码。针对这种情况,现有的密码防盗、隐私保护产品需要用户事先将要保护的对象,如姓名、银行卡号、密码等信息录入到软件的数据库中。然后,此类产品会对用户计算机向外发送的数据包进行过滤。如果木马以明文形式(即没有加密)向外发送含有用户事先录入信息的数据包,那么就会被隐私保护过滤器阻拦。但是,此种隐式保护存在严重的缺陷。首先,目前绝大多数的盗号木马、间谍软件等都会将盗取的数据进行加密、变形再向外发送。这些经过处理的信息在经过过滤器时是无法识别的乱码,隐私保护程序不会进行拦截。其次,这些信息由用户事先录入,直接储存在用户的计算机中。如果黑客破解了此类隐私保护程序的数据库,他们就可以直接从中提取所需的信息。由此可见,现有技术仅仅是在系统的应用层采取各种手段来防止用户个人信息被盗,并不能从根本上解决帐号被盗、隐私泄漏问题。为此,需要提出一种新的用于防止非法程序窃取用户信息的方法,使用户能够彻底摆脱木马的侵袭。
技术实现思路
本专利技术的目的在于提供一种用于防止非法程序窃取用户秘密信息的方法,采用该方法可以深入到操作系统的内核,在木马程序试图获得用户个人信息之前将其拦截,从而从根本上解决隐私泄漏问题。为了实现上述目的,本专利技术提出的用于防止非法程序窃取用户信息的方法,包括拦截一个可能被非法程序利用以窃取用户信息的系统调用;根据该系统调用的参数和/或调用所述系统调用的进程属性,判断运行所述系统调用是否安全;若判断不安全,则执行相应的处理使得所述系统调用失效。本专利技术还提出了用于实现上述方法的装置,包括该装置的计算机系统,以及包括实现上述方法的计算机代码的计算机程序产品。附图说明图1是根据本专利技术一个实施例的阻止钩子动态库加载的流程图。图2是根据本专利技术一个实施例的阻止木马程序通过调用系统的发送消息函数来窃取信息的具体流程图。图3是根据本专利技术一个实施例的阻止木马程序通过跨进程读写操作来窃取信息的具体流程图;图4是根据本专利技术一个实施例的用于防止非法程序窃取用户信息的装置的结构框图。具体实施例方式下面结合附图详细描述本专利技术。为了能够有效地防止木马程序窃取用户的个人信息,首先要分析木马程序行窃通常采用的几种手段。1、钩子(Hook)注入木马程序可以通过钩子注入方式将自身的模块加载到正常进程中。在这种情况下,由于木马程序的模块运行的上下文是当前进程空间,因而只要当前进程是可信的,木马程序的任何动作也都是可信的。这样,木马程序就可以在可信的正常进程庇护下窃取用户的信息。具体而言,木马程序通常安装一个钩子来监测系统或进程的各种事件消息。这个钩子通常为全局钩子,可选地,该钩子也可以是针对某一个线程的钩子,但一般是全局钩子。当钩子所监测的事件发生时,系统首先判断当前进程是否装载了包含这个钩子的处理函数的模块。若有,则调用其中的处理函数,若没有,则调用KeUserModeCallback(内核用户模式回调)这个应用程序接口(API)函数加载该模块,从而执行相应的处理,如截获消息(例如,通过键盘输入的密码)等。木马程序安装的钩子的类型可以是键盘、鼠标、消息、窗口等,但一般是键盘、鼠标和消息钩子。为了能够监视系统中的所有线程的事件消息,木马程序通常安装全局钩子。由此,钩子的回调处理函数必须放在一个有共享节的模块中,一般为独立的动态链接库(dll)。(此处,将包含钩子的回调处理函数的dll称为钩子dll。)因此,采用钩子注入方式的木马程序的一个共性是在窃取用户信息的过程中系统都需要调用KeUserModeCallback这个API函数来加载相应的钩子dll。2、调用SendMessage API函数木马程序还可通过调用SendMessage(hwnd,WM_GETTEXT,..,..),把消息WM_GETTEXT(获取窗口内的文本信息)发送给窗口句柄为hwnd的目标窗口的进程,以获得该进程中用户在该目标窗口中输入的信息。其中,该SendMessage函数的第二个参数表示要发送的消息。具体而言,木马程序可以通过FindWindows(发现窗口)函数、鼠标钩子等方法得到当前输入焦点的窗口的hwnd,进而可以得到运行该窗口的进程标识(PID)。然后,通过判断路径等办法可以确认该目标进程是否为想要侵入的进程。若是想要侵入的进程,则对于普通编辑(edit)窗口,发WM_GETTEXT消息就能得到窗口中输入的内容;而对于具有PASSWORD(口令)属性的edit窗口,先用SendMessage函数发送EM_SETPASSWORDCHAR,修改其显示属性,然后发SendMessage(hwnd,WM_GETTEXT,...)即可得到该窗口的内容。因此,针对调用SendMessage的木马程序,拦截WM_GETTEXT消息是必须的和充分的。3、读进程空间木马程序还可以通过反编译事先知道或者能计算得到帐户、密码的存贮位置。然后在目标进程运行后通过调用读进程空间ReadProcessMemory()来得到帐户密码的内容。4、写进程空间木马程序还可通过启动远程线程来实现。此时首先需要调用写进程空间函数——WriteProcessMemory()来对目标进程写入部分代码,然后再调用创建远程线程函数——CreateRemoteThread()。若目标进程是可信的,新启动的这个线程的任何动作都是可信的,同时,这个线程可以任意访问、修改目标进程内的任何内容,包括数据、指令等。木马程序还可以通过WriteProcessMemory修改指令、数据,改变已有指令流程,或者加载、运行窃取密码的代码等等。这里,无论是读进程空间,还是写进程空间,木马程序都需要首先调用打开进程函数——OpenProcess打开目标进程。由此,针对这种木马程序,拦截OpenProcess是可靠的。以上罗列了四种木马程序常用的实现手段。由以上描述不难看出,四种方法的实现均要调用系统的API函数(或称为系统调用),因而可以针对各个类型的木马程序的特点,通过加载驱动,在木马程序起作用之前分别拦截其必然调用的系统调用,进而执行本专利技术提出的处理函数,以便判别执行这个系统调用是否安全合法,且如果不安全则阻断相应的操作,从而可防范木马的侵袭。基于上述思想,本专利技术提出在系统启动后运行一个用于防止非法程序窃取用户信息的保护程序。这个保护程序可以阻止以上四种类型木马程序中的任一窃取信息。下面将结合附图1-3详细描述本专利技术提出的保护程序针对各种类型木马程序的具体解决方案。1、阻止钩子注入根据以上对钩子注入式木马程序特点的描述,本专利技术提出在系统加载钩子dll时对其进行拦截。然后,判断拦截的dll是否可信,如果不可信,则拒绝加本文档来自技高网...

【技术保护点】
一种用于防止非法程序窃取用户信息的方法,包括:a)拦截一个可能被非法程序利用以窃取用户信息的系统调用;b)根据该系统调用的参数和/或调用所述系统调用的进程属性,判断运行所述系统调用是否安全;c)若判断不安全,则执行相应的处理使得所述系统调用失效。

【技术特征摘要】
1.一种用于防止非法程序窃取用户信息的方法,包括a)拦截一个可能被非法程序利用以窃取用户信息的系统调用;b)根据该系统调用的参数和/或调用所述系统调用的进程属性,判断运行所述系统调用是否安全;c)若判断不安全,则执行相应的处理使得所述系统调用失效。2.如权利要求1所述的方法,其中需要拦截的所述系统调用用于向一个进程中加载钩子(Hook)动态链接库(dll)。3.如权利要求2所述的方法,其中所述步骤b)包括b11)根据所述系统调用的参数,获得所述将要加载的钩子dll的相关信息;b12)将获得的所述钩子dll的相关信息与一个信任库中可信dll的相关信息进行比较,以判断所述钩子dll是否可信,从而判断执行所述系统调用是否安全。4.如权利要求3所述的方法,其中,所述钩子dll和所述可信dll的相关信息为其路径信息,且所述步骤c)包括修改所述系统调用的参数,使得所述钩子dll的路径信息为空。5.如权利要求2所述的方法,其中所述步骤a)包括通过修改操作系统的驱动文件的引入表中与所述系统调用相关的信息,拦截所述系统调用。6.如权利要求2所述的方法,其中所述系统调用为内核用户模式回调函数,且所述步骤a)还包括根据所述内核用户模式回调函数的参数中用于标识其调用功能的标识符,判断所述系统调用是否为所要拦截的系统调用。7.如权利要求2所述的方法,其中当所述当前进程为不受信息保护的进程时,所述步骤b)判断执行所述系统调用是安全的。8.如权利要求1所述的方法,其中需要拦截的所述系统调用用于从目标进程的窗口中获得文本消息。9.如权利要求8所述的方法,其中所述步骤c)包括设置所述系统调用中的参数,使得所述向目标进程发送的消息为空。10.如权利要求8所述的方法,其中所述步骤b)包括判断所述当前进程是否可信;如果所述当前进程可信,则判断执行所述系统调用是安全的。11.如利要求10所述的方法,其中判断所述当前进程是否可信的步骤包括根据所述当前进程的标识,获得所述当前进程的相关信息;将获得的所述当前进程的相关信息与一个信任库中可信进程的相关信息进行比较,以判断所述当前进程是否可信。12.如权利要求11所述的方法,其中所述当前进程和所述可信进程的相关信息为进程的路径信息。13.如权利要求10所述的方法,其中所述步骤b)还包括b21)当所述当前进程不可信时,根据所述系统调用的参数,获得目标进程的标识;b22)将所述当前进程的标识与获得的所述目标进程的标识进行比较,如果二者不同,则判断执行所述系统调用是不安全的。14.如权利要求13所述的方法,其中当所...

【专利技术属性】
技术研发人员:马劲松
申请(专利权)人:北京瑞星信息技术有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1