
bug是漏洞的意思吗
-无限网卡
2023年2月16日发(作者:浮生六记翻译)《0day安全第⼆版》第1章基础知识
⽬录
第1章基础知识(2)
1.1漏洞概述(3)
1.1.1bug与漏洞(3)
1.1.2⼏个令⼈困惑的安全问题(3)
1.1.3漏洞挖掘、漏洞分析、漏洞利⽤(4)
1.1.4漏洞的公布与0day响应(6)
1.2⼆进制⽂件概述(7)
1.2.1PE⽂件格式(7)
1.2.2虚拟内存(7)
1.2.3PE⽂件与虚拟内存之间的映射(9)
1.3必备⼯具(9)
1.3.1OllyDbg简介(9)
1.3.2SoftICE简介(11)
1.3.3WinDbg简介(11)
1.3.4IDAPro简介(11)
1.3.5⼆进制编辑器(11)
1.3.6VMware简介(12)
1.3.7Python编程环境(19)
1.4Crack⼩实验(19)
第1章基础知识
要想扬帆于⼆进制海洋,除了⽔⼿坚定的意志外,还需要有能够乘风破浪的坚船利器,定位精准的陀螺码表。没有⼯具的
hacker如同没有枪的战⼠,⼦⽈:⼯欲善其事,必先利其器。
掌握ollydbg等动态调试⼯具可以让您在分析内存时体会到庖丁解⽜的快感,⽽IDA这类静态反汇编⼯具就像迷宫的地图⼀样保
证您在⼆进制⽂件中分析漏洞时不置于迷失⽅向。
样章发布,仅限于学习交流,禁⽌以商业⽬的转载样章发布,仅限于学习交流,禁⽌以商业⽬的转载
有⼀点需要提醒您,本书对这些⼯具的介绍只能让您简单上⼿,不要指望能够⽴刻把它们挥洒⾃如,那需要您在实践中不断地
体会和学习。
1.1漏洞概述
1.1.1bug与漏洞
随着现代软件⼯业的发展,软件规模不断扩⼤,软件内部的逻辑也变得异常复杂。为了保证软件的质量,测试环节在软件⽣命
周期中所占的地位已经得到了普遍重视。在⼀些著名的⼤型软件公司中,测试环节(QA)所耗费的资源甚⾄已经超过了开
发。即便如此,不论从理论上还是⼯程上都没有任何⼈敢声称能够彻底消灭软件中所有的逻辑缺陷——bug。
在形形⾊⾊的软件逻辑缺陷中,有⼀部分能够引起⾮常严重的后果。例如,⽹站系统中,如果在⽤户输⼊数据的限制⽅⾯存在
缺陷,将会使服务器变成SQL注⼊攻击和XSS(CrossSiteScript,跨站脚本)攻击的⽬标;服务器软件在解析协议时,如果
遇到出乎预料的数据格式⽽没有进⾏恰当的异常处理,那么就很可能会给攻击者提供远程控制服务器的机会。
我们通常把这类能够引起软件做⼀些“超出设计范围的事情”的bug称为漏洞(vulnerability)。
(1)功能性逻辑缺陷(bug):影响软件的正常功能,例如,执⾏结果错误、图标显⽰错误等。
(2)安全性逻辑缺陷(漏洞):通常情况下不影响软件的正常功能,但被攻击者成功利⽤后,有可能引起软件去执⾏额外的
恶意代码。常见的漏洞包括软件中的缓冲区溢出漏洞、⽹站中的跨站脚本漏洞(XSS)、SQL注⼊漏洞等。
1.1.2⼏个令⼈困惑的安全问题
也许您有⼀定的计算机知识,但仍然经常费解于下⾯这些安全问题。
(1)我从不运⾏任何来历不明的软件,为什么还会中病毒?
如果病毒利⽤重量级的系统漏洞进⾏传播,您将在劫难逃。因为系统漏洞可以引起计算机被远程控制,更何况传播病毒。横扫
世界的冲击波蠕⾍、slammer蠕⾍等就是这种类型的病毒。
如果服务器软件存在安全漏洞,或者系统中可以被RPC远程调⽤的函数中存在缓冲区溢出漏洞,攻击者也可以发起“主动”进
攻。在这种情况下,您的计算机会轻易沦为所谓的“⾁鸡”。
(2)我只是点击了⼀个URL链接,并没有执⾏任何其他操作,为什么会中⽊马?
如果您的浏览器在解析HTML⽂件时存在缓冲区溢出漏洞,那么攻击者就可以精⼼构造
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
⼀个承载着恶意代码的HTML⽂件,并把其链接发给您。当您点击这种链接时,漏洞被触发,从⽽导致HTML中所承载的恶意
代码(shellcode)被执⾏。这段代码通常是在没有任何提⽰的
情况下去指定的地⽅下载⽊马客户端并运⾏。
此外,第三⽅软件所加载的ActiveX控件中的漏洞也是被“⽹马”所经常利⽤的对象。所以千万不要忽视URL链接。
(3)Word⽂档、PowerPoint⽂档、Excel表格⽂档并⾮可执⾏⽂件,它们会导致恶意代码的执⾏吗?
和html⽂件⼀样,这类⽂档本⾝虽然是数据⽂件,但是如果Office软件在解析这些数据⽂件的特定数据结构时存在缓冲区溢出
漏洞的话,攻击者就可以通过⼀个精⼼构造的Word⽂档来触发并利⽤漏洞。当您在⽤Office软件打开这个Word⽂档的时
候,⼀段恶意代码可能已经悄⽆声息地被执⾏过了。
(4)上⽹时,我总是使⽤⾼强度的密码注册账户,我的账户安全吗?
⾼强度的密码只能抵抗密码暴⼒猜解的攻击,具体安全与否还取决于很多其他因素:密码存在哪⾥,例如,存本地计算机还
是远程服务器。
密码怎样存,例如,明⽂存放还是加密存放,什么强度的加密算法等。密码怎样传递,例如,密钥交换的过程是否安全,⽹
络通讯是否使⽤SSL等。
这些过程中如果有任何⼀处失误,都有可能引起密码泄漏。例如,⼀个⽹站存在SQL注⼊漏洞,⽽您的账号密码⼜以明⽂形
式存在Web服务器的数据库中,那么⽆论您的密码多长,包含多少奇怪的字符,最终仍将为脚本注⼊攻击者获取。
此外,如果密码存在本地,即使使⽤⾼强度的Hash算法进⾏加密,如果没有考虑到CRACK攻击,验证机制也很可能被轻易
突破。
您也许阅读过很多本⽹络安全书籍,所以经常看到端⼝扫描、⽹络监听、密码猜解、DOS等名词。虽然这些话题在⽹络安全
技术中永远都不会过时,但阅读完本书之后,您将发现漏洞利⽤技术才是实施有效攻击的最核⼼技术,才是突破安全边界、实
施深度⼊侵的关键所在。
1.1.3漏洞挖掘、漏洞分析、漏洞利⽤
利⽤漏洞进⾏攻击可以⼤致分为漏洞挖掘、漏洞分析、漏洞利⽤三个步骤。这三部分所⽤的技术有相同之处,⽐如都需要精通
系统底层知识、逆向⼯程等;同时也有⼀定的差异。
1.漏洞利⽤
漏洞利⽤技术可以⼀直追溯到20世纪80年代的缓冲区溢出漏洞的利⽤。然⽽直到AlephOne于1996年在Phrack第49期上发表
了著名的⽂章《SmashingTheStackForFunAndProfit》,这种技术才真正流⾏起来。
随着时间的推移,经过⽆数安全专家和⿊客们针锋相对的研究,这项技术已经在多种流⾏
样章发布,仅限于学习交流,禁⽌以商业⽬的转载样章发布,仅限于学习交流,禁⽌以商业⽬的转载
的操作系统和编译环境下得到了实践,并⽇趋完善。这包括内存漏洞(堆栈溢出)和Web应⽤漏洞(脚本注⼊)等。
本书将从攻防两个⾓度着重介绍Windows平台下内存漏洞利⽤技术的⽅⽅⾯⾯。由于⼿机安全及Web应⽤中的脚本注⼊攻击
所使⽤的技术与Windows平台下缓冲区溢出相差较⼤,且⾃成体系,本书只做原理性简单介绍,如有机会将单独著书以述
之。本书将在第⼀篇与第⼆篇中由浅⼊深的集中介绍这部分内容。
2.漏洞挖掘
安全性漏洞往往不会对软件本⾝功能造成很⼤影响,因此很难被QA⼯程师的功能性测试发现,对于进⾏“正常操作”的普通⽤
户来说,更难体会到软件中的这类逻辑瑕疵了。
由于安全性漏洞往往有极⾼的利⽤价值,例如,导致计算机被⾮法远程控制,数据库数据泄漏等,所以总是有⽆数技术精湛、
精⼒旺盛的家伙在夜以继⽇地寻找软件中的这类逻辑瑕疵。他们精通⼆进制、汇编语⾔、操作系统底层的知识;他们往往也是
杰出的程序员,因此能够敏锐地捕捉到程序员所犯的细⼩的错误。
寻找漏洞的⼈并⾮全是攻击者。⼤型的软件企业也会雇⽤⼀些安全专家来测试⾃⼰产品中的漏洞,这种测试⼯作被称作
Penetrationtest(攻击测试),这些测试团队则被称作Tigerteam或者Ethichacker。
从技术⾓度讲,漏洞挖掘实际上是⼀种⾼级的测试(QA)。学术界⼀直热衷于使⽤静态分析的⽅法寻找源代码中的漏洞;⽽
在⼯程界,不管是安全专家还是攻击者,普遍采⽤的漏洞挖掘⽅法是fuzz,这实际是⼀种“灰”盒测试。
我们会在第三篇的相关章节中进⼀步介绍漏洞挖掘与产品安全性测试⽅⾯的知识。
3.漏洞分析
当fuzz捕捉到软件中⼀个严重的异常时,当您想透过⼚商公布的简单描述了解漏洞细节的时候,您就需要具备⼀定的漏洞分析
能⼒。⼀般情况下,我们需要调试⼆进制级别的程序。
在分析漏洞时,如果能够搜索到POC(proofofconcept)代码,就能重现漏洞被触发的现场。这时可以使⽤调试器观察漏洞
的细节,或者利⽤⼀些⼯具(如Paimei)更⽅便地找到漏洞的触发点。
当⽆法获得POC时,就只有⼚商提供的对漏洞的简单描述了。⼀个⽐较通⽤的办法是使⽤补丁⽐较器,⾸先⽐较patch前后可
执⾏⽂件都有哪些地⽅被修改,之后可以利⽤反汇编⼯具(如IDAPro)重点逆向分析这些地⽅。
漏洞分析需要扎实的逆向基础和调试技术,除此以外还要精通各种场景下的漏洞利⽤⽅法。这种技术更多依靠的是经验,很难
总结出通⽤的条款。本书将在第五篇中⽤若⼲个实际的
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
分析案例来帮助您体会漏洞分析的过程,希望能够起到抛砖引⽟的效果。
1.1.4漏洞的公布与0day响应
漏洞公布的流程取决于漏洞是被谁发现的。
如果是安全专家、PenTester、EthicHacker在测试中发现了漏洞,⼀般会⽴刻通知⼚商的产品安全中⼼。软件⼚商在经过
漏洞确认、补丁测试之后,会正式发布漏洞公告和官⽅补丁。
然⽽事情总是没有那么简单,如果漏洞被攻击者找到,肯定不会⽴刻通知软件⼚商。这时漏洞的信息只有攻击者⾃⼰知道,他
可以写出exploit利⽤漏洞来做任何事情。这种未被公布、未被修复的漏洞往往被称作0day。
0day漏洞是危害最⼤的漏洞,当然对攻击者来说也是最有价值的漏洞。
0day毕竟只是被少数攻击者掌握,并且⼤多数情况下也不会有⼈浮躁到写出蠕⾍来攻击整个Internet。但有时0day漏洞会被
曝光,那意味着全世界的⿊客都知道这个漏洞,也懂得怎么去利⽤它,在⼚商的官⽅补丁发布前,整个Internet的⽹络将处于
⾼危预警状态。
0day曝光属于严重的安全事件,⼀般情况下,软件⼚商都会进⼊应急响应处理流程,以最快的速度修复漏洞,保护⽤户的合
法权利。
公布漏洞的权威机构有两个。
(1)CVE(CommonVulnerabilitiesandExposures)/doc//截⾄⽬
前,这⾥收录着两万多个漏洞。CVE会对每个公布的漏洞进⾏编号、审查。CVE编号通常也是引⽤漏洞的标准⽅式。
(2)CERT(ComputerEmergencyResponseTeam)/doc//计算机应
急响应组往往会在第⼀时间跟进当前的严重漏洞,包括描述信息、POC的发布链接、⼚商的安全响应进度、⽤户应该采取的
临时性防范措施等。
此外,微软的安全中⼼所公布的漏洞也是所有安全⼯作者和⿊客们最感兴趣的地⽅。微软每个⽉第⼆周的星期⼆发布补丁,这
⼀天通常被称为“BlackTuesday”,因为会有许多攻击者通宵达旦地去研究这些补丁patch了哪些漏洞,并写出exploit。因为
在补丁刚刚发布的⼀段时间内,并⾮所有⽤户都能及时修复,故这种新公布的漏洞也有⼀定利⽤价值。有时把攻击这种刚刚被
patch过的漏洞称为1day攻击。(patch发布后1天,叫做1day,5天叫做5day,未发patch统称0day)
样章发布,仅限于学习交流,禁⽌以商业⽬的转载样章发布,仅限于学习交流,禁⽌以商业⽬的转载
1.2⼆进制⽂件概述
1.2.1PE⽂件格式
PE(PortableExecutable)是Win32平台下可执⾏⽂件遵守的数据格式。常见的可执⾏⽂件(如“*.exe”⽂件和“*.dll”⽂件)都
是典型的PE⽂件。
⼀个可执⾏⽂件不光包含了⼆进制的机器代码,还会⾃带许多其他信息,如字符串、菜单、图标、位图、字体等。PE⽂件格
式规定了所有的这些信息在可执⾏⽂件中如何组织。在程序被执⾏时,操作系统会按照PE⽂件格式的约定去相应的地⽅准确
地定位各种类型的资源,并分别装⼊内存的不同区域。如果没有这种通⽤的⽂件格式约定,试想可执⾏⽂件装⼊内存将会变成
⼀件多么困难的事情!
PE⽂件格式把可执⾏⽂件分成若⼲个数据节(section),不同的资源被存放在不同的节中。⼀个典型的PE⽂件中包含的节如
下。
.text由编译器产⽣,存放着⼆进制的机器代码,也是我们反汇编和调试的对象。
.data初始化的数据块,如宏定义、全局变量、静态变量等。
.idata可执⾏⽂件所使⽤的动态链接库等外来函数与⽂件的信息。
.rsrc存放程序的资源,如图标、菜单等。
除此以外,还可能出现的节包括“.reloc”、“.edata”、“.tls”、“.rdata”等。
题外话:如果是正常编译出的标准PE⽂件,其节信息往往是⼤致相同的。但这些section的名字只是为了⽅便⼈的记忆与使
⽤,使⽤MicrosoftVisualC++中的编译
指⽰符#pragmadata_seg()可以把代码中的任意部分编译到PE的任意节中,节名也可
以⾃⼰定义。如果可执⾏⽂件经过了“加壳”处理,PE的节信息就会变得⾮常“古怪”。
在Crack和反病毒分析中需要经常处理这类古怪的PE⽂件。
1.2.2虚拟内存
Windows的内存可以被分为两个层⾯:物理内存和虚拟内存。其中,物理内存⽐较复杂,需要进⼊Windows内核级别ring0才
能看到。通常,在⽤户模式下,我们⽤调试器看到的内存地址都是虚拟内存。
如图1.2.1所⽰,Windows让所有的进程都“相信”⾃⼰拥有独⽴的4GB内存空间。但是,我们计算机中那根实际的内存条可能只
有512MB,怎么可能为所有进程都分配4GB的内存呢?这⼀切都是通过虚拟内存管理器的映射做到的。
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
虽然每个进程都“相信”⾃⼰拥有4GB的空间,但实际上它们运⾏时真正能⽤到的空间根本没有那么多。内存管理器只是分给进
程了⼀⽚“假地址”,或者说是“虚拟地址”,让进程
们“认为”这些“虚拟地址”都是可以访问的。如果进程不使⽤这些“虚拟地址”,它们对进程来说就只是⼀笔“⽆形的数字财富”;当
需要进⾏实际的内存操作时,内存管理器才会把“虚拟地址”和“物理地址”联系起来。
Windows的内存管理机制在很⼤程度上与⽇常⽣活中银⾏所起的⾦融作⽤有⼀定的相似性,我们可以通过⼀个形象的⽐⽅来
理解虚拟内存。
图1.2.1Windows虚拟内存与物理内存⽰意图
●进程相当于储户。●内存管理器相当于银⾏。●物理内存相当于钞票。●虚拟内存相当于存款。
●
进程可能拥有⼤⽚的内存,但使⽤的往往很少;储户拥有⼤笔的存款,但实际⽣活中
的开销并没有多少。
●进程不使⽤虚拟内存时,这些内存只是⼀些地址,是虚拟存在的,是⼀笔⽆形的数字财富。●进程使⽤内存时,内存管理
器会为这个虚拟地址映射实际的物理内存地址,虚拟内存
样章发布,仅限于学习交流,禁⽌以商业⽬的转载样章发布,仅限于学习交流,禁⽌以商业⽬的转载
地址和最终被映射到的物理内存地址之间没有什么必然联系;储户需要⽤钱时,银⾏
才会兑换⼀定的现⾦给储户,但物理钞票的号码与储户⼼⽬中的数字存款之间可能并
没有任何联系。
操作系统的实际物理内存空间可以远远⼩于进程的虚拟内存空间之和,仍能正常调度;
1.3必备⼯具
1.3.1OllyDbg简介
Ollydbg是⼀个集成了反汇编分析、⼗六进制编辑、动态调试等多种功能于⼀⾝的功能强⼤的调试器。它安装简单,甚⾄不需
要点击安装⽂件就能直接运⾏;它扩展性强,您甚⾄可以为⾃⼰写出有特殊⽤途的插件;它简单易⽤,初学者只需要知道⼏个
快捷键就能⽴刻上⼿……Olldbg的优点实在是数不胜数,现在已经成为主流调试器之⼀。
与SoftIce和WinDbg相⽐,Ollydbg虽然⽆法调试内核,但其⼈性化的GUI界⾯省去了初
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
学者往往望⽽却步的调试命令,您需要的只是掌握五六个快捷键,然后⽤⿏标click,click,click……
OllyDbg并⾮浪得虚名,在⽤户态调试中,真的只要有它“onlyone”,就可以⾛遍天下都不怕了。它的主功能界⾯在默认情况
下分为5个部分,让您在调试过程中轻松掌握指令、内存、
OllyDbg博⼤精深,其内存断点、内存跟踪(trace)、条件断点和众多插件的功能将在后续章节中陆续进⾏介绍。
样章发布,仅限于学习交流,禁⽌以商业⽬的转载样章发布,仅限于学习交流,禁⽌以商业⽬的转载
图1.3.1OllyDbg调试界⾯简介1.3.2SoftICE简介
样章中省略。。。。。。
1.3.3WinDbg简介
样章中省略。。。。。。
1.3.4IDAPro简介
样章中省略。。。。。。
1.3.5⼆进制编辑器
样章中省略。。。。。。
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
1.3.6VMware简介
在研究Windows漏洞时,我们往往要实验Windows2000、WindowsXP、Windows2003、Windowsvista、Windows7等
多种平台,有时还要对⽐补丁前后系统的变化。如果为每套操作系统、每款补丁都分配⼀台计算机的话这将是⼀件⾮常烧钱的
事,⽽虚拟机的出现解决这个问题。
与平时所说的JAVA虚拟机不同,这⾥所说的虚拟机是指通过软件来模拟具有完整硬件系统功能的、运⾏在⼀个完全隔离环
境中的完整计算机系统。通过虚拟机软件,您可以在⼀台物理计算机上模拟出⼀台或多台虚拟的计算机,这些虚拟机完全就像
真正的计算机那样进⾏⼯作,例如您可以安装操作系统、安装应⽤程序、访问⽹络资源等等。对于您⽽⾔,它只是运⾏在您物
理计算机上的⼀个应⽤程序,但是对于在虚拟机中运⾏的应⽤程序⽽⾔,它就像是在真正的计算机中进⾏⼯作。
除了节约资⾦外,虚拟机还有着其他优势让安全⼯作者们不忍抛弃,例如:
1.虚拟机具有出⾊的快照功能。我们可以通过创建快照,可以将虚拟机中的操作系统快速的恢复到某⼀状态。例如,调试病
毒样本后,需要将操作系统恢复到⼲净的状态;Patch过补丁后,⼜希望把系统恢复到有漏洞的状态等。
2.可以防⽌漏洞分析中对操作系统和资料的破坏。由于漏洞测试过程是在虚拟机当中进⾏的,绝⼤多数的情况下不会对宿主
机产⽣影响。
在Windows系统下,⽬前流⾏的虚拟机软件有VMware和VirtualPC,它们都能在Windows系统上虚拟出多个计算机,⽤于
安装Linux、OS/2、FreeBSD等其他操作系统。本书将使⽤VMware作为虚拟机软件,接下来我们来看看VMware的使⽤⽅
法。
这⾥演⽰安装的是VMware6.5.3版本,软件的安装过程与⼀般的应⽤软件安装没有什么区别,输⼊正确序列号后就可以使
⽤。其使⽤界⾯如图1.3.11所⽰。
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
图1.3.11VMware的使⽤界⾯
⽤⿏标选择图标,会出现VMware新建虚拟机向导,如图1.3.12的画⾯。
图1.3.12新建虚拟机类型选择画⾯
VMware⾸先会让你选择要建⽴什么类型的虚拟机,“Typical”指的是传统硬件环境的虚拟机,也就是⼀般使⽤的基于Intelx86
结构的计算机系统,这也是VMware所推荐的虚拟机系统安装环境。“Custom”是⽤来建⽴有特殊硬件结构需要的虚拟机,例
如建⽴⽀持SCSI控制器的虚拟机系统环境,您可以理解“Custom”类型属于⾼级配置模式,⼀般情况下,我们选择“Typical”
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
来建⽴虚拟机环境。选择“下⼀步”后,如图1.3.13所⽰。
图1.3.13选择预安装操作系统来源
利⽤VMware安装操作系统⾸先第⼀步就是选择操作系统源⽂件的来源,VMware⽀持传统的利⽤光驱安装操作系统,同时也
⽀持利⽤光盘镜像⽂件iso来安装操作系统。我们这⾥选择使⽤iso⽂件作为安装操作系统的来源之后,点击“Next”按钮,如
果虚拟机能够⾃动识别要安装的操作系统就会显⽰图1.3.16的界⾯,如果虚拟机不能够⾃动识别要安装的操作系统,就会显⽰
图1.3.14的界⾯。
图1.3.14选择预安装操作系统类型
当VMware不能够⾃动识别要安装的系统时,我们需要⼿⼯选择要安装的操作系统类型。
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
统,VMware⽀持微软的Windows系统、Linux、NovellNetWare、SunSolaris等等操作系统。同时,VMware还对每⼀种
类型的操作系统有着更加具体的⽀持,如图1.3.15所⽰。
图1.3.15选择操作系统具体版本
在图1.3.15的下拉列表中选择好我们即将安装的具体操作系统版本型号后(这⾥选择的是微软的WindowsXPProfessional操
作系统),选择“Next”,如图1.3.16所⽰。
图1.3.16填写待安装操作系统序列号以及管理员密码
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
新版本的VMware⽐较以前VMware5的版本在细节⽅⾯有了较⼤改变,在安装操作系统之前提供了设置待安装操作系统序列
号和设置管理员⽤户密码的功能,这样做的⽬的是为了能
够完成⾃动化操作系统安装,不需要⼈⼯⼲预。设置完毕后,点击“Next”按钮,进⼊下⼀步设置,如图1.3.17所⽰。
图1.3.17设置虚拟机操作系统保存路径图1.3.17将设置虚拟机操作系统的⽂件保存位置以及新虚拟机的名字,此时要注意选择
的虚拟机⽂件保存位置⼀定要有⾜够的硬盘空间,根据所安装的操作系统不⼀样,VMware虚拟机需要的保存空间也不⼀样,
对于像WindowsXPProfessional这样的系统来说保存空间最好保持在40G⼤⼩。对于新虚拟机名则可以不做修改,选
择“Next”,如图1.3.18所⽰。
图1.3.18设置虚拟机操作系统⽂件及磁盘⼤⼩
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
图1.3.18这⾥主要设置虚拟机操作系统磁盘⼤⼩和⽂件保存类型,这⾥不需要做任何修改,直接点击“Next”按钮,如图1.3.19
所⽰。
图1.3.19设置完成画⾯
这⼀步显⽰的是虚拟机配置完成信息,直接点击“Finish”按钮,VMware将开始安装⾃动操作系统了。如图1.3.20所⽰。
图1.3.20开始安装操作系统
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
样章发布,仅限于学习交流,禁⽌以商业⽬的转载
等待VMware操作系统安装完毕后,我们需要注意给新的虚拟机安装上VMwareTools,只有安装了VMwareTools之后,我
们才可以让虚拟机与真实主机进⾏通讯。安装VMwareTools
的⽅法是选择“VM”菜单中的“InstallVMwareTools”选项即可,如图1.3.21所⽰。
图1.3.21安装VMwareTools
题外话:从安全技术的⾓度,电影Matrix(⿊客帝国)中描述的故事就有点像在虚拟机中调试病毒时的情景:正常的程序安静
地运⾏在虚拟机中;少数像Neo这样的有“特权”的程序可以做许多出格的事,甚⾄跳出虚拟机进⼊宿主机(锡安)运⾏;电影
第⼆部结束时,Neo在“真正的操作系统”锡安中也能使⽤特权指令——⽤意念消灭乌贼机器⼈,原来这个所谓的“真正的操作
系统”也只是更⾼⼀层的虚拟;Agent也是⼀类特殊的进程,它们有⼀种特权,就是使⽤Hook函数注⼊到任意⼀个ring3级进
程中去;由于Smith作为特权进程对Matrix的背叛,导致⼏乎所有的进程都被他感染;电影第三部末尾Matrix⾯临崩溃,Neo
牺牲⾃⼰帮助Matrix定位到Smith,也就是病毒进程的PID,之后通过⼀轮内存杀毒和重启虚拟机等操作,使Matrix重新恢复
到“⽐
样章发布,仅限于学习交流,禁⽌以商业⽬的转载样章发布,仅限于学习交流,禁⽌以商业⽬的转载
较正常”的状态。
1.3.7Python编程环境
样章中省略。。。。。。
1.4Crack⼩实验
样章中省略。。。。。。