본문 바로가기

악성코드 분석

PE 분석(2)

반응형

지난 시간에 이어서 PE를 분석하는 tool인 PEview에 대해 좀 더 알아보도록 하자...!!

우리가 흔히 쓰는 메모장인 notepad.exe를 예시로 PE 분석을 해볼께

 

 

1. PE 파일 헤더와 섹션

 

PEview를 실행해서 보면 다음과 같은 카테고리들을 볼 수 있어

IMAGE-NT_SECTION_HEADER~ 부분에 보이지?

 

.text : 실행코드
.rdata : 읽기전용 데이터
.data : 데이터
.rsrc : 실행파일에 필요한 리소스 저장

 

Notepad.exe에 대한 하위 파일에 다음과 같은 정보들이 들어있는 것을 볼 수 있는데

image_nt_headers와 image_nt_section_header의 차이를 알아볼 필요가 있어

 

- IMAGE_NT_HEADERS --> 실제 헤더 정보를 담고 있음

- IMAGE_NT_SECTION_HEADER --> 실제 데이터 정보를 담고 있음.

.text, .rdata, .data, .rsrc 는 모두 SECTION_HEADER의 하위 파일에 담겨져 있지

 

그렇다면...!! 우리가  PE 분석할 때 눈여겨 봐야할 부분은 HEADER 일까? 아니면 SECTION_HEADER일까?

바로 실제 헤더 정보를 담고 있는 IMAGE_NT_HEADERS  부분을 집중적으로 분석해야 돼!

IMAGE_NT_HEADERS의 하위에는 어떤 정보들이 있는지 한번 확인해보도록 하자

 

 

## PE에서 확인가능한 것  ##

 

1. OS type


2. 아키텍처 (32bit, 64bit) --> 현재 나온 악성코드들은 거의 다 32bit


3. 생성 시간 time stamp

 

- image_nt_headers에 file header를 보면 다음과 같이 나오는데 
machine image_file_machine_i386이 뜻하는 바는 바로 intel process를 뜻해!


I386 -->32bit
I686 -->64bit

 

 

IMAGE_OPTIONAL_HEADER를 보면 우리가 확인해봐야할 정보들이 나오는데...!!

 

## PE에서 확인가능한 것  ##

 

4. image base + base of code => 코드 시작되는 부분

 

- image base  : PE파일이 시작되는 주소

 

- entry point : address entry point(진입주소) 와 image base가 더해진 값 ( 코드진입부분)

                  코드진입지점,프로그램실행지점

 

- address of entry point => 프로그램이 시작되는 부분 = origin entryp point (OEP) 

 

 

 

이번에는 nuguri.exe 라는 파일이 난독화가 되었는지 여부를 알아보기 위해 PE view 분석을 해볼께

밑에 힌트를 줄께...! 무엇을 보고 난독화가 진행되었는지를 찾아보면 다음과 같은 답이 나올 수 있어~

 

 

## PE에서 확인가능한 것  ##

 

5. virtual size와 size of raw data를 통한 난독화 여부를 알 수 있다..!

 

 

- image_section_header .text 분석을 통해 난독화된 nuguri.exe를 pe 분석해보면...!

virtual size = 8000   size of raw data = 3E00 인 것을 볼 수 있는데 둘 사이의 size 차이가 크다..!

 

 

notepad.exe를 pe분석해보면 virtual size와 size of raw data 간의 차이가 크지 않은 것을 볼 수 있어

즉, data 그대로의 크기인 size of raw data와 가상의 메모리를 할당 받은 크기인 virtual size간의 크기가 크다는 뜻은

난독화가 진행되었다는 뜻이야


why? 난독화를 진행하면 virtual alloc이 되어야 하기 때문에  raw data = format을 거치지 않은 data 그 자체의 크기이므로 
일반 파일의 경우 이 차이가 500 내외로 차이가 나야 정상파일로 볼 수 있어

 

 

자 PEview를 통한 알 수 있는 정보를 정리하면 다음과 같아!

 

1. OS type


2. 아키텍처 (32bit, 64bit) --> 현재 나온 악성코드들은 거의 다 32bit


3. 생성 시간 time stamp


4. image base + base of code => 코드 시작되는 부분
address of entry point => 프로그램이 시작되는 부분 = origin entryp point (OEP) 


5. virtual size와 size of raw data를 통한 난독화 여부를 알 수 있다..!

 

 



 

여기까지가 PE 분석이었어

이제 다음시간부터 직접 악성 code를 분석하면서 어떻게 code를 분석하는지 알아보도록 할께!

안뇨옹~

 



 

 

 

반응형

'악성코드 분석' 카테고리의 다른 글

DoS 공격분석 (feat. IDA)  (0) 2023.01.14
LAB1-2 (악성코드분석)  (1) 2023.01.12
악성코드란..??  (1) 2023.01.12
PE 분석  (0) 2022.11.02
Key Logger 분석  (0) 2022.08.04