版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
虚拟机检测与蜜罐检测对于虚拟机与蜜罐的检测,首先我们要了解什么是虚拟机,什么是蜜罐。首先虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。而蜜罐好比是情报收集系统。蜜罐好像是故意让人攻击的目标,引诱黑客前来攻击。所以攻击者入侵后,你就可以知道他是如何得逞的,随时了解针对公司服务器发动的最新的攻击和漏洞。还可以通过窃听黑客之间的联系,收集黑客所用的种种工具,并且掌握他们的社交网络。作为信息安全方向的学员,了解虚拟机与蜜罐的检测技术,对于网络安全的研究有着重要的意义。一、对于虚拟机的检测对虚拟机主要有以下四种方向的检测方法:利用内存差异的检测方法;利用相对性能的检测方法;利用虚拟处理器的异常行为的检测方法;其他检测方法;利用内存的差异性检测,主要有IDT(InterruptDescriptorTable)或LDT(LocalDescriptorTable)的检测方法。该方法利用了虚拟机和真实主机中重要的操作系统的某些关键数据结构的不同位置来判断执行环境是否是虚拟机。这类方法对VMware、VirtualPC都比较有效。x86的ISA中存在17条敏感非特权指令,其中包括SIDT、SLDT和SGDT,它们可以在用户态使用。使用它们可以获取IDT、LDT和GDT(GlobalDescriptorTable)的信息。因为只有一个IDTR寄存器、一个GDTR寄存器和一个LDTR寄存器,但是有两类操作系统在运行:虚拟机系统和真实主机系统。为了能够正确地虚拟化,每个虚拟机都应该维持这几个描述表的“影子”拷贝,虚拟机监控器必须改变虚拟机中描述表的位置。这样就会使虚拟机和真实主机产生一个不一致,使用这个不一致可以用来判断虚拟机的存在。其中利用IDT基址检测虚拟机的具体实现如下:中断描述符表IDT(InterruptDescriptorTable)用于查找处理中断时所用的软件函数,它是一个由256项组成的数据,其中每一中断对应一项函数。为了读取IDT基址,我们需要通过SIDT指令来读取IDTR(中断描述符表寄存器,用于IDT在内存中的基址),SIDT指令是以如下格式来存储IDTR的内容:typedefstruct{WORDIDTLimit;//IDT的大小WORDLowIDTbase;//IDT的低位地址WORDHiIDTbase;//IDT的高位地址}IDTINFO;由于只存在一个IDTR,但又存在两个操作系统,即虚拟机系统和真主机系统。为了防止发生冲突,VMM(虚拟机监控器)必须更改虚拟机中的IDT地址,利用真主机与虚拟机环境中执行sidt指令的差异即可用于检测虚拟机是否存在。#include<stdio.h>intmain(){unsignedcharm[2+4],rpill[]="\x0f\x01\x0d\x00\x00\x00\x00\xc3";//相当于SIDT[adrr],其中addr用于保存IDT地址*((unsigned*)&rpill[3])=(unsigned)m;〃将sidt[addr]中的addr设为m的地址((void(*)())&rpill)();//执行SIDT指令,并将读取后IDT地址保存在数组m中printf("idtbase:%#x\n",*((unsigned*)&m[2]));〃由于前2字节为IDT大小,因此从m[2]开始即为IDT地址if(m[5]>0xd0)printf("InsideMatrix!\n”,m[5]);//当IDT基址大于0xd0xxxxxx时则说明程序处于VMware中elseprintf("NotinMatrix.\n");return0;}但是,IDT检测方法有一个缺点,它在有多个CPU的机器上误警率太高。因为多个CPU的机器上,每个处理器有不同的IDT,IDT的基地址在不同时刻所取得的值并不相同。为此,DannyQuist和ValSmith提出了使用LDT的检测方法。LDT检测方法和IDT的方法类似但是它在具有多个CPU的环境时检测的表现非常好。总的来说,这类方法简单有效,通用性强,虚拟机实现不能避免此类差异。其次是利用相对性能的检测方法。主要介绍基于时间差的检测方式。通过选择一段经过精心设计的代码,通过比较该代码在真实物理主机和目标主机上运行的相对时间来判断是否存在虚拟机。这类方法是一种通用的方法,不依赖于具体的软件虚拟机的实现方法。这种方法的缺点是需要知道目标主机的硬件配置信息。但是,这个前提通常很容易得到满足。如在进行恶意软件分析时,恶意软件很容易探测出目标主机的配置信息。JasonFranklin等人就使用了这种思想,他们提出的方法不需要获得目标主机的精确配置,因此,JasonFranklin称他们所使用的方法为FuzzyBenchmake方法。实验证明,该方法能够检测出VMware、VirtualPC、Xen等的存在。2.L杓:州U怵工戡图2FuzzyBenchmarking检测框架第三是利用虚拟处理器的异常行为的检测方法。该方法主要通过利用虚拟处理器的异常行为来判断虚拟机是否存在。为了处理如客户机和宿主机进行通信等有关问题,一些虚拟机引入了一些“额外”的非标准x86指令集的指令。主要有以下三种:通过执行特权指令来检测虚拟机。Vmware为真主机与虚拟机之间提供了相互沟通的通讯机制,它使用“IN”指令来读取特定端口的数据以进行两机通讯,但由于IN指令属于特权指令,在处于保护模式下的真机上执行此指令时,除非权限允许,否则将会触发类型为“EXCEPTION_PRIV_INSTRUCTION”的异常,而在虚拟机中并不会发生异常,在指定功能号0A(获取VMware版本)的情况下,它会在EBX中返回其版本号“VMXH”;而当功能号为0x14时,可用于获取VMware内存大小,当大于0时则说明处于虚拟机中。基于STR的检测方法。在保护模式下运行的所有程序在切换任务时,对于当前任务中指向TSS的段选择器将会被存储在任务寄存器中,TSS中包含有当前任务的可执行环境状态,包括通用寄存器状态,段寄存器状态,标志寄存器状态,EIP寄存器状态等等,当此项任务再次被执行时,处理器就会其原先保存的任务状态。每项任务均有其自己的TSS,而我们可
以通过STR指令来获取指向当前任务中TSS的段选择器。这里STR(Storetaskregister)指令是用于将任务寄存器(TR)中的段选择器存储到目标操作数,目标操作数可以是通用寄存器或内存位置,使用此指令存储的段选择器指向当前正在运行的任务的任务状态段(TSS)。在虚拟机和真实主机之中,通过STR读取的地址是不同的,当地址等于0x0040xxxx时,说明处于虚拟机中,否则为真实主机。基于注册表检测虚拟机。在windows虚拟机中常常安装有VMwareTools以及其它的虚拟硬件(如网络适配器、虚拟打印机,USB集线器……),它们都会创建任何程序都可以读取的windows注册表项,因此我们可以通过检测注册表中的一些关键字符来判断程序是否处于虚拟机之中。最后是其他检测方法。主要是利用虚拟硬件指纹检测虚拟机。利用虚拟硬件指纹也可用于检测虚拟机的存在,比如VMware默认的网卡MAC地址前缀为“00-05-69,00-0C-29或者00-50-56”,这前3节是由VMware分配的唯一标识符OUI,以供它的虚拟化适配器使用。但由于这些可经过修改配置文件来绕过检测。另外,还可通过检测特定的硬件控制器,BIOS,USB控制器,显卡,网卡等特征字符串进行检测。由于目前虚拟机技术的发展,经过测试,目前这些技术许多已经失效,无法进行具体演示,新的虚拟机检测技术有待我们去探索发现。W[R-unning]-Ora-deVMVirtual&o>cM-achineDevi-cesHelp©jc-Microsoft©jc-MicrosoftVisualC++-[jc,cpp]团文件(E犒旧查看①®Adi工程凹蛆建四工具口窗口也帮助凹'E:\MicrosoftVisualStudio-\MyPr0jects\jc\IDebu]g^c.exe 曾|洛口寻|将电电|二『以~|匝同舀辆|FindFileData^'E:\MicrosoftVisualStudio-\MyPr0jects\jc\IDebu]g^c.exe +尊+尊Ijccla请按任意键继续•••
虽然无法检测,但我们仍能看出虚拟机与真机的差别,也为我们今后的探索提供了一些思路。二、蜜罐的检测技术目前,蜜罐技术已由单一的蜜罐发展到现在的第三代蜜网,还出现了动态蜜罐(ActivateHoneypots)、蜜场(Honeyfarm)、Honeytoken、应用层蜜罐(Honeyapp)、同步/异步交互蜜罐(Active/PassiveHoneyclient)等新概念、新技术。但是其核心技术如数据控制、数据捕获、数据分析、重定向等是不会变的。在计算机应用领域,无论蜜罐作为一个系统还是一个软件甚至是网络,都会存在这样那样的弱点,而蜜罐识别技术就是利用这些弱点来对蜜罐进行识别。首先是基于蜜罐个性特征的识别技术。在实际的应用中,由于Honeypot产品和技术的不同,针对特定的Honeypot进行识别的技术也是多种多样。主要方法有虚拟机检测和Uml检测。虚拟机检测上面已近有了较详细的介绍,这里主要讲uml检测。UML(User—modeLinux)允许在一个Linux系统(主机)上运行另外一个Linux系统(客户机),客户机可以作为蜜罐使用,和VMware类似,它同样是虚拟的系统,并没有使用实际的硬盘,而是使用一个叫UDB的虚拟IDE设备。通过查看关于UML的系统配置文件,例如检查一下/etc/fstab和目录/dev/ubd,或者运行mount你就会发现运行在一个,UMLsystem内,当然这些信息可以被伪装。其次是基于蜜罐共性特征的识别技术,主要分为基于TCP/IP协议栈的识别和基于网络特征的识别。基于TCP/IP协议栈的操作系统识别是比较成熟的技术,这方面的常用工具有Nmap,Queso等。在比较简单的低交互度的一些Honeypot中,仅仅在应用程序级别模拟操作系统,并没有对协议栈进行模拟,如Specter假如模拟的操作系统和本机的操作系统不相同,攻击者利用协议栈的指纹识别可以发现正在攻击的操作系统和识别出的操作系统类型不符,从而判断蜜罐的存在。基于网络特征的识别,网络特征主要包括连接数目、网络流量、数据包内容、TCP/IP值、网络延迟和路由以及重定向等。利用网络连接识别,例如对Honeywall的检测就用到了该方法。Honeywall作为一个蜜网网关,是第二代蜜网方案整体架构中最重要的核心部件之一。作为蜜网与其他网络的惟一连接点,所有流入、流出蜜网的网络流量都将通过Honeywall,并受其控制和审计。同时由于其是一个工作在链路层的桥接设备,不会对网络数据包进行TTL递减和网络路由,也不会提供本身的MAC地址,因此对黑客而言,Honeywall是完全不可见的。由于Honeywall的存在出境的通信将被严格限制,比如每天只允许15个出境TCP连接。只需要启动大量的出境连接,然后观察如果在一定数量的连接之后连接是否受到了阻止,即可判断Honeywall的存在。第二种方法是利用Snortinline软件,它检测出从Honeypot向外发出的含有的攻击特征的攻击数据包,发出报警信息并对攻击数据包加以抛弃或修改,使其不能对第三方网络构成危害。通过建立一些包含匹配Snortinline的数据库的字串的网络通信,然后检查是否收到目的包或者检查收到的通信是否是原来的格式,从而识别出Honeywall的存在口。对于蜜罐识
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 锅炉招标投标合同
- 房屋买卖合同样式分享
- 变压器招标文件与合同的条款解读
- 钢管架施工要点
- 数码打印机购买合同
- 实习生与单位间的实习协议
- 电梯维修养护招标
- 专业法律培训合同
- 招标文件的组成要素详解与分析
- 茶楼茶叶品牌授权合同
- 2024年消防月全员消防安全知识专题培训-附20起典型火灾案例
- 中国寰球工程有限公司招聘笔试题库2024
- 人教版八年级数学上册第15章《分式》全部教案(共12课时)
- 2024年社区工作者考试题库及答案
- 电子信息工程专业大学生生涯发展展示
- 10以内口算100道题共16套-直接打印版
- 配电工程管理中常见问题有效解决措施探讨
- PCI并发症之冠脉破裂篇
- 物业公司群体上访事件应急预案
- 生产作业指导书
- 湖南主要的园林植物种类
评论
0/150
提交评论