hacktricks/reversing/cryptographic-algorithms/README.md

3.7 KiB

Algoritmos Criptográficos/Compresión

Algoritmos Criptográficos/Compresión

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Identificación de Algoritmos

Si terminas en un código usando desplazamientos a la derecha e izquierda, XOR y varias operaciones aritméticas es muy posible que sea la implementación de un algoritmo criptográfico. Aquí se mostrarán algunas formas de identificar el algoritmo que se está utilizando sin necesidad de revertir cada paso.

Funciones API

CryptDeriveKey

Si se utiliza esta función, se puede encontrar qué algoritmo se está utilizando comprobando el valor del segundo parámetro:

Comprueba aquí la tabla de posibles algoritmos y sus valores asignados: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

RtlCompressBuffer/RtlDecompressBuffer

Comprime y descomprime un búfer de datos dado.

CryptAcquireContext

La función CryptAcquireContext se utiliza para adquirir un identificador para un contenedor de claves particular dentro de un proveedor de servicios criptográficos (CSP) particular. Este identificador devuelto se utiliza en llamadas a funciones de CryptoAPI que utilizan el CSP seleccionado.

CryptCreateHash

Inicia el hash de un flujo de datos. Si se utiliza esta función, se puede encontrar qué algoritmo se está utilizando comprobando el valor del segundo parámetro:

Comprueba aquí la tabla de posibles algoritmos y sus valores asignados: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

Constantes de código

A veces es muy fácil identificar un algoritmo gracias al hecho de que necesita usar un valor especial y único.

Si buscas la primera constante en Google, esto es lo que obtienes:

Por lo tanto, se puede asumir que la función descompilada es un calculador sha256.
Puedes buscar cualquiera de las otras constantes y obt