기초정적분석 설명 참고
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]
'Security > Reversing' 카테고리의 다른 글
[악성코드정적분석] PracticalMalwareAnalysis-Lab01-02 분석 (0) | 2020.04.24 |
---|---|
[악성코드정적분석] PracticalMalwareAnalysis-Lab01-01 분석 (0) | 2020.04.17 |
[악성코드분석] 기초정적분석01 - 설명 및 도구 (0) | 2020.04.17 |
[PE 파일] 분석 - PEtest.exe (with PEview) (1) | 2020.04.10 |
[PE 파일] 분석 - calc.exe (with PEview) (1) | 2020.04.09 |