
pyshell2bin
Exploit과 shellcode를 다루는 일을 한다면, shellcode가 무엇인지, 어떻게 처리하는지 이미 알고 있을 것이다. 때로는 C, Perl, Python 등으로 작성된 exploit에 포함되어 있기도 하다. 보통 이런 형태다:
payload = (b"xbfxabxd0x9ax5bxdaxc7xd9x74x24xf4x5ax2bxc9" + "xb1x45x83xc2x04x31x7ax11x03x7ax11xe2x5ex2c" + "x72xd2xa0xcdx83x85x29x28xb2x97x4dx38xe7x27" + ...
하지만 때로는 이 shellcode를 바이너리 파일 표현으로 변환해야 할 때가 있다. 파일에 주입하거나, 디버깅하거나, 혹은 다른 이유로 말이다. shellcode를 처리하고 다양한 작업을 수행하는 스크립트는 이미 많이 있다. 바이너리 → shellcode, shellcode → 바이너리(bash 전용) 등. 그런데 Windows에서 간단히 처리해 주는 스크립트는 찾지 못했다. 심지어 “xxd” 명령(hexdump 생성)을 Windows로 포팅한 것도 가능은 하지만 쉽지 않다. (Windows용 Vim에 번들로 포함되어 있는 것 같지만, 예전에는 unixtools로 구할 수 있었다.)
어쨌든, Windows에서 작동하며 이 작업을 해내는 간단한 Python 스크립트가 여기 있다. 지저분한 shellcode(공백, 줄바꿈, 연결 명령 등)를 허용하며, 오직 hex 문자만 남긴다. 그런 다음 “write”를 “wb” 모드로 사용하여 바이너리 파일을 얻는다. 빠르고 간편한 방식이다.