카테고리 없음

PE파일 분석

햄루룰루 2020. 10. 16. 21:54

본 포스팅은 멀티캠퍼스의 파이썬 오픈소스 도구를 활용한 악성코드분석 강의를 토대로 진행하였습니다.

 

분석파일들

echo.exe 파일은 정상파일이고 나머지 #N echo.exe 파일은 echo.exe파일을 변조한 파일들이다. 이것들을 복구해 정상적인 인 echo.exe로 만드는 것이 목표이다.

 

먼저, echo.exe 파일을 cmd 창에 실행하고 숫자를 기입하면 해당 버퍼 주소가 출력된다.

정상적인 echo.exe 파일 실행화면

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로 수정)

echo.exe 파일의 Offset to New EXE Header 값
#3 echo.exe 파일의 Offset to New EXE Header 값

하지만 해당 값을 변경해도 실행이 되질 않는다. 이유는 다음과 같다.

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파일 구조에 그나마 익숙해지는 효과를 얻은 것 같다.