네트워크와 메모리 포렌식
패킷 캡처(pcap)와 메모리 덤프를 수집하고 분석하여 공격자의 통신을 재구성하고 RAM에 숨은 악성 코드를 식별합니다.
네트워크와 메모리 포렌식은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
네트워크 포렌식 개요
네트워크 포렌식은 네트워크 트래픽을 수집하고 분석하여 Attacker의 통신을 재구성하고, 측면 이동을 식별하며, 데이터 유출을 Detect합니다. 침해된 호스트에서 변조되었을 가능성이 있는 증거를 조사하는 엔드포인트 포렌식과 달리, 네트워크 증거는 사후에 Attacker가 변경하기가 더 어렵습니다. 네트워크 탭이나 트래픽 모니터링 시스템이 이미 수집한 패킷을 소급하여 삭제할 수는 없기 때문입니다. 네트워크 포렌식은 엔드포인트 포렌식과 상호 보완되어 공격 상황을 완전하게 파악할 수 있도록 합니다.
패킷 수집 기초
패킷 수집(PCAP)은 전체 페이로드 내용을 포함하여 모든 네트워크 트래픽을 패킷 수준에서 기록합니다. 도구로는 Wireshark(GUI 기반으로 널리 사용됨), tcpdump(명령줄 기반이며 스크립트로 실행 가능), Zeek(이전 명칭은 Bro이며 PCAP에서 프로토콜 수준의 Logs를 생성함) 등이 있습니다. 전체 패킷을 수집하면 저장 공간을 많이 사용하므로, 고속 네트워크에서는 전용 수집 장비가 필요할 수 있습니다. PCAP을 분석하면 평문 프로토콜의 자격 증명, C2 비콘 패턴, 유출된 데이터, 측면 이동 연결을 확인할 수 있습니다.
# tcpdump: capture all traffic on eth0
tcpdump -i eth0 -w /forensics/incident.pcap
# Capture only traffic to/from attacker IP
tcpdump -i eth0 host 198.51.100.10 -w /forensics/attacker.pcap
# Wireshark filter examples:
# Show HTTP GET requests: http.request.method == 'GET'
# Show DNS queries: dns.qr == 0
# Show large outbound transfers: ip.dst != 10.0.0.0/8 && tcp.len > 1000
# Show cleartext FTP creds: ftp.request.command == 'PASS'NetFlow와 트래픽 분석
NetFlow(및 이에 해당하는 오픈 소스인 IPFIX)는 페이로드 내용을 수집하지 않고 네트워크 통신에 대한 메타데이터를 기록합니다. 여기에는 출발지/목적지 IP, 출발지/목적지 포트, 프로토콜, 바이트 수, 패킷 수, 타임스탬프가 포함됩니다. NetFlow는 전체 PCAP보다 저장 공간을 훨씬 적게 사용하므로 장기간 보관(90~365일)에 적합합니다. 포렌식 과정에서 NetFlow를 사용하면 사고 발생 기간에 어떤 시스템이 통신했는지, 데이터 유출(대량의 외부 전송 바이트 수), C2 비콘(외부 IP로 일정하게 이루어지는 소량 연결)을 식별할 수 있습니다.
# Analyze NetFlow data with nfdump
# Show top talkers (by bytes) in incident time window
nfdump -r /var/cache/netflow/2026/06/20/ \
-t '2026/06/20.02:00-2026/06/20.06:00' \
-s ip/bytes -n 20
# Show all connections TO external IPs from suspicious host
nfdump -r /var/cache/netflow/ \
'src ip 10.0.1.50 and dst ip not in [10.0.0.0/8]'
# VPC Flow Logs provide similar data in cloud environmentsDNS 포렌식
DNS 쿼리 Logs는 강력한 포렌식 자료입니다. 대부분의 C2 통신과 악성 코드 다운로드에 DNS 이름 확인이 필요하기 때문입니다. 악성 DNS 활동의 Indicators로는 새로 등록되었거나 평판이 낮은 Domain에 대한 쿼리, 단일 Domain에 대한 대량 쿼리(DGA 악성 코드가 생성된 여러 이름을 시도하는 경우), DNS 터널링(데이터를 유출하기 위해 비정상적으로 길거나 entropy가 높은 하위 Domain 이름을 사용하는 방식), 알려진 악성 코드 군과 관련된 Domain에 대한 쿼리 등이 있습니다. HTTP 트래픽 검사가 제한된 경우에도 DNS는 기록되는 경우가 많습니다.
# DNS sinkhole detection - check for DGA domains
# DGA: malware generates random domain names to find active C2
# Indicators:
# - High volume of NXDOMAIN responses from one host
# - Domain names with high entropy (random characters)
# - Queries to .ru/.cn/.tk TLDs unusual for organization
# Wireshark filter for NXDOMAIN responses
dns.flags.rcode == 3 # NXDOMAIN
# Calculate domain entropy to find DGA
# Legitimate: google.com (low entropy)
# DGA: xk3j9pqm2v.com (high entropy)C2 통신 패턴
Attacker가 제어하는 서버와 침해된 시스템 사이의 명령 및 제어(C2) 채널에는 특징적인 패턴이 나타납니다. 비콘은 일정한 주기의 연결(예: 30초마다)을 생성하며, NetFlow에서는 동일한 외부 IP로 일정한 간격마다 전송되는 다수의 소량 패킷으로 식별할 수 있습니다. 지터는 탐지를 피하기 위해 비콘 간격을 무작위화합니다. 분석가는 정상적인 웹 트래픽의 잡음 속에서 비콘을 식별하기 위해 연결 시점의 통계적 규칙성을 살펴봅니다.
# Detect beaconing behavior with Zeek/RITA
# RITA (Real Intelligence Threat Analytics) analyzes Zeek logs
# Manual NetFlow beacon detection
nfdump -r /var/cache/netflow/ \
'src ip 10.0.1.50' \
-o 'fmt:%ts %sa %da %dp %byt' |
awk '{print $1}' | sort | uniq -c
# Regular intervals in the timestamp column = beaconing
# Zeek conn.log: look for many connections to same IP
# with similar connection durations and small byte countsVolatility를 활용한 메모리 포렌식
메모리 포렌식은 디스크에는 존재하지 않을 수 있는 악성 활동의 증거를 추출하기 위해 RAM 덤프를 분석합니다. Volatility 프레임워크(오픈 소스)는 메모리 분석을 위한 업계 표준 도구입니다. 주요 기능으로는 실행 중인 프로세스와 부모-자식 관계 나열, 정상 프로세스에 삽입된 코드 식별, 수집 시점에 열려 있던 네트워크 연결 추출, 메모리에서 레지스트리 하이브 내용 복구, RAM에 보관된 암호화 키 추출이 있습니다.
# Volatility 3 memory analysis commands
# List running processes
vol -f memory.raw windows.pslist
# List processes showing hidden/injected processes
vol -f memory.raw windows.pstree
# Find process injection (code in wrong memory regions)
vol -f memory.raw windows.malfind
# List network connections at time of capture
vol -f memory.raw windows.netstat
# Dump a suspicious process's memory for further analysis
vol -f memory.raw windows.memmap --pid 1234 --dump메모리에서 악성 코드 Detect
메모리의 악성 코드는 Volatility 플러그인이 식별할 수 있는 특정 패턴을 보입니다. 프로세스 삽입(svchost.exe와 같은 정상 프로세스에 코드를 삽입하는 방식)은 일반적으로 실행 권한이 없어야 하는 프로세스에 실행 권한이 있는 메모리 영역이 나타나는 형태로 확인됩니다. 할로우 프로세스(원래 코드를 악성 코드로 교체한 정상 프로세스 셸)는 프로세스 이름과 메모리에 있는 실제 코드 사이의 불일치를 보입니다. 커널 루트킷은 프로세스 목록에서 프로세스를 숨길 수 있지만, Volatility는 실행 중인 프로세스 목록과 커널의 원시 프로세스 구조 목록을 비교하여 이를 Detect할 수 있습니다.
# Find suspicious executable memory regions (malfind output)
# Look for:
# - MZ header (PE file magic bytes: 4d 5a) in injected memory
# - Memory pages with Read+Write+Execute permissions (uncommon)
# - Code in heap or stack regions
vol -f memory.raw windows.malfind
# Output shows process, virtual address, protection flags, hex dump
# MZ in non-standard location = process injection indicator
# Compare pslist (API) vs psscan (pool scanner) to find hidden procs:
vol -f memory.raw windows.psscan # shows processes hidden from API메모리에서 자격 증명 추출
메모리 포렌식은 자격 증명을 복구하는 데 특히 강력합니다. Windows는 싱글 사인온을 위해 LSASS(로컬 보안 기관 하위 시스템 서비스) 프로세스 메모리에 자격 증명을 저장합니다. Mimikatz와 같은 도구는 LSASS 메모리를 읽어 평문 암호와 NTLM hashes를 추출하는 방식으로 이를 악용합니다. 포렌식 관점에서는 Volatility가 조사 목적으로 수집한 메모리 덤프에서 동일한 정보를 추출할 수 있습니다. 이를 통해 침해된 시스템에 어떤 자격 증명이 캐시되어 있었는지 확인하고, 가능한 측면 이동의 범위를 파악할 수 있습니다.
# Extract cached credentials from LSASS memory (forensic use)
vol -f memory.raw windows.hashdump # extracts NTLM hashes from SAM
# Detect Mimikatz execution in memory:
vol -f memory.raw windows.malfind | grep -i lsass
# Or search for Mimikatz strings in process memory:
vol -f memory.raw windows.strings --pid <lsass_pid> |
grep -i 'mimikatz\|sekurlsa\|wdigest'
# Defense: Credential Guard (Windows 10+) moves LSASS credentials
# to a protected VTL1 hypervisor environment Mimikatz cannot access네트워크와 메모리 증거의 상관 분석
가장 강력한 포렌식 분석은 네트워크 증거와 메모리 증거를 결합합니다. 메모리는 어떤 프로세스가 실행 중이었고 어떤 코드를 포함했는지 보여 주며, 네트워크 포렌식은 해당 프로세스가 무엇과 통신했는지 보여 줍니다. Volatility 메모리 분석에서 확인된 프로세스에 PCAP에서도 확인되는 네트워크 연결이 있고, 그 연결이 DNS Logs에서 경고된 Domain으로 연결되며, NetFlow의 외부 IP와도 일치한다면 이러한 증거의 수렴은 악성 활동에 대한 높은 신뢰도의 귀속을 제공하고 완전한 공격 서사를 뒷받침합니다.
Network Time Protocol(NTP)과 타임스탬프 정확도
정확한 타임스탬프는 네트워크와 엔드포인트 포렌식 증거를 상호 연관시키는 데 필수적입니다. 서버의 시계가 방화벽의 시계보다 15분 늦다면 타임스탬프로 이벤트를 연관시킬 때 잘못된 시간 순서가 만들어집니다. 네트워크 포렌식 증거의 신뢰도는 Logs를 생성하는 장치의 시간 동기화 수준만큼만 높을 수 있습니다. 조직은 보안과 관련된 모든 장치에서 일관된 NTP(Network Time Protocol)를 구성하고, 조사 중 발견한 알려진 시간 불일치를 문서화해야 합니다.
# Verify NTP synchronization on Linux
timedatectl status
# Check: 'System clock synchronized: yes'
# Check: 'NTP service: active'
# Check NTP peers
ntpq -p
# * = current reference, + = candidate
# Windows NTP status
w32tm /query /status
# During incident: document the clock offset of each system
# so timestamps can be normalized in the timeline암호화된 트래픽 분석의 과제
대부분의 최신 C2 통신은 TLS 암호화를 사용하므로 네트워크 포렌식 분석가는 페이로드 내용을 직접 읽을 수 없습니다. 그러나 암호화된 트래픽에서도 메타데이터는 확인할 수 있습니다. 예를 들어 연결 시점 패턴(비콘), 인증서 이상(Attacker 인프라에서 사용하는 자체 서명 인증서, 일치하지 않는 CN 필드), JA3 지문(목적지와 관계없이 특정 악성 코드 군을 식별할 수 있는 TLS 클라이언트 지문), 비정상적인 TLS 핸드셰이크 특성 등이 있습니다. Zeek와 같은 도구는 TLS 연결에서 JA3 지문을 자동으로 추출하므로 트래픽을 복호화하지 않고도 알려진 악성 코드를 Detect할 수 있습니다.
# Zeek extracts JA3 fingerprints from TLS connections
# ssl.log contains JA3 and JA3S hashes
# Check against known-malware JA3 database
cat ssl.log | zeek-cut ja3 ja3s server_name |
sort | uniq -c | sort -rn | head -20
# Known malware JA3 hashes (examples):
# Metasploit: 6734f37431670b3ab4292b8f60f29984
# Cobalt Strike: 72a589da586844d7f0818ce684948eea
# Reference: https://github.com/salesforce/ja3빠른 확인
이 lesson에서 다룬 CompTIA Security+(SY0-701) 개념을 얼마나 이해했는지 확인해 보십시오.
lesson 요약
이 lesson에서는 다음을 학습했습니다. 패킷 수집과 NetFlow는 서로 보완적인 네트워크 증거를 제공합니다. PCAP은 전체 내용을 보여 주고 NetFlow는 대규모 환경에서 메타데이터를 보여 줍니다. 또한 C2 비콘은 연결 시점의 통계 분석을 통해 Detect할 수 있는 규칙적인 주기적 연결로 나타납니다. 그리고 Volatility 프레임워크는 RAM 덤프를 분석하여 프로세스 삽입을 Detect하고, 네트워크 연결을 추출하며, 정상 프로세스에 숨어 있는 악성 코드를 식별합니다. 포렌식 모듈을 모두 완료하신 것을 축하합니다. 다음은 Risk 관리와 보안 프레임워크입니다.
자주 묻는 질문
“네트워크와 메모리 포렌식” 강의는 무료인가요?
네 — “네트워크와 메모리 포렌식” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“네트워크와 메모리 포렌식”에서 뭘 배우나요?
패킷 캡처(pcap)와 메모리 덤프를 수집하고 분석하여 공격자의 통신을 재구성하고 RAM에 숨은 악성 코드를 식별합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“네트워크와 메모리 포렌식” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.