악성 코드 분석 - 기초 동적 분석
악성코드 분석 학습정리 — Part 4
기초 동적 분석 (Dynamic Analysis)
악성코드를 실제로 실행하여 행위를 관찰하는 동적 분석 방법, 도구, 분석 회피 기법을 정리합니다.
동적 분석은 악성코드를 실제로 실행하면서 행위를 관찰하는 방법입니다. 패킹·난독화가 적용되어 정적 분석이 어려운 경우에도, 실제 동작하는 악성코드의 행위를 직접 확인할 수 있습니다.
정적 분석이 레시피 읽기라면, 동적 분석은 실제로 요리를 만드는 것입니다.
다만, 독이 든 요리를 만드는 것이므로 — 반드시 외부와 완전히 차단된 주방(격리 VM)에서만 해야 합니다.
동적 분석은 반드시 격리된 가상머신(VM)에서 수행해야 합니다. 분석 전 스냅샷을 찍고, 분석 후 스냅샷으로 복구합니다. 호스트와의 네트워크 연결은 반드시 차단합니다.
Process Explorer
실행 중인 프로세스의 상세 정보를 실시간으로 보여줍니다. DLL 탭으로 어떤 DLL이 로드되어 있는지, 핸들·뮤텍스를 확인합니다.
Process Monitor (Procmon)
프로세스의 파일·레지스트리·네트워크 동작을 실시간으로 캡처합니다. 노이즈가 많아 필터 설정이 핵심입니다.
Regshot
레지스트리 스냅샷을 찍어 악성코드 실행 전후를 비교합니다. 새로 생성된 레지스트리 키를 한눈에 파악합니다.
Wireshark
네트워크 패킷을 캡처하여 C2 서버와의 통신, 다운로드 시도, 사용 프로토콜을 분석합니다.
동적 분석은 순서가 매우 중요합니다. 악성코드 실행 전에 모든 모니터링 도구를 준비해야 행위를 놓치지 않습니다.
Regshot → 1st shot (레지스트리 스냅샷)
악성코드 실행 전 현재 레지스트리 상태를 저장. 나중에 비교할 기준점이 됩니다.
Wireshark 캡처 시작
네트워크 인터페이스를 선택하고 캡처를 시작합니다. 악성코드가 시작하자마자 발생하는 통신도 놓치지 않기 위함입니다.
Procmon 캡처 시작 + 필터 설정
프로세스명 Include/Exclude 필터를 설정합니다. 노이즈 제거가 분석 효율의 핵심입니다.
Process Explorer 실행
프로세스 트리를 모니터링할 준비를 합니다. 악성코드 실행 후 새로운 프로세스가 생성되는지 확인합니다.
악성코드 실행
EXE: 더블클릭 또는 cmd에서 직접 실행 / DLL: rundll32.exe를 통해 특정 Export 함수 호출
30초 ~ 1분 대기
악성코드가 행위를 완료할 시간을 줍니다. Sleep 기반 분석 회피에 걸리지 않도록 충분히 기다립니다.
Regshot → 2nd shot → Compare
실행 후 레지스트리를 다시 찍고 비교합니다. 새로 생성된 서비스 키, Run 키 등을 확인합니다.
각 도구 결과 저장
Procmon 결과 XML 내보내기, Wireshark pcapng 저장, 스크린샷 촬영. 분석 증거를 보존합니다.
DLL 파일은 직접 더블클릭해서 실행할 수 없습니다. rundll32.exe를 사용하여 DLL의 특정 Export 함수를 호출해야 합니다.
C:\malware\> rundll32.exe Lab03-02.dll,installA
# 함수명은 PEview나 pestudio의 Export 탭에서 확인
# installA, ServiceMain, DllMain 등이 일반적인 Export 함수명
DLL 직접 실행 불가 = 설명서(DLL)는 읽을 수 없다는 비유가 맞습니다.
DLL은 혼자서는 동작하지 못하는 "부품"입니다. rundll32.exe는 이 부품을 "테스트 장비"에 꽂아 강제로 작동시키는 도구입니다.
Procmon은 시스템의 모든 파일·레지스트리 동작을 캡처하기 때문에 노이즈가 매우 많습니다. 올바른 필터 설정이 분석 효율을 결정합니다.
| 조건 | 값 | 동작 | 이유 |
|---|---|---|---|
| Process Name | 악성 프로세스명 (예: Lab03-01.exe) | Include | 분석 대상만 표시 |
| Process Name | svchost.exe | Include | Service DLL형 악성코드 행위 캡처 |
| Process Name | Procmon.exe, Procexp.exe | Exclude | 분석 도구 자체의 노이즈 제거 |
| Operation | begins with IRP_MJ_ | Exclude | 커널 드라이버 노이즈 제거 |
| Operation | begins with FASTIO_ | Exclude | 파일시스템 캐시 노이즈 제거 |
악성코드는 분석자가 쉽게 분석하지 못하도록 다양한 회피 기법을 사용합니다. 이 기법들을 알아야 대응할 수 있습니다.
UPX 패킹
동적 API 로딩
뮤텍스(Mutex) 사용
Sleep / 타이머
프로세스 은닉
서비스명 위장
HTTP CONNECT 터널링
타임스탬프 위조
Lab03-01.exe
Lab03-02.dll
동적 분석 핵심 원칙
- 동적 분석 = 실제 실행하며 행위 관찰 → 격리 VM 필수
- 주요 도구: Process Explorer(프로세스/DLL), Procmon(파일/레지스트리), Regshot(레지스트리 전후 비교), Wireshark(네트워크)
- 수행 순서: Regshot 1st → Wireshark → Procmon → ProcExp → 실행 → 대기 → Regshot 2nd → 저장
- DLL 실행:
rundll32.exe DLL파일,함수명 - 회피 기법 8가지: 패킹, 동적 API, 뮤텍스, Sleep, 프로세스 은닉, 서비스위장, HTTP터널링, 타임스탬프위조
'보안 공부' 카테고리의 다른 글
| 네트워크 보안 - 네트워크 기초 완전 정리 (0) | 2026.05.29 |
|---|---|
| 악성 코드 분석 - IOC(침해 지표) 정리 (0) | 2026.05.28 |
| 악성 코드 분석 - 기초 정적 분석 (0) | 2026.05.28 |
| 악성 코드 분석 - PE 파일 구조 (0) | 2026.05.28 |
| 악성 코드 분석 - 악성 코드 분석 개요 (0) | 2026.05.28 |