[Security] 악성코드 분석을 위한 정적, 동적 분석 도구 정리
정적·동적 분석 도구를 통한 악성코드 분석 방법을 정리했습니다. PEStudio, Wireshark, Process Monitor 등 실무 도구로 파일 구조, 네트워크 통신, 프로세스 행동을 추적하여 악성 특징을 탐지합니다.
개요
정적, 동적 분석 도구들을 직접 사용해보며 정리했습니다. 실무에서 사용하는 툴 위주로 정리했으며 회사마다 도구에 대한 차이가 존재합니다.
이 외 악성코드를 더 자세히 분석하는 것은 리버싱의 영역으로 나중에 정리해보겠습니다.
Malware 참고
아래 샘플을 사용했습니다. tag: AgentTelsa
Windows 11 환경에선 바이러스 및 위협 방지 설정을 OFF해야합니다.


정적 분석 도구
정적 분석 과정에서 수행하는 단계는 크게 3가지 입니다.
- 평문으로 되어있어야 하기에 분석하고자 하는 파일이 암호화, 패킹되었는지 확인합니다.
- PEID, exeInfo Tool → Unpacking + @
- 명령어, 문자열 정보를 확인(URL, IP, 실행파일, 사용 이력, 함수)
- BinText
- 해당 파일의 자세한 정보는 이후에 분석 -> 실제 파일 확장자, 구조적인 정보 확인
- PEStudio, PEView
pestudio
PEStudio는 PE (Portable Executable) 파일을 정적 분석하는 도구입니다. 실행하지 않고 파일의 구조, 메타데이터, 의심스러운 특징들을 분석합니다.

파일을 업로드하면 다음과 같이 분석 결과를 확인할 수 있습니다.

PEStudio 분석
PEStudio에서 확인 가능한 핵심 항목은 5가지입니다.
<1. indicators(지표)>

- 파일 크기: 405,504 bytes (~396KB)
- 엔트로피: 5.914 ( 높은 수준의 패킹을 의미하지 않음 )
- 아키텍처: 32-bit, GUI 실행 파일
- 컴파일러: Visual Studio 6.0 MASM (VB6로 작성)
- 원본 파일명: galloflavine.exe
- 인증서: 없음 (서명되지 않음)
- 컴파일 시간: 2026-01-12 17:19:11
<2. imports>

프로그램이 사용하는 외부 함수를 확인
[위험 표시(flag)된 항목]
- rtcRandomNext / rtcRandomize - 난수 생성 (암호화, 파일명 변경 등에 사용)
- rtcSendKeys - 키보드 입력 시뮬레이션 (키로거, 자동화)
- rtcKillFiles - 파일 삭제 (흔적 제거, 파일 파괴)
- rtcRgb - 색상 처리 (단독으론 무해)
[기타]
- rtcMsgBox - 메시지 박스 표시
- rtcDoEvents - 이벤트 처리
- rtcMidCharBstr / rtcSplit / rtcReplace - 문자열 처리
- rtcCommandBstr - 명령줄 인자 가져오기
- rtcEnvironVar - 환경 변수 읽기
- VarPtr - 포인터 연산
<3. Strings(문자열)>
URL, IP 주소(c2), 파일 경로, 이메일, 비밀번호, 키워드 확인 가능

[키로거]
- GetAsyncKeyState - 키보드 입력 감시
- TrackMouseEvent - 마우스 추적
[프로세스 인젝션]
- VirtualAlloc / VirtualAllocEx - 메모리 할당
- WriteProcessMemory - 다른 프로세스 메모리에 쓰기
- CreateProcess - 프로세스 생성
- GetThreadContext / SetThreadContext - 스레드 조작
[네트워크 통신]
- InternetOpen - 인터넷 연결 초기화
- InternetOpenUrl - URL 열기
- InternetReadFile - 데이터 다운로드
[암호화]
- CryptStringToBinary - 암호화/복호화
[화면 캡처]
- capCreateCaptureWindow - 웹캠/화면 캡처
[데이터베이스]
- SELECT Last(tblStudents.IDNumber)... - SQL 쿼리
bintext를 참고하면 더 자세한 내용을 파악할 수 있습니다.

<4. Sections>
패킹 여부, 권한, 코드 등 실행 파일 구조를 확인해서 코드와 데이터가 어디 존재하는지 파악합니다.

- 실제 파일 사이즈 유사 → 패킹 여부 파악
- Write + Execute 권한 확인
악성 페이로드가 리소스에 숨겨져있을 수 있습니다.

- 아이콘 이미지, 아이콘 그룹 정보
- 버전 정보
동적분석 도구
동적분석이 악성 코드 분석의 목적으로 정적 분석보다 조금 더 많은 시간이 소요됩니다.
악성 코드가 실제 수행한게 맞는지 검증하는 과정입니다. 동적 분석을 확실하게 수행해야 추가 감염, 실제 수행하는 것들을 방어할 수 있습니다.
분석을 통해 탐지 패턴 등을 만드는게 목적입니다.
동적 분석에서 확인하는 항목은 크게 3가지입니다.
- 프로세스 (Process Monitor, Process Explorer)
- 필터링 기준을 명확히 설정해야 악성코드가 자세하게 설명 가능
- 잠깐 실행됐다가 종료되는 경우, 조건에 일치해야 실행되는 경우 등 악성코드에 의해 수행되는지 찾기 쉽지않습니다.
- 악성파일에 의해 변경되는 부분을 확인
- 악성프로세스가 자식 프로세스, 특정 프로세스를 생성하는 것을 확인
- 네트워크 (WireShark, SmartSniff)
- TCP/UDP 핸드쉐이킹 등 악성코드와 통신이 수행되는 시점, 플래그 비트, 어떠한 과정이 일어나는지 캐치해야합니다.
- 파일과 레지스트리 (AutoRuns, RegShot)
- 레지스트리 영역에서 변화가 있는 부분을 캐치하는 목적
- PC를 시작프로그램에 등록하여 악성파일이 수행되게 만듦.
WireShark
송수신되는 모든 네트워크 트래픽을 실시간으로 캡처하고 분석하는 툴로 유명합니다.

필터 기반 수행되는 내용들 또한 확인 가능합니다.

ProcessMonitor
실시간 파일/레지스트리 접근을 확인할 수 있는 도구입니다.

- Registry, File System, Network, Process, Profiling(5가지 항목)을 확인 가능합니다.

- Filter를 통해 특정 프로세스만 볼 수 있습니다
- 실제 실행되는 파일명을 추적합니다.
8a34536561cfbe3a86c88ef...exe
- 실제 실행되는 파일명을 추적합니다.
악성코드 동적 분석시 아래 내용 확인(Logging)
- 어떤 파일을 읽고/쓰는지
- 어떤 레지스트리를 접근하는지
- 어떤 네트워크 연결하는지
- 모든 활동이 로그로 쌓임
Process Explorer
실행 중인 프로세스 구조를 확인할 수 있습니다.
- 프로세스 트리 확인 가능

- 현재 실행 중인 모든 프로세스를 트리 형태로 표시
- 악성코드 실행하면 목록에 새 프로세스 나타남
- 부모-자식 관계로 확인 가능(어떤 프로세스가 어떤 걸 실행했는지)
악성코드 동적 분석시 아래 내용 확인(Monitoring)
- 새 프로세스 생성 여부
- 자식 프로세스 생성 여부 (다른 프로그램 실행)
- CPU/메모리 사용량
- DLL(Dynamic Link Library), 스레드, 연결 정보
- 경로, company name, load된 dll 확인 가능
AutoRuns
Windows에서 자동으로 시작되는 모든 프로그램 확인
- 레지스트리 관련 정보
- 시작 폴더 혹은 서비스
- 브라우저, DLL 인젝션 위치 확인 가능


- Logon, Scheduled Tasks, Services, Drivers
- 악성 코드로 가장 많이 등록되는 위치
악성코드 동적 분석시 아래 내용 확인
- 알 수 없는 항목
- 빈 Publisher (게시자)
- 이상한 경로의 실행 파일
- 노란색/빨간색 표시 항목