仮想マシンがあり、ハイパーバイザーにまったくアクセスできないと仮定します。また、LUKS を使用したパスワード保護されたブートの設定など、システム パラメータを変更することもできません。ただし、必要なツールをインストールして、完全なルート アクセスを取得することはできます。dd を使用してデバイスにゼロまたはランダムを書き込むと、最終的には失敗し、システムが空のままになりません。これを解決する方法について何か提案はありますか? システムを再起動するときに起動時に実行できるスクリプトなどでしょうか?
答え1
基本的な考え方
- RAMディスクまたはtmpfsを作成する
- 静的にリンクされたbusyboxをRAMディスクにインストールします。
- ディスク用の開発ノードと、RAM ディスク上の /dev/null などを作成します。
pivot_root
RAM ディスクに。exec
ビジーボックスシェル。kill
次のステップを妨げるような、マシン上で実行されている他のもの。RAM ディスクに ssh サーバーを配置したり、busybox nc -l -l -p1234 -e busybox sh
代替アクセスを提供するために のような何かを使用したりする必要があるかもしれません。- 「実際の」ディスクをアンマウントします。
dd
「実際の」ディスクを消去するには、busybox を使用します。
busybox 行では「ターミナル」は表示されず、シェルだけが表示されるので、多くの点で奇妙であることに注意してください。また、 を使用してtelnet
接続すると、さらに奇妙になります。具体的には、各改行の前にキャリッジ リターンが表示されるため、入力はpwd
失敗しますが、その後にスペースを追加すると機能します。クライアントとしてnc
またはを使用することをお勧めします。busybox nc
問題
実際に init を強制終了して逃げることはできません。そのディスクから起動したものを強制終了してディスクをアンマウントできる場合とできない場合があります。
選択肢は2つあると思います。
- ブート スクリプトを変更して、トンネルを設定するか、ディスクの消去を実行します。ディスク消去ツールキットの中には、カーネルのモジュールと組み合わせて後者を実行できるバージョンがあるものもあります。
- ディスクをアンマウントせずに消去してみてください。これを行う場合は、必ず
poweroff -fn
.