Cifrar y descifrar Shellcode con XOR

Mar 06 2023
Introducción Bienvenido a mi nuevo artículo de hoy, le mostraré cómo creo dos funciones para cifrar y descifrar Shellcode con XOR. Estas dos funciones están creadas con C++ y son muy fáciles de entender, comencemos.

Introducción

Bienvenido a mi nuevo artículo de hoy, le mostraré cómo creo dos funciones para cifrar y descifrar Shellcode con XOR.

Estas dos funciones están creadas con C++ y son muy fáciles de entender, comencemos.

¿Qué es XOR?

El cifrado XOR es un tipo de operación bit a bit que se usa comúnmente en criptografía para cifrar datos. Funciona combinando un mensaje de texto sin formato con una clave secreta utilizando el operador XOR (o exclusivo). El resultado de esta operación es un mensaje de texto cifrado que solo se puede descifrar combinándolo con la clave original usando la misma operación XOR. La seguridad del cifrado XOR se basa en el hecho de que la operación XOR es reversible y que es muy difícil determinar la clave original solo a partir del texto cifrado.

¿Por qué se usa para encriptar shellcode?

El cifrado XOR se usa a menudo para cifrar shellcode porque es una operación simple y rápida que se puede usar para ocultar el contenido del código. La operación XOR toma dos valores binarios y produce un resultado que es 1 si exactamente una de las entradas es 1 y 0 en caso contrario. Cuando se usa el cifrado XOR para cifrar el código de shell, se elige una clave y se usa para XOR cada byte del código de shell. Para descifrar el shellcode, se usa la misma clave para XOR cada byte nuevamente, lo que invierte el cifrado y recupera el shellcode original.

El uso del cifrado XOR para ocultar el contenido del código shell puede ayudar a evadir la detección por parte del software de seguridad, ya que el código shell cifrado tendrá un patrón de bits diferente al del código shell original y es posible que no coincida con las firmas conocidas de código malicioso. Sin embargo, el cifrado XOR se puede romper fácilmente si se conoce la clave, por lo que a menudo se usa junto con otros métodos, como la ofuscación, para dificultar la ingeniería inversa.

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;
        }

La función XOR_encrypt(unsigned char key)realiza el cifrado XOR en el payloaduso de la clave de entrada y genera el resultado en formato hexadecimal.

punto de contacto

Probemos el código:

Primero creo el shellcode para mostrar un calc.

Ahora pongo aquí en .cpp el código:

Está usando un objeto porque este código en realidad es un objeto de mi biblioteca de desarrollo de malware, pero las funciones son las mismas, aquí pongo el enlace de esta biblioteca:

Ejecutemos:

El primero muestra el shellcode real y luego encripta el interior en la segunda parte.

Conclusiones

Estos son algunos de estos temas, espero que les guste y los utilicen para desarrollar sus scripts de malware.

Si disfrutas de mi contenido y te gustaría ayudarme a llevar este proyecto al siguiente nivel, puedes convertirte en miembro donando una suscripción mensual. Su apoyo me ayudará a continuar creando contenido de alta calidad. ¡Gracias por tu generosidad!

Si no es posible donar en este momento, ¡no hay problema! Su apoyo para compartir mi proyecto y correr la voz es muy apreciado. Continuaré creando y compartiendo mi trabajo a pesar de todo, y estoy agradecido por su aliento e interés.

Gracias por leer esto :)

S12.