Malware Analysis/PE

#7 PE - Rich 헤더

geunyeong 2021. 8. 1. 21:20

Abstract

Rich 헤더는 PE 파일의 DOS 스텁 코드와 NT 헤더 사이 사용되지 않는 공간에 저장되는 데이터다. 실행에 영향을 주지 않으며 프로그램이 빌드된 환경에 대한 정보가 저장되기 때문에 사이버 위협 인텔리전스에서 활용되고 있다. 하지만 변조가 쉽기 때문에 신뢰하기보다는 참고용으로 사용하는 경우가 많다. 실제로 Rich 헤더를 변조해 다른 그룹의 악성코드로 위장한 경우도 있다. 

Rich Header

아래 그림에서 붉은 박스로 감싸진 영역이 Rich 헤더다. Rich 헤더 영역에서 푸른 박스로 감싸진 영역은 Rich 헤더의 시그니처, 초록색 박스로 감싸진 영역은 Rich 헤더의 체크섬이자 XOR 키이다. Rich 헤더의 데이터들은 Rich 헤더의 체크섬으로 XOR되어 저장된다. 단 Rich 시그니처 전까지 데이터만 XOR된다.

 

파일 상에서의 Rich 헤더 영역

 

Rich 헤더의 데이터를 체크섬으로 XOR하면 첫 4바이트는 DanS라는 시그니처가 나타난다. 위 그림에서 Rich 헤더의 첫 4바이트인 80D5BC54h를 체크섬 값인 C4B4D207h와 XOR 하면 'DanS'라는 문자열을 볼 수 있다.

 

Rich 헤더의 DanS 시그니처

 

깃헙에 공개된 Rich 헤더 뷰어를 사용하면 Rich 헤더 정보를 살펴볼 수 있다. 아래 그림은 richprint를 사용해 sample.exe의 Rich 헤더 정보를 살펴본 것이다. VS2019 v16.6.2 build 28806으로 빌드한 PE 파일임을 알 수 있다.

 

Github

git: https://github.com/dishather/richprint

'Malware Analysis > PE' 카테고리의 다른 글

#6 PE - .reloc 섹션  (0) 2021.08.01
#5 PE - IAT  (0) 2021.08.01
#4 PE - Section Header  (0) 2021.08.01
#3 PE - Optional Header  (1) 2021.08.01
#2 PE - File Header  (0) 2021.08.01