| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Practical Malware Analysis Labs
- 코리안챔버오케스트라
- 프랑스어 #프랑스어배우기 #프랑스어독학 #델프인강 #시원스쿨프랑스어 #delf독학 #델프 #프랑스어기초 #프랑스어공부
- 루키즈 31기
- 알고리즘
- 프리코스
- linux
- webhacking
- 악성코드 분석
- 깃
- 자바
- 우테코
- 백엔드
- Dreamhack
- React
- 트랜스포트 계층
- 진입차수
- 루키즈31기
- 예술의 전당
- sk 쉴더스 루키즈
- SK쉴더스루키즈
- sk쉴더스 루키즈
- 레나튜토리얼
- 우아한테크코스
- 웹개발
- 서울청년문화패스
- 위상 정렬
- c
- SK쉴더스
- 애플리케이션 계층
- Today
- Total
yon11b
[SK 쉴더스 루키즈] 윈도우 기초 정적/동적 분석 실습 (Practical Malware Analysis LAB 03-01) 본문
[SK 쉴더스 루키즈] 윈도우 기초 정적/동적 분석 실습 (Practical Malware Analysis LAB 03-01)
yon11b 2026. 5. 29. 02:50======== 정적 분석 ========
순서: 정적분석 → 동적분석
[entropy 비정상적 높음]
entropy란?
- PE 파일 내부 데이터가 얼마나 “무질서한지” 나타내는 값
entropy가 높다
- 패킹, 암호화 의심
entropy 가 낮다
- 일반 코드/문자열일 가능성 높음
entropy 기준
0 ~ 3
→ 매우 규칙적
4 ~ 6
→ 일반적인 코드/데이터
7 이상
→ 압축/암호화/패킹 의심
sections > entropy

.data 영역의 엔트로피가 좀 높긴 하다.
[import table에 함수가 하나뿐!]
imports> 함수가 하나뿐?! (ExitProcess)

왜 import table에 함수가 ExitProcess 하나만 있는가?
-> 다른 API들은 import table에 안 적고 실행 중 직접 찾아서 호출했기 때문이다.
그럼 ExitProcess는 왜 불러오는가? 얘도 나중에 찾아오면 되는 거 아님?
-> GetProcAddress랑 LoadLibrary 을 불러오려면 kernel32.dll이 필요함
→ kernel32.dll을 불러오기 위한 함수 최소한 1개는 필요함.
windows XP 시절에는 ASLR이 없어서 kernel32.dll이 올라온 주소가 항상 고정이었다.
그래서 이 주소를 미리 예측하고 kernel32.dll 이 export하는 다른 함수들(ex: LoadLibrary)을 불러오는 코드를 미리 짤 수가 있었다.

strings를 보면 kernel32.dll 말고도 다른 dll이 있다. 그럼 저 dll 들도 불러와야 하는데 import table에는 없다.

ws2_32.dll 이런 얘들이 이상한 악성 행위를 하기 때문에 이걸 감추려고 일부러 table에는 안 올리고 나중에 동적 실행되게 한 것으로 추정해 볼 수 있다.
ws2_32.dll
- 역할
- Windows Socket 통신
- TCP/IP 통신 기능 제공
- 소켓 생성 및 네트워크 연결 수행
- 대표 API
- socket
- connect
- send
- recv
- bind
- 악성코드에서의 활용
- C2 서버 통신
- 데이터 유출
- 백도어 연결
advapi32.dll
- 역할
- Windows 고급 시스템 기능 담당
- 레지스트리 및 서비스 관리 기능 제공
- 권한 및 보안 관련 기능 제공
- 대표 API
- RegOpenKeyEx
- RegSetValueEx > Run 등록
- OpenSCManager
- CreateService
- AdjustTokenPrivileges
- 악성코드에서의 활용
- 레지스트리 자동실행 등록
- 서비스 생성
- 권한 상승
- 보안 설정 변경
user32.dll
- 역할
- Windows GUI 및 사용자 입력 처리 담당
- 키보드, 마우스, 창(Window) 제어 기능 제공
- 사용자 인터페이스 관련 기능 수행
- 대표 API
- MessageBox
- SetWindowsHookEx
- GetAsyncKeyState
- FindWindow
- 악성코드에서의 활용
- 키로깅
- 사용자 입력 감시
- 화면 조작
- 특정 프로그램 실행 여부 확인
[외부 도메인 접속]


strings에 도메인, HTTP, 상태코드로 추정되는 503, 200, 윈도우 소켓 api인 ws2_32가 보이므로 네트워크 통신 관련 코드가 .exe 파일에 있다는 것을 알 수 있다.
(정적분석이므로 실제로 네트워크 통신이 일어난 것은 아님.)
[의심 레지스트리 분석] > 네트워크, 자동실행

commandv: HTTP 핸들 조작 가능성
CurrentVersion\Run: 자동 실행 등록 위치
Shell.Folders: 사용자 shell folder 조회 가능성
[의심 파일명 분석]


vmx32to64.exe, WinVMX32와 같은 파일명은 윈도우에 존재하지 않는 파일명이다.
공격자가 만든 위장 악성 파일일 가능성이 크다.
[악성 행위 흐름 추정]
- 사용자가 Lab03-01.exe를 실행한다.
- 초기 스텁 코드가 실행된다.
- 필요한 DLL 또는 API를 런타임에 해석한다.
- ws2_32
- advapi32
- ntdll
- user32
- advpack
- 사용자 AppData 경로를 조회한다.
- 자기 자신 또는 내장 데이터를 vmx32to64.exe 등의 이름으로 복사한다.
- 레지스트리에 자동 실행 값을 등록한다.
- CurrentVersion\Run
- Active Setup\Installed Components
- StubPath
- HTTP 관련 레지스트리 또는 핸들러를 조회·수정할 수 있다.
- www.practicalmalwareanalysis.com 도메인으로 HTTP 기반 통신을 시도한다.
- HTTP 응답 코드 200, 503 등을 기준으로 분기 처리할 수 있다.
- 작업 완료 후 ExitProcess를 호출해 종료한다.
======= 동적 분석 ========
동적 분석 보고서 생성을 위해 GPT에 넘길 자료들
- PE studio 결과 파일
- regshot 스냅샷 비교 파일
- process monitor 파일
- process explorer 파일
- wireshark로 캡쳐한 파일
각각에서 어떤 정보들을 얻을 수 있는가?
- PE studio 결과 파일
- Import API
- 어떤 Windows API를 사용하는지 확인 가능
- Sections 정보
- entropy, rwx 권한, 이상한 section 이름 확인 가능
- 패킹/난독화 여부 판단
- Strings
- URL, IP, mutex, registry 경로, 파일 경로 등 IOC 확인 가능
- PE Header 정보
- 컴파일 시간, subsystem, entry point, architecture(x86/x64) 확인 가능
- Import API
- regshot 스냅샷 비교 파일
- 새로 생성된 Registry Key
- 자동실행 등록 여부 확인 가능
- 수정된 Registry 값
- 시스템 설정 변경 여부 확인 가능
- 삭제된 Registry 정보
- 흔적 제거 행위 확인 가능
- Persistence 관련 흔적 ?
- Run, Services, Winlogon 등 지속성 확보 여부 분석 가능
- 새로 생성된 Registry Key
- process monitor 파일
- 파일 생성/삭제/수정 기록
- 어떤 파일을 건드렸는지 확인 가능
- Registry 접근 기록
- 어떤 레지스트리를 읽고 수정했는지 확인 가능
- Process/Thread 생성
- 자식 프로세스 실행 여부 확인 가능
- DLL 로드 정보
- 어떤 DLL을 사용하는지 확인 가능
- 파일 생성/삭제/수정 기록
- process explorer 파일
- 부모-자식 프로세스 관계
- 어떤 프로세스가 악성코드를 실행했는지 확인 가능
- 로드된 DLL 목록
- DLL Injection 및 수상한 모듈 확인 가능
- Handles / Mutex 정보
- 파일, 레지스트리, mutex 사용 여부 확인 가능
- mutex 정보를 보는 이유
- 악성코드 충돌 나면 비정상 실행되므로 악성코드에 mutex 쓰는 경우 많음
- 옛날 악성코드의 경우, mutex 이름에 abc123, HGL345, DarkCometMutex 의 문자열을 돌려썼음. 이 문자열 보고 악성코드인 거 판별 가능.
- mutex 정보를 보는 이유
- 파일, 레지스트리, mutex 사용 여부 확인 가능
- Strings / 메모리 정보
- 메모리 내 URL, 명령어, 경로 등 IOC 확인 가능
- 부모-자식 프로세스 관계
- wireshark로 캡쳐한 파일
- 통신 대상 IP / Domain
- C2 서버 및 외부 통신 대상 확인 가능
- 사용 프로토콜
- HTTP, DNS, SMB, TCP 등 어떤 통신 사용하는지 확인 가능
- 전송 데이터 내용
- 평문 데이터, 다운로드 URL, 명령어 확인 가능
- 패킷 흐름 및 타이밍
- beaconing, 주기적 통신, 데이터 유출 여부 분석 가능
- 통신 대상 IP / Domain
[레지스트리 확인: regshot > vmx32to64]
레지스트리 경로에 이상한 파일들이 올라왔는지 확인해보자.

Currentversion\\Run\\VideoDriver 경로에 어떤 파일이 올라온 것을 확인할 수 있다.
디코딩하여 확인해보니, vmx32to64였다. 이 파일은 (정적분석에서도) self copy되어서 currentversion\Run에 등록될 것으로 예상했던 악성 파일이었다.

[외부 서버 도메인의 ip 얻기- wireshark]
03-01.exe 파일을 실행시키고 캡쳐를 하니 www.practicalmalwareanalysis.com으로 접속하는 패킷이 잡혔다.

해당 도메인의 ip도 얻었다.

[self copy 확인 & Run 등록 & 윈도우 통신 - procmon]
[번외] prefetch file: 이전에 한번 실행되었던 파일이라는 것을 알 수 있음. 포렌식에서 많이 쓰임]

C:\Windows\Prefetch

프로그램 실행
↓
Windows가 실행 정보 기록
↓
C:\\Windows\\Prefetch 에 .pf 생성
.pf 파일 안에는 "이 exe 실행 시 어떤 DLL/파일을 읽었는지” 에 대한 정보가 기록된다.
WinPrefetchView 도구로 Chrome.exe.pf을 살펴봤다.

1. writefile
실제로 쓰기를 한 흔적

ReadFile에서 읽은 7168byte를 그대로 WriteFile로 심어놓았기 때문에 자기 자신을 심어놓은 self copy임을 알 수 있다.
저 7168byte의 파일은 Lab03-01.exe 파일이다.


실제로 저 경로에 들어가서 봤더니 잘 생성(복제)가 된 것을 확인할 수 있었다.

2. RegSetValue도 중요! > Currentversion\Run 등록

3. ws2_32.dll
여기는 윈도우 통신에 관한 라이브러리를 불러옴

4. aws 서비스 이용

[mutex 확인 - procexp]
mutex 이름: WinVMX32

실습 3-1 정리
➢1. 이 악성코드의 임포트 함수에서 발견되는 주요 문자열은 무엇인가?
exitProcess
➢2. 감염을 식별할 수 있는 호스트 기반 지표(IOC)는 무엇인가?
VMx32to64
➢3. 이 악성코드를 식별할 수 있는 네트워크 기반 시그니처가 존재하는가? 있다면 무엇인가?
www.practicalmalwareanalysis.com
'보안 > SK 쉴더스 루키즈' 카테고리의 다른 글
| [SK 쉴더스 루키즈] EMU 8086 실습(신호등, 계산기) (0) | 2026.05.30 |
|---|---|
| [SK 쉴더스 루키즈] 윈도우 기초 정적/동적 분석 실습 (Practical Malware Analysis LAB 03-02) (0) | 2026.05.29 |
| [SK 쉴더스 루키즈] 기초 동적 분석 도구 (procmon, procexp, regshot, SysAnalyzer) (0) | 2026.05.29 |
| [SK 쉴더스 루키즈] 기초정적분석으로 악성행위 예측하기 (Practical Malware Analysis LAB 01) (0) | 2026.05.28 |
| [SK 쉴더스 루키즈] windows API를 활용한 악성 코드들 (0) | 2026.05.28 |
