본 포스팅은 멀티캠퍼스의 파이썬 오픈소스 도구를 활용한 악성코드분석 강의를 토대로 진행하였습니다.
echo.exe 파일은 정상파일이고 나머지 #N echo.exe 파일은 echo.exe파일을 변조한 파일들이다. 이것들을 복구해 정상적인 인 echo.exe로 만드는 것이 목표이다.
먼저, echo.exe 파일을 cmd 창에 실행하고 숫자를 기입하면 해당 버퍼 주소가 출력된다.
1111로 입력하였더니 0019EECC라는 주소가 출력되었다.
#1 echo.exe 파일을 실행하였는데 다음과 같은 오류가 출력되었다.
HxD(바이너리 편집기)를 통해 #1 echo.exe 파일을 분석해보았다.
MZ 앞에 boanproject라는 텍스트 때문에 정상적으로 실행이 안된다는 것을 알 수 있었다.
해당 텍스트를 지우고 실행하니 정상 실행되는 것을 확인할 수 있었다.
#2 echo.exe 파일을 실행하였더니 앞서 나온 오류를 확인할 수 있었다.
HxD를 통해 확인한 결과, MZ와 PE 부분이 생략된 것을 확인할 수 있었다.
해당 부분에 MZ와 PE를 추가하면 정상적으로 실행되는 것을 확인할 수 있다.
이어서, #3 echo.exe 파일의 오류를 분석해보았다.
정상적인 파일(echo.exe)은 IMAGE_DOS_HEADER에서 IMAGE_NT_HEADER가 시작되는 offset값을 가지고 있는 Offset to New EXE Header가 변조된 것을 확인할 수 있었다. (E0 -> D8로 수정)
하지만 해당 값을 변경해도 실행이 되질 않는다. 이유는 다음과 같다.
IMAGE_NT_HEADERS에서 IMAGE_FILE_HEADER의 Number of Sections를 보면 이전에는 03으로 설정되었던 값을 05로 설정하였더니 정상 실행 되었다.
#4 echo.exe 파일부터 간략 설명으로 진행하겠습니다.
#4 echo.exe 수정내용
IMAGE_FILE_HEADER의 Size of Optional Header 값 (10->E0)
IMAGE_OPTIONAL_HEADER의 Subsystem 값 (01->03)
#5 echo.exe 수정내용
MS-DOS Stub Program 수정
IMAGE_OPTIONAL_HEADER의 Image Base 값을 00400000으로 수정
#6 echo.exe 수정내용
IMAGE_SECTION_HEADER .text의 Characteristics 값 60000020으로 수정
※느낀점
학습을 하면서 PE파일 구조에 그나마 익숙해지는 효과를 얻은 것 같다.