프로그래밍/Python
[binascii] unhexlify 함수로 헥스(Hex) 값과 문자열(Char)을 교체하기
1q
2018. 1. 17. 17:16
# BIN0004.eps_decom.bin 파일은 CVE-2013-0808 취약점으로 한글 파일(HWP) 내부에 악의적으로 조작된 EPS(Encapsulated PostScript) 코드이며, 내부에는 쉘코드가 담겨있다. 파일을 헥스 에디터로 열어본 결과 헥스(Hex) 값과 문자열(Char)이 뒤바껴있는 모습을 볼 수 있다. 일단 저 상태로 디버깅을 수행할 수 있는 방법이 있겠지만.. 생각이 안나서 스크립트(Python)를 이용해 변경했다.
# 스크립트 내용은 간단하다. 바이너리 값을 읽어 2Byte만큼 가져와 binascii 라이브러리의 unhexlify 함수를 이용해 헥스(Hex) 형태로 변경된 바이너리 값으로 새로운 파일을 바이너리 형태로 생성한다.
1 2 3 4 5 6 7 8 9 10 11 | from binascii import * with open('BIN0004.eps_decom.bin', 'rb') as eps: read_eps = eps.read() bin_ = '' for index in range(0, len(read_eps), 2): binary_data = c[index:index+2] bin_ += unhexlify(binary_data) with open('change.bin', 'wb') as ch: ch.write(d) | cs |
# 생성된 바이너리를 확인하면 다음과 같이 변경된 것을 확인 가능하다.
# 아래 과정부터는 올리디버거에서 쉘코드 및 덤프파일을 분석하기 위한 방법(왜 이러는지는 모른다..)이다.
# 첫 번째로 아무 파일이나 디버거에 로드 후 오른쪽 마우스 클릭하고 Backup - Load backup from file을 누른 후 쉘코드 바이너리 파일을 로드한다.
# 오류 창은 가볍게 넘어가면 된다.
# Home Key를 누른다.
# Shift + End를 누른다.
# Alt + Backspace를 누른 뒤 Home Key를 누르고 Ctrl + * 를 통해 분석을 시작하면 된다.