Crittografa e decrittografa Shellcode con XOR
introduzione
Benvenuto nel mio nuovo articolo di oggi, ti mostrerò come creo due funzioni per crittografare e decrittografare Shellcode con XOR.
Queste due funzioni sono create con C++ e sono molto facili da capire, iniziamo.
Che cos'è XOR?
La crittografia XOR è un tipo di operazione bit per bit comunemente utilizzata nella crittografia per crittografare i dati. Funziona combinando un messaggio in chiaro con una chiave segreta utilizzando l'operatore XOR (or esclusivo). Il risultato di questa operazione è un messaggio di testo cifrato che può essere decifrato solo combinandolo con la chiave originale utilizzando la stessa operazione XOR. La sicurezza della crittografia XOR si basa sul fatto che l'operazione XOR è reversibile e che è molto difficile determinare la chiave originale dal solo testo cifrato.
Perché viene utilizzato per crittografare lo shellcode?
La crittografia XOR viene spesso utilizzata per crittografare lo shellcode perché è un'operazione semplice e veloce che può essere utilizzata per oscurare il contenuto del codice. L'operazione XOR accetta due valori binari e produce un risultato che è 1 se esattamente uno degli input è 1 e 0 in caso contrario. Quando la crittografia XOR viene utilizzata per crittografare lo shellcode, viene scelta una chiave e utilizzata per eseguire l'XOR di ogni byte dello shellcode. Per decrittografare lo shellcode, la stessa chiave viene utilizzata per XOR di nuovo ogni byte, che inverte la crittografia e recupera lo shellcode originale.
L'uso della crittografia XOR per nascondere il contenuto dello shellcode può aiutare a eludere il rilevamento da parte del software di sicurezza, poiché lo shellcode crittografato avrà uno schema di bit diverso rispetto allo shellcode originale e potrebbe non corrispondere alle firme note per il codice dannoso. Tuttavia, la crittografia XOR può essere facilmente violata se la chiave è nota, quindi viene spesso utilizzata insieme ad altri metodi, come l'offuscamento, per rendere più difficile il reverse engineering.
Codice
#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 funzione XOR_encrypt(unsigned char key)esegue la crittografia XOR sull'utilizzo payloaddella chiave di input e restituisce il risultato in formato esadecimale.
POC
Proviamo il codice:
Per prima cosa creo lo shellcode per far apparire un file calc.
Ora metto qui in .cpp il codice:
Sta usando l'oggetto perché questo codice in realtà è un oggetto della mia libreria di sviluppo malware, ma le funzioni sono le stesse, qui metto il link di questa libreria:
Eseguiamo:
Il primo che mostra l'effettivo shellcode e poi crittografato all'interno nella seconda parte.
Conclusioni
Questo è uno di questi argomenti, spero che ti piaccia e che usi per sviluppare i tuoi script di malware.
Se ti piacciono i miei contenuti e vorresti aiutarmi a portare questo progetto al livello successivo, puoi diventare un membro donando un abbonamento mensile. Il tuo supporto mi aiuterà a continuare a creare contenuti di alta qualità. Grazie per la vostra generosità!
Se la donazione non è possibile per te in questo momento, nessun problema! Il tuo supporto nel condividere il mio progetto e diffondere la parola è molto apprezzato. Continuerò a creare e condividere il mio lavoro a prescindere, e sono grato per il vostro incoraggiamento e interesse.
Grazie per aver letto questo :)
S12.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































