
Scripts de IDA Python para descifrar cadenas de KPOT y establecerlas como comentarios
Scripts de Python para IDA que descifran las cadenas del stealer KPOT y las establecen como comentarios junto a la variable que las recibiría durante la ejecución. Funciona de la siguiente manera:
Obtiene el offset que se pasa en eax a cualquiera de las funciones de descifrado (hay dos, por eso este repositorio tiene dos scripts), ya sea usando mov o pop eax.
Descifra la cadena en un array leyendo su tamaño correspondiente y la clave XOR.
Imprime la cadena descifrada y el offset de donde se estableció como comentario, así como cualquier cadena que no haya podido descifrar (ver Consideraciones importantes más abajo).
Hay algunas instancias en el código donde el malware usará un método distinto a los contemplados en los scripts. Puedes encontrar esos casos siguiendo las direcciones con el mensaje Could not decrypt xref: y descifrarlos proporcionando el offset manualmente a las funciones correspondientes.
El script convierte el array descifrado en una cadena mediante decode(). En mi experiencia, hay tres arrays de bytes descifrados por KPOT que no son cadenas, lo que hace que el script falle. Estos son los offsets que se ignoran en kpot-string-decrypter-pt1.py.
search_offset() que imprima la dirección actual puede ayudarte a encontrar dónde está fallando el script.decrypt_str() a return(newarray.hex()).Para saber cuál de los dos scripts usar, revisa la rutina de descifrado - pt1 está pensado para la subrutina que solo hace un XOR de bytes, mientras que pt2 está pensado para la que hace AND 0xFF después del XOR.