CN101414340B - 一种防止远程线程启动的方法 - Google Patents

一种防止远程线程启动的方法 Download PDF

Info

Publication number
CN101414340B
CN101414340B CN200710162450.0A CN200710162450A CN101414340B CN 101414340 B CN101414340 B CN 101414340B CN 200710162450 A CN200710162450 A CN 200710162450A CN 101414340 B CN101414340 B CN 101414340B
Authority
CN
China
Prior art keywords
thread
remote
create
creating
function
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
CN200710162450.0A
Other languages
English (en)
Other versions
CN101414340A (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 Information Technology 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 Information Technology Co Ltd filed Critical Beijing Rising Information Technology Co Ltd
Priority to CN200710162450.0A priority Critical patent/CN101414340B/zh
Publication of CN101414340A publication Critical patent/CN101414340A/zh
Application granted granted Critical
Publication of CN101414340B publication Critical patent/CN101414340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种防止远程线程启动的方法,包括以下步骤:监视用于创建线程的请求;当监视到用于创建线程的请求时,判断要创建的线程是本地线程还是远程线程;如果要创建的线程是远程线程,则阻止创建该线程。通过本发明的方法,克服了常规技术中对于线程监视个数的限制,以及在线程创建后再通过修改代码推出线程,而不是直接阻止创建线程的弊端。

Description

一种防止远程线程启动的方法
技术领域
本发明涉及软件安全,尤其涉及防止远程线程启动的方法。
技术背景
计算机及网络技术的迅猛发展极大地促进了信息交互。但是,与此同时,计算机病毒也伴随技术的发展而不断地演化更新,时至今日,计算机病毒已经严重威胁到了人们对计算机的正常使用。由此,如何防范病毒侵袭已然成为人们关注的一个焦点。
随着互联网的发展,病毒技术也呈现出多样化。当前的病毒技术利用了诸如挂钩、远程线程等技术,例如,通过远程线程进行进程保护、监视文件等功能。这些技术的应用为反病毒工作者带来了一定的困难。
针对病毒利用远程线程的问题,现有的一些安全软件通过WindowsNT提供的PsSetCreateThreadNotifyRoutine线程创建通知例程来实现对线程的监控,通过该通知例程来实现监控有以下几点不足:(1)可注册的通知例程数量最多为8个,因此这种方法监控线程的能力有限;(2)当得到该通知例程的通知时,线程已经创建成功,所以这种方法不能拒绝创建线程,只能通过修改线程代码来退出该线程。
因此,需要一种不受线程通知例程数量限制,并且能有效地监控并阻止恶意程序创建远程线程的技术。
发明内容
本发明提供了一种防止远程线程启动的方法,该方法包括:监视用于创建线程的请求;当监视到用于创建线程的请求时,判断要创建的线程是本地线程还是远程线程;如果要创建的线程是远程线程,则阻止创建该线程。
本发明还提供了一种防止远程线程启动的方法,该方法包括:监视用于创建远程线程的请求;当监视到用于创建远程线程的请求时,阻止创建该远程线程。
利用上述技术方案,本发明不需要WindowsNT提供的PsSetCreateThreadNotifyRoutine线程创建通知例程来实现对线程的监控,因此克服了常规技术中注册通知例程数量有限的缺点,进一步的,本发明通过挂钩技术监视对线程创建的请求,在远程线程创建之前就能够发现它,从而阻止远程线程的创建,与常规方法中得到远程线程创建通知然后退出该线程相比,能够更有效地防止恶意软件的动作。
附图说明
通过以下结合附图的详细描述,将更清楚地看到本发明的各种特征和优点。
图1示出了防止远程线程启动的方法的总体流程图;
图2示出了防止远程线程启动的方法的一个具体实施例的流程图;
图3示出了防止远程线程启动的方法的另一个具体实施例的流程图。
具体实施方式
一般而言,创建远程线程是通过调用用于创建远程线程或线程的函数来实现的,因此,通过监视恶意软件调用这种函数的动作,并在该函数创建远程线程前将其阻止,就能够防止恶意软件启动远程线程。
图1示出了防止远程线程启动的方法的总体流程图。在步骤S1中,通过挂钩来监视用于创建线程或远程线程的请求。在步骤S2中,当用于创建线程或远程线程的函数被调用时,首先跳转到该钩子处理例程中,通过执行该钩子处理例程判断是否监视到创建远程线程的请求。在步骤S2中监视到创建远程线程的请求后,在步骤S3中阻止创建该远程线程,从而使得远程线程无法启动。
下面结合图2的流程图描述用于防止远程线程启动的方法的一个具体实施例。例如,该过程可以通过下面的伪代码表示:
boolhook_CreateRemoteThread(target_process,...)
{
if(ask_user()==deny_remote_thread)
returnfalse;
returnreal_CreateRemoteThread(target_process,...);
}
在步骤S21中,通过挂钩来监视远程线程创建请求。在WindowsNt环境下,恶意软件可以通过例如CreateRemoteThread函数来创建远程线程。本发明通过挂钩该函数来监视对该函数的调用。当CreateRemoteThread函数被调用时,在步骤S22,该钩子处理例程能够监视到该函数被调用的动作,并在调用之前跳转到钩子处理例程进行处理。此时,钩子处理函数监视到某个软件正在试图创建远程线程,作为可选但非必要的步骤,在步骤S23询问用户是否阻止该远程线程的创建。如果用户命令拒绝创建该远程线程,则在步骤S24返回表示创建失败的假值,阻止对CreateRemoteThread函数的调用,从而阻止创建远程线程;如果用户命令允许创建该远程线程,则在步骤S25允许创建该远程线程,例如通过调用真实的CreateRemoteThread函数创建远程线程。这里,虽然以CreateRemoteThread函数为例描述了本发明的优选实施例,但是本发明不限于对该函数的监视,任何现有的或将来可能出现的用于创建远程线程的函数的监视都在本发明的实质和范围之内。
实际操作中,恶意软件有可能绕开上述用于创建远程线程的CreateRemoteThread函数,而直接通过更低层的线程创建函数NtCreateThread来实现远程线程的创建。实际上,用于创建远程线程的CreateRemoteThread函数本身也是通过线程创建函数NtCreateThread来实现远程线程创建的。因此,优选地,还可以通过拦截用于创建线程的请求来实现对远程线程创建的监控,以及阻止创建远程线程。
以下结合图3的流程图详细描述通过监视用于创建线程的请求来阻止远程线程创建的方法的一个具体实施例。例如,该过程可以用以下伪代码表示:
boolhook_NtCreateThread(target_process,...)
{
if(get_current_process()!=target_process){
/*thisisaremotethread*/
if(ask_user()==denyremote_thread)
returnfalse;
}
returnreal_NtCreateThread(target_process,...);
}
在步骤S31中,通过挂钩来监视线程创建请求。在WindowsNt环境下,恶意软件可以通过例如NtCreateThread函数来创建线程。本实施例通过挂钩该函数来监视对该函数的调用。当NtCreateThread函数被调用时,在步骤S32,该钩子处理例程能够监视到该函数被调用的动作,并在调用之前跳转到钩子处理例程,执行钩子处理例程中的步骤。此时,钩子处理函数监视到某个软件正在试图通过NtCreateThread函数创建线程,因此在拦截到该线程创建请求后,需要判断该线程是否为一个远程线程。通过研究NtCreateThread函数的功能可知,该函数可以指定创建线程的目标进程,例如指定恶意程序的进程来创建远程线程。同时,创建线程的代码一定运行于当前发起者进程中,也就是运行在当前发起者进程空间中,所以,如果所指定的创建目标线程的进程与当前发起者进程不是同一个进程,那么这个线程就是一个远程线程。因此,基于上述原理,在步骤S33中,判断要创建的线程是本地线程还是远程线程,具体而言,判断当前发起者进程与目标进程是否一致。如果一致,说明请求创建的是本地线程,则在步骤S36中允许创建该线程,例如通过调用真实的NtCreateThread函数来创建该线程。如果不一致,则说明请求创建的是一个远程线程,作为可选但非必要的步骤,在步骤S34中,询问用户是否阻止该线程的创建。如果用户命令拒绝创建该线程,则在步骤S35返回表示创建失败的假值,从而阻止对NtCreateThread函数的调用,阻止创建远程线程。如果用户命令允许创建该线程,则在步骤S36允许创建该线程,例如通过调用真实的NtCreateThread函数来创建该线程。这里,虽然以NtCreateThread函数为例描述了本发明的优选实施例,但是本发明不限于对该函数的监视,任何现有的或将来可能出现的用于创建线程的函数的监视都在本发明的实质和范围之内。
上面详细描述了用于阻止远程线程启动的方法,通过使用本发明的方法,对于远程线程创建的监视不受线程数量限制,并且在创建线程之前就阻止线程的创建,在实现上更加简单有效。本发明的方法可以应用于需要实现远程线程监控的各类程序。
本领域技术人员应该理解,上述具体实施例的描述只是用于说明的目的,而不能将本发明的保护范围仅仅限制于具体描述的实施例。例如,本发明是在WindowsNT系统的上下文中,并具体以CreateRemoteThread和NtCreateThread函数为例进行阐述的,而例如在其它已有版本或未来版本的Windows系统、Linux系统等中,也存在类似的线程或远程线程创建函数,本领域技术人员在本发明原理的启示下,可以对上述实施例作出各种修改,这些修改都包含在权利要求所限定的本发明的范围之内。

Claims (4)

1.一种防止远程线程启动的方法,包括以下步骤:
通过创建与用于创建线程的函数相关联的钩子来监视用于创建线程的请求;
当监视到用于创建线程的请求时,通过判断所述函数所指定的用于创建所述要创建的线程的目标进程与当前发起者进程是否一致,判断要创建的线程是本地线程还是远程线程;
如果要创建的线程是远程线程,则阻止创建该线程。
2.如权利要求1所述的方法,其中,如果用于创建所述要创建的线程的进程与当前发起者进程不一致,则判断所述要创建的线程是远程线程。
3.如权利要求2所述的方法,其中,所述函数包括用于创建线程的NtCreateThread函数。
4.如权利要求1所述的方法,还包括:
当判断所述要创建的线程是远程线程时,在阻止创建该线程之前,询问用户是否阻止该线程的创建,并根据用户的指示阻止或允许该线程的创建。
CN200710162450.0A 2007-10-15 2007-10-15 一种防止远程线程启动的方法 Active CN101414340B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200710162450.0A CN101414340B (zh) 2007-10-15 2007-10-15 一种防止远程线程启动的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200710162450.0A CN101414340B (zh) 2007-10-15 2007-10-15 一种防止远程线程启动的方法

Publications (2)

Publication Number Publication Date
CN101414340A CN101414340A (zh) 2009-04-22
CN101414340B true CN101414340B (zh) 2015-12-02

Family

ID=40594872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710162450.0A Active CN101414340B (zh) 2007-10-15 2007-10-15 一种防止远程线程启动的方法

Country Status (1)

Country Link
CN (1) CN101414340B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103632087B (zh) * 2012-08-21 2017-10-13 腾讯科技(深圳)有限公司 保护进程的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1298502A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 远程进程的的挂起和继续的方法和设备
CN1519712A (zh) * 2003-01-22 2004-08-11 北京科泰世纪科技有限公司 基于工作例程/主导例程与代理构件在本地/远程运行线程/进程的方法
CN1625121A (zh) * 2003-12-05 2005-06-08 中国科学技术大学 一种分层协同的网络病毒和恶意代码识别方法
CN1886728A (zh) * 2003-09-04 2006-12-27 科学园株式会社 非法代码执行的防止方法、非法代码执行的防止用程序以及非法代码执行的防止用程序的记录媒体
CN1983296A (zh) * 2005-12-12 2007-06-20 北京瑞星国际软件有限公司 用于防止非法程序窃取用户信息的方法及装置
CN101005497A (zh) * 2006-11-27 2007-07-25 科博技术有限公司 一种阻止恶意代码入侵的系统及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1298502A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 远程进程的的挂起和继续的方法和设备
CN1519712A (zh) * 2003-01-22 2004-08-11 北京科泰世纪科技有限公司 基于工作例程/主导例程与代理构件在本地/远程运行线程/进程的方法
CN1886728A (zh) * 2003-09-04 2006-12-27 科学园株式会社 非法代码执行的防止方法、非法代码执行的防止用程序以及非法代码执行的防止用程序的记录媒体
CN1625121A (zh) * 2003-12-05 2005-06-08 中国科学技术大学 一种分层协同的网络病毒和恶意代码识别方法
CN1983296A (zh) * 2005-12-12 2007-06-20 北京瑞星国际软件有限公司 用于防止非法程序窃取用户信息的方法及装置
CN101005497A (zh) * 2006-11-27 2007-07-25 科博技术有限公司 一种阻止恶意代码入侵的系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李元良等.远程线程注入技术的实现.《矿业研究与开发》.2006,(第03期), *

Also Published As

Publication number Publication date
CN101414340A (zh) 2009-04-22

Similar Documents

Publication Publication Date Title
US10565378B1 (en) Exploit of privilege detection framework
CN101350052B (zh) 发现计算机程序的恶意行为的方法和装置
US7673137B2 (en) System and method for the managed security control of processes on a computer system
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
JP2015522874A (ja) カーネルレベル・セキュリティ・エージェント
KR101086203B1 (ko) 악성 프로세스의 행위를 판단하여 사전에 차단하는 악성프로세스 사전차단 시스템 및 방법
CN104850779A (zh) 应用程序安全安装方法及其装置
CN110912876A (zh) 面向信息系统的拟态防御系统、方法及介质
CN109074450A (zh) 威胁防御技术
KR20110084775A (ko) 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법
CN111368293B (zh) 进程管理方法、装置、系统与计算机可读存储介质
KR100733387B1 (ko) 이상 행동 기반 유해 프로그램 검출 시스템 및 그 방법
CN104270467A (zh) 一种用于混合云的虚拟机管控方法
Hammad et al. Determination and enforcement of least-privilege architecture in android
KR101974989B1 (ko) 위험 파일에 대응하는 행위 정보를 결정하는 방법 및 장치
KR101097590B1 (ko) 동적 링크 라이브러리 인젝션 방어 방법
CN101414340B (zh) 一种防止远程线程启动的方法
CN109791588A (zh) 缓解与图形用户界面元素相关联的恶意动作
CN115906184B (zh) 一种控制进程访问文件的方法、装置、介质及电子设备
CN115086081B (zh) 一种蜜罐防逃逸方法及系统
CN113157543B (zh) 一种可信度量方法及装置、服务器、计算机可读存储介质
Eresheim et al. On the impact of kernel code vulnerabilities in iot devices
JP2019220132A (ja) プログラムの危険な挙動のパターンをユーザのコンピュータシステムに適応させるシステムおよび方法
US7120763B1 (en) Method, array and set of several arrays for protecting several programs and/or files from unauthorized access by a process
US11868464B2 (en) Launching applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1127421

Country of ref document: HK

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 ROOM 1305, ZHONGKE BUILDING, NO.22, ZHONGGUANCUN AVENUE, BEIJING CITY TO: 100190 ROOM 1301, ZHONGKE BUILDING, NO.22, ZHONGGUANCUN AVENUE, HAIDIAN DISTRICT, BEIJING CITY

TA01 Transfer of patent application right

Effective date of registration: 20100413

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

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

Address before: 100080, room 1305, Zhongke building, 22 Zhongguancun street, Beijing

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

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
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.

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1127421

Country of ref document: HK

CP01 Change in the name or title of a patent holder
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