Основная идея

Основная идея

Предположим, у меня есть виртуальная машина и нет доступа к гипервизору. Также я не могу изменить никакие системные параметры, например, настроить защищенную паролем загрузку с помощью LUKS или что-то в этом роде. Однако я могу установить любые инструменты, которые захочу, и иметь полный доступ root. Использование dd для записи нулей или случайных чисел на устройство в конечном итоге не даст результата и не оставит систему пустой. Есть ли у вас какие-либо предложения по решению этой проблемы? Может быть, какой-нибудь скрипт я могу запустить при запуске, когда я перезагружаю систему?

решение1

Основная идея

  1. Создайте ram-диск или tmpfs
  2. Установите busybox, статически связанный, на RAM-диск.
  3. Создайте узлы разработки для ваших дисков, а также /dev/null и т. п. на RAM-диске.
  4. pivot_rootна RAM-диск.
  5. execоболочка busybox.
  6. killчто-либо еще, работающее на машине, что мешает следующему шагу. Вам может также понадобиться поместить ssh-сервер на ram-диск или использовать что-то вроде, busybox nc -l -l -p1234 -e busybox shчтобы предоставить вам альтернативный доступ.
  7. Размонтируйте «настоящие» диски.
  8. используйте busybox ddдля очистки «реальных» дисков.

Обратите внимание, что эта строка busybox не дает вам "терминал", только оболочку, поэтому многое выглядит странно. А если вы используете telnetдля подключения к нему, то становится еще страннее. В частности, вы получаете возврат каретки перед каждым переводом строки, поэтому набор текста pwdне удается, но добавление пробела после этого работает. Я рекомендую использовать ncили busybox ncв качестве клиента.

Проблема

На самом деле вы не можете убить init и уйти от ответственности. Вы можете или не можете размонтировать диски, убивая то, что началось с этого диска.

Я думаю, есть два варианта.

  1. Измените скрипты загрузки, чтобы настроить туннель или выполнить очистку диска для вас. Существуют наборы инструментов для очистки диска, которые могут иметь версию, которую можно объединить с модулями вашего ядра, чтобы сделать последнее.
  2. Попробуйте стереть диски, не демонтируя их. Если вы это сделаете, убедитесь, что вы poweroff -fn.

Связанный контент