CN107479874A - 一种基于Windows平台的DLL注入方法及系统 - Google Patents
一种基于Windows平台的DLL注入方法及系统 Download PDFInfo
- Publication number
- CN107479874A CN107479874A CN201710559514.4A CN201710559514A CN107479874A CN 107479874 A CN107479874 A CN 107479874A CN 201710559514 A CN201710559514 A CN 201710559514A CN 107479874 A CN107479874 A CN 107479874A
- Authority
- CN
- China
- Prior art keywords
- dll
- safety detection
- module
- functions
- current process
- 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/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种基于Windows平台的DLL注入方法及系统,该方法包括以下步骤:)进程启动,判断当前进程是否需要注入安全检测DLL,如果需要,则获取需要注入安全检测DLL的模块名;判断模块名是否为“ntdll.dll”,如果是,将当前进程的注入信息插入工作队列;安全检测DLL对当前进程进行安全检测;如果经检测不安全,则结束,如果安全,则允许启动当前进程。通过本发明的方案,可以注入更多的进程,对杀毒软件不误杀,更稳定,更高效。
Description
技术领域
本发明涉及数据安全领域,具体涉及一种基于Windows平台的安全检测DLL注入方法及系统。
背景技术
现阶WINDOWS安全检测DLL注入方式主要分三大类:Windows消息钩子、API HOOK和COM HOOK。
1)Windows消息钩子(操作系统本身提供)
Windows消息钩子分为全局消息钩子和局部消息钩子(即线程消息钩子),如:控制键盘的消息钩子。
2)API HOOK技术是一种用于改变API执行结果的技术,Microsoft自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等。API HOOK技术并不是计算机病毒专有技术,但是计算机病毒经常使用这个技术来达到隐藏自己的目的。
按照拦截方式不同又可分为以下几类:
InLine HOOK
IAT HOOK
EAT HOOK
3)针对COM接口虚函数表的HOOK技术,只适用COM接口。
现有技术中常用的几种HOOK技术与本发明技术方案最为接近。现阶段API HOOK(Inline HOOK最常见)流程如图1所示。
原函数内联后,跳转到处理函数,在处理函数处理完之后,再跳转回原函数跳转之前的位置。该技术在遇到加壳程序ShellCode和服务程序等情况时会发生注入失败的情况。
WINDOWS系统在进程创建的过程中会加载导入PE文件导入表的一系列模块依赖,而后会调用ZwTestAlert函数,本发明正是利用了这个过程,将ZwTestAlert函数ShellCode,使得无论是加壳程序还是服务程序,只要进程依赖“ntdll.dll”文件就可以实现完美注入。
发明内容
为解决上述技术问题,本发明提供了一种基于Windows平台的安全检测DLL注入方法,该方法包括以下步骤:
(1)进程启动,判断当前进程是否需要注入安全检测DLL,如果需要,则转入步骤(2),否则转入步骤(8);
(2)获取需要注入安全检测DLL的模块名;
(3)判断模块名是否为“ntdll.dll”,如果否,则转入步骤(8);
(4)如果是,将当前进程的注入信息插入工作队列;
(5)安全检测DLL对当前进程进行安全检测;
(6)如果经检测不安全,转入步骤(8);
(7)如果安全,则允许启动当前进程;
(8)结束。
根据本发明的实施例,优选的,所述工作队列的工作流程如下:
(4.1)获取进程空间中关键函数地址;
(4.2)根据关键函数地址,生成注入用的加壳代码ShellCode;
(4.3)修改关键函数中相关函数的前五个字节为跳转到加壳代码ShellCode指令。
根据本发明的实施例,优选的,所述关键函数包括Windows系统函数:
ZwProtectVirtualMemory、LdrLoadDll、ZwTestAlert。
根据本发明的实施例,优选的,修改关键函数ZwTestAlert的前五个字节为跳转到加壳代码ShellCode的指令。
根据本发明的实施例,优选的,所述加壳代码ShellCode实现如下功能:
(a)利用Windows系统函数NtProtectVirtualMemory保护Windows系统函数ZwTestAlert所在内存;
(b)还原Windows系统函数ZwTestAlert前五个字节;
(c)调用Windows系统函数LdrLoadDll加载要注入的安全检测DLL。
为解决上述技术问题,本发明提供了一种基于Windows平台的安全检测DLL注入系统,该系统包括:
注入判断模块,判断当前进程是否需要注入安全检测DLL;
模块名获取模块,获取需要注入安全检测DLL的模块名;
模块名判断模块,判断需要注入安全检测DLL的模块名是否为“ntdll.dll”;
确定注入模块,在确定注入安全检测DLL的模块名为“ntdll.dll”时,将当前进程的注入信息插入工作队列;
安全检测模块,安全检测DLL对当前进程进行安全检测;
进程启动模块,如果当前进程通过了安全检测,启动当前进程。
根据本发明的实施例,优选的,所述工作队列实现如下功能:
(1)获取进程空间中关键函数地址;
(2)根据关键函数地址,生成注入用的加壳代码ShellCode;
(3)修改关键函数中相关函数的前五个字节为跳转到加壳代码ShellCode指令。
根据本发明的实施例,优选的,所述关键函数包括Windows系统函数:
ZwProtectVirtualMemory、LdrLoadDll、ZwTestAlert,修改关键函数ZwTestAlert的前五个字节为跳转到加壳代码ShellCode的指令。
根据本发明的实施例,优选的,所述加壳代码ShellCode包括如下模块:
内存保护子模块,利用Windows系统函数NtProtectVirtualMemory保护Windows系统函数ZwTestAlert所在内存;
还原子模块,还原Windows系统函数ZwTestAlert前五个字节;
调用子模块,调用Windows系统函数LdrLoadDll加载要注入的安全检测DLL。
为解决上述技术问题,本发明提供了一种计算机存储介质,其包括计算机程序指令,当执行该计算机程序指令时,执行上述方法之一。
本发明的技术方案取得了以下技术效果:
(一)相对于其它注入方法,可以注入更多的进程;
(二)由于采用新的注入方法,杀毒软件对其并不误杀,更稳定,更高效。
附图说明
图1是现有技术的内联函数执行流程图
图2是本发明的进程映像加载流程图
图3是本发明的工作队列流程图
图4是本发明的ShellCode工作流程图
图5是采用发明的实施例流程图
具体实施方式
Shellcode:Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。网络上数以万计带着漏洞顽强运行着的服务器给hacker和Vxer丰盛的晚餐。漏洞利用中最关键的是Shellcode的编写。
DLL注入:所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。
<业务处理方法>
如图1,本发明的进程映像加载流程如下:
(一)映像加载,该映像指的是进程创建或销毁时加载到内存的PE文件或DLL文件,判断当前进程是否需要放过不注入,如果需要放过则直接结束。
(二)如果为需要处理的进程,获取当前进程包括的模块名。
进程加载的时候,系统会不断调用同一个回调函数,模块名会不断变换,进程需要加载很多DLL,是按顺序加载的,操作系统每次在回调模块中提供当前正在加载的模块名,所以这个流程每次只会提供一个模块名,直到进程开始加载“ntdll.dll”的时候,模块名就变为了“ntdll.dll”。
(三)判断模块名是否为“ntdll.dll”,如果否,放过不处理。
(四)如果是,将当前进程的注入信息插入工作队列。
如图2,本发明的工作队列流程如下:
(一)获取进程空间中以下关键函数的地址,所述关键函数包括:
ZwProtectVirtualMemory,LdrLoadDll,ZwTestAlert。其中,ZwProtectVirtualMemory,LdrLoadDll是在驱动中加载DLL必须的函数,而ZwTestAlert是进程创建的时候必然会调用的函数。
(二)根据关键函数地址,生成注入用ShellCode。
(三)修改ZwTestAlert前五个字节为跳转到ShellCode指令。
因为进程创建时必会调用ZwTestAlert,正因为必调用它,所以修改这个函数前五个字节代码,让它跳转到ShellCode中,以便执行注入的安全检测DLL。
如图3,本发明的ShellCode工作流程:
(一)利用NtProtectVirtualMemory保护ZwTestAlert函数所在内存。
(二)还原ZwTestAlert前五个字节(工作队列流程中,将其前五个字节修改为跳转到ShellCode指令)。
(三)调用LdrLoadDll函数加载要注入的安全检测DLL。
<业务处理系统>
本发明提供了一种基于Windows平台的安全检测DLL注入系统,该系统包括:
注入判断模块,判断当前进程是否需要注入安全检测DLL;
模块名获取模块,获取需要注入安全检测DLL的模块名;
模块名判断模块,判断需要注入安全检测DLL的模块名是否为“ntdll.dll”;
确定注入模块,在确定注入安全检测DLL的模块名为“ntdll.dll”时,将当前进程的注入信息插入工作队列。
根据本发明的实施例,所述工作队列实现如下功能:
(1)获取进程空间中关键函数地址;
(2)根据关键函数地址,生成注入用的加壳代码ShellCode;
(3)修改关键函数中相关函数的前五个字节为跳转到加壳代码ShellCode指令。
根据本发明的实施例,所述关键函数包括Windows系统函数:ZwProtectVirtualMemory、LdrLoadDll、ZwTestAlert,修改关键函数ZwTestAlert的前五个字节为跳转到加壳代码ShellCode的指令。
根据本发明的实施例,所述加壳代码ShellCode包括如下模块:
内存保护子模块,利用Windows系统函数NtProtectVirtualMemory保护Windows系统函数ZwTestAlert所在内存;
还原子模块,还原Windows系统函数ZwTestAlert前五个字节;
调用子模块,调用Windows系统函数LdrLoadDll加载要注入的安全检测DLL。
<具体实施例>
如图5,为根据本发明技术方案实现的一具体实施例。
(一)进程启动。
(二)判断该进程是否为敏感进程(需要防泄密的进程),如果否,则放过不注入安全检测DLL。
(三)如果是,调用注入模块,注入安全检测DLL。
(四)安全检测DLL对进程进行安全检测。
(五)如果经检测不安全,则拒绝打开。
(六)如果安全,则允许打开。
将该技术方案用于对QQ等聊天工具进行监控,但一般的注入方式无法对QQ进程进行注入控制,采用本发明的注入方式,成功的注入了检测DLL,对QQ等软件的聊天信息进行了很好的控制。
通过本发明的技术方案取得了以下技术效果:相对于其它注入方法,可以注入更多的进程;由于采用新的注入方法,杀毒软件对其并不误杀,更稳定,更高效。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应保护在本发明的保护范围之内。
Claims (10)
1.一种基于Windows平台的DLL注入方法,该方法包括以下步骤:
(1)进程启动,判断当前进程是否需要注入安全检测DLL,如果需要,则转入步骤(2),否则转入步骤(8);
(2)获取需要注入安全检测DLL的模块名;
(3)判断模块名是否为“ntdll.dll”,如果否,则转入步骤(8);
(4)如果是,将当前进程的注入信息插入工作队列;
(5)安全检测DLL对当前进程进行安全检测;
(6)如果经检测不安全,转入步骤(8);
(7)如果安全,则允许启动当前进程;
(8)结束。
2.根据权利要求1所述的方法,所述工作队列的工作流程如下:
(4.1)获取进程空间中关键函数地址;
(4.2)根据关键函数地址,生成注入用的加壳代码ShellCode;
(4.3)修改关键函数中相关函数的前五个字节为跳转到加壳代码ShellCode指令。
3.根据权利要求2所述的方法,所述关键函数包括Windows系统函数:
ZwProtectVirtualMemory、LdrLoadDll、ZwTestAlert。
4.根据权利要求2或3所述的方法,修改关键函数ZwTestAlert的前五个字节为跳转到加壳代码ShellCode的指令。
5.根据权利要求4所述的方法,所述加壳代码ShellCode实现如下功能:
(a)利用Windows系统函数NtProtectVirtualMemory保护Windows系统函数ZwTestAlert所在内存;
(b)还原Windows系统函数ZwTestAlert前五个字节;
(c)调用Windows系统函数LdrLoadDll加载要注入的安全检测DLL。
6.一种基于Windows平台的DLL注入系统,该系统包括:
注入判断模块,判断当前进程是否需要注入安全检测DLL;
模块名获取模块,获取需要注入安全检测DLL的模块名;
模块名判断模块,判断需要注入安全检测DLL的模块名是否为“ntdll.dll”;
确定注入模块,在确定注入安全检测DLL的模块名为“ntdll.dll”时,将当前进程的注入信息插入工作队列;
安全检测模块,安全检测DLL对当前进程进行安全检测;
进程启动模块,如果当前进程通过了安全检测,启动当前进程。
7.根据权利要求6所述的系统,所述工作队列实现如下功能:
(1)获取进程空间中关键函数地址;
(2)根据关键函数地址,生成注入用的加壳代码ShellCode;
(3)修改关键函数中相关函数的前五个字节为跳转到加壳代码ShellCode指令。
8.根据权利要求7所述的系统,所述关键函数包括Windows系统函数:
ZwProtectVirtualMemory、LdrLoadDll、ZwTestAlert,修改关键函数ZwTestAlert的前五个字节为跳转到加壳代码ShellCode的指令。
9.根据权利要求8所述的系统,所述加壳代码ShellCode包括如下模块:
内存保护子模块,利用Windows系统函数NtProtectVirtualMemory保护Windows系统函数ZwTestAlert所在内存;
还原子模块,还原Windows系统函数ZwTestAlert前五个字节;
调用子模块,调用Windows系统函数LdrLoadDll加载要注入的安全检测DLL。
10.一种计算机存储介质,其包括计算机程序指令,当执行该计算机程序指令时,执行权利要求1-5之一的所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710559514.4A CN107479874B (zh) | 2017-07-11 | 2017-07-11 | 一种基于Windows平台的DLL注入方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710559514.4A CN107479874B (zh) | 2017-07-11 | 2017-07-11 | 一种基于Windows平台的DLL注入方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107479874A true CN107479874A (zh) | 2017-12-15 |
CN107479874B CN107479874B (zh) | 2021-04-16 |
Family
ID=60594932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710559514.4A Active CN107479874B (zh) | 2017-07-11 | 2017-07-11 | 一种基于Windows平台的DLL注入方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107479874B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026452A (zh) * | 2019-11-20 | 2020-04-17 | 北京明朝万达科技股份有限公司 | 一种远程32位进程注入64位进程的方法及系统 |
CN111475229A (zh) * | 2020-04-09 | 2020-07-31 | 广州锦行网络科技有限公司 | 一种Windows平台下的dll注入方法及系统 |
CN111737738A (zh) * | 2020-06-11 | 2020-10-02 | 浙江华途信息安全技术股份有限公司 | 一种Windows防信息泄漏系统 |
TWI739284B (zh) * | 2020-01-20 | 2021-09-11 | 精品科技股份有限公司 | 控制台程式的控制管理方法及系統 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530118A (zh) * | 2013-09-30 | 2014-01-22 | 广州华多网络科技有限公司 | 将自定义dll注入目标进程的方法及装置 |
CN105843640A (zh) * | 2016-03-21 | 2016-08-10 | 武汉斗鱼网络科技有限公司 | 一种动态链接库的注入方法及装置 |
-
2017
- 2017-07-11 CN CN201710559514.4A patent/CN107479874B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530118A (zh) * | 2013-09-30 | 2014-01-22 | 广州华多网络科技有限公司 | 将自定义dll注入目标进程的方法及装置 |
CN105843640A (zh) * | 2016-03-21 | 2016-08-10 | 武汉斗鱼网络科技有限公司 | 一种动态链接库的注入方法及装置 |
Non-Patent Citations (1)
Title |
---|
YIFI: "《https://www.cnblogs.com/yifi/p/6389251.html》", 11 February 2017 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026452A (zh) * | 2019-11-20 | 2020-04-17 | 北京明朝万达科技股份有限公司 | 一种远程32位进程注入64位进程的方法及系统 |
CN111026452B (zh) * | 2019-11-20 | 2023-10-20 | 北京明朝万达科技股份有限公司 | 一种远程32位进程注入64位进程的方法及系统 |
TWI739284B (zh) * | 2020-01-20 | 2021-09-11 | 精品科技股份有限公司 | 控制台程式的控制管理方法及系統 |
CN111475229A (zh) * | 2020-04-09 | 2020-07-31 | 广州锦行网络科技有限公司 | 一种Windows平台下的dll注入方法及系统 |
CN111475229B (zh) * | 2020-04-09 | 2021-01-15 | 广州锦行网络科技有限公司 | 一种Windows平台下的dll注入方法及系统 |
CN111737738A (zh) * | 2020-06-11 | 2020-10-02 | 浙江华途信息安全技术股份有限公司 | 一种Windows防信息泄漏系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107479874B (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003764B2 (en) | System and method for exploiting attack detection by validating application stack at runtime | |
US9858417B2 (en) | Detecting malicious computer code in an executing program module | |
AU2012262867B2 (en) | System and method for preserving references in sandboxes | |
CN110110522B (zh) | 内核修复方法和装置 | |
US9613228B2 (en) | Isolation and presentation of untrusted data | |
US20070192857A1 (en) | System and method for enforcing a security context on a downloadable | |
CN107479874A (zh) | 一种基于Windows平台的DLL注入方法及系统 | |
US9372991B2 (en) | Detecting malicious computer code in an executing program module | |
EP3502944B1 (en) | Detecting script-based malware cross reference to related applications | |
US20100037317A1 (en) | Mehtod and system for security monitoring of the interface between a browser and an external browser module | |
KR20180018531A (ko) | 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지 | |
CN105608391B (zh) | 多elf文件保护方法及系统 | |
US20110093953A1 (en) | Preventing and responding to disabling of malware protection software | |
US10055251B1 (en) | Methods, systems, and media for injecting code into embedded devices | |
CN110837644B (zh) | 一种系统渗透测试方法、装置及终端设备 | |
US9990493B2 (en) | Data processing system security device and security method | |
CN105760721A (zh) | 一种软件加固方法和系统 | |
Vella et al. | Volatile memory-centric investigation of SMS-hijacked phones: a Pushbullet case study | |
CN112199151B (zh) | 一种应用程序的运行方法及装置 | |
Bousquet et al. | Mandatory access control for the android dalvik virtual machine | |
CN116910712A (zh) | 代码保护方法、系统、电子设备及存储介质 | |
US20100218261A1 (en) | Isolating processes using aspects | |
CN115292707A (zh) | 基于动态类调用序列的可信度判断方法及装置 | |
Zhou et al. | ChanDet: Detection model for potential channel of iOS applications | |
CN113836529A (zh) | 进程检测方法、装置、存储介质以及计算机设备 |
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 |