如何在主機上成為root用戶獲取全盤加密運行虛擬機中數據的訪問權限?這是我們在Appsecco內部討論的一個問題,我們需要一個合理而可能的解決方案。
據我所知,可以破解全盤加密的方法手段非常的多。但缺點是大部分這些方法都非常復雜,且操作起來費時費力。其中最簡單的方法就是對正在運行的VM進行內存轉儲,并從中提取加密密鑰。我們的操作步驟如下:
·設置Ubuntu 16.04 VM全盤加密保護
·在磁盤解鎖時轉儲Virtualbox VM的內存
·使用findaes工具從內存轉儲中提取主密鑰
·使用密鑰從VM的磁盤文件解密加密的分區
·掛載分區并訪問數據
設置
讓我們在Virtualbox中設置一個帶有全盤加密的Ubuntu 16.04桌面虛擬機。
在安裝期間我們使用默認的“使用LVM進行全盤加密”選項,其將使用dm-crypt/LUKS進行加密。使用的默認cryptsetup配置為512位加密密鑰的aes-xts-plain64:sha256。
安裝完成后,我們通過輸入我們配置的加密密碼來啟動VM
轉儲VM內存
首先,我們在磁盤處于解鎖狀態時來獲取VM的內存轉儲。注意:VM必須處于運行/暫停狀態,以便我們能夠將內存轉儲提取到文件中。
VirtualBox有一個功能強大的調試器,除了基本的一些功能外,它還支持VM內存轉儲。
VBoxManage debugvm
這將以原始文件格式進行內存轉儲,這個過程可能需要一段時間才能完成。
從內存轉儲中提取密鑰
我們可以使用任何可以從文件中識別AES字符串的工具,來幫助我們從內存轉儲中提取加密密鑰。這里我們使用的是findaes。
讓我們提取下載的zip文件
unzip findaes-1.2.zip
編譯
cd findaes-1.2 ; make
運行findaes命令提取相關密鑰
./findaes /path/to/fdedump2.raw
可以看到,findaes為我們從內存轉儲中識別出了許多密鑰。AES算法從主加密密鑰生成輪密鑰,這些密鑰也存儲在存儲器中。即使主密鑰由于某種原因不可用,我們仍然可以從輪密鑰計算出主密鑰。所以我們看到的是主密鑰,輪密鑰和其他能夠被識別的AES密鑰的混合。你可以參考cryptsetup文檔了解有關如何實現全盤加密的更多信息。
我們可以編寫一個腳本來嘗試解密分區的所有密鑰。但是,由于我們已經知道我們正在尋找的密鑰為512位,而提取的密鑰都是256位,因此我們可以將搜索范圍縮小到內存中連續的兩個256位密鑰。
我們找到了符合要求的兩個密鑰。我們通過將兩個鍵0x34dfcf88和0x34dfcd98組合來獲取主密鑰。由于Intel x86-64使用little-endian(小端)模式,因此我們必須以相反的順序組合密鑰。
現在我們有了一個潛在的主密鑰,我們將嘗試解密加密分區。
使用主密鑰解密LUKS加密驅動器
我們將使用dmsetup工具和恢復出的主密鑰來嘗試解密加密分區。
要解密分區,首先我們需要掛載磁盤。復制VM的磁盤并將其attach到一個新的Virtualbox VM,我們將使用live Ubuntu環境來掛載磁盤并解密分區。完成后,我們將使用Ubuntu Live環境啟動到新的VM中。
要手動使用主密鑰來解密加密分區,我們需要分區的大小和使用的確切加密方案。我們知道dmcrypt使用的默認加密方案是來自cryptsetup FAQ的aes-xts-plain64:sha256 。
我們需要找到磁盤,并從我們的live環境中列出其分區。我們可以使用以下命令:
sudo fdisk -l
使用blockdev命令找到加密分區/dev/sda5的大小
sudo blockdev --getsz /dev/sda5
解鎖和解密分區的命令語法如下:
echo "0
如果沒有發生錯誤,則解密成功!
訪問數據
我們使用lsblk命令來查看下解密后現在可用的LVM卷
sudo lsblk
我們現在可以看到一個LVM卷,它是解密分區的根分區?,F在讓我們掛載到該分區,看看能否找到一些有趣的東西。
sudo mount /dev/mapper/ubuntu--vg-root /mnt
讓我們列出root用戶的主文件夾內容
ls /mnt/root
現在我們已經成功從內存轉儲中提取出了加密密鑰,并成功讀取了使用全盤加密的VM磁盤中的文件內容?! ?/p> 1024你懂的国产日韩欧美_亚洲欧美色一区二区三区_久久五月丁香合缴情网_99爱之精品网站
責任編輯:韓希宇
免責聲明:
中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。