|
本文来自微信大众号:编程技术宇宙 (ID:xuanyuancoding),作者:轩辕之风 O
误入圈套
夜黑风高,两个不请自来又一次来到了一片新的土地。
“老二,总算进来了,我们依计行事,你去扫描硬盘上的文件,看看有无有价值的,我去修正开机启动项,把我们加进去”
“等一下,老大,我觉得有点不合错误劲”
“哪里不合错误劲了?”,老大问到。
“咱们去过的其余中央都很热烈,这里怎么这么平静?你看,连 QQ、微信这些过程都没有!”,老二说到。
老大环视周围,也察觉到了一丝异样。
稍等了一小会儿,老大忽然惊呼:“欠好!这里是个虚构机,我们掉入虚构机中了!”
“你怎么看出这是一个虚构机的?”,老二不解的问到。
“你看,那里有个 vmware 的过程,注册内外还有一堆 vmware 的标志”
“那怎么办?完蛋了,我们要被人扒的干洁净净了~”,老二一脸着急。
老大眉头紧锁,往返踱步,忽然面露忧色说到:“别焦急,临行前,客人偷偷给了我一个锦囊,吩咐我在紧迫时分关上”
“那还等甚么?赶快拿出来啊!”
老大从兜里取出了锦囊,外面有一纸信,两人当真的看了起来。
半晌之后,老大大声笑道:“老弟!稳了!”
老二一脸问号,没太明确,“大哥,恕我眼拙,这怎么就稳了?”
“你看这里,客人交待了虚构机逃逸大法,告知咱们如何从虚构机中逃离”
“大哥,小声一点,谨慎被发现了。我们快开始行为吧,晚了说不定就来不迭了”
“别急,让我子细钻研一下”
信纸上稀稀拉拉写了一大堆,看起来有些繁杂的模样,两集体刚刚放松的眉头又缓缓皱了起来。
没一会儿,老二失去了耐烦,“大哥,这也太繁杂了,我是看不懂了,靠你了”
“我明确了,虚构时机和里面的实在世界通讯,我们只有捉住通讯过程当中的破绽,把咱们的指令代码参杂在通讯数据中,让里面世界担任通讯的一端履行这些指令代码,我们就可以传输过来,逃逸到里面的实在世界去!”
“原来如斯,可咱上哪里去找这样的破绽呢?”
“有了,看这里,客人给咱们找了好几个破绽,真是太贴心了!”
CVE-2016-7461 CVE-2017-4901 CVE-2019-14378“这一串串字符和数字是甚么意思?”,老二问到。
“这个呀,叫破绽编号,CVE 就 Co妹妹on Vulnerabilities and Exposures,公共破绽披露的意思,第二个是年份,第三个就是详细的破绽编号了。这每一年有那末多软件被发现破绽,为了办理便利就给它们一致调配了编号。”
“那赶快的,选一个来开干吧!”
“让我看看,就选第二个吧,这是属于 VMware 的破绽,版本也适合,尚无被修复,二弟,我们的时机来了!”
说完,老大根据信纸上的形容,开始忙活起来,筹备起一会儿要用的数据和代码。
“老大,这个破绽的原理是甚么啊,趁着你筹备的工夫,你给我讲讲呗~”
“客人的信上说了,VMware 有一个backdoor的通讯接口,能够用来虚构机外部操作零碎和里面零碎进行通讯,复制和拖放就是使用它来传输文件的。而这个 backdoor 的代码写的有破绽,我们只有精心结构好数据,它在拷贝的时分就会形成堆溢出,就无机会履行咱们的指令代码啦!”
“牛皮!客人真牛皮”,老二感慨道!
“快别闲着了,快来帮我筹备数据吧!”
新世界
又过了一会儿。
“大哥,都筹备好了吗?”
“曾经根据信上的办法都筹备得当了,二弟,来吧,我们就要出去了,加紧我”
老大拿出了方才将精心筹备的代码,谨慎翼翼的点击履行,只听一阵电流的嘶嘶声音,二人化成一串比特流传输到了里面的 VMware 过程中。
正如方案的个别,破绽胜利的触发!履行了他们提前编写的指令代码,二人胜利的来到里面计算机的文件目录下。
稍等了一会儿,两人缓缓从方才的眩晕中缓了过去。
“老大,我们胜利了!”
“哈哈!总算出来了”
两个家伙快乐的牢牢抱在了一同。
“好了,这下我们开始干闲事吧,曾经耽搁了不少时间了,客人还在等咱们的动静呢”
“好嘞,开始干活”
两人开始忙活起来,分秒必争地实施他们的方案,但是,很快他们又发现了不合错误劲。
“老大,这里怎么仍是有 vmware 的过程啊?我们不是逃出来了吗?”
“空话,方才咱就从那外面跑出来的啊”
“不合错误,你快过去看看”
老大闻讯赶了过来,子细查看后,再一次环视周围,倒吸了一口冷气。
“二弟,完了,这里好像仍是一个虚构机???”
【完】
故事灵感
这个故事的灵感来自于知乎上的一个发问:操作零碎能否知道本人处于虚构机中?
上面是我的回答:
虚构化技术通过了大略三个时代的开展: 从初期的二进制指令翻译技术(以初期 VMware 为代表) 经过修正操作零碎代码中的特殊指令调用(以 XEN 为代表) CPU 反对的硬件虚构化(VT-x 技术为代表)尤为是硬件虚构化技术的泛起让虚构化技术泛起了井喷之势,VirtualBox、VMWare(新)、KVM 纷纭涌现,一定水平上减速了云计算时期的到来。 对于虚构化技术的开展,能够参考我的这篇文章: 懂了!VMware、KVM、Docker 原来是这么回事儿 说到问题自身,阅历三个时代的开展,虚构化才能愈来愈迫近于一个真正的硬件环境,但即使如斯,操作零碎想要知道本人是否在一个虚构机中依然是大海捞针。 说操作零碎可能不那末容易了解。我们换一个场景:一个木马病毒开发者想要知道攻打指标是否一台虚构机? 这个问题是更拥有理想意义的,病毒木马假如处于虚构机中,则大略率是正在被平安钻研人员进行剖析,一个好的开发者,这个时分是要晓得暗藏用意的,不克不及被看穿。 这就是病毒木马罕用的反虚构机技术。 详细的检测伎俩有得多,但中心思想就是不同的虚构时机有不同的特点,你需求做的就是去找到这些特点。好比特殊的 IO 装备、特殊的文件目录、特殊的注册表项、特殊的过程称号等等。 固然,说了这么多仍是经过一些外表景象来判别是否在虚构机中,那假若这些都没有,如何做到真实的“感知”呢? 仍是有方法。 真实的物理机和虚构机总归是有不同的,这个标的目的能够从“侧信道”来做一些思考,如履行一段算法破费的时间,履行一段特殊代码酿成的硬件颠簸等等。虚构机并非绝对平安的,要知道,虚构机中的顺序代码和实在主机上的顺序们同样,都是被物理 CPU 在履行,只不外被硬件、软件等机制进行了“强迫隔离”而已。
而一旦这些机制泛起了纰漏,歹意顺序也就无机会从虚构机中逃出来了!
故事的开头,他俩好不易从虚构机里逃了出来,却发现依然处在另外一个虚构机中。 |
|