SMBIOS 조작으로 VM의 CPU 팬 정보 속이기
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

VM이 CPU 팬을 가진 것처럼 인식하게 만들어서 악성코드를 속이기

카테고리

보안

서브카테고리

인프라/DevOps/보안

대상자

보안 연구자, 악성코드 분석자, 가상화 환경 운영자

핵심 요약

  • SMBIOS 구조체를 조작해 Cooling Device(Type 27)와 Temperature Probe(Type 28) 정보를 삽입함으로써, VM이 CPU 팬이 존재하는 것처럼 속임
  • QEMU/KVM-smbios 옵션으로 간단히 커스텀 SMBIOS 적용 가능하지만, Xen은 소스 패치 및 별도 설정이 필요
  • Win32_Fan 클래스를 통해 악성코드가 하드웨어 존재 여부를 점검하며, 이 정보가 없으면 VM이라고 판단하여 실행을 회피

섹션별 세부 요약

SMBIOS와 WMI의 역할

  • WMI의 Win32_Fan 클래스는 SMBIOS 정보를 기반으로 CPU 팬 존재 여부를 확인
  • cimwin32.dll은 SMBIOS의 Type 27(Cooling Device) 엔트리로부터 팬 정보를 읽음
  • dmidecode 유틸리티로 SMBIOS의 Cooling Device 데이터를 직접 확인 가능

Xen과 QEMU/KVM의 SMBIOS 설정

  • Xensmbios_firmware 옵션을 통해 바이너리 형태의 SMBIOS 데이터를 직접 지정해야 하며, Type 27은 기본적으로 허용되지 않음
  • QEMU/KVM-smbios file=경로 옵션으로 간단히 커스텀 SMBIOS 설정 가능
  • Xen0, 1, 2, 3, 11, 22, 39 번 구조체만 덮어쓸 수 있도록 제한

실제 적용 예시

  • smbios.bin 파일을 생성해 Type 27(Cooling Device)과 Type 28(Temperature Probe) 데이터를 삽입
  • 각 구조체 앞에 little-endian 형식의 크기 정보(예: 18 00 00 00) 삽입
  • Windows VM 부팅 후 WMI에서 Win32_Fan 클래스가 정상적으로 인식되는지 확인

결론

  • QEMU/KVM-smbios 옵션을 사용해 간단히 SMBIOS 조작 가능, Xen은 패치와 별도 설정이 필수적
  • 악성코드가 WMI 클래스를 통해 하드웨어 존재 여부를 점검하므로, SMBIOS 데이터 조작은 탐지 우회에 효과적
  • SMBIOS 정보가 실제 하드웨어와 불일치하는 경우, 악성코드는 50% 이상의 VM에서 탐지 실패 가능하지만, 이는 악성코드 제작자에게도 충분한 가치가 있음