分享
分销 收藏 举报 申诉 / 47
播放页_导航下方通栏广告

类型基于沙盒技术的恶意行为分析平台论文-毕业论文.doc

  • 上传人:胜****
  • 文档编号:1986460
  • 上传时间:2024-05-13
  • 格式:DOC
  • 页数:47
  • 大小:236.50KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    基于 技术 恶意 行为 分析 平台 论文 毕业论文
    资源描述:
    2014年全国大学生信息安全竞赛 作品报告 作品名称: 基于沙盒技术的恶意行为分析平台 电子邮箱: 137812951@ 提交日期: 2015年5月28日 填写说明 1. 所有参赛项目必须为一个基本完整的设计。作品报告书旨在能够清晰准确地阐述(或图示)该参赛队的参赛项目(或方案)。 2. 作品报告采用A4纸撰写。除标题外,所有内容必需为宋体、小四号字、1.5倍行距。 3. 作品报告中各项目说明文字部分仅供参考,作品报告书撰写完毕后,请删除所有说明文字。(本页不删除) 4. 作品报告模板里已经列的内容仅供参考,作者可以在此基础上增加内容或对文档结构进行微调。 5. 为保证网评的公平、公正,作品报告中应避免出现作者所在学校、院系和指导教师等泄露身份的信息。 目 录 摘要 1 第一章 作品概述 2 第二章 作品设计与实现 3 第三章 作品测试与分析 4 第四章 创新性说明 5 第五章 总结 6 参考文献 7 摘要 1 作品介绍 背景和意义 相关研究(基础):看最近几年的硕士论文的第二章国内外研究现状,主要包括几点:(1)目前的病毒主流查杀技术介绍(从杀毒软件厂商角度,主要的查杀技术;从学术研究的角度,论文中查杀技术的主要研究)。(2)沙盒技术的现状,也是从论文研究的角度和目前的沙盒工具两个方面写 主要内容:分3点以上,对应本文完成的几个功能块 (1) 环境搭建, (2) 病毒行为分类 (3) 平台设计与实现 (4) 检测报告 2 基于沙盒技术的恶意行为分析平台(作品)设计 (1)需求分析(简单说明要做的事情) (2)功能分析: 功能图 具体流程图 针对图中的每个功能模块或每个流程都有一段说明 3 作品实现 流程图 4 作品测试 5 创新性 6 总结 参考文献 摘要 (请简要说明创作本作品之动机、功能、特性、创新处、实用性) 随着时代的发展,计算机已成为人们生活中不可缺失的工具,尤其是网络,与人们的生活密切相关,且由于网络的普及,人们在网络上的交流愈来愈方便,但恶意代码和网络攻击也日益频繁,造成的危害也越来越大,所以恶意代码的研究和分析工作也就变的不可忽视了。由于恶意代码愈来愈复杂多样性,因此传统的基于特征码检测的静态方法便更难以检测出未知的恶意代码了,而沙盒技术可以对可执行程序进行动态分析与检测,其在一定程度上可以弥补静态分析方法的不足之处。 在对基于传统沙盒的分析方法深入研究的基础上,本文提出了一种基于沙盒的恶意代码根据API函数调用行为统计并匹配的统一方案,该方案根据恶意代码的动态行为及其对计算机系统的影响,对其恶意性进行了分级,并能够通过动态分析自动报告恶意代码的恶意等级,使得用户可以一目了然地看出被测程序的恶意程度。基于该方案,本文设计并实现了一款针对可执行程序的恶意代码检测工具—Blackbirdbox。 与以前的工具相比,本文实现的工具在检测方面有以下四个优点:第一、使用沙盒技术,整套工具都在沙盒环境中运行,使得保证了检测的完整性和系统的无破坏性;第二、实现了一个有针对性的API监视器,在一定程度上缩小了监测范围,提高了检测效率;第三、能够对未知的恶意代码进行检测;第四、能够自动分析并报告被测程序的恶意等级,使得用户更直接的知道其恶意程度。第五、专门针对具有反沙箱技术的恶意代码来研发了一套专门防止反沙盒技术的恶意代码在沙盒中不展露恶意行为的方案。在系统的设计上采用了面向组件的设计思想,使得各个组件之间分工较为清晰,能够区分其功能和达到的结果。 最后,本团队利用该检测工具对“熊猫烧香”“某某某”“不知名”等典型恶意代码程序进行了检测,实验结果证明本文提出的检测方法是具有可行性的,且工具有效的实现了功能。 声明:测试的所有恶意代码样本都进行过脱壳处理,因此暂不考虑加壳情况。 第 43 页 共 7页 第一章 作品概述 (建议包括:背景分析、相关工作、特色描述及应用前景分析等) 1.1 背景分析 在当今的信息时代,互联网的发展与广泛应用深刻改变 了人们的生活方式,大大加快了人类的工作进程、信息获取,使其自由交流沟通越来越简单。然而,针对这些的攻击和犯罪层出不穷在现有的系统中,大多数用来维持安全性的技术通常作 为独立的程序来实现,但是在实现时把用来加强安全性和监视系统活动的技术与系统被攻击部分隔离开也很重要,这就是沙盒技术的来源。 现在,传统的恶意程序分析方法已经得到了最大化的研究 ,基于检测的攻防方法能够快速准确地对已经出现的恶意程序进行检测。但其缺乏一定的灵活性,而且对于未知的恶意程序无能为力。而近些年来,黑客的地下发展、团队协作、 智能化等让这种检测越来越无能为力。因此,提出了新的终端防护技术要求,而沙盒技术正是符合此要求的可以解决这些问题的技术 。 1.2 相关工作 首先在前期工作中,对沙盒技术的定义以及含义做了深刻,随后对于目前国内外恶意程序主流的检测方法做了分类以及说明,详情如下: 1.2.1 沙盒技术 沙盒在计算机领域主要是指一个严格受控的环境,程序在其中运行时的状态、所使用或访问的资源都受到严格的记录和控制。沙盒根据指令对全系统进行模拟,对一个程序的访问资源、执行环境按照规则赋予一定的访问权限。这样程序只能在建立的沙盒里面进行相关操作,限制了恶意程序的危害。每个程序在自己的受保护的沙盒之中运行,不会影响到其他程序的运行,同样,这些程序的运行也不会影响操作系统的正常运行。 1.2.2 特征码法 特征码识别技术借助反汇编引擎对二进制程序进行静态反汇编,对得到的静态代码进行一些关键性的代码判断比较,包含此代码就被识别为恶意程序。特征码法早期应用于 SCAN、CPAV等著名病毒检测工具中。国外专家认为特征码法是检测已知病毒的最简单、开销最小的方法。 1.2.3 基于行为的检测法 它是利用病毒的特有行为特征来监测病毒的一种方法 。 当程序运行时,监视其行为,如果发现了病毒行为,立即报警,另外行为特征识别通常需要使用类神经网络一类方法来训练分析器,并能够准确地用形式化的方法来定义恶意代码的特征。 1.2.4 基于特征函数的检测方法 恶意代码要实现特定功能,必要使用系统的API函数 (包括内核级和用户级的),因此如果某个程序调用了危险的 特定函数集合,我们有理由怀疑其可能是恶意代码。在程序加载之前,对于引入的任何程序文件,我们扫描其代码获得其 系统函数集合(这个过程可能需要代码逆向技术和虚拟机配 合),并将其与我们对多个恶意代码分析后设置好的一系列特 征函数集合做交集运算,这样就可以知道该程序文件使用了哪些危险的函数,并大致可以估计其功能和属于哪种类型。 1.3 特色描述 本系统采用了虚拟环境+恶意代码分析的思想结合,在创建一个安全的虚拟环境的前提下对恶意代码进行分析。 现在市场上大部分的恶意代码检测技术大多为特征库的比配技术,这种技术的优点是能快速匹配效率高,但是对于未知的恶意代码却无能为力,而现在市场上的恶意代码分析技术却没有一个安全的环境,因此本作品是在虚拟仿真层的实现与检测。 本系统采用了采用了APIhook技术,虚拟沙箱技术,静态分析技术,动态分析技术,来实现在本机系统下对未知恶意代码的检测与分析。 本系统特色如下: (1) :采用沙盒技术来实现虚拟仿真环境的实现,并运用回滚机制使得运行程序不会对本机真实系统产生影响。 (2) :对恶意代码进行全方面的监控 (3) :对监控结果进行针对性的分析,并生成分析报告 (4) :针对分析结果按照行为危害性生成处理意见 (5) :采用APIhook技术,生成DLL文件并注入到运行文件中进行监控,返回其调用API函数的地址值,从而实现了精准API监控的技术 (6) :针对市面上的某些恶意代码有反沙盒技术,使得其能逃脱沙盒下恶意代码的检测,因此本系统中采用了反沙盒技术的分析,对在构架的仿真虚拟环境中运行的恶意代码进行反沙盒技术的分析,保证在构架的虚拟仿真环境中的漏报率降低。 1.4 应用前景分析 本系统能够使恶意代码进行在沙盒中运行,对其恶意行为进行监控分析并生成分析报告。并且保护主机的安全不被恶意代码入侵,在如今恶意代码安全事件越来越多的情况下,具有很广阔的应用前景。 1、 保护我们的个人隐私资料,当有黑客利用恶意软件来监控我们的电脑,以窃取我们的个人隐私时,便可以通过本系统来保护。 2、 恶意代码是黑客用来控制系统,进行网络攻击的主要形式。本系统便可以通过检测恶意代码来保护我们的系统,维护我们的网络。 3、 本系统还可以应用于网络应急响应和恶意代码取证等方面。 4、 为企业保护内部关键资料、公司机密文件、客户资料提供服务,提高企业竞争力; 5、 防止黑客利用恶意代码来入侵政府、军队的网络,,保护政府、军队机要秘密文件不被窃取。 6、 为银行业务、电子商务提供服务,保护银行客户的个人资料不被泄露,保护电子商务的信息不被窃取。 7、 应用沙盒技术,降低未知程序的安全风险、打造可信的安全环境和提升应用的可靠性。由于在沙盒中进行的操作是相对安全的,即不会对用户计算机本身造成巨大伤害,因此为了保证系统的内核和关键组件不会被病毒、恶意程序、或者程序开发过程中发生的失误或者意外所破坏,让机器能够始终在稳定的情况下运行,引入沙盒技术也是必要的,这样可以极大地降低系统所面临的风险。沙盒技术在信息安全尤其是网络安全领域的崭露头角,给这个行业带来了一种新的思维,也带来了一股清新的空气,我们有理由相信,在信息安全领域,沙盒技术能够得到进一步的发展和完善,同时,也将有更大的施展拳脚的空间。 第二章 作品设计与实现 (建议包括系统方案、实现原理、硬件框图、软件流程、功能、指标等) 2.1 系统方案 对于以上理论基础以及拓展,本团队提出了一下基于沙盒技术的恶意行为分析平台的设计与实现方法,以此建立一个仿真的沙盒环境来运行程序并利用API监视器对此进行判断,以此来根据输出的返回值来判断是否为恶意代码并为其打印出一份行为分析报告。 2.2 实现原理 下面是对于系统方案的拓展以及原理实现 2.2.1沙盒环境的搭建 沙盒环境是在本地操作系统基础上,采用底层技术手段实现访问资源以及进程的限制和隔离,构造出与本地系统共存但相互间完全隔离的虚拟计算环境。其中隔离的内容包括:进程对象、内存、注册表、文件、窗口消息等,也就是说,沙盒内外的应用是相互不知道对方的存在,也不能进行交互的。因此,即使本地系统上存在病毒、木马,也无法感染或探测到沙盒中的重要应用或文件。相应的,当在沙盒中完成业务操作,退出沙盒后,系统会恢复到初始状态,过程中敏感的业务数据不会落在终端本地。 下面介绍一下沙箱环境的搭建。我们的blackbirdbox中的sandbox环境主要是由安装sandbox部分、初始化sandbox部分、开始sandbox部分、停止sandbox部分、回滚以及重定向部分等组成。 首先来介绍一下安装sandbox部分。此部分中调用我们自己定义两个的函数。分别为:检查安装函数(CheckIsInstalled)和sandbox的安装函数(InstallSandBox)。在这部分中我们通过检查安装函数来检查是否已经安装过沙盒,如果安装过则会跳出这部分。如果没有则会运行下一个函数即安装函数来安装沙盒,安装完毕后也一样跳出这一部分。在检查安装函数中通过判断指定打开的注册表是否为空,来判断sandbox是否安装过。下面只是源代码中的部分代码,具体请看源代码。 代码示例: RegOpenKeyEx(HKEY_LOCAL_MACHINE,szRegProgramPath,0,KEY_ALL_ACCESS,&hkProgram); if( hkProgram == NULL ) { //Not installed iInstalled = 0; } Else { //Installed iInstalled = 1; } 而在sandbox安装函数中我们有调用了自己定义的几个函数一起安装sandbox。这些函数分别为创建软件注册CreateSoftwareRegistry()、安装软件注册表函数SetupSoftwareRegistry()、安装注册注册表函数SetupRegRegistry()、 创建cloneapi目录函数CreateCloneAPIDirectory()和 安装注册sandbox函数SetupRegSandBox();我们通过调用这些函数最终使得指定的注册表键不为空,从而创建成功沙盒。下面只是源代码中的部分代码,具体请看源代码。 代码示例: int SetupRegSandBox(IN const WCHAR * lpSandBoxName){ //Create RestorePath // lstrcat(szRestorePath,L"\\"); lstrcat(szRestorePath,lpSandBoxName); CreateDirectory(szRestorePath,NULL); // //Create [RestorePath\Drive] // WCHAR szRestoreDrivePath[MAX_PATH] = {NULL}; lstrcpy(szRestoreDrivePath,szRestorePath); lstrcat(szRestoreDrivePath,L"\\"); lstrcat(szRestoreDrivePath,CONF_SandBox_Drive_Name); CreateDirectory(szRestoreDrivePath,NULL); //Create subkey [SandBox\XXX] // HKEY hkSandBox = NULL; WCHAR szRegSandBoxPath[256] = {NULL}; WCHAR szSubKeyPath[256] = {NULL}; lstrcpy(szRegSandBoxPath,L"SOFTWARE\\"); lstrcat(szRegSandBoxPath,CONF_SoftwareRegName); lstrcat(szRegSandBoxPath,L"\\"); lstrcat(szRegSandBoxPath,CONF_SoftwareReg_SandBox); lstrcat(szRegSandBoxPath,L"\\"); lstrcat(szRegSandBoxPath,lpSandBoxName); RegCreateKey(HKEY_LOCAL_MACHINE,szRegSandBoxPath,&hkSandBo); RegCloseKey(hkSandBox); //Create subkey [SandBox\XXX\Software lstrcpy(szSubKeyPath,szRegSandBoxPath); lstrcat(szSubKeyPath,L"\\"); lstrcat(szSubKeyPath,CONF_SoftwareReg_SandBox_Software); RegCreateKey(HKEY_LOCAL_MACHINE,szSubKeyPath,&hkSandBox); RegCloseKey(hkSandBox); return 0; } int CreateCloneAPIDirectory(void){ //Create directory // WCHAR szCloneAPIDirectory[MAX_PATH] = {NULL}; GetModuleFileName(NULL,szCloneAPIDirectory,MAX_PATH);/ PathRemoveFileSpec(szCloneAPIDirectory); lstrcat(szCloneAPIDirectory,L"\\"); lstrcat(szCloneAPIDirectory,CONF_CloneAPI_DirectoryName);CreateDirectory(szCloneAPIDirectory,NULL); //kernel32.dll wsprintf(szOriginalPath,L"%s\\%s",szSystemDirectory,L"kernel32.dll"); wsprintf(szCloneAPIPath,L"%s\\%s",szCloneAPIDirectory,CONF_CloneAPI_CloneKERNEL32); DeleteFile(szCloneAPIPath); CopyFile(szOriginalPath,szCloneAPIPath,TRUE); //advapi32.dll wsprintf(szOriginalPath,L"%s\\%s",szSystemDirectory,L"advapi32.dll"); wsprintf(szCloneAPIPath,L"%s\\%s",szCloneAPIDirectory,CONF_CloneAPI_CloneADVAPI32); DeleteFile(szCloneAPIPath); CopyFile(szOriginalPath,szCloneAPIPath,TRUE);return 0; } (1) 初始化sandbox (2) 。在此部分中我们调用了一个函数:sandbox初始化函数(SandBoxInitalization),在这个函数中我们通过对系统信息的检查、对权值的调整、对sandbox的检查和对环境的检查来完成对sandbox的初始化。在对系统信息的检查中我们主要是对操作系统版本、cup、系统信息、内存、驱动以及网络进行检查。在对环境的检查时我们主要是对组件的检查。下面只是源代码中的部分代码,具体请看源代码。 代码示例: wprintf(L"检查操作系统版本中...\r\n"); OSVERSIONINFOEX OsVerInfoEx; OsVerInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if( !GetVersionEx((OSVERSIONINFO *)&OsVerInfoEx) ) { return -1; } WCHAR szOsVerInfo[256] = {NULL}; WCHAR szOsName[32] = {NULL}; if( OsVerInfoEx.dwPlatformId == VER_PLATFORM_WIN32_NT ) { lstrcpy(szOsName,L"Unknown"); if( OsVerInfoEx.dwMajorVersion<=4 ) { lstrcpy(szOsName,L"NT");}....... wprintf(L"检查 CPU 信息中...\r\n"); SYSTEM_INFO systeminfo; GetSystemInfo(&systeminfo); WCHAR szNumberOfProcessors[256] = {NULL}; swprintf(szNumberOfProcessors,L"CPU: \t%d CPU installed.\r\n",systeminfo.dwNumberOfProcessors); wprintfex( szNumberOfProcessors, FOREGROUND_INTENSITY | FOREGROUND_BLUE); HKEY hCPUKey = NULL;.......} /***调整权值函数*****/ int AdjustPrivileges(void) { if( EnableSpecificPrivilege(TRUE,SE_BACKUP_NAME) == FALSE ) { wprintfex(L"Enable [SE_BACKUP_NAME] privilege failed!\r\n",FOREGROUND_INTENSITY | FOREGROUND_RED); iRet = -1; } if( EnableSpecificPrivilege(TRUE,SE_CHANGE_NOTIFY_NAME) == FALSE ) { wprintfex(L"Enable [SE_CHANGE_NOTIFY_NAME] privilege failed!\r\n",FOREGROUND_INTENSITY | FOREGROUND_RED); iRet = -1; } ...... return iRet; } /****检查环境***/ int CheckEnvironment(void)//检查环境 { int iOpenProcError = 0; HANDLE hSnapshot = NULL; PROCESSENTRY32 pe32; hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); if( hSnapshot == NULL ) { return -1; } pe32.dwSize = sizeof( PROCESSENTRY32 ); Process32First( hSnapshot, &pe32 ); ........... return iRet; } int SelfCheck(void) { wprintfex( L"自我检查中...请稍等一会...\r\n\r\n", FOREGROUND_INTENSITY | FOREGROUND_GREEN|FOREGROUND_BLUE); ...... return 1; } (3) 开始sandbox (4) ;在这部分中我们调用了BeginSandBoxRoutine函数来进行开始运行sandbox。在这个函数中我们先把要打开的sandbox找到。并将它打开。然后查询这个sandbox的状态,即是否已经在此电脑中安装。如果安装就可以运行。在查询以后我们就可以让可执行文件在这个sandbox中运行。从而来观察这个可执行文件的运行状态。下面只是源代码中的部分代码,具体请看源代码。 代码示例: int BeginSandBoxRoutine(void) { // //Adjust Privileges // AdjustPrivileges(); //List SandBox // int iRet = 0; iRet = ListSandBoxToBegin(); if( iRet == -1 ) { return -1; } // //Waiting order // wprintfex( L"\r\n[通告] 请输入一个指数(例如. 1) 或者 sandbox的名字(例如. \"DefaultBox\"):\r\n", FOREGROUND_INTENSITY | FOREGROUND_GREEN); WCHAR szUserInput[256] = {NULL}; _getws(szUserInput); ....... int BeginSandBoxDispatch(IN const WCHAR * lpString) { if( RegOpenKeyEx(HKEY_LOCAL_MACHINE,szRegSandBoxPath,NULL,KEY_ALL_ACCESS,&hkSandBoxMain) == ERROR_SUCCESS ) { while( RegEnumKey(hkSandBoxMain,nId,szSandBoxName,CONF_SandBoxNameLength+1) == ERROR_SUCCESS )//RegEnumKey { nId++; if( nId == _wtoi(lpString) ) { if( BeginSandBoxByName(szSandBoxName) == -1 ) { iRet = -1; } else { iRet = 0; } } } ............. RegCloseKey(hkSandBoxMain); // //Load RegHive // BeginSandBoxLoadRegHive(lpSandBoxName); // //Create Registry SYNC // BeginSandBoxCreateRegistrySYNC(lpSandBoxName); // //Clean Callback // BeginSandBoxCleanCallback(lpSandBoxName); // ........... WCHAR szCommandLine[512] = {NULL}; wsprintf( szCommandLine, L" %s", lpSandBoxName ); // //Callback RegNotifyChangeKeyValue // HKEY hkRegistrySYNC = NULL; DWORD dwStartupInfo = 0; HANDLE hEventNotifyValue = NULL; DWORD dwType = REG_DWORD; DWORD dwBufLen = sizeof(DWORD); BOOL bIsLauncherCalled = FALSE; .......... return 0; } 接下来我们介绍停止sandbox部分,在这部分中我们调用了StopSandBoxRoutine函数来进行停止sandbox的运行。在这个函数中我们先要找到要停止的sandbox,然后调用Remove Registry SYNC函数 、Save RegHive函数、UnLoad RegHive 函数 、Update RegHive函数来停止sandbox的运行。下面只是源代码中的部分代码,具体请看源代码。 代码示例: int StopSandBoxRoutine(void) { iRet = ListSandBoxToStop(); if( iRet == -1 ) { return -1; } // //Waiting order // wprintfex( L"\r\n[通告] 请输入指数(例如. 1) 或者sandbox的名称(例如. \"DefaultBox\") :\r\n", FOREGROUND_INTENSITY | FOREGROUND_GREEN); WCHAR szUserInput[256] = {NULL}; _getws(szUserInput); ............. StopSandBoxRemoveRegistrySYNC(lpSandBoxName); StopSandBoxSaveRegHive(lpSandBoxName); StopSandBoxUnLoadRegHive(lpSandBoxName); ............. wprintfex( L"\r\n[NOTIFY] SandBox 停止成功!\r\n", return 0; } 最后我们来介绍一下此沙箱中的回滚和重定向部分。首先此沙箱中的回滚是在文件运行完以后,对系统继续回滚,使系统恢复到初始的状态。其中主要是两部分组成,一部分是如何来判断文件是否已经运行完全的函数,另一部分便是将系统进行回滚操作,将系统恢复成原始状态的函数。下面便是回滚的部分代码。 代码示例: template <class R> class Rall { public: Rall():cmd(NULL),m_bIsOK(false){} ~Rall() { if( NULL != cmd) { if( !m_bIsOK ) { (*cmd)(); } delete cmd; cmd = NULL; } } template <class Fun> void SetRall(Fun fun) { if( NULL != cmd){ delete cmd; cmd = NULL; } cmd = new Functor<R>(fun); } template <class PtrObj, class MemFn> void SetRall(const PtrObj& p, MemFn memFn) { if( NULL != cmd){ delete cmd; cmd = NULL; } cmd = new Functor<R>(p, memFn); } void OK(){ m_bIsOK = true; } private: bool m_bIsOK; Functor<R>* cmd; }; /* 使用: TOOL::Rall<void> r2; DataBase db; if( db.doDB(true)) r2.SetRall(&db,&DataBase::UndoDB); else return; TOOL::Rall<void> r1; if( doFun(true)) r1.SetRall(UndoFun); else return; r1.OK(); r2.OK(); */ } 而此沙盒通过重定向技术,把程序生成和修改的文件,定向到自身文件夹中。此沙盒的重定向技术主要针对是注册表和文件。而在重定向注册表时,其实质主要是其实质就是维护注册表键,一。受影响的键不只是HKLM/Software,还包括: HKEY_CLASSES_ROOT 、HKEY_CURRENT_USER/Software/Classes 、 HKEY_LOCAL_MACHINE/Software 、HKEY_USERS/*/Software/Classes 、HKEY_USERS/*_Classes 等键。那么如何来维护这些注册表键呢?其维护的方法是采用一种被称为注册表反射的机制完成的。而注册表反射便是在注册表视图之间复制某些特定的注册表项和项值。下面便是重定向函数的部分代码。 代码示例: #include <ntifs.h> DRIVER_INITIALIZE DriverEntry; DRIVER_UNLOAD DriverUnload; EX_CALLBACK_FUNCTION RegistryCallback; LARGE_INTEGER g_CmRegstryCookie; extern PUSHORT NtBuildNumber; NTSTATUS DriverEntry( PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath ) { NTSTATUS Status = STATUS_NOT_SUPPORTED; //KdBreakPoint(); if ( *NtBuildNumber >= 6000 ) { DriverObject->DriverUnload = DriverUnload; Status = CmRegisterCallback( RegistryCallback, DriverObject, &g_CmRegstryCookie ); } return Status; } VOID DriverUnload( PDRIVER_OBJECT DriverObject ) { CmUnRegisterCallback( g_CmRegstryCookie ); } PVOID KmAlloc( SIZE_T PoolSize ) { PVOID PoolBase = ExAllocatePoolWithTag( NonPagedPool, PoolSize, 'MmK_'); if ( PoolBase ) { RtlZeroMemory( PoolBase, PoolSize ); } return PoolBase; } VOID KmFree( PVOID PoolBase ) { ExFreePoolWithTag( PoolBase, 'MmK_'); } NTSTATUS LfGetObjectName( IN CONST PVOID Object, OUT PUNICODE_STRING* ObjectName ) { NTSTATUS Status = STATUS_INSUFFICIENT_RESOURCES; PUNICODE_STRING TmpName; ULONG ReturnLength; ObQueryNameString( Object, (POBJECT_NAME_INFORMATION)&ReturnLength, sizeof(ULONG), &ReturnLength ); *ObjectName = NULL; TmpName = (PUNICODE_STRING)KmAlloc( ReturnLength ); 上述便是我们搭建沙盒环境的设计与实现方法,我们的恶意行为分析平台便是基于这个环境来实现的。 2.2.2 API监视器的实现和输出 API 函数监视器的实现 (1):自己实现的原因 1:能拦截的更加准确,方便分析 2:能方便输出,按自己的要求输出 (2):Deto
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:基于沙盒技术的恶意行为分析平台论文-毕业论文.doc
    链接地址:https://www.zixin.com.cn/doc/1986460.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork