
VMAWARE (VM + CAWER) est une bibliothèque C ++ multiplateforme pour la détection de la machine virtuelle.
La bibliothèque est:
# 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 " ;
}Sortie possible:
Virtual machine detected!
VM name: VirtualBox
VM type: Hypervisor (type 2)
VM certainty: 100%

Ce projet fournit également un outil CLI minuscule mais pratique en utilisant le plein potentiel de ce que la bibliothèque peut faire. Cela vous donnera toutes sortes de détails sur l'environnement dans lequel il fonctionne.

Pour installer la bibliothèque, téléchargez le fichier vmaware.hpp dans la dernière section de version de votre projet. Les binaires y sont également situés. Aucun lien CMake ou objet partagé n'est nécessaire, c'est littéralement aussi simple.
Cependant, si vous souhaitez le projet complet (en-têtes accessibles à l'échelle mondiale avec <VMAWARE.HPP> et l'outil CLI), suivez ces commandes:
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 ()Vous pouvez voir les documents complets ici. Tous les détails tels que les fonctions, les techniques, les paramètres et les exemples sont fournis. Croyez-moi, ce n'est pas trop intimidant;)
Il utilise une liste complète des techniques anti-VM de haut niveau (CPU, GPU, HDD et firmware) et de haut niveau qui sont comptabilisées dans un système de notation. Les scores (0-100) pour chaque technique sont donnés arbitrairement, et chaque technique qui a détecté une machine virtuelle aura son score ajouté à un seul point d'accumulation, où un numéro de point de seuil décidera s'il fonctionne réellement dans une machine virtuelle.
Il est conçu pour les chercheurs en sécurité, les ingénieurs VM, les développeurs de joueurs et à peu près tous ceux qui ont besoin d'un mécanisme de détection de VM pratique et solide dans leur projet. Par exemple, la bibliothèque convient si vous faites une machine virtuelle et que vous testez l'efficacité de la dissimulation de lui-même. Si vous êtes un développeur de jeux / développeur de logiciels propriétaires, la bibliothèque est utile pour contrecarrer contre les ingénieurs inverses. Si vous êtes un analyste de logiciels malveillants et que vous souhaitez vérifier la capacité de dissimulation de votre machine virtuelle, ce serait l'outil parfait pour comparer la façon dont votre machine virtuelle est bien résolue contre les logiciels malveillants. De plus, les logiciels pourraient optimiser les performances ou l'utilisation des ressources en fonction de l'environnement détecté, et certaines applications pourraient vouloir restreindre l'utilisation dans les machines virtuelles pour empêcher la distribution ou les tests non autorisés.
Il y a déjà beaucoup de projets qui ont le même objectif comme Invizzible, Pafish et Al-Khaser. Mais la différence entre les projets susmentionnés est qu'ils ne fournissent pas d'interface programmable pour interagir avec les mécanismes de détection, en plus d'avoir peu ou pas de support pour les systèmes non-fenêtres. Je voulais que les techniques de détection de base soient accessibles par programmation de manière multiplateforme pour que tout le monde en tire quelque chose d'utile plutôt que de fournir un outil CLI. Il contient également une plus grande quantité de techniques, il s'agit donc essentiellement d'une bibliothèque de détection VM et d'un outil sur des stéroïdes avec une flexibilité maximale.
Il existe quelques logiciels rémunérés pour protéger la licence d'autres logiciels contre les indexes ou la fissuration des logiciels, tels que le RMS Sentinel de Thales et le VMProtect. Bien que ceux-ci ne soient pas destinés à être uniquement des bibliothèques de détection de machines virtuelles, elles sont limitées dans leurs capacités de différentes manières. La détection de machines virtuelles de Sentinel RMS n'a pas autant de marques de machine virtuelle (sans oublier que le prix est uniquement destiné aux sociétés, et non aux individus), et VMProtect a un nombre très limité de techniques de détection, où certains d'entre eux ne nécessitent pas beaucoup d'efforts pour contourner avec seulement quelques configurations à la VM (le mécanisme de détection a également été fuite, alors il n'y a aucun avantage de l'avoir fermé maintenant). En parlant de cela, le seul inconvénient de Vraware est qu'il est entièrement open source, ce qui facilite le travail des contasseurs par rapport à sa source fermée. Cependant, je dirais que c'est un compromis digne en ayant autant de techniques de détection de machine virtuelle de manière ouverte et interactive, notamment en ayant de précieux commentaires de la communauté pour rendre la bibliothèque plus efficace et précise.
Hyper-V a une fonction obscure où si elle est activée dans le système hôte, les valeurs matérielles du CPU donnent l'impression que l'ensemble du système s'exécute à l'intérieur de Hyper-V, ce qui n'est pas vrai. Cela fait un défi de déterminer si les valeurs matérielles que la bibliothèque collectionne est soit une véritable machine virtuelle hyper-v, soit simplement les artefacts de ce que Hyper-V a laissé en conséquence de l'avoir activé dans le système hôte. La raison pour laquelle cela est un problème est que la bibliothèque pourrait conclure à tort que votre système hôte est en cours d'exécution dans Hyper-V, ce qui est un faux positif. C'est là que le mécanisme Hyper-X entre en jeu pour distinguer ces deux. Ceci a été conçu par Requiem

Oui. Il existe certaines techniques qui sont trivialement spoofables, et rien que la bibliothèque ne puisse faire, qu'il s'agisse d'un faux positif délibéré ou même d'un faux négatif. C'est un problème auquel chaque projet de détection de machine virtuelle est confronté à la fermeture ou à l'open source, c'est pourquoi la bibliothèque essaie de tester toutes les techniques possibles pour obtenir le meilleur résultat en fonction de l'environnement dans lequel il fonctionne. N'oubliez pas que tout est techniquement usurpé.
Ce projet ne sollicite pas le développement de logiciels malveillants pour des raisons évidentes. Même si vous avez l'intention de l'utiliser à des fins de dissimulation, il sera probablement signalé par des antivirus de toute façon et rien n'est obscurci pour commencer. Bonne putain de chance obscurci 10k + lignes de code C ++ lmao.
Je l'aurais fait strictement le MIT, donc les logiciels propriétaires peuvent utiliser la bibliothèque, mais certaines des techniques utilisées proviennent de projets GPL 3.0, et je n'ai d'autre choix que d'utiliser la même licence pour des raisons juridiques. Cela m'a donné une idée de faire une version du MIT sans tout le code GPL afin qu'il puisse également être utilisé sans forcer votre code à être open-source. Il convient de noter que la version MIT supprime 12 techniques sur 116 (à partir de 1,9 version), et moins le nombre de techniques, moins le résultat global pourrait être précis.
Si vous compilez avec GCC ou Clang, ajoutez les indicateurs
-lmet-lstdc++ou utilisez plutôt des compilateurs G ++ / Clang ++. Si vous recevez des erreurs de linker à partir d'un tout nouvel environnement VM sur Linux, mettez à jour votre système avecsudo apt/dnf/yum update -ypour installer les composants C ++ nécessaires.
Si vous avez des suggestions, des idées ou une sorte de contribution, n'hésitez pas à demander! Je serai plus qu'heureux de discuter dans la section des problèmes. Si vous voulez demander personnellement quelque chose en privé, ma discorde est kr.nl
Et si vous trouviez ce projet utile, une star serait appréciée :)
Je ne suis pas responsable des dommages que vous causez par une utilisation malveillante de ce projet.
Licence: GPL-3.0 / MIT