Criptografar e descriptografar Shellcode com XOR

Mar 06 2023
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.

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.