CN111177665A - 一种新生成可执行文件的安全追溯方法 - Google Patents
一种新生成可执行文件的安全追溯方法 Download PDFInfo
- Publication number
- CN111177665A CN111177665A CN201911402054.XA CN201911402054A CN111177665A CN 111177665 A CN111177665 A CN 111177665A CN 201911402054 A CN201911402054 A CN 201911402054A CN 111177665 A CN111177665 A CN 111177665A
- Authority
- CN
- China
- Prior art keywords
- file
- service
- installation
- executable
- entering
- 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
- 238000000034 method Methods 0.000 title claims abstract description 324
- 230000008569 process Effects 0.000 claims abstract description 271
- 238000009434 installation Methods 0.000 claims abstract description 41
- 238000011900 installation process Methods 0.000 claims abstract description 35
- 230000006870 function Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 3
- 230000004069 differentiation Effects 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims description 3
- 241000700605 Viruses Species 0.000 description 17
- 238000001514 detection method Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 208000015181 infectious disease Diseases 0.000 description 4
- 230000002458 infectious effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000002155 anti-virotic effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000000277 virosome Substances 0.000 description 2
- 208000036142 Viral infection Diseases 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009385 viral infection Effects 0.000 description 1
Images
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/16—Program or content traceability, e.g. by watermarking
-
- 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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Abstract
本发明提出一种新生成可执行文件的安全追溯方法。在本发明的技术方案中,通过查找系统服务中的线程来确定是否为windows更新;通过系统事件日志来关联安装进程和msiexec进程;通过__PROCESS_HISTORY环境变量来溯源;通过HOOK服务相关的函数来跟踪服务创建的情况。服务进程根据上述流程进行溯源,将溯源结果以及可执行文件的签名信息等一起送给服务器,服务器再综合各种信息来判断文件的可信任度。溯源后,文件可信任度的判断准确度大幅提高,大大减少了人工干预的工作量,并且能够精确定位新生成的可执行文件是否由确认安全的安装包产生。
Description
技术领域
本发明属于系统安全技术领域,尤其涉及一种新生成可执行文件的安全追溯方法,更具体来说,涉及一种应用于Windows系统更新过程、MSI文件的安装过程以及文件下载后的安装过程或者进程启动一个服务完成安装的过程中的新生成可执行文件的安全追溯方法。
背景技术
可执行文件(executable file)指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样。
在windows操作系统下,可执行程序可以是.exe文件.sys文件.com等类型文件。如记事本程序notepad.exe,这类程序通常用来处理或者辅助处理其它文件。比如:myfile.txt双击打开由 notepad.exe记事本程序来进行编辑。
Win32可执行文件叫做PE文件。它把程序中的不同部分分成各种节区(Section),其中可以有一个节区是放置各种资源的,如菜单、对话框、位图、光标、图标和声音等。虽然可以把资源部分理解成类似DOS可执行文件中的″覆盖″部分,但由于资源是Win32可执行文件的标准组成部分,而且是非常重要的组成部分,它的格式是固定的。编译好目标文件*.obj和资源文件*.res后,最后一步是用链接器将它们链接成可执行文件。链接的时候要用到函数库。在Win32 环境下,大部分的公用函数封装在DLL文件中,以动态链接的方式供用户程序调用。这时候库文件中只需要包含函数在DLL中的位置信息,不再需要有二进制代码部分。所以链接的时候也只是把库文件中的位置信息取出放入最后的可执行文件中。Win32中这种只包含位置信息的库文件称为导入库。
文件型病毒寄生在可执行文件上,并依靠可执行文件来传播。从数学角度而言,解除这种病毒的过程实际上是病毒感染过程的逆过程。通过检测工作、(跳转、解码),已经得到了病毒体的全部代码,用于还原病毒的数据肯定在病毒体内,只要找到这些数据,依照一定的程式或方法即可将文件恢复,也就是说可以将病毒解除。
因此,对于可执行文件的安全追溯,是系统安全运行的关键。在一些杀毒软件中,通过windows内核驱动、windows系统内核回调函数等检测windows事件以及windows系统服务,可以实现简单的病毒防护功能。
申请号为CN201610698138.2的中国发明专利申请提出检测和清除可移植可执行文件中感染型病毒的方法及装置,该方法中,首先初步判断目标PE文件是否疑似感染感染型病毒,如果确定目标PE 文件疑似感染感染型病毒,则对该目标PE文件进行预处理,之后以 debug方式执行预处理后的目标PE文件,在执行过程中,对不同的 debug事件进行处理,直至出现异常无法处理事件时,停止debug 执行过程,此时,病毒已经被解密,采用当前内存中目标PE文件的PE结构中的最后一个有效节的内容与预设病毒库中的病毒进行匹配,如果匹配成功,说明目标PE文件确实感染了感染型病毒;申请号为CN201810794318.X的中国发明专利申请则提出可移植的可执行文件的病毒检测方法、装置、设备及介质,,采用静态特征提取方法提取已知病毒和正常程序的静态特征,构成特征集,其中,静态特征包括:PE文件属性特征和指令序列特征;将特征集作为训练集,从训练集中随机选择多组训练数据进行检测模型训练;采用静态特征提取方法提取待检文件的静态特征;将待检文件的静态特征输入到训练后的检测模型中,得到训练后的检测模型输出的检测结果的方式,解决了传统的病毒检测存在滞后性的问题,实现了能够即时检测新生病毒或者病毒变种的技术效果;申请号为CN201210262975.2的中国发明专利申请则提出一种可执行文件处理方法和装置,该技术为采用可执行文件内部特征的分类技术,具有强抗干扰性,且不会出现文件无法分类的情况。另外,所述分类技术还具有分类速度快、分类效果好等优点,可以实现对海量可执行文件的分类。公开号为 CN103294950A的专利申请文件则公开一种基于反向追踪的高威窃密恶意代码检测方法及系统,在系统中预置诱饵文件,并对诱饵文件和系统文件进行监控,当发现存在非法操作时,则反向定位相关的进程和/或线程,并依据定位到的进程和/或线程定位到相应的可执行文件,经白名单过滤之后确定高威窃密恶意代码文件,最后利用关联对比技术,检测出相关联的高威窃密恶意代码文件。以上所述方案解决了高威窃密恶意代码不易检测的问题,并且可以做到快速发现,定位和分析;公开号为CN103473501A的专利申请文件则公开一种追踪软件的方法,该方法中,进程的相关文件包括进程的exe文件,以及,当进程是通过快捷方式启动时,进程的相关文件包括快捷方式文件;当进程为批处理进程时,进程的相关文件包括批处理文件;当进程为脚本进程时,进程的相关文件包括脚本文件;当进程为rundll32或 regsvr32进程时进程的相关文件包括相关的动态链接库DLL文件;当为解压缩进程时,该进程的相关文件包括解压缩文件。
然而,现有技术中杀毒软件或者安全软件实现的对可执行文件 (包括DLL,下同)来源的追踪都是通过内核钩子来跟踪文件生成流程。windows系统中有许多官方提供的可以HOOK的点,这些点可以挂入自己编写的回调函数来监控文件系统的访问,通常通过HOOK内核中的Close、Cleanup、Write操作,可以知道某一个进程写出了一个新的可执行文件,但仅仅也只能知道哪一个进程、线程写出了可执行文件。但是在实际使用过程中,写出文件的进程未必就是真正来源,下面这些情况下,都会使得真正来源和当前进程不符合:
1.Windows更新,很多时候文件来源是svchost,但显然真正来源是windows更新进程;
2.Msi安装,写出文件的进程是msiexec,但真正来源有可能是 exe安装包,也有可能是直接双击msi文件;
3.有些安装包会释放出(或者下载)一些可执行文件,再会调用这个可执行文件执行真正的安装;
4.安装进程可能启动一个服务来执行一些操作,服务可能写出文件。
在上述这些情况下,会对文件来源产生误判。这样就会对文件的安全性判断产生影响,譬如有一个确认安全的安装包,那我们会认为由它产生的所有文件都是安全的,但是在追踪可执行文件生成的过程中,如果不能精确定位到此文件是确认安全的安装包产生的,那将无法判定新生成可执行文件的安全性。
发明内容
为解决上述技术问题,本发明提出一种新生成可执行文件的安全追溯方法,更具体来说,涉及一种应用于Windows系统更新过程、 MSI文件的安装过程以及文件下载后的安装过程或者进程启动一个服务完成安装的过程中的新生成可执行文件的安全追溯方法。
在本发明的技术方案中,在对应的环境中,通过查找系统服务中的线程来确定是否为windows更新;通过系统事件日志来关联安装进程和msiexec进程;通过_PROCESS_HISTORY环境变量来溯源;通过HOOK服务相关的函数来跟踪服务创建的情况。服务进程根据上述流程进行溯源,将溯源结果以及可执行文件的签名信息等一起送给服务器,服务器再综合各种信息来判断文件的可信任度。溯源后,文件可信任度的判断准确度大幅提高,大大减少了人工干预的工作量,并且能够精确定位新生成的可执行文件是否由确认安全的安装包产生。
在第一个方面,本发明提出一种新生成可执行文件的安全追溯方法,所述方法应用于Windows系统更新过程中,该方法包括:
步骤SW1:在所述更新过程启动后,探测是否存在进程 svchost.exe;
如果存在,则进入步骤SW2;否则,进入步骤SW3;
步骤SW2:判断所述进程svchost.exe是否存在至少一个 windows更新线程,如果是,进入步骤SWA;否则,进入步骤 SWB;
步骤SW3:判断是否存在更新进程wuauclt.exe,如果存在,则进入步骤SWC,否则,进入步骤SWD;
在该技术方案中,不同于现有技术的简单分类或者签名判断,所述步骤SWA-SWB分为四个不同的分支(switch)执行:
步骤SWA:如果所述windows更新线程写出可执行文件,则判定所述可执行文件安全;否则,返回步骤SW3;
步骤SWB:退出;
步骤SWC:打开更新进程wuauclt.exe,调用 I_QueryTagInformation获得该进程对应的至少一个线程对应的至少一个服务;如果若所述服务包含WUAUSERV,则判断Windows更新了安全的可执行文件;
步骤SWD:退出。
在第二个方面,本发明提出一种新生成可执行文件的安全追溯方法,所述方法应用于MSI文件的安装过程中,该方法包括:
SM1:通过内核钩子检测是否存在MSIEXEC进程写出文件,如果是,则进入下一步;
SM2:打开所述MSIEXEC进程,并通过 zwqueryinformationprocess函数查询该进程的Peb的地址;
SM3:根据所述PEB地址,读取进程参数;并通过进程参数,获得进程的命令行;
SM4:解析所述命令行,判断该进程是否为MSISERVER;
如果是,则进入步骤SMA;否则,进入步骤SMB;
作为本技术方案的突出优点,所述步骤SMA-SMB具体执行如下:
在所述步骤SMA中,读取该进程的创建时间,解析进程对应的事件源对应的事件ID;基于所述事件ID解析事件内容,得到客户进程的PID;判断是否能够得到该客户进程的命令行,如果是,则判定所述MSI文件的安装过程生成的可执行文件安全;
在所述步骤SMB中,进一步判断所述进程是否在处理所述MSI 文件的安装包,如果是,则判定所述MSI文件的安装过程生成的可执行文件安全;否则,获取此进程的环境变量地址以及此进程的环境变量,判断所述环境变量中是否存在Process History参数;如果不存在,则判断当前进程为源进程。
具体来说,其中,步骤SMA中,判断是否能够得到该客户进程的命令行,具体包括:
判断是否能够通过zwqueryinformationprocess函数查询到该客户进程的Peb的地址。
其中,步骤SMB中,如果所述进程不是在处理所述MSI文件的安装包,则根据Process parameters中的environment变量,获取此进程的环境变量地址,调用virtualqueryex函数获取所述变量地址的内存范围,从而读取所诉进程的环境变量。
进一步的,其中,步骤SM8中,如果所述环境变量中存在Process History参数,则判定所述MSI文件的安装过程中产生的新执行文件来源于环境变量Process History参数。
在该技术方案中,通过不同的情形的精确定位,从而判断此文件是否由确认安全的安装包产生的。
在第三个方面,本发明提出一种新生成可执行文件的安全追溯方法,所述方法应用于文件下载后的安装过程或者进程启动一个服务完成安装的过程中,该方法包括:
SX1:通过内核钩子检测是否存在当前进程写出文件,如果是,则进入下一步;
SX2:获取所述当前进程的SessionID;判断所述SessionID是否等于0;如果是,则进入步骤SXA;否则,进入步骤SXB;
在本情形中,所述步骤SXA进一步判断所述当前进程是否存在子进程,如果是,则判定所述写出文件的来源为所述当前进程;如果否,则在共享内存中查找启动进程;
在所述步骤SXB中,获取所述当前进程创建时间,并获取父进程 PID,判断所述父进程是否存在除所述当前进程之外的其他子进程,如果所述当前进程与所述其他子进程均不在所述父进程之后创建,则判定所述写出文件的来源为所述当前进程;
否则,设置所述当前进程为子进程,并设置所述父进程为当前进程,返回步骤SX2。
具体而言,其中,在共享内存中查找启动进程,具体包括:加载进程sechost.dll,通过Hook函数获取Openservice和 StartServiceW,并创建对应表,在所述对应表中对应存储了每个进程及其启动的服务。
其中,在共享内存中查找启动进程,进一步包括:查找当前文件下载服务或者进程启动服务对应的启动进程,如果找到,则判定所述文件下载服务或者进程启动服务安全。
本发明还提供一种计算机可读存储介质,其上存储有计算机可执行指令代码,通过处理器执行所述指令代码,用于实现所述的新生成可执行文件的安全追溯方法。
本发明的技术方案可以广泛应用于白盾系统。白盾的核心是要建立一个白名单库,只有白名单中的可执行文件才是可以信任的,除此之外的文件,要么是不能运行,要么在运行的时候做好日志。如何判断一个可执行文件的可信任度,可执行文件的来源是一个重要的参考。来源于可信任源的安装包、MSI包、CAB更新包、MSU更新包等等的文件,均认为可信任。
因此,本发明还提供一种白盾服务器系统,所述白盾服务器系统包括多个白盾客户端,所述白盾客户端连接安全控制器,并且包括存储器,在所述存储器上存储有计算机程序,通过所述客户端执行所述程序,用于实现所述的新生成可执行文件的安全追溯方法。
在白盾客户端中,有一个内核模块,监控着系统中是否生成了新的可执行文件,在有可执行文件生成时,将可执行文件名、进程PID、线程TID传给用户控件的服务。
服务进程根据上述流程进行溯源,将溯源结果以及可执行文件的签名信息等一起送给服务器,服务器再综合各种信息来判断文件的可信任度。溯源后,文件可信任度的判断准确度大幅提高,大大减少了人工干预的工作量,同时能够精确定位新生成的可执行文件是否由确认安全的安装包产生。
本发明的进一步优点将结合说明书附图,通过具体的实施例进一步体现。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明所述方法应用于windows更新过程的流程示意图
图2是图1所述方法的更具体实施例
图3是本发明所述方法应用于MSI文件的安装过程的实现流程
图4是图3所述的方法的更具体实施例
图5是本发明所述方法应用于文件下载后的安装过程或者进程启动一个服务完成安装的过程的流程示意图
图6是图5所述方法的更具体实施例。
图7是本发明所述的白盾服务器的示意图。
具体实施例
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和实施例对本发明做进一步说明。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
参见图1,是本发明所述方法应用于windows更新过程的流程示意图。
在图1中,所述方法包括如下步骤:
步骤SW1:在所述更新过程启动后,探测是否存在进程 svchost.exe;
如果存在,则进入步骤SW2;否则,进入步骤SW3;
步骤SW2:判断所述进程svchost.exe是否存在至少一个 windows更新线程,如果是,进入步骤SWA;否则,进入步骤 SWB;
步骤SW3:判断是否存在更新进程wuauclt.exe,如果存在,则进入步骤SWC,否则,进入步骤SWD;
在本实施例中,所述步骤SWA-SWD为四个不同的执行分支,分别包括:
步骤SWA:如果所述windows更新线程写出可执行文件,则判定所述可执行文件安全;否则,进入步骤SW3;
步骤SWB:退出;
步骤SWC:打开更新进程wuauclt.exe,调用 I_QueryTagInformation获得该进程对应的至少一个线程对应的至少一个服务;如果若所述服务包含WUAUSERV,则判断Windows更新了安全的可执行文件;
步骤SWD:退出。
在具体实现上,可以选择其中一个分支或者多个分支进行判断,从而得到其他不同的实现方式,这里,以其中一个分支为例,给出了图2所述的更具体的下位实现方式。
图1-2针对的是Windows更新的情形。如前所述,很多时候文件来源是svchost,但显然真正来源是windows更新进程。现有技术定位通常出现错误。
图2所述的实现方式中,Windows自带了一个更新进程 wuauclt.exe,由这个进程写出的文件可以当做更新,但只有少部分文件是这样的,更多的文件是通过svchost.exe写出来的:1.svchost 中有一个专门用于windows更新的线程,此线程对应了windows 中的更新服务,如果是这个线程写出的文件,那可以认定为更新;2. svchost.exe创建了wuauclt.exe进程,那么这个svchost写出来的文件,也可以认为是更新。
参见图3,本发明所述方法应用于MSI文件的安装过程的实现流程。总体来说,该流程包括如下步骤:
SM1:通过内核钩子检测是否存在MSIEXEC进程写出文件,如果是,则进入下一步;
SM2:打开所述MSIEXEC进程,并通过 zwqueryinformationprocess函数查询该进程的Peb的地址;
SM3:根据所述PEB地址,读取进程参数;并通过进程参数,获得进程的命令行;
SM4:解析所述命令行,判断该进程是否为MSISERVER;
如果是,则进入步骤SMA;否则,进入步骤SMB;
进一步结合图4,所述步骤SMA-SMB具体执行如下:
在所述步骤SMA中,读取该进程的创建时间,解析进程对应的事件源对应的事件ID;基于所述事件ID解析事件内容,得到客户进程的PID;判断是否能够得到该客户进程的命令行,如果是,则判定所述MSI文件的安装过程生成的可执行文件安全;
在所述步骤SMB中,进一步判断所述进程是否在处理所述MSI 文件的安装包,如果是,则判定所述MSI文件的安装过程生成的可执行文件安全;否则,获取此进程的环境变量地址以及此进程的环境变量,判断所述环境变量中是否存在Process History参数;如果不存在,则判断当前进程为源进程。
具体来说,其中,步骤SMA中,判断是否能够得到该客户进程的命令行,具体包括:
判断是否能够通过zwqueryinformationprocess函数查询到该客户进程的Peb的地址。
其中,步骤SMB中,如果所述进程不是在处理所述MSI文件的安装包,则根据Process parameters中的environment变量,获取此进程的环境变量地址,调用virtualqueryex函数获取所述变量地址的内存范围,从而读取所诉进程的环境变量。
进一步的,其中,步骤SM8中,如果所述环境变量中存在Process History参数,则判定所述MSI文件的安装过程中产生的新执行文件来源于环境变量Process History参数。
在该技术方案中,通过不同的情形的精确定位,从而判断此文件是否由确认安全的安装包产生的。
图4针对的是Msi安装过程中写出文件的进程是msiexec,但真正来源有可能是exe安装包,也有可能是直接双击msi文件的问题。
具体来说,MSI文件安装包含了2种可能性,一种是通过安装程序间接加载MSI文件进行安装,包括MSI文件是安装程序自身释放出来的情况;另外一种是直接双击MSI文件进行安装。此时用原有的解决方案,都会认为释放出来的文件来源于msiexec。
可以采用多种方法进行溯源:
1.采用windows自带的事件日志。Windows事件日志对系统中关键的事件都有记录,包括了msi安装。其中来源于MsiInstaller 的事件均和MSI文件的安装有关,ID号为1040的事件,表明了当前MSI安装的客户端进程PID,根据这个PID我们可以知道是哪一个进程启动了MSI安装
2.解析msiexec.exe的命令行,在某些安装过程中(例如双击MSI文件)根据上述流程找到的客户端进程PID还是一个msiexec,此时可以通过解析命令行的方式得知来源于哪一个MSI文件
3.在某些安装过程中,新生成的进程会设置 _PROCESS_HISTORY环境变量来记录原始的进程。
图5是本发明所述方法应用于文件下载后的安装过程或者进程启动一个服务完成安装的过程的流程示意图。
实际应用中,有些安装包会释放出(或者下载)一些可执行文件,再会调用这个可执行文件执行真正的安装;安装进程可能启动一个服务来执行一些操作,服务可能写出文件。
图5所述的方法流程针对这两个过程,给出了对应的实现方式:
SX1:通过内核钩子检测是否存在当前进程写出文件,如果是,则进入下一步;
SX2:获取所述当前进程的SessionID;判断所述SessionID是否等于0;如果是,则进入步骤SXA;否则,进入步骤SXB;
进一步参见图6,所述步骤SXA进一步判断所述当前进程是否存在子进程,如果是,则判定所述写出文件的来源为所述当前进程;
如果否,则在共享内存中查找启动进程;
在所述步骤SXB中,获取所述当前进程创建时间,并获取父进程 PID,判断所述父进程是否存在除所述当前进程之外的其他子进程,如果所述当前进程与所述其他子进程均不在所述父进程之后创建,则判定所述写出文件的来源为所述当前进程;
否则,设置所述当前进程为子进程,并设置所述父进程为当前进程,返回步骤SX2。
具体而言,其中,在共享内存中查找启动进程,具体包括:加载进程sechost.dll,通过Hook函数获取Openservice和 StartServiceW,并创建对应表,在所述对应表中对应存储了每个进程及其启动的服务。
其中,在共享内存中查找启动进程,进一步包括:查找当前文件下载服务或者进程启动服务对应的启动进程,如果找到,则判定所述文件下载服务或者进程启动服务安全。
关于释放出文件(或者下载新文件)后进行的安装,通常来说,释放出来或者刚刚下载的文件,都需要当前进程通过CreateProcess 类的函数进行加载运行,通过向上回溯父进程即可找到。不过向上回溯父进程的过程中,要判断什么时候回溯已经到头了,一般来说,源头进程无非是命令行cmd.exe、资源管理器、各种软件管家,这是一个有限的表。
关于启动服务进行安装,有些进程会启动一个服务完成安装过程,当这个服务写出一个文件时,将无法知道这个服务和安装进程之间的关系,这是需要在安装进程中HOOK服务相关的函数: OpenService、StartService、CloseServiceHandle和 NdrCl.entCall2,记录安装进程何时启动了什么服务,即可知道真正的安装来源。
本实施例所述的技术方案,针对新产生可执行文件的来源以及判断文件的安全性非常有用。
Windows更新很多时候会从svchost.exe进程写出可执行文件,而很多攻击手段正是通过攻击此进程开始的,通常情况下不能认为从svchost写出的可执行文件为安全,需要本发明中更精准的手段。
在安装软件过程中也是如此,譬如说从正规渠道购买的软件安装盘,然后双击安装盘中的setup.exe进行安装,如果在安装过程中能够精准的找到新产生的可执行文件都是setup.exe,那么我们可以认为这些文件都是安全的。
具体来说,此技术在白盾中广泛应用,白盾的核心是要建立一个白名单库,只有白名单中的可执行文件才是可以信任的,除此之外的文件,要么是不能运行,要么在运行的时候做好日志。如何判断一个可执行文件的可信任度,可执行文件的来源是一个重要的参考。来源于可信任源的安装包、MSI包、CAB更新包、MSU更新包等等的文件,均认为可信任。
参见图7,是白盾服务器的系统构成图。所述白盾服务器系统包括多个白盾客户端,所述白盾客户端连接安全控制器,并且包括存储器,在所述存储器上存储有计算机程序,通过所述客户端执行所述程序,用于实现图1-6所述的方法。在白盾客户端中,有一个内核模块,监控着系统中是否生成了新的可执行文件,在有可执行文件生成时,将可执行文件名、进程PID、线程TID传给用户控件的服务。服务进程根据上述流程进行溯源,将溯源结果以及可执行文件的签名信息等一起送给服务器,服务器再综合各种信息来判断文件的可信任度。溯源后,文件可信任度的判断准确度大幅提高,大大减少了人工干预的工作量。
总而言之,本发明在对应的环境中,通过查找系统服务中的线程来确定是否为windows更新;通过系统事件日志来关联安装进程和 msiexec进程;通过_PROCESS_HISTORY环境变量来溯源;通过 HOOK服务相关的函数来跟踪服务创建的情况;这几种手段在Windows系统更新过程、MSI文件的安装过程以及文件下载后的安装过程或者进程启动一个服务完成安装的过程中均可以择一使用或者组合任意几种使用。
在每一种实现环境中,可以通过检测CAB包、MSU包的下载情况来处理windows更新,如果确认CAB包、MSU有签名时,可以利用解包的办法抽取这些包内的所有文件,然后抽取出其中所有可执行文件的特征信息。在后续这些可执行文件被更新进程(或者 svchost进程)写出时,如果溯源结果还是svchost而无法确认是否更新,则可以和解包后的结果对比。当然有些更新或许不通过CAB 和MSU方式,因此两者结合效果会更好。
MSI安装包也有类似的改进方案,在msiexec进程加载MSI文件时,也是抽取出MSI文件中的所有可执行文件,如果在msiserver 进程写出可执行文件时,无法确认是哪一个安装进程或者MSI包,那也可以和解包后结果对比,两者结合效果更好。
本发明出现的英文名称,均以本领域系统函数库或者官方文档解释为准,包括svchost、msiexec、wuauclt、I_QueryTagInformation、WUAUSERV、MSIEXEC、zwqueryinformationprocess、Peb、MSISERVER、Process parameters、Process History、virtualqueryex、SessionID、 sechost.dll、Openservice、StartServiceW、querytaginformat.on 等参数,均可以通过win32相关的函数库或者官方文档得到,其为本领域技术人员所熟知的windows编程参数。例如,通过https://wj32.org、https:// docs.microsoft.com等即可查询对应参数或者函数的含义或者通过常规搜索引擎即可获知。
例如,查询″_PROCESS_HISTORY″,即可获得如下解释:Process History is acollection of past-periods data about some process.It is used in processanalysis and serves as the basis for planning and forecasting.Process historyis a kind of report.ngtools used to summarize the work done and developcorrective actions to be used in future processes and activities. Processhistory includes a range of events and circumstances that have happened andthen have been collected and recorded.
查询Wuauserv,则解释如下:Wuauserv is a feature for WindowsUpdatethatis already pre-installed in every Windows OS.It actually doesn′treally serve much of a purpose,although it helps in some functions when itcomes to Windows Updates.Without it,you may get an error message wheneveryour Windows OS is trying to have an automat.c update.is a feature forWindows Update that is already pre-installed in every Windows OS.It actuallydoesn′treally serve much of a purpose,although it helps in some funct.onswhenitcomestoWindows Updates.Withoutit,youmay get an error message wheneveryour Windows OS is trying to have an automatic update.
而在微软官方文档中,可知[ZwQueryInformationProcess may be altered orunavailablein future versions of Windows. Appl.cations should use thealternatefunct.ons l.sted in this top.c.]https://docs.microsoft.com/en-us/ windows/win32/procthread/zwqueryinformationprocess。
诸如此类,在本发明中不再一一赘述。
以上实施例可以相互组合,以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换。
Claims (10)
1.一种新生成可执行文件的安全追溯方法,所述方法应用于Windows系统更新过程中,该方法包括:
步骤SW1:在所述更新过程启动后,探测是否存在进程svchost.exe;
如果存在,则进入步骤SW2;否则,进入步骤SW3;
步骤SW2:判断所述进程svchost.exe是否存在至少一个windows更新线程,如果是,进入步骤SWA;否则,进入步骤SWB;
步骤SW3:判断是否存在更新进程wuauclt.exe,如果存在,则进入步骤SWC,否则,进入步骤SWD;
其特征在于:
步骤SWA:如果所述windows更新线程写出可执行文件,则判定所述可执行文件安全;否则,进入步骤SW3;
步骤SWB:退出;
步骤SWC:打开更新进程wuauclt.exe,调用I_QueryTagInformation获得该进程对应的至少一个线程对应的至少一个服务;如果若所述服务包含WUAUSERV,则判断Windows更新了安全的可执行文件;
步骤SWD:退出。
2.一种新生成可执行文件的安全追溯方法,所述方法应用于MSI文件的安装过程中,该方法包括:
SM1:通过内核钩子检测是否存在MSIEXEC进程写出文件,如果是,则进入下一步;
SM2:打开所述MSIEXEC进程,并通过zwqueryinformationprocess函数查询该进程的Peb的地址;
SM3:根据所述PEB地址,读取进程参数;并通过进程参数,获得进程的命令行;
SM4:解析所述命令行,判断该进程是否为MSISERVER;
如果是,则进入步骤SMA;否则,进入步骤SMB;
其特征在于:
在所述步骤SMA中,读取该进程的创建时间,解析进程对应的事件源对应的事件ID;基于所述事件ID解析事件内容,得到客户进程的PID;判断是否能够得到该客户进程的命令行,如果是,则判定所述MSI文件的安装过程生成的可执行文件安全;
在所述步骤SMB中,进一步判断所述进程是否在处理所述MSI文件的安装包,如果是,则判定所述MSI文件的安装过程生成的可执行文件安全;否则,获取此进程的环境变量地址以及此进程的环境变量,判断所述环境变量中是否存在Process History参数;如果不存在,则判断当前进程为源进程。
3.如权利要求2所述的方法,其中,步骤SMA中,判断是否能够得到该客户进程的命令行,具体包括:
判断是否能够通过zwqueryinformationprocess函数查询到该客户进程的Peb的地址。
4.如权利要求2所述的方法,其中,步骤SMB中,如果所述进程不是在处理所述MSI文件的安装包,则根据Process parameters中的environment变量,获取此进程的环境变量地址,调用virtualqueryex函数获取所述变量地址的内存范围,从而读取所诉进程的环境变量。
5.如权利要求4所述的方法,其中,步骤SM8中,如果所述环境变量中存在ProcessHistory参数,则判定所述MSI文件的安装过程中产生的新执行文件来源于环境变量Process History参数。
6.一种新生成可执行文件的安全追溯方法,所述方法应用于文件下载后的安装过程或者进程启动一个服务完成安装的过程中,该方法包括:
SX1:通过内核钩子检测是否存在当前进程写出文件,如果是,则进入下一步;
SX2:获取所述当前进程的SessionID;判断所述SessionID是否等于0;如果是,则进入步骤SXA;否则,进入步骤SXB;
其特征在于:
在所述步骤SXA中,进一步判断所述当前进程是否存在子进程,如果是,则判定所述写出文件的来源为所述当前进程;如果否,则在共享内存中查找启动进程;
在所述步骤SXB中,获取所述当前进程创建时间,并获取父进程PID,判断所述父进程是否存在除所述当前进程之外的其他子进程,如果所述当前进程与所述其他子进程均不在所述父进程之后创建,则判定所述写出文件的来源为所述当前进程;
否则,设置所述当前进程为子进程,并设置所述父进程为当前进程,返回步骤SX2。
7.如权利要求6所述的方法,其中,在共享内存中查找启动进程,具体包括:加载进程sechost.dll,通过Hook函数获取Openservice和StartServiceW,并创建对应表,在所述对应表中对应存储了每个进程及其启动的服务。
8.如权利要求7所述的方法,其中,在共享内存中查找启动进程,进一步包括:查找当前文件下载服务或者进程启动服务对应的启动进程,如果找到,则判定所述文件下载服务或者进程启动服务安全。
9.一种计算机可读存储介质,其上存储有计算机可执行指令代码,通过处理器执行所述指令代码,用于实现权利要求1-8任一项所述的方法。
10.一种白盾服务器系统,所述白盾服务器系统包括多个白盾客户端,所述白盾客户端连接安全控制器,并且包括存储器,在所述存储器上存储有计算机程序,通过所述客户端执行所述程序,用于实现权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911402054.XA CN111177665B (zh) | 2019-12-27 | 2019-12-27 | 一种新生成可执行文件的安全追溯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911402054.XA CN111177665B (zh) | 2019-12-27 | 2019-12-27 | 一种新生成可执行文件的安全追溯方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177665A true CN111177665A (zh) | 2020-05-19 |
CN111177665B CN111177665B (zh) | 2022-02-11 |
Family
ID=70650520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911402054.XA Active CN111177665B (zh) | 2019-12-27 | 2019-12-27 | 一种新生成可执行文件的安全追溯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177665B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084091A (zh) * | 2020-09-09 | 2020-12-15 | 北京升鑫网络科技有限公司 | 一种系统行为审计方法、装置、终端及存储介质 |
CN112597492A (zh) * | 2020-12-24 | 2021-04-02 | 浙大网新科技股份有限公司 | 一种基于Windows内核的二进制可执行文件更改监测方法 |
CN113326520A (zh) * | 2021-06-11 | 2021-08-31 | 北京天融信网络安全技术有限公司 | 访问控制过程中确定主体的方法、装置、设备和存储介质 |
CN114707150A (zh) * | 2022-03-21 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种恶意代码检测方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100293615A1 (en) * | 2007-10-15 | 2010-11-18 | Beijing Rising International Software Co., Ltd. | Method and apparatus for detecting the malicious behavior of computer program |
CN102932329A (zh) * | 2012-09-26 | 2013-02-13 | 北京奇虎科技有限公司 | 一种对程序的行为进行拦截的方法、装置和客户端设备 |
CN104572394A (zh) * | 2013-10-29 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 进程监控方法及装置 |
-
2019
- 2019-12-27 CN CN201911402054.XA patent/CN111177665B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100293615A1 (en) * | 2007-10-15 | 2010-11-18 | Beijing Rising International Software Co., Ltd. | Method and apparatus for detecting the malicious behavior of computer program |
CN102932329A (zh) * | 2012-09-26 | 2013-02-13 | 北京奇虎科技有限公司 | 一种对程序的行为进行拦截的方法、装置和客户端设备 |
CN104572394A (zh) * | 2013-10-29 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 进程监控方法及装置 |
Non-Patent Citations (1)
Title |
---|
胡莲等: "控制台应用程序的输出重定向技术及应用", 《计算机应用》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084091A (zh) * | 2020-09-09 | 2020-12-15 | 北京升鑫网络科技有限公司 | 一种系统行为审计方法、装置、终端及存储介质 |
CN112597492A (zh) * | 2020-12-24 | 2021-04-02 | 浙大网新科技股份有限公司 | 一种基于Windows内核的二进制可执行文件更改监测方法 |
CN112597492B (zh) * | 2020-12-24 | 2023-09-19 | 浙大网新科技股份有限公司 | 一种基于Windows内核的二进制可执行文件更改监测方法 |
CN113326520A (zh) * | 2021-06-11 | 2021-08-31 | 北京天融信网络安全技术有限公司 | 访问控制过程中确定主体的方法、装置、设备和存储介质 |
CN113326520B (zh) * | 2021-06-11 | 2023-07-04 | 北京天融信网络安全技术有限公司 | 访问控制过程中确定主体的方法、装置、设备和存储介质 |
CN114707150A (zh) * | 2022-03-21 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种恶意代码检测方法、装置、电子设备和存储介质 |
CN114707150B (zh) * | 2022-03-21 | 2023-05-09 | 安芯网盾(北京)科技有限公司 | 一种恶意代码检测方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111177665B (zh) | 2022-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177665B (zh) | 一种新生成可执行文件的安全追溯方法 | |
Alazab et al. | Towards understanding malware behaviour by the extraction of API calls | |
RU2589862C1 (ru) | Способ обнаружения вредоносного кода в оперативной памяти | |
US8898775B2 (en) | Method and apparatus for detecting the malicious behavior of computer program | |
US7571482B2 (en) | Automated rootkit detector | |
Vidas et al. | A5: Automated analysis of adversarial android applications | |
CA2856268C (en) | Methods of detection of software exploitation | |
KR101647487B1 (ko) | 패치파일 분석시스템과 분석방법 | |
JP5963008B2 (ja) | コンピュータシステムの分析方法および装置 | |
US10237285B2 (en) | Method and apparatus for detecting macro viruses | |
US9177149B2 (en) | Method of detecting malware in an operating system kernel | |
CN106897607B (zh) | 一种应用程序监控方法及装置 | |
EP2441026A1 (en) | Anti-virus trusted files database | |
CN112084497A (zh) | 嵌入式Linux系统恶意程序检测方法及装置 | |
KR101972825B1 (ko) | 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램 | |
NL2028230B1 (en) | Methods and systems for preventing malicious activity in a computer system | |
JP6000465B2 (ja) | プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法 | |
Uroz et al. | Characteristics and detectability of Windows auto-start extensibility points in memory forensics | |
US20180341770A1 (en) | Anomaly detection method and anomaly detection apparatus | |
TWI656453B (zh) | 檢測系統及檢測方法 | |
US9613212B2 (en) | Execution profile assembly using branch records | |
CN113176926B (zh) | 一种基于虚拟机自省技术的api动态监控方法及系统 | |
EP4160455A1 (en) | Behavior analysis based on finite-state machine for malware detection | |
CN106372508B (zh) | 恶意文档的处理方法及装置 | |
US20200142689A1 (en) | System And Methods for Patch Management |
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 |