가상 머신이 있는데 어떤 식으로든 하이퍼바이저에 액세스할 수 없다고 가정해 보겠습니다. 또한 LUKS 또는 기타 매개변수를 사용하여 비밀번호로 보호된 부팅을 설정하는 것과 같은 시스템 매개변수를 변경할 수 없습니다. 그러나 원하는 도구는 무엇이든 설치할 수 있고 전체 루트 액세스 권한을 가질 수 있습니다. dd를 사용하여 장치에 0이나 임의 값을 쓰면 결국 실패하고 시스템을 비워 두지 않게 됩니다. 이 문제를 해결하는 방법에 대한 제안 사항이 있습니까? 시스템을 재부팅하면 부팅 시 일부 스크립트를 실행할 수 있을까요?
답변1
기본 아이디어
- 램 디스크 만들기 - 또는 tmpfs
- RAM 디스크에 정적으로 연결된 비지박스를 설치합니다.
- 디스크 및 /dev/null 등의 RAM 디스크에 개발 노드를 만듭니다.
pivot_root
RAM 디스크에.exec
비지박스 쉘.kill
다음 단계를 방해하는 다른 모든 것이 머신에서 실행 중입니다. 램 디스크에 SSH 서버를 설치하거나busybox nc -l -l -p1234 -e busybox sh
대체 액세스를 제공하는 유사한 장치를 설치할 수도 있습니다.- "실제" 디스크를 마운트 해제합니다.
dd
"실제" 디스크를 지우려면 busybox를 사용하세요 .
busybox 라인은 "터미널"을 제공하지 않고 단지 쉘만 제공하므로 많은 것들이 이상하다는 점에 유의하십시오. 연결하는 데 익숙해지면 telnet
더욱 이상해집니다. 특히 각 개행 앞에 캐리지 리턴이 표시되므로 입력은 pwd
실패하지만 나중에 공백을 추가하면 작동합니다. nc
또는 busybox nc
클라이언트로 사용하는 것이 좋습니다 .
질문
실제로 init를 죽이고 탈출할 수는 없습니다. 디스크에서 부팅된 콘텐츠를 종료하여 디스크를 마운트 해제할 수도 있고 그렇지 않을 수도 있습니다.
나는 두 가지 옵션이 있다고 생각합니다.
- 시작 스크립트를 변경하여 터널을 설정하거나 디스크 지우기를 수행하십시오. 일부 디스크 삭제 도구 키트에는 후속 작업을 수행하기 위해 커널 모듈과 결합할 수 있는 버전이 있을 수 있습니다.
- 디스크를 마운트 해제하지 않고 삭제해 보세요. 이렇게 하면 다음 사항을 확인하십시오
poweroff -fn
.