Criptografar e descriptografar Shellcode com XOR
Introdução
Bem-vindo ao meu novo artigo de hoje, mostrarei como criar duas funções para criptografar e descriptografar Shellcode com XOR.
Essas duas funções são criadas com C++ e são muito fáceis de entender, vamos começar.
O que é XOR?
A criptografia XOR é um tipo de operação bit a bit comumente usada em criptografia para criptografar dados. Ele funciona combinando uma mensagem de texto simples com uma chave secreta usando o operador XOR (ou exclusivo). O resultado dessa operação é uma mensagem de texto cifrado que só pode ser descriptografada combinando-a com a chave original usando a mesma operação XOR. A segurança da criptografia XOR é baseada no fato de que a operação XOR é reversível e que é muito difícil determinar a chave original apenas a partir do texto cifrado.
Por que é usado para criptografar shellcode?
A criptografia XOR é frequentemente usada para criptografar shellcode porque é uma operação simples e rápida que pode ser usada para ocultar o conteúdo do código. A operação XOR usa dois valores binários e produz um resultado que é 1 se exatamente uma das entradas for 1 e 0 caso contrário. Quando a criptografia XOR é usada para criptografar shellcode, uma chave é escolhida e usada para XOR cada byte do shellcode. Para descriptografar o shellcode, a mesma chave é usada para XOR cada byte novamente, o que reverte a criptografia e recupera o shellcode original.
O uso da criptografia XOR para ocultar o conteúdo do shellcode pode ajudar a evitar a detecção pelo software de segurança, pois o shellcode criptografado terá um padrão de bits diferente do shellcode original e pode não corresponder a assinaturas conhecidas de código malicioso. No entanto, a criptografia XOR pode ser facilmente quebrada se a chave for conhecida, por isso é frequentemente usada em conjunto com outros métodos, como ofuscação, para dificultar a engenharia reversa.
Código
#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;
}
A função XOR_encrypt(unsigned char key)executa a criptografia XOR usando payloada chave de entrada e gera o resultado em formato hexadecimal.
POC
Vamos tentar o código:
Primeiro, crio o shellcode para exibir um calc.
Agora coloquei aqui em .cpp o código:
Está usando objeto porque esse código na verdade é um objeto da minha biblioteca de desenvolvimento de malware, mas as funções são as mesmas, aqui coloco o link dessa biblioteca:
Vamos executar:
O primeiro mostrando o shellcode real e, em seguida, criptografado dentro da segunda parte.
Conclusões
Este é um dos tópicos, espero que goste e use para desenvolver seus scripts de malware.
Se você gosta do meu conteúdo e gostaria de me ajudar a levar este projeto para o próximo nível, você pode se tornar um membro doando uma assinatura mensal. Seu apoio me ajudará a continuar criando conteúdo de alta qualidade. Obrigado pela sua generosidade!
Se doar não for possível para você neste momento, não há problema algum! Seu apoio em compartilhar meu projeto e espalhar a palavra é muito apreciado. Continuarei a criar e compartilhar meu trabalho independentemente, e sou grato por seu incentivo e interesse.
Obrigado por ler isso :)
S12.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)