posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          3.3 Example malicious services
          下面介紹這篇paper提到的4個惡意程序

          最簡單的,開了個thttpd web服務器進行網(wǎng)絡釣魚,任何發(fā)送到8080端口的TCP請求都會被這個服務器截獲。

          然后是一個按鍵記錄程序,號稱只用了60行代碼就搞定了這個模塊,然后寫了一個254行的帶圖形界面的程序來分析日志并顯示。

          一個掃描目標機文件系統(tǒng)的程序,這是一個24小時運行的perl腳本,會把諸如/etc/shadow, user_home/.ssh/id_dsa之類的機密信息保存下來。

          最后是防止VMM被目標機偵測到的一個服務。paper中提到了一種叫做redpill的虛擬機偵測手段,通過使用sidt指令。這個指令會讀出處理器的中斷列表(interrupt descritor table),在VMM上跑的系統(tǒng)和普通的操作系統(tǒng)讀出來的結果不一樣,當這個指令在內(nèi)核態(tài)被執(zhí)行時,VMM會模擬這個指令的執(zhí)行;但是用戶態(tài)卻不會被截獲(考慮到性能因素)。所以redpill通過用戶態(tài)執(zhí)行sidt來判斷當前系統(tǒng)是否運行在虛擬機上。這篇paper提到的針對redpill的解決方案是在每個可執(zhí)行文件的sidt指令前設置一個斷點,截獲這個指令后就模擬這個指令,以此繞過redpill檢測。但是這種方法不適合于在程序運行期動態(tài)生成二進制的sidt指令的程序(想到我的lab4了,呵呵)。道高一丈魔高一尺(原文是Continuing the arms race,軍備戰(zhàn)爭),通過二進制轉換(binary translation),動態(tài)生成的sidt同樣可以被截獲,但是這種方法的overhead會很大。

          3.4 Maintaining Control
          這塊主要講了對系統(tǒng)重啟、關閉的處理。

          系統(tǒng)要求重啟時,VMBR總是盡可能的通過重啟guest os來完成,這樣就能最大化的掌握控制權。

          另外通過ACPI模擬系統(tǒng)關閉也可以欺騙使用者。這種模式下硬盤、風扇停止,RAM仍然上電,下一次開機后可以恢復到上一次關機的狀態(tài),于是VMBR繼續(xù)在第一時間掌握控制權。

          4. Evaluation
          測試下來開機、重啟的速度都慢了不少。不過很正常,因為用的是Virtual PC和VMWare。

          不過隨著虛擬技術的發(fā)展,對系統(tǒng)性能的影響肯定越來越小的(比如Xen),這篇paper關鍵在于占了個坑,至少現(xiàn)在看來實用性還很差。

          5. Defending against virtual-machine based rootkits
          5.1 Security software below the VMBR

          比VMBR更低的層次就很容易檢測到VMBR了。比如硬件級別的安全支持(Intel LaGrande),或者CDROM啟動(注意這里首先要冷重啟,否則說不準虛擬機給你模擬CDROM啟動了),還可以先裝個安全的VMM,即使收到VMBR攻擊,VMBR也只能在安全的VMM和操作系統(tǒng)之間那層運行。


          5.2 Security software above the VMBR
          在VMBR上層要檢測就有一定技術難度了。

          一種基本的方法是利用CPU時間、內(nèi)存上限、硬盤上限、網(wǎng)絡帶快來測定。

          VMBR的存在必定會影響到CPU的表觀性能,通過這種時間上的差異就能發(fā)現(xiàn)問題。不過VMBR可以通過放慢系統(tǒng)時鐘返回的時間來欺騙目標機,對于這種欺騙,測試人員可以使用其他的不可控的計時工具(比如手表 -_-b)

          另外硬盤、內(nèi)存上限都會因為VMBR的存在而變小。后者很難偵查到,因為有一層虛擬內(nèi)存。而針對前者的檢測,VMBR可以截獲對它占用的地址的訪問,然后返回一些隨機的信息,讓guest os以為那是壞扇區(qū)從而躲過檢查。所以這招不怎么好用。

          另外由于性能考慮,并不是所有的硬件都是被迷你的,通常只有需要保護的設備(比如啟動盤)和需要攻擊的設備(比如網(wǎng)卡)被虛擬化,其他的硬件都是guest os直連的,這樣就只需要在這些未被虛擬化的硬件上做一個DMA,把物理內(nèi)存中的部分信息讀過來就能分析了(通過這個貌似可以對同一個物理機上的其他虛擬機進行攻擊啊

          另外一種方法就是前面的提到的通過sidt指令了。


          6. Trends toward virtualization


          7. Related work


          評論

          # re: 閱讀筆記 - SubVirt: Implementing malware with virtual machines (2)  回復  更多評論   

          2008-05-08 21:45 by ZelluX
          利用DMA繞過權限控制訪問其他guest os的內(nèi)存的確是可行的。
          硬件上的IOMMU組件可以解決這個問題。
          主站蜘蛛池模板: 恩平市| 北碚区| 武邑县| 伊宁县| 榆社县| 普兰县| 沂水县| 汪清县| 介休市| 菏泽市| 彝良县| 巍山| 来宾市| 丰宁| 宜川县| 龙游县| 巢湖市| 鄂尔多斯市| 山丹县| 车险| 墨玉县| 贵南县| 晴隆县| 渝北区| 望谟县| 定安县| 栖霞市| 鸡西市| 花莲县| 贺州市| 云霄县| 景洪市| 安图县| 江达县| 绥棱县| 上饶县| 陕西省| 宁阳县| 鄯善县| 潜山县| 江安县|