CN101393591B - 一种发现未知usb病毒的方法及*** - Google Patents
一种发现未知usb病毒的方法及*** Download PDFInfo
- Publication number
- CN101393591B CN101393591B CN2008102249422A CN200810224942A CN101393591B CN 101393591 B CN101393591 B CN 101393591B CN 2008102249422 A CN2008102249422 A CN 2008102249422A CN 200810224942 A CN200810224942 A CN 200810224942A CN 101393591 B CN101393591 B CN 101393591B
- Authority
- CN
- China
- Prior art keywords
- file
- operating system
- dynamic link
- link library
- virus
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种发现未知USB病毒的方法和***,所述方法包括:步骤1,创建动态链接库文件;在执行所述动态链接库文件查询驱动盘的类型时,如果被查询的驱动盘不存在,则回复被查询的驱动盘的类型为可移动,在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不存在,则将所述文件复制到指定路径下;步骤2,将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行驱动盘类型的查询和病毒文件的复制。本发明能够无误报地发现未知USB病毒并获取该USB病毒的样本。
Description
技术领域
本发明涉及计算机安全技术领域,特别涉及一种发现未知USB病毒的方法和***。
背景技术
当前,计算机已经广泛深入到人们日常生活中,成为人们经常使用的工具,而现在的绝大多数个人计算机都带有USB接口。常见的可移动存储设备,如U盘、移动硬盘、数码相机、数码摄像机、MP3、智能手机等,多是通过USB接口与计算机连接,从而使得计算机病毒有机会借助带有USB接口的设备传播到其他计算机。
近年来,USB病毒非常流行,曾经在互联网上传播比较严重的病毒,如“熊猫烧香”、“U盘破坏者”、“U盘寄生虫”等,均主要借助USB设备感染计算机,USB设备已经成为病毒传播的最重要途径之一。
利用USB设备传播病毒具备两点优势。第一,不依赖于操作***漏洞:USB病毒利用的技术不属于漏洞,而是操作***为了提高易用性而带有的自动运行功能,因而USB病毒程序代码编写完成后基本无需经常更新,而且编写难度很小;第二,不依赖于计算机网络,USB病毒可以在没有接入网络的计算机之间传播,同时,还能够在内网和外网之间传播,从而带来对内网涉密***漏的严重风险。
USB病毒在传播层面上不同于其他类型的病毒,但在行为层面上与其他类型的病毒无异,在危害层面则可以更大。USB病毒也可以构建僵尸网络(Botnet)、实施分布式拒绝服务攻击(DDos)、发送垃圾邮件(Spam)、窃取敏感信息。对于窃取物理隔离专网和未接入互联网的主机上的敏感信息,USB病毒更具危害。
当前主流的USB病毒的传播步骤,如图1所示。
步骤S101,将待感染盘符初始化为A盘。
步骤S102,调用***中GetDriveType函数,以获得待感染驱动盘的类型,判断待感染驱动盘是否为移动盘,如果是,则执行步骤S103,否则,执行步骤S104。
对于移动盘,GetDriveType函数返回DRIVE_REMOVABLE(可移动);对于固定盘,GetDriveType函数返回DRIVE_FIXED(固定);对于光驱,GetDriveType函数返回DRIVE_CDROM(光驱)。USB病毒从计算机的驱动盘中发现移动盘。
步骤S103,调用***中CopyFile函数或者依次调用CreateFile函数和WriteFile函数,将病毒的可执行文件复制到待感染驱动盘。
调用***中CopyFile函数或者依次调用CreateFile函数和WriteFile函数将病毒的可执行文件Y.exe复制到待感染驱动盘下。同时,病毒在待感染驱动盘下使用CreateFile函数创建文件autorun.inf,然后调用WriteFile函数向文件autorun.inf中写入自动运行必要的命令。典型的文件autorun.inf内容如下
[autorun]
action=open
shellexecute=y.exe
步骤S104,取下一个盘符作为待感染盘符。
步骤S105,判断待感染盘符是否小于等于Z,如果是,则执行步骤S102,否则,执行步骤S106。
步骤S106,休眠一段时间,执行步骤S101。
通过上述方法,USB病毒能够发现可移动盘,并对其进行感染。
虽然USB病毒数量多且危害大,但是,现在对于USB病毒的防护手段还很不完善。目前存在以下三种对抗USB病毒的方法。
第一种为同名免疫法。在尚未染毒的USB盘中提前创建名为autorun.inf的文件夹,当USB病毒试图创建同名的autorun.inf文件时,会因为与autorun.inf文件夹同名而创建失败。Windows操作***自身机制保证了在同一目录下不能有同名的文件和文件夹共存;
第二种为特征码查杀法。针对已知USB病毒,提取其文件特征码,将这些特征码每隔一段时间更新至用户主机上安装的反病毒软件,用来查杀这些已知特征的病毒,其中,更新频率由一般用户个性化设置。
第三种为关闭自动运行。配置Windows***,禁用其全部或部分自动运行功能,使得在本***上即使打开已感染病毒的USB设备,Windows***也不会自动执行USB盘内的病毒程序。
第一种方法能够免疫USB盘,使得病毒无法成功写入autorun.inf文件,从而使该USB盘即使被成功写入了病毒文件也无法在其他计算机上自动运行,但是该方法无法保护第三方接入的未被免疫的USB盘,也无法抵御第三方接入的USB盘上已有病毒的运行,更为严重的是USB病毒可以先删除待感染USB盘中名为autorun.inf的文件或文件夹,然后再将自身对应的autorun.inf文件复制到目标USB盘中,从而使得免疫失败。第二种方法在病毒库更新时间上存在严重的滞后性,使得即便是已知病毒也难以有效防御。第三种方法无法防止操作***上已有病毒感染新***的USB盘。此外,现有技术中的上述三种方法均无法发现未知USB病毒,也无法获得相应的病毒样本。
发明内容
为了解决上述问题,本发明提出了一种发现未知USB病毒的方法及***,本发明能够无误报地发现未知USB病毒并获取该USB病毒的样本。
本发明公开了一种发现未知USB病毒的方法,包括:
步骤1,创建动态链接库文件;在执行所述动态链接库文件查询驱动盘的类型时,判断被查询的驱动盘是否存在,若是则返回所述被查询的驱动盘的类型;否则回复被查询的驱动盘的类型为可移动;在执行所述动态链接库文件复制文件时,判断复制文件的目标路径是否存在,若是,则将文件复制到所述目标路径下;否则将所述文件复制到指定路径下;
步骤2,将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行驱动盘的类型的查询和病毒文件的复制。
所述步骤1中在执行所述动态链接库文件查询驱动盘的类型时,如果被查询的驱动盘不存在,则回复被查询的驱动盘的类型为可移动进一步包括:
步骤21,调用所述操作***中用于获得驱动盘类型的函数以获得被查询驱动盘的类型。
所述操作***为Windows操作***,
所述步骤21中操作***中用于获得驱动盘类型的函数为GetDriveType函数。
所述步骤1中在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不存在,则将所述文件复制到指定路径下进一步为:
步骤41,判断所述复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,执行步骤42,否则,执行步骤42;
步骤42,调用所述操作***中的用于复制文件的函数,将所述文件复制到所述目标路径下。
所述操作***为Windows操作***,
所述步骤42中操作***中的用于复制文件的函数为CopyFile函数。
所述步骤1还包括,在执行所述动态链接库文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下;
所述步骤2还包括,进行所述将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行文件的创建。
所述步骤1中在执行所述动态链接库文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下进一步为:
步骤71,判断所述创建文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,执行步骤72,否则,执行步骤72;
步骤72,调用所述操作***中用于创建文件的函数,在所述目标路径下创建文件。
所述操作***为Windows操作***,
所述步骤72中操作***中用于创建文件的函数为CreateFile函数或NtCreateFile函数。
所述步骤2进一步为:
步骤91,创建一进程状态表,用以记录所述操作***中正在运行的每个进程是否已加载所述动态链接库文件;
步骤92,对操作***中正在运行的进程进行枚举,并更新所述进程状态表;
步骤93,向所述进程状态表中未加载所述动态链接库文件的进程中加载所述动态链接库文件。
所述进程状态表中每个表项对应一个所述操作***中正在运行的进程,所述表项包括对应进程的进程标识和对应进程的挂接状态;
所述挂接状态包括已挂接和未挂接,所述已挂接表示所述表项对应进程已加载所述动态链接库文件,所述未挂接表示所述表项对应进程未加载所述动态链接库文件。
所述进程标识包括进程ID、进程句柄和进程全路径。
所述步骤92中更新所述进程状态表进一步为:
步骤121,对于枚举到的在所述进程状态表中没有对应表项的进程,在所述进程状态表中为所述进程创建对应表项,将所述表项中的挂接状态初始化为未挂接;
步骤122,将所述进程状态表中同所有枚举到的进程都不对应的表项删除。
所述步骤93进一步为:
步骤131,向所述进程状态表中挂接状态为未挂接的表项对应的进程中加载所述动态链接库文件,加载后将所述表项的挂接状态更改为已挂接。
本发明还公开了一种发现未知USB病毒的***,包括:
动态链接库模块,用于创建动态链接库文件,在执行所述动态链接库文件查询驱动盘的类型时,判断被查询的驱动盘是否存在,若是则返回所述被查询的驱动盘的类型;否则回复被查询的驱动盘的类型为可移动,在执行所述动态链接库文件复制文件时,判断复制文件的目标路径是否存在,若是,则将文件复制到所述目标路径下;否则将所述文件复制到指定路径下;
文件注入模块,用于将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行驱动盘的类型的查询和病毒文件的复制。
所述动态链接库模块在执行所述动态链接库文件查询驱动盘的类型时,进一步用于调用所述操作***用于获得驱动盘类型的函数以获得被查询驱动盘的类型。
所述操作***为Windows操作***,
所述操作***中用于获得驱动盘类型的函数为GetDriveType函数。
所述动态链接库模块在执行所述动态链接库文件复制文件时,进一步用于判断所述复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,并调用所述操作***中的用于复制文件的函数将所述文件复制到所述目标路径下;否则,直接调用所述操作***中的用于复制文件的函数将所述文件复制到目标路径下。
所述操作***为Windows操作***,
所述操作***中的用于复制文件的函数为CopyFile函数。
所述动态链接库模块还用于在执行所述动态链接库文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下;
所述文件注入模块还用于进行所述将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行文件的创建。
所述动态链接库模块在执行所述动态链接库文件创建文件时,进一步用于判断所述创建文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,并调用所述操作***中的创建文件的函数在所述目标路径下创建文件;否则,直接调用所述操作***中的创建文件的函数在所述目标路径下创建文件。
所述操作***为Windows操作***,
所述操作***中用于创建文件的函数为CreateFile函数或NtCreateFile函数。
所述文件注入模块进一步用于创建一进程状态表,用以记录所述操作***中正在运行的每个进程是否已加载所述动态链接库文件;对操作***中正在运行的进程进行枚举,并更新所述进程状态表;向所述进程状态表中未加载所述动态链接库文件的进程中加载所述动态链接库文件。
所述进程状态表中每个表项对应一个所述操作***中正在运行的进程,所述表项包括对应进程的进程标识和对应进程的挂接状态;
所述挂接状态包括已挂接和未挂接,所述已挂接表示所述表项对应进程已加载所述动态链接库文件,所述未挂接表示所述表项对应进程未加载所述动态链接库文件。
所述进程标识包括进程ID、进程句柄和进程全路径。
所述文件注入模块在更新所述进程状态表时进一步用于对于枚举到的在所述进程状态表中没有对应表项的进程,在所述进程状态表中为所述进程创建对应表项,将所述表项中的挂接状态初始化为未挂接;将所述进程状态表中同所有枚举到的进程都不对应的表项删除。
所述文件注入模块在向所述进程状态表中未加载所述动态链接库文件的进程中加载所述动态链接库文件时进一步用于向所述进程状态表中挂接状态为未挂接的表项对应的进程中加载所述动态链接库文件,加载后将所述表项的挂接状态更改为已挂接。
本发明的有意效果在于,通过挂接***函数虚拟出一个USB设备,并诱导USB病毒感染该虚拟的USB设备,从而获得USB病毒的样本;因为本发明实现同文件特征无关,无需硬件支持,无需频繁升级,便可发现未知USB病毒,因而应用本发明获得USB病毒样本成本低,效率高;因为向不存在的驱动盘写入文件的行为是由恶意代码引起,本法明基于该特点识别病毒,避免了对于非病毒的误报。
附图说明
图1是USB病毒的工作流程图;
图2是本发明发现未知USB病毒的方法流程图;
图3是本发明DLL文件中函数NewGetDriveType的方法流程图;
图4是本发明DLL文件中函数NewCopyFile的方法流程图;
图5是本发明DLL文件中函数NewCreateFile的方法流程图;
图6是本发明中将DLL文件注入到进程的方法流程图;
图7是本发明发现未知USB病毒的***结构图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
针对USB病毒传播原理,本发明的总体思路是利用挂接***函数虚拟出一个USB盘,并诱导USB病毒感染该虚拟的USB,因为向一个实际不存在的USB盘中复制文件是异常操作,所以当检测到该异常操作时,可以将复制过程重定向到一个指定目录中,从而可以获得了该USB病毒的样本。
本发明的方法如图2所示。
步骤S201,创建DLL(动态链接库)文件。
在执行所述DLL文件查询驱动盘的类型时,如果被查询的驱动盘不存在,则回复被查询的驱动盘的类型为可移动;在执行DLL文件复制文件时,如果复制文件的目标路径不存在,则将文件复制到指定路径下。
步骤S202,将DLL文件注入到操作***中正在运行的进程中,使USB病毒通过所述DLL文件进行驱动盘的类型的查询和病毒文件的复制。
具体实施方式的实现环境为Windows的Win32操作***。
在创建DLL文件前,下载用于挂接***函数的开源库Detours库并安装。
DLL文件中包含三个函数分别为NewGetDriveType、NewCopyFile和NewCreateFile,所述三个函数分别对应API函数GetDriveType、CopyFile和CreateFile,当DLL文件被加载到进程中后,将挂接该进程的GetDriveType、CopyFile和CreateFile共三个API函数。
所述挂接为改变操作***中的对应函数的执行流程。
DLL中的三个函数的具体实现方法如下所示。
函数NewGetDriveType中的方法流程图如图3所示。
步骤S301,函数NewGetDriveType读取盘符参数,以盘符参数为参数调用API函数GetDriveType。
步骤S302,判断盘符参数对应的驱动盘是否存在,如果存在,则执行步骤S303,否则执行步骤S304。
步骤S303,将API函数GetDriveType的返回值做为函数NewGetDriveType的返回值。
步骤S304,函数NewGetDriveType返回值为DRIVE_REMOVABLE(可移动),通知调用者盘符参数对应的驱动盘的类型为可移动。
通过上述方法,由于进行挂接后,使得病毒调用GetDriveType(X:\)后,其中X为所述盘符参数,实际执行的是函数NewGetDriveType,所以虽然X盘不存在,但病毒却认为X盘为移动盘,从而诱导了病毒感染该X盘。
函数NewGetDriveType的一具体实施例如下。
void WINAPI NewGetDriveType(盘符)
{
调用API函数GetDriveType获得盘符对应驱动盘的类型;
如果API函数GetDriveType返回DRIVE_NO_ROOT_DIR,则返回DRIVE_REMOVABLE,否则返回API函数GetDriveType的返回值。
}
函数NewCopyFile中的方法流程图如图4所示。
步骤S401,判断复制文件的目标路径是否存在,如果不存在,执行步骤S402,否则,执行步骤S403。
步骤S402,将目标路径重定向为指定路径。
步骤S403,调用API函数CopyFile,将文件复制到目标路径下。
当进程发现一张类型为可移动的驱动盘后,接下来会调用CopyFile,将自身可执行文件复制到该驱动盘。在本发明中,进程实际调用的是函数NewCopyFile,该函数将目标路径X:\Y.exe,其中目标文件名为Y.exe,盘符为X,改写为一个指定路径,例如,C:\Windows\MalwareSamples\进程全路径\Y.exe,进而病毒被复制到该指定路径下。使得病毒在试图将自身可执行文件复制到USB盘的根目录时,将该可执行文件复制到了指定的用于收集病毒样本的特定目录下,从而收集到未知USB病毒样本。
函数NewCopyFile的一具体实施例如下。
void WINAPI NewCopyFile(源路径,目标路径,覆盖方式)
{
目标路径如果为不存在,将目标路径重定向到指定路径;
调用API函数CopyFile。
}
函数NewCreateFile中的方法流程图如图5所示。
步骤S501,判断创建文件的目标路径是否存在,如果不存在,执行步骤S502,否则,执行步骤S503。
步骤S502,将目标路径重定向为指定路径。
步骤S503,调用API函数CreateFile,将文件创建到目标路径下。
函数NewCreateFile的一具体实施例如下。
void WINAPI NewCreateFile(目标路径,其他参数)
{
目标路径如果为不存在,将目标路径重定向到指定路径;
调用API函数CreateFile。
}
DLL文件还包括函数DllMain,调用Detours库提供的函数DetourAttach、DetourTransactionBegin、DetourUpdateThread、DetourTransactionCommit、DetourRestoreAfterWith、DetourDetach,使DLL文件被进程加载时开始挂接***函数,在DLL文件被进程卸载时终止该挂接。
将DLL文件注入到进程的方法如图6所示。
步骤S601,提升权限为Debug级别,以能够有权限枚举***所有进程,并挂接***函数。
提升权限的方法是以SeDebugPrivilege为主要参数调用API函数OpenProcessToken,然后依次调用API函数LookupPrivilegeValue和API函数AdjustTokenPrivileges打开本进程的Debug权限,上述三个API函数位于Windows的Advapi32库中;
步骤S602,创建一进程状态表,为***中正在运行的每个进程其分配一个表项。每个表项由4个字段构成,包括:进程ID、进程句柄、进程全路径、挂接状态。挂接状态包括已挂接和未挂接两种状态。已挂接表示表项对应进程已加载DLL文件,所述未挂接表示表项对应进程未加载DLL文件。
步骤603,枚举***中运行的所有进程,更新进程状态表。
调用API函数CreateToolhelp32Snapshot、Process32First和Process32Next API实现,所述三个API函数的声明文件为Tlhelp32.h,在Kernel32库中实现。所述三个API在Windows2000以后的***,WindowsXP/2003/Vista/2008,中才能使用,Windows95/98/Me不能使用。通过枚举进程获得所有进程的进程标识,进程标识由进程ID、进程句柄和进程完整路径三部分构成。
对于获得的每个进程标识,在进程状态表中查找,如果进程状态表中不存在,则为该进程在进程状态表中创建一个对应表项,将进程ID、进程句柄、进程全路径填充进去,挂接状态初始化为未挂接;如果该进程在进程状态表已经存在,则不进行任何操作;并且将进程状态表的同所有枚举到的进程都不匹配的表项删除。
步骤S604,从进程状态表中读取一项挂接状态为未挂接的表项,调用OpenProcess打开进程,参数为该表项的进程句柄,调用VirtualAllocEx在目标进程虚拟地址空间中分配一块内存,内存大小等于DLL文件的名称的长度,调用WriteProcessMemory将DLL文件的名称写入目标进程,调用GetProcAddress获得LoadLibraryW的API的地址,调用CreateRemoteThread在目标进程创建一个远程线程,线程地址为LoadLibraryW的地址,参数为DLL文件的名称,从而使得DLL文件在目标进程中加载并执行,并将表项中的挂接状态更改为已挂接;循环执行上述过程,直到进程状态表中所有项挂接状态都已置为已挂接。
步骤605:调用***函数Sleep休眠一段时间,执行步骤S603。
通过上述方法定期地发现新的进程,将DLL文件注入到新进程中,DLL文件对新进程的***函数GetDriveType、CopyFile、CreateFile进行挂接,使其具备新的功能,并且定期删除过期表项,防止内存泄漏和资源浪费。这样,当***中某个进程为USB病毒进程时,该进程在查询一个本不存在的盘的类型时,将会获得一个虚假的返回值,告知该进程查询的驱动盘的类型为可移动,然后该进程试图将自身可执行文件复制到该不存在的驱动盘中,而通过本发明实际上复制到了指定目录内,从而获得了未知USB病毒的样本,发现了未知USB病毒。
在上述实施例中,也可以将CreateFile替换为NtCreateFile。
本发明的***结构如图7所示。本发明***包括:
动态链接库模块701,用于创建DLL文件,在执行该DLL文件查询驱动盘的类型时,如果被查询的驱动盘不存在,则回复被查询的驱动盘的类型为可移动,在执行该DLL文件复制文件时,如果复制文件的目标路径不存在,则将该文件复制到指定路径下,在执行该DLL文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下。
创建的DLL文件用于挂接操作***函数。在具体实施方式中操作***为Windows操作***。
动态链接库模块701在执行DLL文件查询驱动盘的类型时,进一步用于调用操作***的GetDriveType函数以获得被查询驱动盘的类型;判断被查询驱动盘是否存在,如果存在,则回复获得的被查询驱动盘的类型;否则,回复被查询驱动盘的类型为可移动。
动态链接库模块701在执行所述DLL文件复制文件时,进一步用于判断复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为指定路径,并调用所述操作***中的CopyFile函数将所述文件复制到目标路径下;否则,直接调用操作***中的CopyFile函数将文件复制到目标路径下。
动态链接库模块701在执行所述DLL文件创建文件时,进一步用于判断创建文件的目标路径是否不存在,如果是,则将目标路径重定向为指定路径,并调用操作***中的CreateFile函数或NtCreateFile函数在目标路径下创建文件;否则,直接调用操作***中的CreateFile函数或NtCreateFile函数在目标路径下创建文件。
文件注入模块702,用于将该DLL文件注入到操作***中正在运行的进程中,使USB病毒通过该DLL文件进行驱动盘的类型的查询、病毒文件的复制和文件的创建。
文件注入模块702进一步用于创建一进程状态表,用以记录操作***中正在运行的每个进程是否已加载该DLL文件;对操作***中正在运行的进程进行枚举,并更新进程状态表;向所述进程状态表中未加载该DLL文件的进程中加载所述DLL文件。
进程状态表中每个表项对应一个操作***中正在运行的进程,表项包括对应进程的进程标识和对应进程的挂接状态;挂接状态包括已挂接和未挂接,已挂接表示该表项对应进程已加载该DLL文件,未挂接表示该表项对应进程未加载该DLL文件。
其中,进程标识包括进程ID、进程句柄和进程全路径。
文件注入模块702在更新进程状态表时进一步用于对于枚举到的在进程状态表中没有对应表项的进程,在进程状态表中为该进程创建对应表项,将创建的表项中的挂接状态初始化为未挂接;将进程状态表中同所有枚举到的进程都不对应的表项删除。
文件注入模块702在向进程状态表中未加载所述DLL文件的进程中加载DLL文件时进一步用于向进程状态表中挂接状态为未挂接的表项对应的进程中加载所述DLL文件,加载后将该表项的挂接状态更改为已挂接。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (26)
1.一种发现未知USB病毒的方法,其特征在于,包括:
步骤1,创建动态链接库文件;在执行所述动态链接库文件查询驱动盘的类型时,判断被查询的驱动盘是否存在,若是则返回所述被查询的驱动盘的类型;否则回复被查询的驱动盘的类型为可移动;在执行所述动态链接库文件复制文件时,判断复制文件的目标路径是否存在,若是,则将文件复制到所述目标路径下;否则将所述文件复制到指定路径下;
步骤2,将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行驱动盘的类型的查询和病毒文件的复制。
2.如权利要求1所述的发现未知USB病毒的方法,其特征在于,
所述步骤1中在执行所述动态链接库文件查询驱动盘的类型时,如果被查询的驱动盘不存在,则回复被查询的驱动盘的类型为可移动进一步包括:
步骤21,调用所述操作***中用于获得驱动盘类型的函数以获得被查询驱动盘的类型。
3.如权利要求2所述的发现未知USB病毒的方法,其特征在于,
所述操作***为Windows操作***,
所述步骤21中操作***中用于获得驱动盘类型的函数为GetDriveType函数。
4.如权利要求1所述的发现未知USB病毒的方法,其特征在于,
所述步骤1中在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不存在,则将所述文件复制到指定路径下进一步为:
步骤41,判断所述复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,执行步骤42,否则,执行步骤42;
步骤42,调用所述操作***中的用于复制文件的函数,将所述文件复制到所述目标路径下。
5.如权利要求4所述的发现未知USB病毒的方法,其特征在于,
所述操作***为Windows操作***,
所述步骤42中操作***中的用于复制文件的函数为CopyFile函数。
6.如权利要求1所述的发现未知USB病毒的方法,其特征在于,
所述步骤1还包括,在执行所述动态链接库文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下;
所述步骤2还包括,进行所述将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行文件的创建。
7.如权利要求6所述的发现未知USB病毒的方法,其特征在于,
所述步骤1中在执行所述动态链接库文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下进一步为:
步骤71,判断所述创建文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,执行步骤72,否则,执行步骤72;
步骤72,调用所述操作***中用于创建文件的函数,在所述目标路径下创建文件。
8.如权利要求7所述的发现未知USB病毒的方法,其特征在于,
所述操作***为Windows操作***,
所述步骤72中操作***中用于创建文件的函数为CreateFile函数或NtCreateFile函数。
9.如权利要求1至8中任一所述的发现未知USB病毒的方法,其特征在于,
所述步骤2进一步为:
步骤91,创建一进程状态表,用以记录所述操作***中正在运行的每个进程是否已加载所述动态链接库文件;
步骤92,对操作***中正在运行的进程进行枚举,并更新所述进程状态表;
步骤93,向所述进程状态表中未加载所述动态链接库文件的进程中加载所述动态链接库文件。
10.如权利要求9所述的发现未知USB病毒的方法,其特征在于,
所述进程状态表中每个表项对应一个所述操作***中正在运行的进程,所述表项包括对应进程的进程标识和对应进程的挂接状态;
所述挂接状态包括已挂接和未挂接,所述已挂接表示所述表项对应进程已加载所述动态链接库文件,所述未挂接表示所述表项对应进程未加载所述动态链接库文件。
11.如权利要求10所述的发现未知USB病毒的方法,其特征在于,
所述进程标识包括进程ID、进程句柄和进程全路径。
12.如权利要求10所述的发现未知USB病毒的方法,其特征在于,
所述步骤92中更新所述进程状态表进一步为:
步骤121,对于枚举到的在所述进程状态表中没有对应表项的进程,在所述进程状态表中为所述进程创建对应表项,将所述表项中的挂接状态初始化为未挂接;
步骤122,将所述进程状态表中同所有枚举到的进程都不对应的表项删除。
13.如权利要求10所述的发现未知USB病毒的方法,其特征在于,
所述步骤93进一步为:
步骤131,向所述进程状态表中挂接状态为未挂接的表项对应的进程中加载所述动态链接库文件,加载后将所述表项的挂接状态更改为已挂接。
14.一种发现未知USB病毒的***,其特征在于,包括:
动态链接库模块,用于创建动态链接库文件;在执行所述动态链接库文件查询驱动盘的类型时,判断被查询的驱动盘是否存在,若是则返回所述被查询的驱动盘的类型;否则回复被查询的驱动盘的类型为可移动;在执行所述动态链接库文件复制文件时,判断复制文件的目标路径是否存在,若是,则将文件复制到所述目标路径下;否则将所述文件复制到指定路径下;
文件注入模块,用于将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行驱动盘的类型的查询和病毒文件的复制。
15.如权利要求14所述的发现未知USB病毒的***,其特征在于,
所述动态链接库模块在执行所述动态链接库文件查询驱动盘的类型时,进一步用于调用所述操作***用于获得驱动盘类型的函数以获得被查询驱动盘的类型。
16.如权利要求15所述的发现未知USB病毒的***,其特征在于,
所述操作***为Windows操作***,
所述操作***中用于获得驱动盘类型的函数为GetDriveType函数。
17.如权利要求14所述的发现未知USB病毒的***,其特征在于,
所述动态链接库模块在执行所述动态链接库文件复制文件时,进一步用于判断复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,并调用所述操作***中的用于复制文件的函数将所述文件复制到所述目标路径下;否则,直接调用所述操作***中的用于复制文件的函数将所述文件复制到目标路径下。
18.如权利要求17所述的发现未知USB病毒的***,其特征在于,
所述操作***为Windows操作***,
所述操作***中的用于复制文件的函数为CopyFile函数。
19.如权利要求14所述的发现未知USB病毒的***,其特征在于,
所述动态链接库模块还用于在执行所述动态链接库文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下;
所述文件注入模块还用于进行所述将所述动态链接库文件注入到操作***中正在运行的进程中,使USB病毒通过所述动态链接库文件进行文件的创建。
20.如权利要求19所述的发现未知USB病毒的***,其特征在于,
所述动态链接库模块在执行所述动态链接库文件创建文件时,进一步用于判断所述创建文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,并调用所述操作***中的创建文件的函数在所述目标路径下创建文件;否则,直接调用所述操作***中的创建文件的函数在所述目标路径下创建文件。
21.如权利要求20所述的发现未知USB病毒的***,其特征在于,
所述操作***为Windows操作***,
所述操作***中用于创建文件的函数为CreateFile函数或NtCreateFile函数。
22.如权利要求14至21任一所述的发现未知USB病毒的***,其特征在于,
所述文件注入模块进一步用于创建一进程状态表,用以记录所述操作***中正在运行的每个进程是否已加载所述动态链接库文件;对操作***中正在运行的进程进行枚举,并更新所述进程状态表;向所述进程状态表中未加载所述动态链接库文件的进程中加载所述动态链接库文件。
23.如权利要求22所述的发现未知USB病毒的***,其特征在于,
所述进程状态表中每个表项对应一个所述操作***中正在运行的进程,所述表项包括对应进程的进程标识和对应进程的挂接状态;
所述挂接状态包括已挂接和未挂接,所述已挂接表示所述表项对应进程已加载所述动态链接库文件,所述未挂接表示所述表项对应进程未加载所述动态链接库文件。
24.如权利要求23所述的发现未知USB病毒的***,其特征在于,
所述进程标识包括进程ID、进程句柄和进程全路径。
25.如权利要求23所述的发现未知USB病毒的***,其特征在于,
所述文件注入模块在更新所述进程状态表时进一步用于对于枚举到的在所述进程状态表中没有对应表项的进程,在所述进程状态表中为所述进程创建对应表项,将所述表项中的挂接状态初始化为未挂接;将所述进程状态表中同所有枚举到的进程都不对应的表项删除。
26.如权利要求23所述的发现未知USB病毒的***,其特征在于,
所述文件注入模块在向所述进程状态表中未加载所述动态链接库文件的进程中加载所述动态链接库文件时进一步用于向所述进程状态表中挂接状态为未挂接的表项对应的进程中加载所述动态链接库文件,加载后将所述表项的挂接状态更改为已挂接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102249422A CN101393591B (zh) | 2008-10-27 | 2008-10-27 | 一种发现未知usb病毒的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102249422A CN101393591B (zh) | 2008-10-27 | 2008-10-27 | 一种发现未知usb病毒的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101393591A CN101393591A (zh) | 2009-03-25 |
CN101393591B true CN101393591B (zh) | 2010-10-27 |
Family
ID=40493881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102249422A Expired - Fee Related CN101393591B (zh) | 2008-10-27 | 2008-10-27 | 一种发现未知usb病毒的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101393591B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630351B (zh) * | 2009-06-04 | 2012-10-03 | 中国人民解放军理工大学指挥自动化学院 | 利用进程注入及TNS协议解析增强Oracle数据库服务器安全的方法 |
CN102779076B (zh) * | 2012-06-29 | 2016-04-20 | 北京奇虎科技有限公司 | 一种浏览器中进程间通信的方法和装置 |
CN104484224B (zh) * | 2014-12-18 | 2019-04-09 | 北京奇安信科技有限公司 | 一种服务器进程控制方法、装置及*** |
CN106293790B (zh) * | 2015-05-28 | 2019-12-13 | Tcl集团股份有限公司 | 基于Firefox操作***的应用程序升级方法和装置 |
CN109471671B (zh) * | 2017-09-06 | 2023-03-24 | 武汉斗鱼网络科技有限公司 | 一种程序冷启动方法和*** |
CN110717183B (zh) * | 2019-12-09 | 2020-10-27 | 深信服科技股份有限公司 | 病毒查杀方法、装置、设备及存储介质 |
-
2008
- 2008-10-27 CN CN2008102249422A patent/CN101393591B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101393591A (zh) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102902909B (zh) | 一种防止文件被篡改的***和方法 | |
US9742777B2 (en) | Centralized selective application approval for mobile devices | |
CN101393591B (zh) | 一种发现未知usb病毒的方法及*** | |
US9230100B2 (en) | Securing anti-virus software with virtualization | |
US9854131B2 (en) | Image forming apparatus with personal setting synchronization and method for controlling same | |
EP1920338B1 (en) | Network security systems and methods | |
US8930940B2 (en) | Online software execution platform | |
US7930749B2 (en) | Accelerated data scanning | |
US7512977B2 (en) | Intrustion protection system utilizing layers | |
CN102999726B (zh) | 文件宏病毒免疫方法和装置 | |
CN102930205A (zh) | 一种监测单元及方法 | |
US20130340080A1 (en) | System and Method for Preventing Spread of Malware in Peer-to-Peer Network | |
CN103077243B (zh) | 文件***访问的处理方法及*** | |
CN103279706A (zh) | 拦截在移动终端中安装安卓应用程序的方法和装置 | |
CN102332072A (zh) | 用于检测恶意软件和管理恶意软件相关信息的***和方法 | |
CN103294955A (zh) | 宏病毒查杀方法及*** | |
JP6255336B2 (ja) | 安全なデータ格納方法およびデバイス | |
WO2015131801A1 (zh) | 数据黑洞处理方法 | |
JP2005165874A (ja) | クライアント装置のシステム環境規約違反検出方法 | |
Ször | Attacks on WIN32 | |
CN103713945A (zh) | 游戏的识别方法和装置 | |
WO2013143714A1 (en) | Controlling anti-virus software updates | |
SG190120A1 (en) | Inoculator and antibody for computer security | |
US20040143586A1 (en) | Method of controlling user application program | |
JP2007164676A (ja) | 情報収集ソフトウエア管理システム,管理サーバおよび管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101027 Termination date: 20201027 |