
Scripts Python pour IDA afin de déchiffrer les chaînes de caractères de KPOT et de les définir comme commentaires.
Scripts Python pour IDA permettant de déchiffrer les chaînes du voleur (stealer) KPOT et de les définir comme commentaires à côté de la variable qui les recevra lors de l'exécution. Fonctionnement :
Récupère l'offset passé dans eax à l'une ou l'autre fonction de déchiffrement (il y en a deux, c'est pourquoi ce dépôt contient deux scripts), en utilisant mov ou pop eax.
Déchiffre la chaîne dans un tableau en lisant sa taille correspondante et sa clé XOR.
Affiche la chaîne déchiffrée et l'offset où elle a été définie comme commentaire, ainsi que toute chaîne qu'il n'a pas pu déchiffrer (voir Considérations importantes ci-dessous).
Il y a quelques endroits dans le code où le malware utilise une méthode différente de celles prévues dans les scripts. Vous pouvez trouver ces cas en suivant les adresses avec le message Could not decrypt xref: et les déchiffrer en fournissant manuellement l'offset aux fonctions concernées.
Le script convertit le tableau déchiffré en chaîne via decode(). D'après mon expérience, il y a trois tableaux d'octets déchiffrés par KPOT qui ne sont pas des chaînes, ce qui fait planter le script. Ce sont les offsets qui sont ignorés dans kpot-string-decrypter-pt1.py.
search_offset() qui affiche l'adresse courante peut vous aider à trouver où le script plante.decrypt_str() par return(newarray.hex()).Pour savoir lequel des deux scripts utiliser, vérifiez la routine de déchiffrement - pt1 est destiné à la sous-routine qui fait uniquement un XOR sur les octets, tandis que pt2 est destiné à celle qui fait AND 0xFF après le XOR.