一种发现未知usb病毒的方法及系统的制作方法

文档序号:6471010阅读:146来源:国知局
专利名称:一种发现未知usb病毒的方法及系统的制作方法
技术领域
本发明涉及计算机安全技术领域,特别涉及一种发现未知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内容如下[autorim]action=openshellexecute=y. exe步骤S104,取下一个盘符作为待感染盘符。步骤S105,判断待感染盘符是否小于等于Z,如果是,则执行歩骤S102, 否则,执行步骤S106。步骤S106,休眠一段时间,执行步骤SIOI。通过上述方法,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盘中名为autoriin.inf的文件或文件夹,然后再将自身对应的 autorun. inf文件复制到目标USB盘中,从而使得免疫失败。第二种方法在 病毒库更新时间上存在严重的滞后性,使得即便是已知病毒也难以有效防御。 第三种方法无法防止操作系统上己有病毒感染新插入的USB盘。此外,现有 技术中的上述三种方法均无法发现未知USB病毒,也无法获得相应的病毒样 本。发明内容为了解决上述问题,本发明提出了一种发现未知USB病毒的方法及系统, 本发明能够无误报地发现未知USB病毒并获取该USB病毒的样本。本发明公开了一种发现未知USB病毒的方法,包括步骤1,创建动态链接库文件;在执行所述动态链接库文件査询驱动盘 的类型时,如果被査询的驱动盘不存在,则回复被查询的驱动盘的类型为可 移动;在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不 存在,则将所述文件复制到指定路径下;步骤2,将所述动态链接库文件注入到操作系统中正在运行的进程中, 使USB病毒通过所述动态链接库文件进行驱动盘的类型的查询和病毒文件的 复制。所述步骤1中在执行所述动态链接库文件查询驱动盘的类型时,如果被 査询的驱动盘不存在,则回复被査询的驱动盘的类型为可移动进一步为步骤21,调用所述操作系统中用于获得驱动盘类型的函数以获得被查询 驱动盘的类型; 步骤22,根据获得的所述类型判断所述被査询驱动盘是否存在,如果存在,则回复被查询驱动盘的类型为所述类型;否则,回复被査询驱动盘的类 型为可移动。所述操作系统为Windows操作系统,所述步骤21中操作系统中用于获得驱动盘类型的函数为GetDriveType 函数。所述步骤1中在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不存在,则将所述文件复制到指定路径下进一歩为步骤41,判断所述复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,执行步骤42,否则,执行步骤42;步骤42,调用所述操作系统中的用于复制文件的函数,将所述文件复制 到所述目标路径下。所述操作系统为Windows操作系统,所述步骤42中操作系统中的用于复制文件的函数为CopyFile函数。所述步骤l还包括,在执行所述动态链接库文件创建文件时,如果创建 文件的目标路径不存在,则将所述文件创建到指定路径下;所述步骤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的返回值。 1函数NewCopyFile中的方法流程图如图4所示。步骤S401,判断复制文件的目标路径是否存在,如果不存在,执行步骤 S402,否则,执行歩骤S403。步骤S402,将目标路径重定向为指定路径。步骤S403,调用API函数CopyFile,将文件复制到目标路径下。 当进程发现一张类型为可移动的驱动盘后,接下来会调用CopyFile,将 自身可执行文件复制到该驱动盘。在本发明中,进程实际调用的是函数 NewCopyFile,该函数将目标路径X:\Y. exe,其中目标文件名为Y. exe,盘符 为X,改写为一个指定路径,例如,C:\WindowsWalwareSamplesX进程全路 径\¥. 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 、 DetourTransactionCo腿it 、 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在Windows 2000以后的系统,Windows XP/2003/Vista/2008,中才能使用,Windows 95/98/Me不能使用。通过枚举 进程获得所有进程的进程标识,进程标识由进程ID、进程句柄和进程完整路 径三部分构成。
对于获得的每个进程标识,在进程状态表中査找,如果进程状态表中不 存在,则为该进程在进程状态表中创建一个对应表项,将进程ID、进程句柄、 进程全路径填充进去,挂接状态初始化为未挂接;如果该进程在进程状态表 已经存在,则不进行任何操作;并且将进程状态表的同所有枚举到的进程都 不匹配的表项删除。歩骤S604,从进程状态表中读取一项挂接状态为未挂接的表项,调用 OpenProcess打开进程,参数为该表项的进程句柄,调用VirtualAllocEx 在目标进程虚拟地址空间中分配一块内存,内存大小等于DLL文件的名称的 长度,调用WriteProcessMemory将DLL文件的名称写入目标进程,调用 GetProcAddress获得LoadLibraryW的API的地址,调用CreateRemoteThread 在目标进程创建一个远程线程,线程地址为LoadLibmryW的地址,参数为 DLL文件的名称,从而使得DLL文件在目标进程中加载并执行,并将表项中 的挂接状态更改为已挂接;循环执行上述过程,直到进程状态表中所有项挂 接状态都已置为己挂接。步骤605:调用系统函数Sle印休眠一段时间,执行歩骤S603。通过上述方法定期地发现新的进程,将DLL文件注入到新进程中,DLL 文件对新进程的系统函数GetDriveType、 CopyFile、 CreateFile进行挂接, 使其具备新的功能,并且定期删除过期表项,防止内存泄漏和资源浪费。这 样,当系统中某个进程为USB病毒进程时,该进程在查询一个本不存在的盘 的类型时,将会获得一个虚假的返回值,告知该进程査询的驱动盘的类型为 可移动,然后该进程试图将自身可执行文件复制到该不存在的驱动盘中,而 通过本发明实际上复制到了指定目录内,从而获得了未知USB病毒的样本, 发现了未知USB病毒。在上述实施例中,也可以将CreateFile替换为NtCreateFile。本发明的系统结构如图7所示。本发明系统包括动态链接库模块701,用于创建DLL文件,在执行该DLL文件查询驱动 盘的类型时,如果被査询的驱动盘不存在,则回复被查询的驱动盘的类型为 可移动,在执行该DLL文件复制文件时,如果复制文件的目标路径不存在, 则将该文件复制到指定路径下,在执行该DLL文件创建文件时,如果创建文 件的目标路径不存在,则将所述文件创建到指定路径下。
创建的DLL文件用于挂接操作系统函数。在具体实施方式
中操作系统为Windows操作系统。动态链路库模块701在执行DLL文件查询驱动盘的类型时,进一步用于 调用操作系统的GetDriveType函数以获得被査询驱动盘的类型;判断被查询 驱动盘是否存在,如果存在,则回复获得的被查询驱动盘的类型;否则,回 复被查询驱动盘的类型为可移动。动态链路库模块701在执行所述DLL文件复制文件时,进一歩用于判断 复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为指定 路径,并调用所述操作系统中的C叩yFile函数将所述文件复制到目标路径 下;否则,直接调用操作系统中的C叩yFile函数将文件复制到目标路径下。动态链路库模块701在执行所述DLL文件创建文件时,进一步用于判断 创建文件的目标路径是否不存在,如果是,则将目标路径重定向为指定路径, 并调用操作系统中的CreateFile函数或NtCreateFile函数在目标路径下创 建文件;否则,直接调用操作系统中的CreateFile函数或NtCreateFile函 数在目标路径下创建文件。文件注入模块702,用于将该DLL文件注入到操作系统中正在运行的进 程中,使USB病毒通过该DLL文件进行驱动盘的类型的查询、病毒文件的复 制和文件的创建。文件注入模块702进一步用于创建一进程状态表,用以记录操作系统中 正在运行的每个进程是否已加载该DLL文件;对操作系统中正在运行的进程 进行枚举,并更新进程状态表;向所述进程状态表中未加载该DLL文件的进 程中加载所述DLL文件。进程状态表中每个表项对应一个操作系统中正在运行的进程,表项包括 对应进程的进程标识和对应进程的挂接状态;挂接状态包括已挂接和未挂接, 已挂接表示该表项对应进程已加载该DLL文件,未挂接表示该表项对应进程 未加载该DLL文件。其中,进程标识包括进程ID、进程句柄和进程全路径。文件注入模块702在更新进程状态表时进一步用于对于枚举到的在进程 状态表中没有对应表项的进程,在进程状态表中为该进程创建对应表项,将 创建的表项中的挂接状态初始化为未挂接;将进程状态表中同所有枚举到的
进程都不对应的表项删除。文件注入模块702在向进程状态表中未加载所述DLL文件的进程中加载 DLL文件时进一步用于向进程状态表中挂接状态为未挂接的表项对应的进程 中加载所述DLL文件,加载后将该表项的挂接状态更改为已挂接。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1. 一种发现未知USB病毒的方法,其特征在于,包括步骤1,创建动态链接库文件;在执行所述动态链接库文件查询驱动盘的类型时,如果被查询的驱动盘不存在,则回复被查询的驱动盘的类型为可移动;在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不存在,则将所述文件复制到指定路径下;步骤2,将所述动态链接库文件注入到操作系统中正在运行的进程中,使USB病毒通过所述动态链接库文件进行驱动盘的类型的查询和病毒文件的复制。
2. 如权利要求1所述的发现未知USB病毒的方法,其特征在于, 所述步骤1中在执行所述动态链接库文件查询驱动盘的类型时,如果被査询的驱动盘不存在,则回复被査询的驱动盘的类型为可移动进一步为步骤21,调用所述操作系统中用于获得驱动盘类型的函数以获得被查询 驱动盘的类型;步骤22,根据获得的所述类型判断所述被査询驱动盘是否存在,如果存 在,则回复被査询驱动盘的类型为所述类型;否则,回复被查询驱动盘的类 型为可移动。
3. 如权利要求1所述的发现未知USB病毒的方法,其特征在于, 所述操作系统为Windows操作系统,所述步骤21中操作系统中用于获得驱动盘类型的函数为GetDriveType 函数。
4. 如权利要求1所述的发现未知USB病毒的方法,其特征在于, 所述步骤1中在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不存在,则将所述文件复制到指定路径下进一步为步骤41,判断所述复制文件的目标路径是否不存在,如果是,则将所述目标路径重定向为所述指定路径,执行步骤42,否则,执行步骤42;步骤42,调用所述操作系统中的用于复制文件的函数,将所述文件复制到所述目标路径下。
5. 如权利要求4所述的发现未知USB病毒的方法,其特征在于, 所述操作系统为Windows操作系统,所述步骤42中操作系统中的用于复制文件的函数为CopyFile函数。
6. 如权利要求1所述的发现未知USB病毒的方法,其特征在于, 所述歩骤l还包括,在执行所述动态链接库文件创建文件时,如果创建文件的目标路径不存在,则将所述文件创建到指定路径下;所述歩骤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病毒的系统,其特征在于, 所述文件注入模块在向所述进程状态表中未加载所述动态链接库文件的进程中加载所述动态链接库文件时进一步用于向所述进程状态表中挂接状态 为未挂接的表项对应的进程中加载所述动态链接库文件,加载后将所述表项 的挂接状态更改为已挂接。
全文摘要
本发明涉及一种发现未知USB病毒的方法和系统,所述方法包括步骤1,创建动态链接库文件;在执行所述动态链接库文件查询驱动盘的类型时,如果被查询的驱动盘不存在,则回复被查询的驱动盘的类型为可移动,在执行所述动态链接库文件复制文件时,如果复制文件的目标路径不存在,则将所述文件复制到指定路径下;步骤2,将所述动态链接库文件注入到操作系统中正在运行的进程中,使USB病毒通过所述动态链接库文件进行驱动盘类型的查询和病毒文件的复制。本发明能够无误报地发现未知USB病毒并获取该USB病毒的样本。
文档编号G06F21/00GK101393591SQ20081022494
公开日2009年3月25日 申请日期2008年10月27日 优先权日2008年10月27日
发明者云晓春, 翔 崔, 殷丽华, 王树鹏 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1