Shellcode mit XOR verschlüsseln und entschlüsseln

Mar 06 2023
Einleitung Willkommen zu meinem neuen Artikel heute. Ich werde Ihnen zeigen, wie ich zwei Funktionen zum Verschlüsseln und Entschlüsseln von Shellcode mit XOR erstelle. Diese beiden Funktionen wurden mit C++ erstellt und sind sehr einfach zu verstehen, fangen wir an.

Einführung

Willkommen zu meinem neuen Artikel heute. Ich werde Ihnen zeigen, wie ich zwei Funktionen zum Verschlüsseln und Entschlüsseln von Shellcode mit XOR erstelle.

Diese beiden Funktionen wurden mit C++ erstellt und sind sehr einfach zu verstehen, fangen wir an.

Was ist XOR?

Die XOR-Verschlüsselung ist eine Art bitweise Operation, die in der Kryptografie häufig zum Verschlüsseln von Daten verwendet wird. Es funktioniert durch die Kombination einer Klartextnachricht mit einem geheimen Schlüssel mithilfe des XOR-Operators (exklusiv oder). Das Ergebnis dieser Operation ist eine Chiffretextnachricht, die nur durch Kombination mit dem Originalschlüssel mithilfe derselben XOR-Operation entschlüsselt werden kann. Die Sicherheit der XOR-Verschlüsselung basiert auf der Tatsache, dass die XOR-Operation reversibel ist und es sehr schwierig ist, den Originalschlüssel allein aus dem Chiffretext zu ermitteln.

Warum wird Shellcode zum Verschlüsseln verwendet?

Die XOR-Verschlüsselung wird häufig zum Verschlüsseln von Shellcode verwendet, da es sich um eine einfache und schnelle Operation handelt, mit der der Inhalt des Codes verschleiert werden kann. Die XOR-Operation nimmt zwei Binärwerte und erzeugt ein Ergebnis, das 1 ist, wenn genau eine der Eingaben 1 ist, andernfalls 0. Wenn XOR-Verschlüsselung zum Verschlüsseln von Shellcode verwendet wird, wird ein Schlüssel ausgewählt und zum XOR jedes Bytes des Shellcodes verwendet. Um den Shellcode zu entschlüsseln, wird mit demselben Schlüssel jedes Byte erneut XOR-verknüpft, wodurch die Verschlüsselung umgekehrt wird und der ursprüngliche Shellcode wiederhergestellt wird.

Die Verwendung der XOR-Verschlüsselung zum Verbergen des Shellcode-Inhalts kann dazu beitragen, der Erkennung durch Sicherheitssoftware zu entgehen, da der verschlüsselte Shellcode ein anderes Bitmuster aufweist als der ursprüngliche Shellcode und möglicherweise nicht mit bekannten Signaturen für Schadcode übereinstimmt. Allerdings kann die XOR-Verschlüsselung leicht gebrochen werden, wenn der Schlüssel bekannt ist. Daher wird sie häufig in Verbindung mit anderen Methoden wie Verschleierung verwendet, um Reverse Engineering zu erschweren.

Code

#include <iostream>
#include <string>
#include <iomanip>


using namespace std;
    void XOR_decrypt(unsigned char key) {
        for (int i = 0; i < len; i++) {
            payload[i] = payload[i] ^ key;
            cout << "\\x" << hex << setfill('0') << setw(2) << (int)payload[i];
        }
        cout << endl;
        }

    void XOR_encrypt(unsigned char key){
        for(int i = 0; i < len; i++){
            payload[i] ^= key;
        }
        for(int i = 0; i < len; i++){
            cout << "\\x" << hex << (int)payload[i];
        }
        cout << endl;
        }

Die Funktion führt mithilfe des Eingabeschlüssels XOR_encrypt(unsigned char key)eine XOR-Verschlüsselung durch und gibt das Ergebnis im Hexadezimalformat aus.payload

POC

Probieren wir den Code aus:

Zuerst erstelle ich den Shellcode, um eine Berechnung anzuzeigen.

Jetzt habe ich hier den Code in .cpp eingefügt:

Es wird ein Objekt verwendet, da dieser Code in Wirklichkeit ein Objekt aus meiner Malware-Entwicklungsbibliothek ist, die Funktionen jedoch dieselben sind. Hier habe ich den Link dieser Bibliothek eingefügt:

Lassen Sie uns Folgendes ausführen:

Der erste Teil zeigt den eigentlichen Shellcode und im zweiten Teil wird die darin enthaltene Verschlüsselung angezeigt.

Schlussfolgerungen

Dies sind einige dieser Themen, von denen ich hoffe, dass sie Ihnen gefallen und Sie sie zum Entwickeln Ihrer Malware-Skripte verwenden.

Wenn Ihnen meine Inhalte gefallen und Sie mir helfen möchten, dieses Projekt auf die nächste Stufe zu bringen, können Sie Mitglied werden, indem Sie ein monatliches Abonnement spenden. Ihre Unterstützung wird mir helfen, weiterhin hochwertige Inhalte zu erstellen. Danke für deine Großzügigkeit!

Sollte eine Spende für Sie zum jetzigen Zeitpunkt nicht möglich sein, kein Problem! Wir freuen uns sehr über Ihre Unterstützung bei der Weitergabe meines Projekts und der Weiterverbreitung der Nachricht. Ich werde meine Arbeit trotzdem weiterhin schaffen und teilen und bin dankbar für Ihre Ermutigung und Ihr Interesse.

Danke, dass du das gelesen hast :)

S12.