기초 악성 코드 분석 3

1. PE 파일

1.1 PE(Portable Executable) 파일이란?

  • Windows 운영체제에서 실행 가능한 파일 형식
  • .exe, .dll, .sys 등 다양한 확장자를 가짐
  • Microsoft에서 정의한 실행 파일 구조로, 내부에 코드, 데이터, 리소스 등을 포함

1.2 주요 구조

  • DOS Header (IMAGE_DOS_HEADER)
    • 옛날 MS-DOS용 헤더
    • MZ 시그니처로 시작
    • 마지막 필드인 e_lfanew는 PE Header 위치 가리킴
  • PE Header (IMAGE_NT_HEADERS)
    • PE\0\0 시그니처로 시작
    • 두 부분으로 나뉨:
      • File Header: 머신 타입, 섹션 수, 타임스탬프 등
      • Optional Header: 실제로는 필수, 진입점 주소, 이미지 크기, 섹션 정렬 정보 등 포함
  • Section Table (IMAGE_SECTION_HEADER)
    • 코드(.text), 데이터(.data), 리소스(.rsrc) 등 실제 내용의 위치/크기 정보
    • 각 섹션이 메모리와 파일에서 어떻게 배치될지를 정의
  • 각 섹션 (Sections)
    • .text: 실행 코드
    • .data: 초기화된 데이터
    • .rsrc: 리소스 (아이콘, GUI, 문자열 등)
    • .reloc: 재배치 정보 등

1.3 악성코드 분석 관점에서 왜 중요할까?

  • 악성코드는 PE 구조를 조작하거나 위장하여 보안 시스템을 우회
  • *진입점(EntryPoint)**을 바꾸거나, 섹션을 숨기거나 추가하여 악성 행위를 숨김
  • Import Table을 분석하면 어떤 함수(API)를 사용하는지 확인 가능 → 악성 행위 추정 가능
  • *Packers(압축기)**는 PE 구조를 난독화하여 분석을 어렵게 만듦

1.4 분석 도구 예시

  • PE-bear, CFF Explorer, Detect It Easy(DIE): PE 구조 보기
  • IDA, Ghidra: 디컴파일과 연동 분석

2. Packer

2.1 Packer(패커)란?

  • 실행 파일(PE 등)의 크기를 줄이거나 코드 분석을 어렵게 만들기 위해 파일을 압축/암호화하는 도구 또는 기법

2.2 패커의 목적

목적설명
보호지적 재산 보호, 리버싱 방지
압축실행 파일 크기 축소 (배포 목적)
은폐악성코드의 탐지 회피, 정적 분석 방해
위장정상 실행 파일처럼 보이게 위장 (안티바이러스 우회)

2.3 패커 작동 방식

  1. 원본 코드(페이로드)를 압축/암호화
  2. *로더(Stub 또는 Shellcode)**를 추가
    • 실행 시, 메모리에서 원본 코드 복호화 & 실행
  3. 결과적으로 분석자는 실제 악성 행위가 담긴 코드를 처음에는 볼 수 없음

2.4 악성코드 분석에서의 패커 특징

분석 시 흔히 나타나는 징후설명
Entry Point가 .text가 아님보통 .text 섹션 외부에 있음
난독화된 Import TableAPI 호출 정보를 숨김
이상한 섹션 이름.upx, .petite, .aspack 등 패커 이름 사용
디버깅/가상환경 탐지 코드 포함안티 분석 기능

2.5 대표적인 패커 종류

패커 이름특징
UPX가장 흔하고 오픈소스 / 쉽게 언패킹 가능
Themida강력한 난독화와 안티 디버깅 기능
ASPack비교적 경량화 / 분석 저해 목적 사용
MPRESS고밀도 압축, 가벼움

2.6 패커 탐지 & 언패킹 도구

도구기능
Detect It Easy (DIE)패커 탐지 및 분석
PEiD고전적인 패커 탐지 도구
UPX -dUPX 언패킹
x64dbg, OllyDbg수동 언패킹 디버깅
UnpacMe, Any.Run온라인 동적 분석 환경