一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于windows系统隐蔽自启动方法及装置和检测方法及装置与流程

2022-03-22 23:19:37 来源:中国专利 TAG:
1.本发明涉及自启动木马
技术领域
:,具体涉及一种基于windows系统隐蔽自启动方法及装置和检测方法及装置。
背景技术
::2.现有技术(例如,专利号为:cn103955644a的专利中)针对自启动方式的木马检测技术主要基于操作系统公开的启动方式进行检测,比如windows操作系统默认提供多种自启动方式的api,比如注册表、计划任务和自启动文件夹等多种方式,通常检测技术会基于木马特征为基础并对自启动项进行检查,能检测到木马基于哪个启动项或什么动作启动,检测出的木马可以定位木马存储位置及其关联文件。3.但是现有技术存在以下问题:4.1、自启动方式的局限性,目前windows平台常用的自启动方式包括:5.(1)启动目录6.(2)注册表启动项7.[0008][0009](3)系统配置文件[0010]win.inisystem.iniwininit.ini[0011](4)开/关机/登录/注销脚本[0012](5)任务计划[0013](6)以windows服务方式启动[0014](7)捆绑到正常软件[0015]目前绝大多数的windows平台程序(包括合法程序和恶意程序)均使用上述七种方式实现自启动,作为红队攻击人员同样经常使用上述七种方式进行自启动;不管是检测还是利用,都充斥着局限性。[0016]2、杀软的查杀率高,木马程序的自启动是木马程序的首要步骤,通常普通木马会采用上述七种自启动方式进行启动,受到传统启动方式的局限上述启动方式也是杀软的重点查杀对象,除此之外的启动方式杀软则不会进行拦截。[0017]3、高级木马利用非常规方式进行启动,杀软或edr产品则无法保证目标单位的安全性;高级木马通常采用多种隐蔽技术逃避杀毒软件的查杀,如果高级木马利用操作系统逻辑漏洞或利用应用程序实现自启动的方式目前技术难以进行检测。[0018]4、传统的dll劫持完成自启动,特别是系统dll劫持,通常需要实现原本系统dll的功能,否则系统在获取dll导出函数并调用时可能导致系统进程崩溃或功能异常。技术实现要素:[0019]为此,本发明实施例提供一种基于windows系统隐蔽自启动方法及装置和检测方法及装置,以解决现有技术存在的问题。[0020]为了实现上述目的,本发明实施例提供如下技术方案:[0021]第一方面,一种基于windows系统隐蔽自启动方法,包括:[0022]获取跟随系统启动的系统文件,并获取所述系统文件所导入的dll;[0023]将恶意dll替换为windows系统已经弃用但程序仍然加载的dll文件。[0024]进一步的,所述获取跟随系统启动的系统文件,并获取所述系统文件所导入的dll,具体包括:[0025]遍历所述windows正规手段自启动项,检索出对应的可执行系统文件;[0026]解析所述可执行系统文件对应的pe结构,找到位于peheader中的image_directory_entry_import导入表字段、image_directory_entry_bound_import绑定导入表字段和image_directory_entry_delay_import延迟导入表字段;[0027]提取所述image_directory_entry_import导入表字段、所述image_directory_entry_bound_import绑定导入表字段和所述image_directory_entry_delay_import延迟导入表字段中全部的dll文件名。[0028]进一步的,所述可执行系统文件包括exe、dll和sys。[0029]进一步的,所述将恶意dll替换为windows系统已经弃用但程序仍然加载的dll文件,具体包括:[0030]获取所述windows的已知dll列表;[0031]排除掉存储的dll文件;[0032]遍历所有可能的操作系统文件和dll文件导入表里存在但实际已经不用的dll文件;[0033]将木马文件改名为所述dll文件并放在对应的目录下随系统进行加载。[0034]进一步的,获取所述windows的已知dll列表,是通过访问注册表hkey_local_machine\system\currentcontrolset\control\sessionmanager\knowndlls来获取的。[0035]进一步的,遍历所有可能的操作系统文件和dll文件导入表里存在但实际已经不用的dll文件时是通过栈模拟算法来实现的。[0036]进一步的,遍历的目录包括:系统目录、windows目录、当前目录和环境变量path中所有目录。[0037]第二方面,一种基于windows系统隐蔽自启动装置,包括:[0038]获取模块,用于获取跟随系统启动的系统文件,并获取所述系统文件所导入的dll;[0039]替换模块,用于将恶意dll替换为windows系统已经弃用但程序仍然加载的dll文件。[0040]第三方面,一种基于windows系统检测方法,包括:[0041]检测pe结构中位于所述pe末端的attnibutecertificatetable中的数字签名,判断所述数字签名是否为微软所属的正规签名;[0042]若否,则为疑似木马文件;[0043]运用异常行为模型进一步判断所述疑似木马文件是否为木马文件。[0044]第四方面,一种基于windows系统检测装置,包括:[0045]判断模块,用于判断所述目标dll文件是否为默认文件,若否,则为疑似木马文件;[0046]异常检测模块,用于进一步判断所述疑似木马文件是否为木马文件。[0047]本发明至少具有以下有益效果:本发明提供一种基于windows系统隐蔽自启动方法及装置和检测方法及装置,获取跟随系统启动的系统文件,并获取系统文件导入的dll;将恶意dll替换为windows系统已经弃用但程序仍然加载的dll文件;检测pe结构中位于pe末端的attnibutecertificatetable中的数字签名,判断是否为微软所属的正规签名;若否,则为疑似木马文件;运用异常行为模型进一步判断是否为木马;基于windows系统隐蔽自启动方法及装置和检测方法及装置,可以对操作系统程序启动的逻辑进行深度分析,通过程序绕过杀毒软件实现启动,具有一定隐藏效果。附图说明[0048]为了更清楚地说明现有技术以及本发明,下面将对现有技术以及本发明实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其它的附图。[0049]本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。[0050]图1为本发明实施例提供的基于windows系统隐蔽自启动方法流程图;[0051]图2为本发明实施例提供的基于windows系统隐蔽自启动方法原理图;[0052]图3为本发明实施例提供的基于windows系统检测方法流程图。具体实施方式[0053]为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。[0054]在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”ꢀ等(如果存在)旨在区别指代的对象。对于具有时序流程的方案,这种术语表述方式不必理解为描述特定的顺序或先后次序,对于装置结构的方案,这种术语表述方式也不存在对重要程度、位置关系的区分等。[0055]此外,术语“包括”、“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包括了一系列步骤或单元的过程、方法、系统、产品或设备不必限于已明确列出的那些步骤或单元,而是还可包含虽然并未明确列出的但对于这些过程、方法、产品或设备固有的其它步骤或单元,或者基于本发明构思进一步的优化方案所增加的步骤或单元。[0056]针对目前利用操作系统文件实现的自启动方式无法检测的问题,可以在用于劫持的dll加载后,再加载原系统dll,并将模块链表中用于劫持的dll的基址修改为原系统dll的加载基址。以此使系统再次调用loadlibrary函数获取dll加载基址时获取的是原系统dll的基址,getprocaddress时也获取的是原系统dll的导出函数,从而实现通用dll劫持。该通用dll劫持方法还有一个好处,一些进程查看工具在查看进程模块时,也是通过遍历进程模块链表获取的,因此该方法将使这类工具无法查看进程中加载的劫持的dll,具有一定隐藏效果。[0057]请参阅图1和图2,本发明的一个实施例提供一种基于windows系统隐蔽自启动方法,包括:[0058]s1:获取跟随系统启动的系统文件,并获取所述系统文件导入的dll;[0059]具体的,通过遍历上述七种windows正规手段自启动项,检索出对应的可执行系统文件(包括exe、dll、sys等),解析其对应的pe结构,找到位于peheader中的image_directory_entry_import导入表字段、image_directory_entry_bound_import绑定导入表字段、image_directory_entry_delay_import延迟导入表字段,提取上述三个字段中全部的dll文件名,此时已经获取到了所有利用系统文件启动的文件。[0060]s2:将恶意dll替换为windows系统已经弃用但程序仍然加载的dll文件;[0061]具体的,首先去访问注册表hkey_local_machine\system\currentcontrolset\control\sessionmanager\knowndlls获取当前windows的已知dll列表,排除掉该键存储的dll文件,其次利用栈模拟算法遍历出所有可能的操作系统文件dll文件导入表里存在但实际已经不用的dll文件。[0062]遍历的目录包括系统目录、windows目录、当前目录和环境变量path中所有目录,系统目录、windows目录和当前目录均为getwindowsdirectory返回的目录。[0063]本发明的一个实施例提供一种基于windows系统隐蔽自启动装置,包括:[0064]获取模块,用于获取跟随系统启动的系统文件,并获取所述系统文件所导入的dll;[0065]替换模块,用于将恶意dll替换为windows系统已经弃用但程序仍然加载的dll文件。[0066]请参阅图3,本发明的实施例提供一种基于windows系统检测方法,包括:[0067]s1:检测pe结构中位于pe末端的attnibutecertificatetable中的数字签名,判断是否为微软所属的正规签名;[0068]s2:若否,则为疑似木马文件;[0069]s3:运用异常行为模型进一步判断是否所述疑似木马文件为木马文件。[0070]具体的,通过检测pe结构中位于pe末端的attnibutecertificatetable中的数字签名,判断是否为微软所属的正规签名,即默认的系统文件,如果不是则为疑似木马文件,再通过异常行为模型判断是否为木马文件。[0071]异常检测模型是一个在机器学习里通用的一种算法,它是通过检测很多正常的非木马文件通过上述算法生成一个类似于二维/三维的一个区域,然后检测的时候只要针对疑似木马文件进行分析,结果所在的区间范围不在这个区域内的均可以判断为木马文件。具体的,异常检测模型是一个比较成熟的现有技术,在此不在赘述。[0072]而且异常检测模型引入了基于向量空间的相似度计算算法和反向进程频率等概念,区分了不同系统调用对定义正常行为的不同作用,提高了正常行为定义的准确性;该模型的检测算法针对入侵造成异常的局部性特点,采用了局部分析算法,降低了误报率。[0073]本发明的一个实施例提供一种基于windows系统检测装置,包括:[0074]判断模块,用于判断所述目标dll文件是否为默认文件,若否,则为疑似木马文件;[0075]异常检测模块,用于进一步判断所述疑似木马文件是否为木马文件。[0076]本发明的关键点总结如下:[0077](1)windows操作系统系统隐蔽自启动方式的寻找;[0078]在以往的dll劫持中,特别是系统dll劫持,通常需要实现原本系统dll的功能,否则系统在获取dll导出函数并调用时可能导致系统进程崩溃或功能异常。本发明提供的系统dll劫持方案中采用了一种通用dll劫持技术,不用实现原本系统dll导出函数功能即可实现劫持。在使用loadlibrarya(loadlibraryw)加载一个dll时,底层将调用kernelbase.dll中的loadlibraryexw函数。loadlibraryexw函数会根据模块链表判断dll是否已经加载。如果dll已经加载了,将直接返回模块链表中的dll基址;如果dll未加载,将调用ldrloaddll进行加载。[0079]在用于劫持的dll加载后,再加载原系统dll,并将模块链表中用于劫持的dll的基址修改为原系统dll的加载基址。以此使系统再次调用loadlibrary函数获取dll加载基址时获取的是原系统dll的基址,getprocaddress时也获取的是原系统dll的导出函数,从而实现通用dll劫持。该通用dll劫持方法还有一个好处,一些进程查看工具在查看进程模块时,也是通过遍历进程模块链表获取的,因此该方法将使这类工具无法查看进程中加载的劫持的dll,具有一定隐藏效果。[0080](2)windows操作系统系统文件隐蔽自启动方式的检测,数字签名、白名单等;[0081]在检测时,通过针对系统文件和应用程序加载的系统库,进行数字签名、白名单等的匹配排除从而大大减少需要使用异常分析模型进行分析的可疑dll文件。[0082]本发明具有以下优势:[0083]正常软件启动方式主要有以下几种:文件自启动项、注册表启动方式、服务启动方式、驱动启动方式、计划任务启动方式、系统配置文件启动和引导区启动方式,而木马病毒除了采用以上启动方式为,会采用大量不常用的启动方式,比如模拟一些专有软件的系统配置文件实现自启动、模拟vxd虚拟设备驱动实现自启动。[0084]本发明主要对操作系统程序启动的逻辑进行深度分析,采取两类方式实现程序绕过杀毒软件实现启动。[0085](1)在软件正常启动方式上,通过伪装技术实现启动,让杀毒软件或安全人员误认为是正常软件的启动;[0086](2)不常用启动方式的实现,系统在启动过程中,大量系统自身文件需要启动,windows系统运作体系在逻辑层面可以利用,实现非系统文件的启动;[0087](3)收集正常软件存在的dll文件加载漏洞,实现绕过杀毒软件;[0088](4)在用于劫持的dll加载后,再加载原系统dll,并将模块链表中用于劫持的dll的基址修改为原系统dll的加载基址。以此使系统再次调用loadlibrary函数获取dll加载基址时获取的是原系统dll的基址,getprocaddress时也获取的是原系统dll的导出函数,从而实现通用dll劫持。该通用dll劫持方法还有一个好处,一些进程查看工具在查看进程模块时,也是通过遍历进程模块链表获取的,因此该方法将使这类工具无法查看进程中加载的劫持的dll,具有一定隐藏效果。[0089]以上几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。[0090]以上实施例的各技术特征可以进行任意的组合(只要这些技术特征的组合不存在矛盾),为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述;这些未明确写出的实施例,也都应当认为是本说明书记载的范围。[0091]上文中通过一般性说明及具体实施例对本发明作了较为具体和详细的描述。应当指出的是,在不脱离本发明构思的前提下,显然还可以对这些具体实施例作出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献