
VMAWare (VM+ AWARE) ist eine plattformübergreifende C ++-Bibliothek für die Erkennung virtueller Maschinen.
Die Bibliothek ist:
# 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 " ;
}mögliche Ausgabe:
Virtual machine detected!
VM name: VirtualBox
VM type: Hypervisor (type 2)
VM certainty: 100%

Dieses Projekt bietet auch ein kleines, aber praktisches CLI -Tool, das das volle Potenzial der Bibliothek nutzt. Es gibt Ihnen alle möglichen Details über die Umgebung, unter der sie läuft.

Um die Bibliothek zu installieren, laden Sie die vmaware.hpp -Datei im neuesten Release -Abschnitt in Ihr Projekt herunter. Die Binärdateien befinden sich auch dort. Es sind keine CMake- oder gemeinsam genutzten Objektverbindungen erforderlich, es ist buchstäblich so einfach.
Wenn Sie jedoch das vollständige Projekt (global zugängliche Header mit <vmaware.hpp> und das CLI -Tool) wünschen, folgen Sie folgenden Befehlen:
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 ()Sie können die vollständigen Dokumente hier anzeigen. Alle Details wie Funktionen, Techniken, Einstellungen und Beispiele werden bereitgestellt. Vertrauen Sie mir, es ist nicht zu einschüchternd;)
Es verwendet eine umfassende Liste von niedrigen (CPU, GPU, HDD und Firmware) und hochrangigen Anti-VM-Techniken, die in einem Bewertungssystem berücksichtigt werden. Die Punktzahlen (0-100) für jede Technik werden willkürlich angegeben, und jede Technik, die eine VM erkannt hat, wird ihre Punktzahl zu einem einzigen akkumulativen Punkt hinzugefügt, bei dem eine Schwellenwertnummer entscheidet, ob sie tatsächlich in einem VM läuft.
Es ist für Sicherheitsforscher, VM-Ingenieure, Gamer-Entwickler und so ziemlich jeder, der in seinem Projekt einen praktischen und rockigen VM-Erkennungsmechanismus benötigt, konzipiert. Zum Beispiel ist die Bibliothek geeignet, wenn Sie eine VM erstellen und die Effektivität des Verbergens selbst testen. Wenn Sie ein Wildentwickler/proprietärer Softwareentwickler sind, ist die Bibliothek nützlich, um gegen Reverse Engineers zu vereiteln. Wenn Sie ein Malware-Analyst sind und die Verschleierung Ihres VM überprüfen möchten, ist dies das perfekte Werkzeug, um zu bewerten, wie gut Ihre VM gegen Malware ist. Darüber hinaus kann Software die Leistung oder die Ressourcenverwendung basierend auf der erkannten Umgebung optimieren, und einige Anwendungen möchten möglicherweise die Verwendung in VMs einschränken, um die nicht autorisierte Verteilung oder Tests zu verhindern.
Es gibt bereits viele Projekte, die das gleiche Ziel haben wie Invizzible, Pafish und Al-Khaser. Der Unterschied zwischen den oben genannten Projekten besteht jedoch darin, dass sie keine programmierbare Schnittstelle zur Interaktion mit den Erkennungsmechanismen bieten, zusätzlich zu wenig bis gar keine Unterstützung für Nicht-Windows-Systeme. Ich wollte, dass die Kernerkennungstechniken programmgesteuert auf plattformübergreifende Weise zugänglich sind, damit jeder etwas Nützliches herausholt, anstatt nur ein CLI-Tool bereitzustellen. Es enthält auch eine größere Menge an Techniken, daher ist es im Grunde nur eine VM -Erkennungsbibliothek und ein Werkzeug für Steroide mit maximaler Flexibilität.
Es gibt einige bezahlte Software, um die Lizenzierung anderer Software vor Reverse -Ingenieuren oder Software -Cracking zu schützen, wie z. B. Thales 'Sentinel RMS und VMProtect. Obwohl diese nicht nur für VM -Erkennungsbibliotheken gedacht sind, sind sie auf unterschiedliche Weise in ihren Fähigkeiten begrenzt. Die VM -Erkennung von Sentinel RMS enthält nicht so viele VM -Marken (ganz zu schweigen von der Preisgestaltung nur für Unternehmen, nicht für Einzelpersonen), und VMProtect hat eine sehr begrenzte Anzahl von Erkennungstechniken, bei denen einige von ihnen nicht viel Anstrengungen erfordern, um nur wenige Konfigurationen zu umgehen (der Erkennungsmechanismus ist nicht mehr auf dem Laufenden. Apropos, der einzige Nachteil von Vmaware ist, dass es sich um eine vollständige Open -Source -Seite handelt, was die Aufgabe der Umgehungsstraße im Vergleich zur geschlossenen Quelle erleichtert. Ich würde jedoch argumentieren, dass dies ein würdiger Kompromiss ist, indem es so viele VM -Erkennungstechniken offen und interaktiv aufweist, einschließlich wertvolles Feedback der Community, um die Bibliothek effektiver und genauer zu gestalten.
Hyper-V verfügt über eine obskure Funktion, bei der die CPU-Hardwarewerte, wenn sie im Host-System aktiviert ist, so aussehen, als würde das gesamte System in Hyper-V ausgeführt, was nicht wahr ist. Dies macht es zu einer Herausforderung zu bestimmen, ob die Hardwarewerte, die die Bibliothek sammelt, entweder ein echtes Hyper-V-VM oder nur die Artefakte dessen ist, was Hyper-V als Folge der Aktivierung im Hostsystem hinterlassen hat. Der Grund, warum dies ein Problem ist, ist, dass die Bibliothek fälschlicherweise zu dem Schluss kommt, dass Ihr Host-System in Hyper-V ausgeführt wird, was falsch positiv ist. Hier kommt der Hyper-X -Mechanismus ins Spiel, um zwischen diesen beiden zu unterscheiden. Dies wurde von Requiem entworfen

Ja. Es gibt einige Techniken, die trivial fähig sind, und es gibt nichts, was die Bibliothek dagegen tun kann, unabhängig davon, ob es sich um ein absichtliches falsches positives oder sogar ein falsches Negativ handelt. Dies ist ein Problem, mit dem jedes VM -Erkennungsprojekt konfrontiert ist, ob geschlossen oder Open Source, weshalb die Bibliothek versucht, jede mögliche Technik zu testen, um das beste Ergebnis auf der Grundlage der Umgebung zu erzielen, unter der sie läuft. Denken Sie daran, alles ist technisch fähig.
Dieses Projekt bittet aus offensichtlichen Gründen nicht die Entwicklung von Malware. Selbst wenn Sie es für Verschleierung verwenden möchten, wird es höchstwahrscheinlich sowieso von Antiviren gekennzeichnet, und es wird zunächst nichts verschleiert. Guter verdammter Glück, 10k+ Zeilen von C ++ Code LMAO zu verschleifen.
Ich hätte es streng MIT gemacht, so dass die proprietäre Software die Bibliothek nutzen kann, aber einige der angewandten Techniken stammen aus GPL 3.0 -Projekten, und ich habe keine andere Wahl, als aus rechtlichen Gründen dieselbe Lizenz zu verwenden. Dies gab mir die Idee, eine MIT-Version ohne den gesamten GPL-Code zu erstellen, sodass er auch verwendet werden kann, ohne Ihren Code zum Open-Source zu erzwingen. Es ist zu beachten, dass die MIT -Version 12 Techniken von 116 (ab 1,9 Version) beseitigt und die Anzahl der Techniken, je weniger Techniken, das Gesamtergebnis sein könnte.
Wenn Sie mit GCC oder Clang kompilieren, fügen Sie die Flags
-lmund-lstdc++hinzu oder verwenden Sie stattdessen G ++/Clang ++ -Kompiler. Wenn Sie Linkerfehler aus einer brandneuen VM -Umgebung unter Linux erhalten, aktualisieren Sie Ihr System mitsudo apt/dnf/yum update -yum die erforderlichen C ++ -Komponenten zu installieren.
Wenn Sie Vorschläge, Ideen oder einen Beitrag haben, können Sie sich gerne fragen! Ich werde gerne im Abschnitt "Ausgabe" diskutieren. Wenn Sie persönlich etwas privat fragen möchten, ist meine Zwietracht kr.nl
Und wenn Sie dieses Projekt nützlich finden, wäre ein Star geschätzt :)
Ich bin weder verantwortlich noch für Schäden verantwortlich, die Sie durch eine böswillige Verwendung dieses Projekts verursachen.
Lizenz: GPL-3.0/MIT