2020. 1. 11. 02:34ㆍ정보보안
@ PE 파일 분석(섹션 헤더)
1. IMAGE_SECTION_HEADER
- 섹션 헤더는 각 섹션의 속성 정보들을 갖고 있는 구조체이다.
- 섹션이란 프로그램의 실제 내용(어셈블리 코드, 전역 변수, 정적 변수)을 담고 있는 영역을 의미한다.
- 섹션 유형은 다음과 같다.
.text 프로그램 코드를 담고 있는 섹션, IAT 정보를 갖고 있음
.data 전역 변수, 정적 변수의 할당을 위한 섹션, 읽기/쓰기 가능한 데이터를 갖고 있음
.rdata 읽기 전용 섹션, 문자열, 상수 정보를 갖고 있음
.bss 초기화되지 않은 변수를 갖고 있는 섹션
.rsrc 아이콘, 커서, 추가 바이너리 등의 리소스 관련 정보를 갖고 있는 섹션
.idata Import 할 DLL/API 정보를 갖고 있는 섹션
.edata Export 할 DLL/API 정보를 갖고 있는 섹션
.reloc 재배치 정보를 갖고 있는 섹션
2. 섹션 헤더 구조
- 40byte
Name 8byte 섹션 이름
Virtual Size 4byte 메모리에서 섹션이 차지하는 크기
RVA 4byte 메모리에서 섹션의 시작 주소
Size of Raw Data 4byte 파일에서 섹션이 차지하는 크기
Pointer to Raw Data 4byte 파일에서 섹션의 시작 주소
3. '.text' 섹션 헤더
- 코드 정보, 실행, 읽기 속성(권한) 정보가 포함된 섹션
Name 8byte 2E 74 65 78 74 00 00 00 (.text)
섹션의 ASCII 16진수 값
이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
Virtual Size 4byte 00 05 2C A1 (339105byte)
메모리에서 섹션이 차지하는 크기
RVA 4byte 00 00 10 00
메모리에 로드될 때 섹션의 시작 주소
VA = ImageBase + RVA = 0x01000000 + 0x00001000 = 0x01001000
Size of Raw Data 4byte 00 05 2E 00 (339456byte)
파일에서 섹션이 차지하는 크기
Pointer to Raw Data 4byte 00 00 04 00
파일에서 섹션의 시작 주소
Characteristics 4byte 60 00 00 20
섹션 속성(권한)에 대한 정보
IMAGE_SCN_CNT_CODE 00 00 00 20 실행 가능한 코드를 포함한 속성
IMAGE_SCN_MEM_EXECUTE 20 00 00 00 실행 가능한 속성
IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
4. '.data' 섹션 헤더
- 전역 변수, 정적 변수의 할당을 위한 섹션, 읽기/쓰기 가능한 데이터를 갖고 있음
Name 8byte 2E 64 61 74 61 00 00 00 (.data)
섹션의 ASCII 16진수 값
이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
Virtual Size 4byte 00 00 40 C0 (16576byte)
메모리에서 섹션이 차지하는 크기
RVA 4byte 00 05 40 00
메모리에 로드될 때 섹션의 시작 주소
VA = ImageBase + RVA = 0x01000000 + 0x00054000 = 0x01054000
Size of Raw Data 4byte 00 00 42 00 (16896byte)
파일에서 섹션이 차지하는 크기
Pointer to Raw Data 4byte 00 05 32 00
파일에서 섹션의 시작 주소
Characteristics 4byte C0 00 00 40
섹션 속성(권한)에 대한 정보
IMAGE_SCN_INITALIZED_DATA 00 00 00 40 초기화된 데이터 속성
IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
IMAGE_SCN_MEM_WRITE 80 00 00 00 쓰기 가능한 속성
5. '.rsrc' 섹션 헤더
- 아이콘, 커서, 추가 바이너리 등의 리소스 관련 정보를 갖고 있는 섹션
Name 8byte 2E 72 73 72 63 00 00 00 (.rsrc)
섹션의 ASCII 16진수 값
이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
Virtual Size 4byte 00 06 27 98 (403352byte)
메모리에서 섹션이 차지하는 크기
RVA 4byte 00 05 90 00
메모리에 로드될 때 섹션의 시작 주소
VA = ImageBase + RVA = 0x01000000 + 0x00059000 = 0x01059000
Size of Raw Data 4byte 00 06 28 00 (403456byte)
파일에서 섹션이 차지하는 크기
Pointer to Raw Data 4byte 00 05 74 00
파일에서 섹션의 시작 주소
Characteristics 4byte 40 00 00 40
섹션 속성(권한)에 대한 정보
IMAGE_SCN_INITALIZED_DATA 00 00 00 40 초기화된 데이터 속성
IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
6. '.reloc' 섹션 헤더
- 재배치 정보를 갖고 있는 섹션
Name 8byte 2E 72 65 6C 6F 63 00 00 (.reloc)
섹션의 ASCII 16진수 값
이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
Virtual Size 4byte 00 00 3B 3C (15164byte)
메모리에서 섹션이 차지하는 크기
RVA 4byte 00 0B C0 00
메모리에 로드될 때 섹션의 시작 주소
VA = ImageBase + RVA = 0x01000000 + 0x000BC000 = 0x010BC000
Size of Raw Data 4byte 00 00 3C 00 (15360byte)
파일에서 섹션이 차지하는 크기
Pointer to Raw Data 4byte 00 0B 9C 00
파일에서 섹션의 시작 주소
Characteristics 4byte 42 00 00 40
섹션 속성(권한)에 대한 정보
IMAGE_SCN_INITALIZED_DATA 00 00 00 40 초기화된 데이터 속성
IMAGE_SCN_MEM_DISCARDABLE 02 00 00 00 실행 파일이 메모리에 로딩되고 버려질 수 있는 속성
IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
'정보보안' 카테고리의 다른 글
pe 파일 분석(RVA to RAW) (0) | 2020.01.11 |
---|---|
pe 파일 분석(RVA to VA) (0) | 2020.01.11 |
pe파일 분석(pe 헤더) (0) | 2020.01.11 |
어셈블리어(레지스터 이해) (0) | 2020.01.11 |
리버싱 선수 지식 (0) | 2020.01.11 |