![Основная идея](https://rvso.com/image/169408/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0%D1%8F%20%D0%B8%D0%B4%D0%B5%D1%8F.png)
Предположим, у меня есть виртуальная машина и нет доступа к гипервизору. Также я не могу изменить никакие системные параметры, например, настроить защищенную паролем загрузку с помощью LUKS или что-то в этом роде. Однако я могу установить любые инструменты, которые захочу, и иметь полный доступ root. Использование dd для записи нулей или случайных чисел на устройство в конечном итоге не даст результата и не оставит систему пустой. Есть ли у вас какие-либо предложения по решению этой проблемы? Может быть, какой-нибудь скрипт я могу запустить при запуске, когда я перезагружаю систему?
решение1
Основная идея
- Создайте ram-диск или tmpfs
- Установите busybox, статически связанный, на RAM-диск.
- Создайте узлы разработки для ваших дисков, а также /dev/null и т. п. на RAM-диске.
pivot_root
на RAM-диск.exec
оболочка busybox.kill
что-либо еще, работающее на машине, что мешает следующему шагу. Вам может также понадобиться поместить ssh-сервер на ram-диск или использовать что-то вроде,busybox nc -l -l -p1234 -e busybox sh
чтобы предоставить вам альтернативный доступ.- Размонтируйте «настоящие» диски.
- используйте busybox
dd
для очистки «реальных» дисков.
Обратите внимание, что эта строка busybox не дает вам "терминал", только оболочку, поэтому многое выглядит странно. А если вы используете telnet
для подключения к нему, то становится еще страннее. В частности, вы получаете возврат каретки перед каждым переводом строки, поэтому набор текста pwd
не удается, но добавление пробела после этого работает. Я рекомендую использовать nc
или busybox nc
в качестве клиента.
Проблема
На самом деле вы не можете убить init и уйти от ответственности. Вы можете или не можете размонтировать диски, убивая то, что началось с этого диска.
Я думаю, есть два варианта.
- Измените скрипты загрузки, чтобы настроить туннель или выполнить очистку диска для вас. Существуют наборы инструментов для очистки диска, которые могут иметь версию, которую можно объединить с модулями вашего ядра, чтобы сделать последнее.
- Попробуйте стереть диски, не демонтируя их. Если вы это сделаете, убедитесь, что вы
poweroff -fn
.