![基本思想](https://rvso.com/image/169408/%E5%9F%BA%E6%9C%AC%E6%80%9D%E6%83%B3.png)
假設我有一個虛擬機,並且無法以任何方式存取虛擬機管理程式。另外,我無法更改任何系統參數,例如使用 LUKS 設定密碼保護啟動或任何其他參數。不過,我可以安裝任何我想要的工具並擁有完全的 root 存取權。使用 dd 在裝置上寫入零或隨機最終會失敗,並且不會使系統為空。您對如何解決這個問題有什麼建議嗎?也許當我重新啟動系統時我可以在啟動時運行一些腳本?
答案1
基本思想
- 製作一個 ram 磁碟——或者 tmpfs
- 在 ram 磁碟上安裝靜態連結的 busybox。
- 在 ram 磁碟上為您的磁碟和 /dev/null 等建立 dev 節點。
pivot_root
到 RAM 磁碟。exec
一個 busybox 外殼。kill
機器上運行的任何其他阻止下一步的操作。您可能還需要在 ram 磁碟上放置一個 ssh 伺服器,或使用類似的東西busybox nc -l -l -p1234 -e busybox sh
來為您提供備用存取權限。- 卸載“真實”磁碟。
- 使用 busybox
dd
來擦除「真實」磁碟。
請注意,busybox 行不會給你一個“終端”,只是一個 shell,所以很多東西都很奇怪。如果你習慣telnet
連接它,事情就會變得更奇怪。具體來說,您會在每次換行之前得到回車符,因此輸入pwd
會失敗,但之後添加空格可以。我建議使用nc
或busybox nc
作為您的客戶。
問題
你實際上不能殺死 init 並逃脫它。您可能能夠也可能無法透過終止從該磁碟啟動的內容來卸載磁碟。
我認為有兩種選擇。
- 更改啟動腳本以設定隧道,或為您執行磁碟擦除。有些磁碟擦除工具包可能有一個版本可以與您的核心模組結合起來執行後續操作。
- 嘗試在不卸載磁碟的情況下擦除它們。如果您這樣做,請確保您
poweroff -fn
.