기본 아이디어

기본 아이디어

가상 머신이 있고 어떤 방식으로든 하이퍼바이저에 액세스할 수 없다고 가정해 보겠습니다. 또한 LUKS 등을 사용하여 비밀번호로 보호된 부팅을 설정하는 것과 같은 시스템 매개변수를 변경할 수 없습니다. 그러나 원하는 도구는 무엇이든 설치할 수 있고 전체 루트 액세스 권한을 가질 수 있습니다. dd를 사용하여 장치에 0이나 무작위를 쓰면 결국 실패하고 시스템이 비워지지 않습니다. 이 문제를 해결하는 방법에 대한 제안이 있습니까? 시스템을 재부팅할 때 시작 시 실행할 수 있는 스크립트가 있을까요?

답변1

기본 아이디어

  1. 램 디스크 또는 tmpfs 만들기
  2. 램 디스크에 비지박스(정적 연결)를 설치합니다.
  3. 디스크에 대한 개발 노드를 만들고 RAM 디스크에 /dev/null 등을 만듭니다.
  4. pivot_root램디스크에.
  5. exec비지박스 쉘.
  6. kill다음 단계를 방해하는 머신에서 실행 중인 다른 모든 것. RAM 디스크에 SSH 서버를 배치하거나 busybox nc -l -l -p1234 -e busybox sh대체 액세스를 제공하는 것과 같은 것을 사용해야 할 수도 있습니다.
  7. "실제" 디스크를 마운트 해제합니다.
  8. dd"실제" 디스크를 지우려면 비지박스를 사용하세요 .

비지박스 라인은 "터미널"을 제공하지 않고 단지 쉘만 제공하므로 많은 것들이 이상하다는 점에 유의하십시오. 그리고 telnet연결해서 사용하면 더 이상해집니다. 특히 각 줄 바꿈 앞에 캐리지 리턴이 발생하므로 입력 pwd은 실패하지만 나중에 공백을 추가하면 작동합니다. nc또는 busybox nc클라이언트로 사용하는 것이 좋습니다 .

문제

실제로 init를 죽이고 빠져나갈 수는 없습니다. 해당 디스크에서 시작된 작업을 종료하여 디스크를 마운트 해제할 수도 있고 그렇지 않을 수도 있습니다.

나는 두 가지 대안이 있다고 생각한다.

  1. 터널을 설정하거나 디스크 삭제를 수행하려면 부팅 스크립트를 변경하세요. 나중에 수행하기 위해 커널 모듈과 결합할 수 있는 버전이 있는 디스크 삭제 도구 키트가 있습니다.
  2. 디스크를 마운트 해제하지 않은 채 디스크를 닦아 보십시오. 이렇게 하면 다음 사항을 확인하십시오 poweroff -fn.

관련 정보