Crypter et décrypter le shellcode avec XOR
Introduction
Bienvenue dans mon nouvel article aujourd'hui, je vais vous montrer comment créer deux fonctions pour chiffrer et déchiffrer le shellcode avec XOR.
Ces deux fonctions sont créées en C++ et sont très faciles à comprendre, commençons.
Qu'est-ce que le XOR ?
Le chiffrement XOR est un type d'opération au niveau du bit couramment utilisé en cryptographie pour chiffrer les données. Il fonctionne en combinant un message en clair avec une clé secrète à l'aide de l'opérateur XOR (ou exclusif). Le résultat de cette opération est un message chiffré qui ne peut être déchiffré qu'en le combinant avec la clé d'origine à l'aide de la même opération XOR. La sécurité du chiffrement XOR repose sur le fait que l'opération XOR est réversible et qu'il est très difficile de déterminer la clé d'origine à partir du seul texte chiffré.
Pourquoi est-il utilisé pour chiffrer le shellcode ?
Le chiffrement XOR est souvent utilisé pour chiffrer le shellcode car il s'agit d'une opération simple et rapide qui peut être utilisée pour masquer le contenu du code. L'opération XOR prend deux valeurs binaires et produit un résultat qui est 1 si exactement l'une des entrées est 1, et 0 sinon. Lorsque le chiffrement XOR est utilisé pour chiffrer le shellcode, une clé est choisie et utilisée pour XOR chaque octet du shellcode. Pour déchiffrer le shellcode, la même clé est à nouveau utilisée pour XOR chaque octet, ce qui inverse le chiffrement et récupère le shellcode d'origine.
L'utilisation du cryptage XOR pour masquer le contenu du shellcode peut aider à échapper à la détection par les logiciels de sécurité, car le shellcode crypté aura un modèle de bits différent de celui du shellcode d'origine et peut ne pas correspondre aux signatures connues du code malveillant. Cependant, le cryptage XOR peut être facilement brisé si la clé est connue, il est donc souvent utilisé en conjonction avec d'autres méthodes, telles que l'obscurcissement, pour rendre la rétro-ingénierie plus difficile.
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;
}
La fonction XOR_encrypt(unsigned char key)effectue le cryptage XOR à l' payloadaide de la clé d'entrée et affiche le résultat au format hexadécimal.
COP
Essayons le code :
D'abord, je crée le shellcode pour faire apparaître un calcul.
Maintenant, je mets ici dans .cpp le code :
Il utilise un objet car ce code est en réalité un objet de ma bibliothèque de développement de logiciels malveillants, mais les fonctions sont les mêmes, ici je mets le lien de cette bibliothèque :
Exécutons :
Le premier montrant le shellcode réel, puis crypté à l'intérieur dans la deuxième partie.
conclusion
J'espère que vous l'aimerez et que vous l'utiliserez pour développer vos scripts de logiciels malveillants.
Si vous aimez mon contenu et souhaitez m'aider à faire passer ce projet au niveau supérieur, vous pouvez devenir membre en faisant don d'un abonnement mensuel. Votre soutien m'aidera à continuer à créer du contenu de haute qualité. Merci de ta générosité!
Si le don ne vous est pas possible pour le moment, pas de problème du tout ! Votre soutien pour partager mon projet et faire passer le mot est grandement apprécié. Je continuerai à créer et à partager mon travail malgré tout, et je suis reconnaissant pour vos encouragements et votre intérêt.
Merci d'avoir lu ceci :)
S12.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































