PE-bear - PE 파일 역어셈블링 도구 치트시트
PE-bear (hasherezade 작성)는 무료 멀티플랫폼 PE (Portable Executable) 분석 도구로 친절한 GUI를 제공한다. Windows 실행 파일의 모든 부분 — DOS/NT 헤더, 섹션 테이블, 데이터 디렉토리, 임포트/익스포트, 리소스, 리치 헤더 —을 파싱하고 표시한다. 그리고 다른 파서를 깨뜨리는 변형된 PE 파일에 대해 의도적으로 견고하다. 이는 멀웨어가 자주 배포하는 방식이다. 또한 바이너리를 나란히 비교하여 빠른 멀웨어 심사 및 언팩 확인을 위한 주요 도구가 된다.
설치
| 플랫폼 | 방법 |
|---|
| Windows / Linux | GitHub 릴리스 페이지에서 빌드 다운로드 |
| 소스에서 | Qt + bearparser 서브모듈로 빌드 |
| 이식 가능 | 설치 필요 없음; 추출된 바이너리 실행 |
| 확인 | PE-bear 시작; PE 끌어다놓기 |
파일 로드
| 작업 | 방법 |
|---|
| PE 열기 | File → Open 또는 .exe/.dll/.sys 끌어다놓기 |
| 여러 파일 | 여러 개 로드; 각각 탭 가져옴 |
| 다시 로드 | 외부 변경 후 다시 파싱 |
| 저장 | 수정 사항을 디스크에 저장 |
검사할 수 있는 항목
| 패널 | 표시 |
|---|
| DOS Header | MZ 헤더, e_lfanew 오프셋 |
| Rich Header | 컴파일러/도구 체인 지문 (어트리뷰션에 좋음) |
| NT Headers | 파일 헤더 + 선택 헤더 (진입점, 서브시스템) |
| Section Headers | 이름, 가상/원본 크기, 특성, 엔트로피 |
| Imports | 바이너리가 호출하는 DLL 및 함수 |
| Exports | 바이너리가 노출하는 함수 |
| Resources | 아이콘, 매니페스트, 내장 데이터 |
| Data Directories | 임포트/익스포트/재배치/TLS 등 테이블 |
섹션 읽기 (심사 신호)
| 신호 | 암시 |
|---|
| 높은 엔트로피 섹션 | 패킹됨/암호화됨 (예: .text ~7.9+) |
| 비정상적인 섹션 이름 | UPX0, .vmp0, 임의 이름 → 패커 |
| 쓰기 가능 + 실행 가능 섹션 | 자기 수정 / 언팩 스텁 |
| 작은 임포트 테이블 | 런타임에 확인된 임포트 (패킹됨) |
| 홀수 진입점 섹션 | .text가 아닌 진입점 → 의심스러움 |
바이너리 비교
PE-bear는 두 파일을 나란히 표시할 수 있다 — 언팩 전후 또는 멀웨어 변형 비교에 매우 유용하다.
| 사용 | 방법 |
|---|
| 패킹됨 vs 언팩됨 | 헤더/섹션/임포트 비교 |
| 변형 분석 | 패밀리의 두 샘플 Diff |
| 덤프 확인 | 메모리 덤프를 원본과 비교 |
편집
| 기능 | 참고 |
|---|
| 헤더 필드 편집 | 헤더 값 수정 또는 변조 |
| 섹션 편집 | 섹션 특성 조정 |
| 추가/변환 | 수리를 위한 구조적 편집 |
| 다른 이름으로 저장 | 수정된 PE 작성 |
일반적인 워크플로우
# 알려지지 않은 Windows 샘플 심사
1. PE-bear로 샘플 끌어다놓기
2. 섹션 엔트로피 확인 → 높음 = 패킹 가능성
3. 임포트 확인 → 작음/홀수 = 런타임 확인 (패킹됨)
4. Rich Header 읽기 도구 체인/어트리뷰션 힌트
5. 내장 페이로드를 위한 리소스 검사
# 언팩된 덤프 확인
- 언팩된 PE를 원본과 나란히 보기로 비교
- IAT와 진입점이 합리적으로 보이는지 확인
PE-bear vs 다른 PE 도구
| 측면 | PE-bear | CFF Explorer | Detect It Easy | PEStudio |
|---|
| 포커스 | PE 구조 + diff | PE 편집 | 패커/형식 ID | 위협 지표 |
| 변형된 PE | 매우 견고 | 중간 | 견고 | 중간 |
| 파일 비교 | 예 | 아니오 | 제한적 | 아니오 |
| 최고 | 심사 + 구조 분석 | 편집 | 패커 식별 | IOC-스타일 심사 |
Detect It Easy와 패커 식별을 위해, PE-sieve와 메모리 내 임플란트 감지를 위해 잘 작동한다.
자료