
pyshell2bin
Si vous travaillez avec des exploits et du shellcode, vous savez déjà ce qu'est le shellcode et comment le manipuler. Parfois, il est fourni avec des exploits en C, Perl, Python… Il ressemble généralement à :
payload = (b"xbfxabxd0x9ax5bxdaxc7xd9x74x24xf4x5ax2bxc9" + "xb1x45x83xc2x04x31x7ax11x03x7ax11xe2x5ex2c" + "x72xd2xa0xcdx83x85x29x28xb2x97x4dx38xe7x27" + ...
Mais il arrive que vous ayez besoin d'une représentation binaire sous forme de fichier de ce shellcode, afin de l'injecter dans un fichier, de le déboguer ou pour toute autre raison. Il existe toutes sortes de scripts pour traiter le shellcode et accomplir différentes tâches. Du binaire vers le shellcode, du shellcode vers le binaire (uniquement pour bash)… Mais je n'ai pas réussi à trouver un script simple pour le faire sous Windows. Même trouver la commande « xxd » (faire un hexdump) portée sous Windows est possible mais pas facile (elle semble être fournie avec Vim pour Windows, mais elle était autrefois disponible avec unixtools…).
Quoi qu'il en soit, voici un script simple en Python qui fonctionne sous Windows et fera l'affaire. Il tolérera un shellcode « sale » (espaces, retours à la ligne, commandes de concaténation…) et ne conservera que les caractères hexadécimaux. Ensuite, il utilise « write » avec « wb » pour obtenir un fichier binaire. Rapide et sale.