악성 코드 분석 - 기초 정적 분석
악성코드 분석 학습정리 — Part 3
기초 정적 분석 (Static Analysis)
악성코드를 실행하지 않고 파일 자체를 분석하는 정적 분석 방법과 도구를 정리합니다.
정적 분석은 악성코드를 실행하지 않고 파일 자체를 분석하는 방법입니다. PE 헤더, IAT, 내장 문자열, 해시 등을 분석하여 악성코드의 기능을 예측합니다. 안전하게 수행할 수 있지만, 패킹·암호화가 적용된 경우 분석이 제한됩니다.
법의학 증거 수집처럼 생각하면 됩니다.
범인을 잡기 위해 현장에 직접 범인을 불러올 필요 없이 (실행 없이), 현장에 남겨진 지문·발자국·흔적 (PE 헤더, 문자열, IAT)으로 범인의 정체와 행동 방식을 예측하는 것입니다.
PEview 필수
PE 파일의 헤더 구조를 트리 형태로 보여주는 도구. IAT, 섹션 정보, 컴파일 시간 등을 확인합니다.
HxD 필수
헥스 에디터. 파일을 16진수(Hex) 바이트 단위로 보여주고 직접 수정도 가능합니다.
pestudio 종합
PE 파일을 종합적으로 분석. 위험 지표, 블랙리스트 문자열, 임포트를 한눈에 볼 수 있습니다.
Resource Hacker
PE 파일의 .rsrc(리소스) 섹션을 분석·추출합니다. Dropper 분석에 필수입니다.
WinMD5Free
파일의 MD5 해시를 계산합니다. 해시 값으로 VirusTotal에서 악성코드 검색이 가능합니다.
VirusTotal 온라인
70개 이상의 안티바이러스 엔진으로 파일·해시를 검사. 행위 태그, Code Insights 제공.
패킹은 원본 코드를 압축·암호화하여 정적 분석을 어렵게 만드는 기법입니다. 실행 시 메모리에서 원본 코드를 복원(언패킹)한 후 동작합니다. 대표적인 패킹 도구는 UPX(Ultimate Packer for eXecutables)입니다.
패킹 = 진공 압축팩에 옷을 넣는 것.
겉에서 보면 작고 무엇인지 알 수 없지만 (분석 방해), 개봉(실행)하면 원래 옷이 그대로 나옵니다 (메모리에서 복원). UPX 언패킹은 이 진공팩을 뜯는 작업입니다.
정상(비패킹) 파일
패킹된 파일
UPX 패킹 탐지 방법: PEview에서 섹션 이름 확인 → UPX0/UPX1이 보이면 UPX 패킹. pestudio에서 엔트로피 확인 → .text 섹션이 6.5 이상이면 패킹 의심.
C:\> upx -d Lab01-02.exe -o Lab01-02_unpacked.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2024
File size Ratio Format Name
-------------------- ------ ----------- -----------
3072 <- 16384 18.75% win32/pe Lab01-02_unpacked.exe
# 결과: 3,072B → 16,384B로 복원! 이제 정상 IAT 분석 가능
# UPX 버전 확인
C:\> upx --version
실제 실습에서 분석한 6개 샘플의 주요 발견 사항입니다. 각 샘플에서 어떤 단서를 발견했는지 정리합니다.
| 샘플 | 주요 발견 | 핵심 IOC 단서 |
|---|---|---|
| Lab01-01.exe | 파일 열거·복사 기능 의심 | FindFirstFileA, FindNextFileA, CopyFileA 임포트 |
| Lab01-01.dll | C2 통신, 뮤텍스 사용 | WS2_32 Ordinal 방식 임포트 (함수명 은닉!) |
| Lab01-02.exe | UPX 패킹 → 언패킹 후 서비스 등록 확인 | CreateServiceA, InternetOpenUrlA / 뮤텍스 HGL345 |
| Lab01-04.exe | .rsrc에 PE 파일 내장 (Dropper) | FindResourceA → WriteFile → WinExec 조합, BIN/101/1033에 MZ 발견 |
| Lab03-01.exe | IAT 최소화 (동적 로드 기법) | ExitProcess 하나만 명시, 문자열에서 C2·뮤텍스 WinVMX32 발견 |
| Lab03-02.dll | 서비스 DLL로 위장 | IPRIP 서비스명, ServiceDll, ws2_32 로드 |
해시 계산 → VirusTotal 검색
WinMD5Free로 MD5 해시를 계산하고, VirusTotal에서 검색합니다. 이미 알려진 악성코드인지 빠르게 확인합니다.
패킹 여부 확인 (pestudio / PEview)
섹션 이름(UPX0/UPX1)과 엔트로피(7.0 이상) 확인. 패킹되어 있다면 즉시 언패킹 수행.
IAT 분석 (PEview / pestudio)
어떤 DLL의 어떤 함수를 임포트하는지 확인. 위험 함수 목록을 정리하고 기능을 예측합니다.
문자열 분석 (pestudio)
URL, 도메인, IP, 레지스트리 키, 뮤텍스 이름 등 내장 문자열을 추출합니다. IOC 도출의 핵심 단계입니다.
리소스 섹션 분석 (Resource Hacker)
BIN 리소스에 MZ 시그니처(실행파일)가 있는지 확인. Dropper 탐지의 핵심 단계입니다.
IOC 정리
발견한 해시, 뮤텍스, 도메인, 파일 경로, API 조합 등을 IOC 목록으로 정리합니다.
정적 분석 핵심 원칙
- 정적 분석 = 실행 없이 파일 자체 분석 → 안전하지만 패킹 시 한계
- 주요 도구: PEview(헤더), HxD(헥스), pestudio(종합), Resource Hacker(리소스), VirusTotal(검증)
- 패킹 탐지: UPX0/UPX1 섹션명 or 엔트로피 7.0 이상
- 언패킹:
upx -d 파일명.exe -o 출력파일.exe - IAT 분석이 정적 분석의 핵심 — 함수명으로 악성코드 기능 예측
- 분석 결과는 반드시 IOC 목록으로 정리
'보안 공부' 카테고리의 다른 글
| 악성 코드 분석 - IOC(침해 지표) 정리 (0) | 2026.05.28 |
|---|---|
| 악성 코드 분석 - 기초 동적 분석 (0) | 2026.05.28 |
| 악성 코드 분석 - PE 파일 구조 (0) | 2026.05.28 |
| 악성 코드 분석 - 악성 코드 분석 개요 (0) | 2026.05.28 |
| 서버 관리자가 실수하기 쉬운SSH 설정 5가지 알아보기 (0) | 2026.05.11 |