Information Security ˗ˋˏ ♡ ˎˊ˗

Security/Reversing

[악성코드분석] 기초정적분석02 - PE파일 포맷

토오쓰 2020. 4. 17. 04:41

기초정적분석 설명 참고

https://t-okk.tistory.com/43

 

[악성코드분석] 기초정적분석01 - 설명 및 도구

기초정적분석 - 프로그램의 기능을 파악하기 위해 코드나 프로그램의 구조를 분석 - 악성코드를 실행하지 않고 분석하는 과정 기초정적분석 방법 - 악성 여부를 판단하는 안티바이러스 도구 사용 - 악성코드 판별..

t-okk.tistory.com

 

 

1. PE 파일 포맷

윈도우 실행 파일 포맷: DLL, PE(Portable Executable)

PE file header

- 코드에 관한 정보를 수집

- 애플리케이션 유형

- 필요한 라이브러리 함수

- 메모리 공간 요구 사항

-  exe 파일의 특징 파악

 

 

2. 링크 라이브러리와 함수

import 함수 목록 확보: 다른 프로그램에 저장된 라이브러리

import: 실제로 다른 프로그램에 저장되어 있지만 외부 프로그램이 사용할 수 있도록 한 함수를 말함.

 

링크의 종류: 정적/런타임/동적 링크(링크하는 시점)

- static link : 실행 시 라이브러리 코드를 모두 복사, PE 파일 헤 더에 파일 링크 코드 정보 없음

- runtime link : 실행 당시에 사용, 악성코드 패킹이나 난독화에 자주 사용, 함수가 필요할 때마다 동적 링크

    (LoadLibrary/GetProcAddress, LdrGetProcAddress/LdrLoadDll)

- dynamic link : 프로그램이 링크된 라이브러리 함수를 호출하면 라이브러리 내의 함수를 실행

- PE 파일 헤더에 로드되는 모든 함수에 대한 정보 저장함

    ex) URLDownloadToFile : 인터넷에 연결해 다운로드 후 저장

 

tool: Dependency Walker(동적 링크 함수 탐색)

 

2.1 함수

임포트(import) 함수: PE 파일 헤더에 실행 파일이 사용하는 특정 함수 정보 포함

익스포트(export) 함수: PE 파일에 익스포트 함수 정보 포함, DLL이 가장 많음

 

2.2 실습 Dependency Walker

[notepad.exe]

 

 

3. PE 파일 헤더와 섹션

악성코드는 주로 바이너리 형태로 수집되는 경우가 대부분

tool: PeView, PEBrowse Professional, PE Explorer, Resource Hacker

실행영역 설명
.text 실제 실행 코드들이 들어감, CPU가 실행하는 명령어인 실행 가능한 코드 포함, 디버거로 치면 code창
.rdata 임포트와 익스포트 정보 포함, 프로그램 내의 전역에서 접근가능한 읽기 전용 데이터를 담고있음 
.data 프로그램을 통해 접근가능한 전역 데이터를 저장함
.idata 존재 시 임포트 함수정보를 저장하고 있으며, 존재하지 않는다면. rdata 섹션 내의 임포트함수정보에 저장
.edata  존재 시 익스포트 함수정보를 저장하고 있으며, 존재하지 않는다면 .rdata 섹션 내의 익스포트 함수정보에저장
.pdata  64비트 실행파일에만 존재하며, 예외처리 정보를 저장함
.rsrc  아이콘, 이미지, 메뉴, 문자열 등 실행파일에서 사용하는 리소스, 실행파일에 필요한 리소스를 저장
.reloc 라이브러리 파일 재배치 정보를 담고있음

 

3.1 PE 헤더 내 정보

필드  정보
Imports 악성코드가 사용하는 다른 라이브러리
Exports 다른 프로그램이나 라이브러리가 호출할 수있는 악성코드 내의 함수 
Time Date Stamp 프로그램이 컴파일 된 시간
Sections 파일내의 섹션명과 디스크와 메모리 크기
Subsystem 프로그램이 커맨드라인 기반인지 GUI 기반인지
Resources 파일 내에 포함된 문자열, 아이콘, 메뉴, 기타 정보

 

3.2 PE 파일 분석 도구

[peview.exe] -> notepad.exe

 

[PE Explorer] -> notepad.exe 결과

 

[PEBrowse Professional] -> notepad.exe

 

Resource Hacker: 특정 pe파일에서 resource 영역만 보여줌.

[regedit.exe]

[notepad.exe]