내 서버가 가상화되지 않았는지 어떻게 확인할 수 있나요?

내 서버가 가상화되지 않았는지 어떻게 확인할 수 있나요?

내 Linux 서버가 가상화되지 않은 실제 시스템에서 실행되고 있는지 어떻게 확인합니까?

제가 고려하고 있는 시나리오는 다음과 같습니다.

  1. 랙 서버에 배포판이 설치되어 있습니다.
  2. 데이터센터에 랙 공간을 좀 빌려서 거기에 두었는데,
  3. Mallory("공격자")가 데이터 센터로 가서 내 서버 연결을 끊었습니다.
  4. Mallory가 디스크의 이미지를 촬영했습니다.
  5. Mallory는 KVM 시스템에서 디스크 이미지를 게스트로 실행합니다.

이 문제를 해결하기 위해 공격자가

  • 내 서버가 실행 중인 것과 동일한 하드웨어를 에뮬레이션하기 위해 KVM 또는 유사한 하이퍼바이저를 수정했습니다.
  • 알려진 모든 하이퍼바이저 회피 또는 하이퍼바이저 탐지 공격을 파악하고 이를 무력화하기 위해 하이퍼바이저를 패치했습니다(따라서 빨간약이나 유사한 공격이 없습니다).

그래서 제 질문은 다음과 같습니다. 운영 체제가 물리적 시스템(또는 정확한 물리적 시스템)에서 실행되고 가상화 결함(예: 빨간약)에 의존하지 않도록 보장하는 안정적인 방법이 있습니까?

아니면 반대로 말하면, 그러한 탐지가 항상 가능하다는 증거가 있습니까?

밝히다: 이것은 현재 기술에 대한 논의가 아닌 가정적인 질문입니다. 현재는 imvirt알려진 가상화 오류/결함 모음을 사용하여 가상화된 환경에 있는지 쉽게 감지할 수 있습니다 . "완벽한 가상화" 같은 것이 논의됐는지, 이론적 관점에서 가능한지, 불가능한지 궁금합니다.

답변1

공격자가 하드웨어를 완벽하게 에뮬레이션하는 가상 머신을 만들었다고 가정합니다. 이 가정에서는 정의에 따라 코드가 가상 머신에서 실행되고 있음을 감지할 수 없습니다.

가상 머신이 실제로 실제 하드웨어에서 실행 중인 경우 가상화 오버헤드로 인해 추가 응답 대기 시간이 발생할 수 있으므로 외부에서 이를 감지할 수 있어야 합니다. 이 오버헤드는 다른 네트워크 오버헤드에 비해 눈에 띄지 않을 수 있습니다. 가상 머신이 더 빠른 하드웨어에서 실행되는 경우 이론적으로 완벽한 에뮬레이션을 제공할 수 있습니다.

실제로 완벽한 하드웨어 에뮬레이션을 제공하는 것은 매우 어렵습니다. (이것은 운영 체제 및 드라이버 개발자가 바라는 것이며 불행히도 에뮬레이터는 완벽하지 않습니다.) 물론 이론적으로는 가능하지만 공격자에게는 더 저렴한 공격 방법이 있을 것입니다. 공격자가 숨겨진 루트킷을 심거나 PCI 또는 RAM 버스에 스파이를 배치할 수 있다고 가정합니다. 이는 주변의 모든 하드웨어에 대한 완벽한 에뮬레이터를 개발하는 것보다 저렴합니다. 또는 말로리는 소프트웨어 취약점을 악용하여 비밀번호를 훔치거나 최후의 수단으로 사용할 가능성이 높습니다.렌치 암호 분석, 그녀가 정말로 귀찮게 한다면.

데이터를 복사하고 루트킷을 심는 것이 가장 간단한 공격 방법입니다. 다음을 사용하면 이러한 일이 어느 정도 발생하는 것을 방지할 수 있습니다.완전한 생산 관리귀하의 서버에서. TPM은 복제하기 어렵게 설계되었으며 올바르게 사용할 경우(참고: 어렵습니다! 현재 TPM 신뢰 루트에서 전체 운영 체제의 무결성을 확인할 수 있는 기본 운영 체제는 없습니다.) TPM은 운영 체제의 무결성과 데이터의 성별 및 기밀 유지.

답변2

이론적으로는 누군가가 컴퓨터의 모든 물리적 부분을 모방하는 가상 머신을 만든다면 이것이 가능할 것이라고 생각합니다. "모방"이란 특정 물리적 프로세서라고 보고하는 프로세서, 특정 칩셋이라고 보고하는 칩셋, BIOS, 디스크 등을 갖게 된다는 것을 이해합니다.

순전히 기술적인 관점에서 보면 이것이 가능하다고 생각합니다. 반면에 실용적인 관점에서 볼 때 이는 결코 완료되지 않을 수도 있습니다. 특정 버전의 하드웨어가 아닌 일시적인 것을 완벽하게 에뮬레이트하는 가상 컴퓨터를 제공하는 데 왜 누군가가 많은 돈과 노력을 투자하겠습니까? 가상 솔루션 구축이 완료되면 하드웨어는 더 이상 사용되지 않습니다.

답변3

요컨대, 아니오. 보장은 없습니다. 그러나 제가 아는 한 현재 실행 중인 커널을 가져와 가상화 환경에서 사용하는 가상화 솔루션은 없습니다. Mallory 역할을 가상 머신에서 실행하려면 게스트 가상화 커널을 설치해야 합니다. 따라서 확인하는 가장 쉬운 방법은 실행 중인 커널을 확인하는 것입니다.

내 대답은 '아니요'입니다. 왜냐하면 보안 문제로서 문제는 Mallory가 어떤 코어가 실행 중인지 파악하지 못하게 하는지 확인하는 방법이고 언젠가는 가상화를 위해 다른 코어를 사용하는 문제가 해결될 수 있다고 생각하기 때문입니다.

답변4

조안나 루트코브스카이것은 실제로 초기 Black Hat 회의에서 논의되었습니다. 비록 "파란 알약”는 머신을 VM 계층으로 가져오고,빨간 알약가상 머신 내부에 있는지 감지하는 데 도움이 됩니다. 이 용어는 다음을 기반으로 합니다.행렬-영화. ;-)

관련 정보