ゲスト Windows 10 で QEMU 仮想化を隠す

ゲスト Windows 10 で QEMU 仮想化を隠す

おそらく少し繰り返しになると思いますが、私が閲覧して試したいくつかのトピックはどれも私にとって完全には機能しませんでした。 できる限り多くの(必要な)情報を提供するように努めますが、関係のない情報や必要な情報がある場合は、何をどのように取得できるかを教えてください。最善を尽くします。 長くて申し訳ありませんが、質問と情報を徹底的に伝えたいだけです。

お時間を取って読んでいただきありがとうございます。

主な問題

私は、主に、アンチチートが VM 上にあるとうまく動作しないゲーム (Valorant など) をプレイしたいので、ゲストから VM であるという事実を隠そうとしています。オンラインで多くのガイドを試しましたが、どれも機能していないようです。Windows は仮想マシンの外部で実行されていると考えていますが、PAFish で確認すると、次のようなトレースが得られます。

PAFishの痕跡

[-] CPU information based detections
[*] Checking the difference between CPU timestamp counters (rdtsc) forcing VM exit ... traced!
[*] Checking hypervisor bit in cpuid feature bits ... traced!            
[*] Checking cpuid hypervisor vendor for known VM vendors ... traced!             

[-] Generic sandbox detection 
[*] Using mouse activity ... traced!                   
[*] Checking operating system uptime using GetTickCount() ... traced!

[-] Qemu detection
[*] Scsi port->bus->target id->logical unit id-> 0 identifier ... traced!

[-] Bochs detection
[*] Reg key (HKLM\HARDWARE\Description\System "SystemBiosVersion") ... traced!

そして、私はそれらを修正/軽減しようとしています。Valorant AC では他の方法も使用される可能性があることに気づきましたが、これは出発点として良い場所だと思いました。

以下は、私がこれを試みるために行ったことのちょっとした情報です。

私のCPU、マザーボード、OSは次のとおりです。

OS: Manjaro Linux x86_64
Host: MS-7C37 2.0
CPU: AMD Ryzen 7 3800X (16) @ 3.900GHz

AMD CPUのネストされた仮想化を有効にしました

私はゲストとして Windows 10 Pro 64 ビットを使用し、virt-manager で qemu を実行しています。こここれは私の VM の XML ファイルの pastebin ですが、各セクションの各トレースに関連があると思われる部分を含めます。

システムBiosバージョン

もっと重要な部分(だと思う)は、BIOS ベンダーなどを変更したことです。

<sysinfo type="smbios">
<bios>
  <entry name="vendor">American Megatrends Inc.</entry>
  <entry name="version">A.40</entry>
  <entry name="date">09/10/2019</entry>
</bios>
<system>
  <entry name="manufacturer">Micro-Star International Co., Ltd.</entry>
  <entry name="product">MS-7C37</entry>
  <entry name="version">2.0</entry>
  <entry name="serial">SOME RANDOM STRING OF CHARS HERE</entry>
  <entry name="uuid">MY UUID IS HERE</entry>
  <entry name="sku">SOME RANDOM STRING OF CHARS HERE</entry> //Don't even know what should be here
  <entry name="family">MSI Gaming</entry>
</system>

しかし、SystemBiosVersion はまだトレースされています。これはレジストリ編集で変更できますが、システムを再起動するたびに変更する必要があるため、それが役立つかどうかはわかりません。

CPU情報に基づく検出

私の CPU と Hyper-V の設定は次のとおりです。

<features>
  <acpi/>
  <apic/>
  <hyperv>
    <relaxed state="on"/>
    <vapic state="on"/>
    <spinlocks state="on" retries="8191"/>
    <vendor_id state="on" value="SOME RANDOM STRING OF CHARS HERE"/>
  </hyperv>
  <kvm>
    <hidden state="on"/>
  </kvm>
  <vmport state="off"/>
</features>
<cpu mode="host-passthrough" check="none" migratable="on">
  <topology sockets="1" dies="1" cores="8" threads="2"/>
  <cache level="3" mode="emulate"/>
  <feature policy="disable" name="hypervisor"/>
  <feature policy="require" name="svm"/>
  <feature policy="require" name="invtsc"/>
  <feature policy="require" name="topoext"/>
</cpu>
<clock offset="localtime">
  <timer name="rtc" tickpolicy="catchup"/>
  <timer name="hpet" present="no"/>
  <timer name="hypervclock" present="yes"/>
  <timer name="pit" tickpolicy="discard"/>
</clock>

私が読んだところによると、「ハイパーバイザーを無効にする機能「」の部分は、後者の 2 つの CPU トレースを修正するはずですが、私がそれらの動作を誤解していた可能性があります。

Qemu 検出

ここでは以下を使用します:

<disk type="file" device="disk">
  <driver name="qemu" type="qcow2"/>
  <source file="/run/media/jd/Windows/win10.qcow2"/>
  <target dev="sda" bus="sata"/>
  <serial>SOME RANDOM-ISH TEXT</serial>
  <address type="drive" controller="0" bus="0" target="0" unit="0"/>
</disk>
<disk type="file" device="disk">
  <driver name="qemu" type="qcow2"/>
  <source file="/run/media/jd/3TB/VM/WindowsHDD.qcow2"/>
  <target dev="sdc" bus="sata"/>
  <serial>SOME RANDOM-ISH TEXT</serial>
  <address type="drive" controller="0" bus="0" target="0" unit="1"/>
</disk>

しかし、それはまだいくつかの論理ユニット ID 識別子からトレースされます。レジストリでこれを発見しましたが、そこにはまだ QEMU HARDDRIVE と書かれていました。その文字列を変更したらトレースされなくなりましたが、SystemBiosVersion と同様に、これは永続的な解決策ではなく、役立つかどうかもわかりません。

私のデバイスとタスク マネージャーでは、両方のドライブの名前が QEMU HARDDRIVE になっていますが、ソース コードを変更して qemu を再コンパイルせずにこれらの名前を変更する方法が見つかりませんでした。実際、SCSI ドライブを使用した場合に変更する方法は見つかりましたが、それらは検出されませんでした。また、名前を変更するために「model=m」を参照する変更ログ エントリもいくつか見つかりましたが、それを置く場所が見つかりませんでした。また、その変更ログのミラー以外にそれを参照している人もいません。

汎用サンドボックス検出

これらについては、どこから始めればいいのかさえわかりません。非表示にしようとしたこともありません。Barrier / Synergy を使用してマウスとキーボードを共有しているので、それがマウスのアクティビティ トレースであると思われますが、それが VAC をトリガーするとは思えません。

最後に

私がお伝えできることはこれだけです。質問を適切にまとめ、必要な情報を提供できたことを願っています。もし情報が多すぎたり、間違っていたり、単に愚かだったりしたら、もう一度教えてください。私は QEMU について深い知識はほとんどなく、主にオンラインで見つけたガイドに従ってこのテスト VM にまとめました。この記事の少なくとも一部を読んでいただき、ありがとうございます。また、私を助けようとしてくださったら、さらに感謝します :)

答え1

私はジム・ブラウニングのYouTubeチャンネルでこのガイドを見る

これは VMware 固有の設定なので、あなたの設定とは少し異なることは承知していますが、ハードディスク コントローラの名前など、明らかにわかる注意事項について、わかりやすい説明があります。これが少しでもお役に立てば幸いです。

ビデオの説明より:

次のレジストリ ポイントが必要になります。

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum

次の 4 つの GUID を検索します。

{4d36e967-e325-11ce-bfc1-08002be10318}
{4d36e968-e325-11ce-bfc1-08002be10318}
{4d36e965-e325-11ce-bfc1-08002be10318}
{4d36e96f-e325-11ce-bfc1-08002be10318}

VMware Tools のステルス レジストリ ファイルは [YouTube リンクのリンク] からダウンロードできます。

これは、VMwareツール10.10を搭載したWindows 7、8、8.1、10で動作します。

関連情報