
Vmaware (VM+ Aware)は、仮想マシン検出用のクロスプラットフォームC ++ライブラリです。
図書館は次のとおりです。
# include " vmaware.hpp "
# include < iostream >
int main () {
if ( VM::detect ()) {
std::cout << " Virtual machine detected! " << " n " ;
} else {
std::cout << " Running on baremetal " << " n " ;
}
std::cout << " VM name: " << VM::brand () << " n " ;
std::cout << " VM type: " << VM::type () << " n " ;
std::cout << " VM certainty: " << ( int ) VM::percentage () << " % " << " n " ;
}可能な出力:
Virtual machine detected!
VM name: VirtualBox
VM type: Hypervisor (type 2)
VM certainty: 100%

このプロジェクトは、図書館ができることの可能性を最大限に活用した、小さくても便利なCLIツールも提供します。それは、それが実行されている環境に関するあらゆる種類の詳細を提供します。

ライブラリをインストールするには、プロジェクトに最新リリースセクションにvmaware.hppファイルをダウンロードします。バイナリもそこにあります。 cmakeまたは共有オブジェクトのリンケージは必要ありません。文字通りそれほど単純です。
ただし、完全なプロジェクト(<vmaware.hpp>とCLIツールを備えたグローバルにアクセス可能なヘッダー)が必要な場合は、次のコマンドに従います。
git clone https://github.com/kernelwernel/VMAware
cd VMAwaresudo dnf/apt/yum update -y # change this to whatever your distro is
mkdir build
cd build
cmake ..
sudo make installcmake -S . -B build/ -G " Visual Studio 16 2019 " # edit this
set ( DIRECTORY "/path/to/your/directory/" )
# if you want the MIT version, toggle this to ON
option (MIT "MIT version" OFF )
if (MIT)
set (EXTENSION "_MIT" )
else ()
set (EXTENSION "" )
endif ()
set ( DESTINATION " ${DIRECTORY} vmaware ${EXTENSION} .hpp" )
if ( NOT EXISTS ${DESTINATION} )
message ( STATUS "Downloading VMAware" )
set (URL "https://github.com/kernelwernel/VMAware/releases/latest/download/vmaware ${EXTENSION} .hpp" )
file (DOWNLOAD ${URL} ${DESTINATION} SHOW_PROGRESS )
else ()
message ( STATUS "VMAware already downloaded, skipping" )
endif ()ここで完全なドキュメントを表示できます。関数、手法、設定、例などのすべての詳細が提供されます。私を信じて、それはあまり威圧的ではありません;)
低レベル(CPU、GPU、HDD、およびファームウェア)の包括的なリストと、スコアリングシステムで考慮される高レベルのアンチVMテクニックを利用しています。各手法のスコア(0-100)は任意に与えられ、VMを検出したすべての手法は、スコアが単一の蓄積点に追加されます。
これは、セキュリティ研究者、VMエンジニア、ゲーマー開発者、およびプロジェクトで実用的で堅実なVM検出メカニズムを必要とするほとんどの人向けに設計されています。たとえば、VMを作成しており、それ自体を隠すことの有効性をテストしている場合、ライブラリは適しています。ゲーム開発者/独自のソフトウェア開発者の場合、ライブラリはリバースエンジニアに対して阻止するのに役立ちます。あなたがマルウェアアナリストであり、VMの隠蔽機能をチェックしたい場合、これはあなたのVMがマルウェアにどの程度うまく構成されているかをベンチマークするのに最適なツールになります。さらに、ソフトウェアは検出された環境に基づいてパフォーマンスまたはリソースの使用を最適化することができ、一部のアプリケーションは、不正な配布またはテストを防ぐためにVMの使用を制限することを望む場合があります。
Invizzzible、Pafish、Al-Khaserなど、同じ目標を持つプロジェクトがすでにたくさんあります。しかし、前述のプロジェクトの違いは、非ヴィンドウシステムをほとんどまたはまったくサポートしていないことに加えて、検出メカニズムと対話するためのプログラム可能なインターフェイスを提供しないことです。 CLIツールを提供するのではなく、誰もがそれから何か便利なものを得るために、クロスプラットフォームの方法でコア検出技術をプログラムでアクセスできるようにしたかったのです。また、大量のテクニックが含まれているため、基本的には、最大の柔軟性を備えたステロイド上のVM検出ライブラリとツールにすぎません。
ThalesのSentinel RMSやVMProtectなど、リバースエンジニアやソフトウェアのクラッキングから他のソフトウェアのライセンスを保護するためのいくつかの有料ソフトウェアがあります。これらはVM検出ライブラリのみであることを意図したものではありませんが、さまざまな方法で機能が制限されています。 Sentinel RMSのVM検出には、VMブランドはそれほど多くありません(価格設定は企業向けではなく、個人ではなく、個人ではなく)、VMProtectには非常に限られた数の検出技術があります。そういえば、vmawareの唯一の欠点は、完全にオープンソースであることです。これにより、バイパッサーの仕事はソースを閉じるのに比べて容易になります。しかし、私はそれが、ライブラリをより効果的かつ正確にするための貴重なコミュニティフィードバックを含む、オープンでインタラクティブな方法で多くのVM検出技術を持つことで、価値のあるトレードオフであると主張します。
Hyper-Vにはあいまいな機能があり、ホストシステムで有効になっている場合、CPUハードウェア値により、システム全体がHyper-V内で実行されているように見えますが、これは真実ではありません。これにより、ライブラリが収集しているハードウェア値が実際のハイパーV VMであるか、ホストシステムで有効になった結果としてHyper-Vが残したアーティファクトのみであるかどうかを判断することが困難になります。これが問題である理由は、ライブラリがあなたのホストシステムがHyper-Vで実行されていると誤って結論付ける可能性があるためです。これは誤検知です。これは、Hyper-Xメカニズムがこれらの2つを区別するために作用する場所です。これはレクイエムによって設計されました

はい。些細なスプーフィング可能な手法がいくつかあり、それが意図的な偽陽性であろうと偽陰性であろうと、ライブラリがそれについてできることは何もありません。これは、すべてのVM検出プロジェクトがクローズドソースかオープンソースであるかどうかに直面しているという問題です。そのため、ライブラリは、実行中の環境に基づいて最良の結果を得るために可能なすべての手法をテストしようとしています。すべてが技術的にスプーフィング可能であることを忘れないでください。
このプロジェクトは、明らかな理由でマルウェアの開発を勧誘していません。隠蔽の目的でそれを使用するつもりであっても、とにかくウイルス対策によってフラグが付けられる可能性が高く、最初は何も難読化されていません。 C ++コードLMAOの10k+ラインを難読化する幸運。
独自のソフトウェアがライブラリを利用できるように、私はそれを厳密にMITしたでしょうが、採用されている手法のいくつかはGPL 3.0プロジェクトからのものであり、法的理由で同じライセンスを使用する以外に選択肢はありません。これにより、すべてのGPLコードなしでMITバージョンを作成するというアイデアが得られたため、コードをオープンソースにすることなく使用することもできます。 MITバージョンは116(1.9バージョン時点で)のうち12の手法を削除し、テクニックの数が少ないほど、全体的な結果が低くなる可能性があることに注意してください。
GCCまたはClangをコンパイルしている場合は、
-lmおよび-lstdc++フラグを追加するか、代わりにG ++/Clang ++コンパイラを使用します。 Linux上の新しいVM環境からリンカーエラーを受信している場合は、sudo apt/dnf/yum update -yでシステムを更新して、必要なC ++コンポーネントをインストールします。
提案、アイデア、またはあらゆる種類の貢献がある場合は、お気軽にお問い合わせください!問題のセクションで喜んで話し合います。あなたが個人的にプライベートで何かを尋ねたいなら、私の不一致はkr.nlです
そして、あなたがこのプロジェクトが役立つと思ったら、星は大歓迎です:)
私は、このプロジェクトの悪意のある使用による損害について責任を負いませんし、責任を負いません。
ライセンス:GPL-3.0/MIT