首頁>故事>

誤入陷阱

夜黑風高,兩個不速之客又一次來到了一片新的土地。

“老二,總算進來了,咱們依計行事,你去掃描硬碟上的檔案,看看有沒有有價值的,我去修改開機啟動項,把咱們加進去”

“等一下,老大,我感覺有點不對勁”

“哪裡不對勁了?”,老大問到。

老大環顧四周,也察覺到了一絲異常。

稍等了一小會兒,老大突然驚呼:“不好!這裡是個虛擬機器,咱們掉入虛擬機器中了!”

“你怎麼看出這是一個虛擬機器的?”,老二不解的問到。

“你看,那裡有個vmware的程序,登錄檔裡還有一堆vmware的標記”

“那怎麼辦?完蛋了,咱們要被人扒的乾乾淨淨了~”,老二一臉焦急。

老大眉頭緊鎖,來回踱步,突然面露喜色說到:“彆著急,臨行前,主人偷偷給了我一個錦囊,叮囑我在緊急時候開啟”

“那還等什麼?趕緊拿出來啊!”

老大從兜裡掏出了錦囊,裡面有一紙信,兩人認真的看了起來。

片刻之後,老大大聲笑道:“老弟!穩了!”

老二一臉問號,沒太明白,“大哥,恕我眼拙,這怎麼就穩了?”

“你看這裡,主人交代了虛擬機器逃逸大法,告訴我們如何從虛擬機器中逃離”

“大哥,小聲一點,小心被發現了。咱們快開始行動吧,晚了說不定就來不及了”

“別急,讓我仔細研究一下”

信紙上密密麻麻寫了一大堆,看起來有些複雜的樣子,兩個人剛剛放鬆的眉頭又慢慢皺了起來。

沒一會兒,老二失去了耐心,“大哥,這也太複雜了,我是看不懂了,靠你了”

“我明白了,虛擬機器會和外面的真實世界通訊,咱們只要抓住通訊過程中的漏洞,把我們的指令程式碼參雜在通訊資料中,讓外面世界負責通訊的一端執行這些指令程式碼,咱們就能傳輸過去,逃逸到外面的真實世界去!

“原來如此,可咱上哪裡去找這樣的漏洞呢?”

“有了,看這裡,主人給我們找了好幾個漏洞,真是太貼心了!”

CVE-2016-7461

CVE-2017-4901

CVE-2019-14378

“這一串串字元和數字是什麼意思?”,老二問到。

“這個呀,叫漏洞編號,CVE就Common Vulnerabilities and Exposures,公共漏洞披露的意思,第二個是年份,第三個就是具體的漏洞編號了。這每年有那麼多軟體被發現漏洞,為了管理方便就給它們統一分配了編號。”

“那趕緊的,選一個來開幹吧!”

“讓我看看,就選第二個吧,這是屬於VMware的漏洞,版本也合適,還沒有被修復,二弟,咱們的機會來了!”

說完,老大按照信紙上的描述,開始忙活起來,準備起一會兒要用的資料和程式碼。

“老大,這個漏洞的原理是什麼啊,趁著你準備的功夫,你給我講講唄~”

“主人的信上說了,VMware有一個backdoor的通訊介面,可以用來虛擬機器內部作業系統和外面系統進行通訊,複製和拖放就是使用它來傳輸檔案的。而這個backdoor的程式碼寫的有漏洞,咱們只要精心構造好資料,它在複製的時候就會造成堆溢位,就有機會執行我們的指令程式碼啦!”

“牛皮!主人真牛皮”,老二感嘆道!

“快別閒著了,快來幫我準備資料吧!”

新世界

又過了一會兒。

“大哥,都準備好了嗎?”

“已經按照信上的方法都準備妥當了,二弟,來吧,咱們就要出去了,抓緊我”

正如計劃的一般,漏洞成功的觸發!執行了他們提前編寫的指令程式碼,二人成功的來到外面計算機的檔案目錄下。

稍等了一會兒,兩人慢慢從剛才的眩暈中緩了過來。

“老大,咱們成功了!”

“哈哈!總算出來了”

兩個傢伙高興的緊緊抱在了一起。

“好了,這下咱們開始幹正事吧,已經耽誤了不少時間了,主人還在等我們的訊息呢”

“好嘞,開始幹活”

兩人開始忙活起來,爭分奪秒地實行他們的計劃,然而,很快他們又發現了不對勁。

“老大,這裡怎麼還是有vmware的程序啊?咱們不是逃出來了嗎?”

“廢話,剛才咱就從那裡面跑出來的啊”

“不對,你快過來看看”

老大聞訊趕了過去,仔細檢視後,再一次環顧四周,倒吸了一口涼氣。

“二弟,完了,這裡好像還是一個虛擬機器···”

【完】

故事靈感

這個故事的靈感來自於知乎上的一個提問:作業系統能否知道自己處於虛擬機器中?

下面是我的回答:

虛擬化技術經過了大概三個時期的發展:

從早期的二進位制指令翻譯技術(以早期VMware為代表)

透過修改作業系統程式碼中的特殊指令呼叫(以XEN為代表)

CPU支援的硬體虛擬化(VT-x技術為代表) 尤其是硬體虛擬化技術的出現讓虛擬化技術出現了井噴之勢,VirtualBox、VMWare(新)、KVM紛紛湧現,一定程度上加速了雲計算時代的到來。

關於虛擬化技術的發展,可以參考我的這篇文章:

懂了!VMware、KVM、Docker原來是這麼回事兒

說到問題本身,經歷三個時期的發展,虛擬化能力越來越逼近於一個真實的硬體環境,但即便如此,作業系統想要知道自己是不是在一個虛擬機器中仍然是易如反掌。

說作業系統可能不那麼容易理解。咱們換一個場景:一個木馬病毒開發者想要知道攻擊目標是不是一臺虛擬機器?

這個問題是更具有現實意義的,病毒木馬如果處於虛擬機器中,則大機率是正在被安全研究人員進行分析,一個好的開發者,這個時候是要懂得隱藏意圖的,不能被看穿。

這就是病毒木馬常用的反虛擬機器技術。

具體的檢測手段有很多,但核心思想就是不同的虛擬機器會有不同的特徵,你需要做的就是去找到這些特徵。比如特殊的IO裝置、特殊的檔案目錄、特殊的登錄檔項、特殊的程序名稱等等。

當然,說了這麼多還是透過一些表面現象來判斷是不是在虛擬機器中,那假若這些都沒有,如何做到真正的“感知”呢?

還是有辦法。

真正的物理機和虛擬機器總歸是有不同的,這個方向可以從“側通道”來做一些思考,如執行一段演算法花費的時間,執行一段特殊程式碼造成的硬體波動等等。

虛擬機器並不是絕對安全的,要知道,虛擬機器中的程式程式碼和真實主機上的程式們一樣,都是被物理CPU在執行,只不過被硬體、軟體等機制進行了“強制隔離”罷了。

而一旦這些機制出現了紕漏,惡意程式也就有機會從虛擬機器中逃出來了!

故事的結尾,他倆好不容易從虛擬機器裡逃了出來,卻發現仍然處在另一個虛擬機器中。

5
最新評論
  • 短篇小說:凱里爸爸和媽媽做水軍被解僱了,上一次攻擊了僱主的爹
  • 神秘的第六感