Documentation & Blog

AV/EDR 다계층 탐지 메커니즘 종합 분석

KWAKBUMJUN 2026. 4. 5. 21:26

목차

Part 1: 개요

  1. Executive Summary
  2. 분석 대상 행위 개요

Part 2: 탐지 레이어별 기술 분석
3. T1055 프로세스 인젝션 — 탐지 레이어별 분석
4. T1003 자격증명 덤핑 — 탐지 레이어별 분석
5. 레이어 간 상관관계 분석

Part 3: 제품별 탐지 비교 매트릭스
6. 멀티 AV/EDR 제품 비교
7. 탐지 공백 영역 식별

Part 4: 결론 및 권고
8. 방어 권고사항
9. 결론

부록


Part 1: 개요

1. Executive Summary

"우리 회사는 AV를 쓰고 있으니 안전하지 않을까?"

보안 업계에서 가장 위험한 착각 중 하나다. 현대의 공격자는 단일 탐지 레이어를 우회하는 것이 아니라, 탐지 레이어 간의 빈틈을 파고든다. 시그니처를 우회했더니 행위 분석에 걸리고, 행위 분석을 우회했더니 메모리 스캔에 걸리는 — 이 "다계층 탐지"가 정확히 어떻게 작동하는지 종합 분석하였다.

핵심 발견 사항

항목 결과
분석 기법 T1055 (12개 서브 기법), T1003 (8개 서브 기법)
비교 제품 Microsoft Defender, CrowdStrike Falcon, SentinelOne, Elastic Security, Kaspersky
가장 효과적인 단일 탐지 포인트 Sysmon Event ID 10 (LSASS 접근) / ETW Threat Intelligence Provider
가장 큰 탐지 공백 직접 시스콜(Direct Syscall) 기반 인젝션 — 유저랜드 후킹 우회
가장 견고한 탐지 레이어 동적 분석 — 정적/휴리스틱 우회 시에도 가장 높은 확률로 탐지
모든 제품이 놓친 기법 모듈 스톰핑(Module Stomping) — 정상 DLL 메모리를 덮어쓰는 기법
최고 종합 점수 제품 CrowdStrike Falcon (9.3/10) — 커널 수준 가시성 최우수
권고 방어 전략 심층 방어(Defense-in-Depth): 예방 + 탐지 + 대응 3계층 병행

2. 분석 대상 행위 개요

2.1 왜 이 두 기법인가

프로세스 인젝션 (T1055) — 공격자의 "은신술". 다른 프로세스의 주소 공간에 코드를 주입하면, 그 프로세스의 신뢰도를 빌릴 수 있다. svchost.exe에 셸코드를 주입하면, 방화벽은 정상적인 시스템 프로세스의 네트워크 활동으로 인식한다. MITRE에 등록된 서브 기법만 12개 — 그만큼 공격자가 자주 쓰고, 변형이 많다.

자격증명 덤핑 (T1003) — 공격자의 "만능열쇠". LSASS 메모리에서 평문 비밀번호나 NTLM 해시를 추출하면, 도메인 전체를 횡이동할 수 있다. 단 하나의 관리자 해시가 기업 전체 침해로 이어지는 경우가 빈번하다.

2.2 T1055 주요 서브 기법

ID 서브 기법 핵심 API 시퀀스
T1055.001 DLL 인젝션 OpenProcessVirtualAllocExWriteProcessMemoryCreateRemoteThread(LoadLibrary)
T1055.002 PE 인젝션 OpenProcessVirtualAllocEx(RWX)WriteProcessMemory(PE image)CreateRemoteThread
T1055.003 스레드 실행 하이재킹 SuspendThreadVirtualAllocExWriteProcessMemorySetThreadContextResumeThread
T1055.004 APC 인젝션 OpenProcessVirtualAllocExWriteProcessMemoryQueueUserAPC
T1055.012 프로세스 할로잉 CreateProcess(SUSPENDED)NtUnmapViewOfSectionVirtualAllocExWriteProcessMemorySetThreadContextResumeThread
T1055.013 프로세스 도플갱잉 NtCreateTransactionCreateFileTransactedNtCreateSectionRollbackTransactionNtCreateProcessEx

2.3 T1003 주요 서브 기법

ID 서브 기법 주요 방법
T1003.001 LSASS 메모리 Mimikatz, comsvcs.dll MiniDump, procdump, 직접 메모리 읽기
T1003.002 SAM reg save HKLM\SAM, Volume Shadow Copy, 직접 레지스트리 접근
T1003.003 NTDS ntdsutil IFM, Volume Shadow Copy, DCSync
T1003.004 LSA Secrets reg save HKLM\SECURITY, Mimikatz lsadump::secrets
T1003.005 캐시된 도메인 자격증명 HKLM\Security\Cache 접근
T1003.006 DCSync DRS 프로토콜 악용 (DRSGetNCChanges)

Part 2: 탐지 레이어별 기술 분석

3. T1055 프로세스 인젝션 — 탐지 레이어별 분석

3.1 정적 분석 (Static Analysis) — 실행 전에 잡아낸다

정적 분석은 바이너리를 실행하지 않고 파일 자체의 속성을 검사하는 첫 번째 방어선이다. 마치 공항 수하물 X-ray처럼, 내용물을 열어보지 않고도 위험을 판별한다.

3.1.1 IAT(Import Address Table) 분석

고위험 API 임포트 조합 ("인젝션 트라이어드"):

VirtualAllocEx + WriteProcessMemory + CreateRemoteThread/NtCreateThreadEx + OpenProcess

아래 3개 이상이 동시에 임포트되면 인젝션 의심:

API 함수 인젝션 용도 위험도
OpenProcess 대상 프로세스 핸들 획득 중간 (정상 사용 빈번)
VirtualAllocEx 원격 프로세스 메모리 할당 높음 — 정상 사용 극히 드묾
WriteProcessMemory 원격 프로세스에 페이로드 쓰기 높음
CreateRemoteThread 원격 프로세스에서 코드 실행 매우 높음
NtCreateThreadEx ntdll 수준 원격 스레드 생성 매우 높음 (API 후킹 우회 시도)
QueueUserAPC APC 인젝션 OpenProcess와 결합 시 높음
NtUnmapViewOfSection 프로세스 이미지 언매핑 (할로잉) 매우 높음 — 정상 사용 거의 없음
SetThreadContext 스레드 레지스터 변경 (하이재킹) 높음
CreateFileTransacted NTFS 트랜잭션 파일 조작 매우 높음 (도플갱잉)
NtWriteVirtualMemory ntdll 수준 메모리 쓰기 매우 높음 (후킹 우회)

하지만 공격자가 GetProcAddress로 런타임에 API를 해결하면? IAT에는 GetProcAddressLoadLibrary만 보이고, 실제 인젝션 API는 숨겨진다.

3.1.2 문자열(String) 분석

탐지 대상 문자열 패턴:

  • DLL 경로: kernel32.dll, ntdll.dll + LoadLibraryA, LoadLibraryW
  • 대상 프로세스명: explorer.exe, svchost.exe, lsass.exe, spoolsv.exe
  • 런타임 해결 ntdll 함수명: NtCreateThreadEx, NtUnmapViewOfSection, RtlCreateUserThread, NtQueueApcThread
  • 셸코드 프리앰블: \xFC\x48\x83\xE4\xF0 (x64 Cobalt Strike/msfvenom), \xFC\xE8 (x86 블록 API 해시 리졸루션)
  • API 해싱 상수: 0x6A4ABC5B (ROR13 CreateRemoteThread 해시), 0x0726774C (LoadLibraryA 해시)

3.1.3 엔트로피(Entropy) 분석

파일의 "무작위성"을 측정한다. 정상적인 컴파일된 코드의 .text 섹션은 엔트로피가 5.5~6.5 정도다. 암호화되거나 패킹된 페이로드는 7.0 이상으로 튀어오른다.

조건 정상 범위 의심 기준
.text 섹션 엔트로피 5.5 ~ 6.5 > 6.8
개별 섹션 엔트로피 < 7.0 > 7.0 (암호화/압축/패킹)
전체 파일 엔트로피 (< 100KB) < 6.5 > 7.0 + 작은 크기 = 매우 의심
.data/.rsrc 섹션 < 5.0 > 7.0 (암호화 셸코드 내장)

3.1.4 PE 헤더 이상 징후

이상 징후 설명 탐지 신뢰도
RWX 섹션 IMAGE_SCN_MEM_READ|WRITE|EXECUTE (0xE0000020) 높음 — 정상 PE에서 극히 드묾
비표준 섹션명 UPX0/UPX1, 공백 이름, 비ASCII 중간
Raw size=0, Virtual size>0 언패킹 스텁 존재 높음
최소 임포트 테이블 LoadLibrary + GetProcAddress만 임포트 높음 (런타임 해결 패턴)
엔트리 포인트 위치 이상 .text 외부 또는 마지막 섹션 높음
체크섬 불일치 PE 체크섬과 실제 불일치 중간
TLS 디렉토리 존재 비멀티스레드 앱에서 (콜백 악용) 중간~높음

3.1.5 YARA 룰 패턴

rule Process_Injection_API_Combination {
    meta:
        description = "프로세스 인젝션 API 조합 탐지"
        mitre_attack = "T1055"
    strings:
        $api1 = "VirtualAllocEx"
        $api2 = "WriteProcessMemory"
        $api3 = "CreateRemoteThread"
        $api4 = "OpenProcess"
        $ntapi1 = "NtCreateThreadEx"
        $ntapi2 = "NtUnmapViewOfSection"
    condition:
        ($api1 and $api2 and ($api3 or $ntapi1)) or
        ($ntapi2 and $api2)
}

rule Process_Hollowing_Indicators {
    meta:
        description = "프로세스 할로잉 지표 탐지"
        mitre_attack = "T1055.012"
    strings:
        $s1 = "NtUnmapViewOfSection"
        $s2 = "ZwUnmapViewOfSection"
        $flag = { 04 00 00 00 }  // CREATE_SUSPENDED flag
    condition:
        ($s1 or $s2) and $flag
}

rule Direct_Syscall_Pattern {
    meta:
        description = "직접 시스콜 호출 패턴 (후킹 우회)"
    strings:
        $syscall = { 4C 8B D1 B8 ?? ?? 00 00 0F 05 C3 }
        // mov r10, rcx; mov eax, <num>; syscall; ret
    condition:
        #syscall > 3
}

정적 분석의 한계: 난독화, 패킹, 런타임 API 해결 등으로 비교적 쉽게 우회된다. 이것이 정적 분석만으로는 부족한 이유다.


3.2 동적 분석 (Dynamic/Behavioral Analysis) — 행동을 지켜본다

정적 분석을 우회했더라도, 실제로 인젝션을 수행하려면 결국 동일한 행위를 해야 한다. 동적 분석은 이 행위를 실시간으로 모니터링한다.

3.2.1 API 호출 시퀀스 트리거 조건

Classic DLL 인젝션 시퀀스 (5초 이내 발생):

① OpenProcess(대상 프로세스) 
    ↓
② VirtualAllocEx(PAGE_READWRITE 또는 PAGE_EXECUTE_READWRITE) 
    ↓
③ WriteProcessMemory(할당된 영역에 페이로드 쓰기) 
    ↓
④ CreateRemoteThread 또는 NtCreateThreadEx(LoadLibraryA 또는 할당 영역 지점)

문자열을 아무리 암호화해도, IAT를 아무리 숨겨도, 실행 시점에서 이 API 호출 시퀀스는 반드시 발생한다. EDR은 이 시퀀스가 5초 이내에 연속으로 발생하면 인젝션으로 판단한다.

프로세스 할로잉 시퀀스:

① CreateProcessW/A(CREATE_SUSPENDED, 0x4)
    ↓
② NtUnmapViewOfSection(원본 이미지 언매핑)
    ↓
③ VirtualAllocEx(원본 이미지 베이스 주소)
    ↓
④ WriteProcessMemory(새 PE 헤더 + 각 섹션)
    ↓
⑤ SetThreadContext(새 엔트리 포인트로 업데이트)
    ↓
⑥ ResumeThread

APC 인젝션 시퀀스:

① OpenProcess + OpenThread (또는 CreateToolhelp32Snapshot로 스레드 열거)
    ↓
② VirtualAllocEx → WriteProcessMemory
    ↓
③ QueueUserAPC(대상 스레드에 APC 큐잉)

3.2.2 메모리 속성 변경 모니터링

탐지 조건 설명 위험도
RWX 할당 VirtualAllocEx/VirtualProtectPAGE_EXECUTE_READWRITE(0x40) 설정 높음 — 정상 소프트웨어에서 거의 불필요
RW→RX 전환 RW로 할당 후 페이로드 기록, 이후 PAGE_EXECUTE_READ(0x20)로 변경 높음 — 더 정교하지만 탐지 가능
비백킹 실행 메모리 MEM_PRIVATE + 실행 가능 — 디스크상 DLL/EXE에 매핑되지 않은 영역 매우 높음 — 인젝션의 강력한 지표
원격 대용량 할당 부모/디버거가 아닌 프로세스에서 대상 프로세스에 대용량 메모리 할당 높음
PEB 수정 프로세스 할로잉 시 ImageBaseAddress 업데이트 높음

3.2.3 프로세스 관계 이상 탐지

[정상 프로세스 계층]
System → smss.exe → csrss.exe
                  → wininit.exe → services.exe → svchost.exe
                                → lsass.exe
winlogon.exe → userinit.exe → explorer.exe

[이상 징후 예시]
✗ cmd.exe → svchost.exe (CREATE_SUSPENDED)     ← 할로잉 의심
✗ powershell.exe → explorer.exe 메모리 쓰기      ← 인젝션 의심
✗ svchost.exe가 services.exe 자식이 아님          ← 위장 프로세스
✗ 동일 프로세스 다중 인스턴스 (예: lsass.exe 2개)  ← 비정상
✗ 비보안 도구가 PROCESS_VM_WRITE로 다른 프로세스 접근 ← 인젝션 시도

3.2.4 네트워크 행위 지표

  • 인젝션된 svchost.exe/explorer.exe에서 C2 서버로의 아웃바운드 연결
  • 원래 네트워크 연결을 하지 않는 프로세스의 갑작스러운 TCP/HTTP 연결
  • 비코닝 패턴: 정규 간격(지터 포함) 외부 IP/도메인 콜백
  • DGA(Domain Generation Algorithm) 패턴의 DNS 쿼리

동적 분석의 한계: "직접 시스콜(Direct Syscall)"이라는 우회 기법이 있다. ntdll.dll의 API 후킹을 건너뛰고 커널에 직접 시스템 호출을 보내는 것이다. 유저랜드 후킹에 의존하는 EDR은 이를 놓칠 수 있다.


3.3 휴리스틱 분석 (Heuristic Analysis) — 맥락을 읽는다

"이 파일이 뭘 하는가"가 아니라 "이 파일이 누구인가"를 본다.

3.3.1 파일 평판 (Reputation)

클라우드 기반 평판 시스템은 전 세계 수억 대의 엔드포인트에서 수집한 데이터를 기반으로 파일의 "신뢰도"를 매긴다. 처음 보는 바이너리 + 인젝션 API + 미서명 = 자동으로 위험 등급 상승.

신호 위험 가중치
미알려진 바이너리 (글로벌 유병률 낮음) 높음
최근 컴파일 (PE 타임스탬프 수시간/수일 내) 중간
해당 엔드포인트/네트워크에서 최초 발견 높음
클라우드 평판 조회 이력 없음 (zero prevalence) 높음

3.3.2 디지털 서명 (Digital Signature)

Microsoft가 서명한 procdump.exe는 합법적인 디버깅 도구다. 하지만 이 도구가 lsass.exe를 대상으로 실행되면? 서명이 유효해도 맥락이 악성이다. 현대 EDR은 이 "합법적 도구의 비정상 사용"까지 탐지한다.

서명 상태 평가
미서명 바이너리 + 인젝션 API 매우 높은 위험
유효하지 않은 서명 (해지/만료/변조) 높은 위험
자가 서명 (알려지지 않은 발급자) 높은 위험
유효 서명 (손상된 벤더) 낮은 위험 — 탐지 어려움
유효 서명 (정상 벤더) 낮은 위험

3.3.3 파일 경로 이상

C:\Windows\System32\svchost.exe는 정상. C:\Users\victim\Downloads\svchost.exe는 의심. 같은 파일명이라도 경로가 다르면 위장 공격일 수 있다.

위험 실행 경로:

  • %TEMP%, %APPDATA%\Local\Temp, Downloads 폴더
  • C:\Users\Public, C:\ProgramData, C:\Windows\Temp
  • 이중 확장자: document.pdf.exe
  • C:\Windows\System32 외부의 시스템 파일 가장 바이너리

3.3.4 복합 위험도 점수 계산

[크리티컬 — 즉시 차단]
바이너리 수명 < 24시간 + 인젝션 API + 미서명 = 크리티컬

[매우 높음]
작은 파일 (< 200KB) + 높은 엔트로피 + 인젝션 API = 매우 높음

[높음]
프로세스가 SUSPENDED로 자식 생성 후 메모리 쓰기 = 높음
사용자 수준 프로세스에서 SYSTEM 프로세스에 OpenProcess = 높음
다수 프로세스에 대한 빠른 연속 VirtualAllocEx = 높음

4. T1003 자격증명 덤핑 — 탐지 레이어별 분석

4.1 정적 분석 (Static Analysis)

4.1.1 IAT 분석

API 함수 맥락 위험도
OpenProcess (LSASS 대상) LSASS 메모리 접근 높음
MiniDumpWriteDump (DbgHelp.dll) 프로세스 덤프 생성 LSASS 대상 시 매우 높음
NtReadVirtualMemory LSASS 메모리 읽기 매우 높음
SamConnect / SamOpenDomain / SamQueryInformationUser SAM 접근 매우 높음
RegSaveKey 레지스트리 하이브 추출 SAM/SECURITY/SYSTEM 대상 시 높음
AdjustTokenPrivileges SeDebugPrivilege 활성화 높음
DsBind / DsGetNCChanges DCSync 비DC에서 매우 높음

4.1.2 문자열 분석

Mimikatz 지표:

sekurlsa::logonpasswords, sekurlsa::wdigest, lsadump::sam, lsadump::dcsync
mimikatz, gentilkiwi, Benjamin DELPY, vincent LE TOUX
mimilib.dll, mimidrv.sys, privilege::debug

기타 도구 문자열:

procdump, comsvcs.dll, MiniDump, MiniDumpWriteDump
secretsdump, hashdump
HKLM\SAM, HKLM\SECURITY, HKLM\SYSTEM
ntdsutil, IFM, create full, vssadmin create shadow

인코딩된 페이로드:

  • PowerShell 내 Base64 인코딩 PE: TVqQ로 시작하는 대형 Base64 블록 (MZ 헤더)
  • Invoke-Mimikatz 등 리플렉티브 로딩 버전

4.1.3 YARA 룰 패턴

rule Mimikatz_Indicators {
    meta:
        description = "Mimikatz 및 변종 탐지"
        mitre_attack = "T1003"
    strings:
        $s1 = "sekurlsa" ascii wide
        $s2 = "logonpasswords" ascii wide
        $s3 = "lsadump" ascii wide
        $s4 = "gentilkiwi" ascii wide
        $s5 = "mimikatz" ascii wide nocase
        $s6 = "wdigest" ascii wide
    condition:
        3 of them
}

rule LSASS_Dump_Tool {
    strings:
        $api1 = "MiniDumpWriteDump"
        $api2 = "OpenProcess"
        $api3 = "DbgHelp.dll" nocase
        $lsass = "lsass" nocase
    condition:
        ($api1 or $api3) and $api2 and $lsass
}

rule Comsvcs_MiniDump_Abuse {
    strings:
        $s1 = "comsvcs.dll" nocase
        $s2 = "MiniDump"
        $s3 = "#24"  // MiniDump export ordinal
    condition:
        $s1 and ($s2 or $s3)
}

4.2 동적 분석 (Dynamic/Behavioral Analysis)

4.2.1 API 호출 시퀀스 트리거 조건

LSASS 메모리 덤프:

① CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS) → Process32First/Next (lsass.exe PID 탐색)
    ↓
② OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, lsass_pid) — SeDebugPrivilege 필요
    ↓
③ MiniDumpWriteDump(hLsass, lsass_pid, hFile, MiniDumpWithFullMemory)

SAM 덤프:

① AdjustTokenPrivileges → SeBackupPrivilege 활성화
    ↓
② RegOpenKeyExA/W(HKEY_LOCAL_MACHINE, "SAM")
    ↓
③ RegSaveKeyA/W → 파일로 출력

DCSync:

① DsBind(도메인 컨트롤러)
    ↓
② DsGetNCChanges(DRSUAPI_DRS_INIT_SYNC + DRSUAPI_DRS_WRIT_REP)
    ↓
③ 반복 호출 → 전체 계정 복제

4.2.2 핸들 및 메모리 지표

조건 설명 위험도
비LSASS 프로세스가 lsass.exe 핸들 보유 (VM_READ) 보안 제품 및 WerFault.exe 제외 크리티컬
SeDebugPrivilege 활성화 일반 사용자 프로세스에서 높음
LSASS가 갑자기 대용량 파일 생성 덤프 파일 크리티컬
다른 프로세스에 복제된 LSASS 토큰 토큰 복제 높음

누가 lsass.exe에 접근하는가가 핵심이다. Sysmon의 Event ID 10은 이 접근을 기록한다:

탐지 규칙: 
IF ProcessAccess.TargetImage == "lsass.exe" 
AND SourceImage NOT IN (보안 제품 허용 목록) 
AND GrantedAccess INCLUDES VM_READ
THEN → CRITICAL ALERT

4.2.3 프로세스 관계 이상

✗ rundll32.exe → comsvcs.dll 로딩 + MiniDump 인수          ← LSASS 덤프 의심
✗ cmd.exe/powershell.exe → reg save SAM/SYSTEM/SECURITY   ← 자격증명 추출
✗ 비관리 도구가 lsass.exe 핸들 오픈                          ← 비인가 접근
✗ ntdsutil.exe가 비정상 부모 프로세스에서 스폰              ← NTDS 추출 의심
✗ vssadmin.exe가 백업 스케줄 외에 섀도 카피 생성            ← 비정상 사용

4.2.4 Windows 이벤트 로그 지표

이벤트 소스 설명 우선순위
Event ID 10 Sysmon lsass.exe에 대한 ProcessAccess 최우선 — 가장 중요한 단일 탐지 포인트
Event ID 1 Sysmon 자격증명 덤핑 도구 해시의 프로세스 생성 높음
Event ID 4656/4663 Windows Security \Device\HarddiskVolumeShadowCopy*\Windows\NTDS\ntds.dit 접근 높음
Event ID 4662 Windows Security DS-Replication-Get-Changes GUID 접근 최우선 (DCSync)
Event ID 4688 Windows Security ntdsutil.exe, vssadmin.exe 프로세스 생성 중간

DCSync 탐지를 위한 핵심 GUID:

  • {1131f6aa-9c07-11d1-f79f-00c04fc2dcd2} — DS-Replication-Get-Changes
  • {1131f6ad-9c07-11d1-f79f-00c04fc2dcd2} — DS-Replication-Get-Changes-All

4.2.5 파일 시스템 아티팩트

아티팩트 위치 의미
*.dmp 파일 비정상 위치 LSASS 메모리 덤프
sam.hiv, system.hiv, security.hiv 임시 디렉토리 레지스트리 하이브 추출
ntds.dit C:\Windows\NTDS\ 외부 AD 데이터베이스 복사
Prefetch 파일 C:\Windows\Prefetch\ 도구 실행 흔적

4.3 휴리스틱 분석 (Heuristic Analysis)

  • Mimikatz, procdump, gsecdump, pwdump 등의 알려진 해시 + SSDEEP 퍼지 해싱으로 변종 탐지
  • Import Hash(imphash) 매칭으로 알려진 자격증명 덤핑 도구 계열 식별

복합 위험도 점수:

[크리티컬 — 즉시 차단]
LSASS 접근 프로세스 + 미서명 + 낮은 평판 = 크리티컬
SeDebugPrivilege 활성화 + LSASS 접근 + 대용량 파일 쓰기 = 크리티컬
MiniDumpWriteDump 호출 + LSASS PID 대상 = 크리티컬 (서명된 도구라도)
reg save SAM/SYSTEM + 비관리 스크립트에서 실행 = 크리티컬

5. 레이어 간 상관관계 분석

핵심 질문: 하나의 레이어를 우회하면 다른 레이어에서 걸리는가?

답은 "거의 항상 그렇다"이다. 다만 모든 조합이 동일하지는 않다.

5.1 정적 분석 우회 시 → 동적 분석에서의 탐지

정적 우회 기법 동적 탐지 가능 여부 설명
문자열 난독화/암호화 탐지됨 실행 시 동일 API 호출 시퀀스 발생
IAT 은닉 (런타임 해결) 탐지됨 GetProcAddress 호출 후 동일 행위 수행
PE 패킹/암호화 탐지됨 언패킹 후 메모리에서 원본 코드 실행
커스텀 인코딩 탐지됨 디코딩 후 동일 행위 패턴
시그니처 변경 (리빌드) 탐지됨 API 시퀀스와 메모리 패턴 동일
직접 시스콜 부분 탐지 유저랜드 후킹 우회하나 커널 콜백/ETW는 탐지

결론: 정적 분석 우회는 동적 분석에 거의 영향을 미치지 않음. 동적 분석이 가장 견고한 탐지 레이어.

5.2 동적 분석 우회 시 → 다른 레이어의 탐지

동적 우회 기법 정적 탐지 휴리스틱 탐지 설명
직접 시스콜 (유저랜드 후킹 우회) 가능 (시스콜 스텁 패턴) 가능 (미서명+낮은 평판) 바이트 패턴 4C 8B D1 B8 ?? ?? 00 00 0F 05 C3 탐지
콜백 기반 실행 가능 (API 임포트) 가능 EnumWindows, CreateTimerQueueTimer 임포트
모듈 스톰핑 불가 (정상 DLL 덮어쓰기) 부분 메모리 내용이 디스크 원본과 불일치 감지 가능
파이버 기반 실행 가능 (CreateFiber 임포트) 가능 스레드 생성 모니터링 우회하나 다른 지표

5.3 휴리스틱 우회 시 → 다른 레이어의 탐지

휴리스틱 우회 기법 정적 탐지 동적 탐지 설명
유효 코드 서명 (탈취된 인증서) 가능 가능 서명만으로 다른 지표 무시되지 않음
정상 경로 배치 가능 가능 경로만으로 행위 지표 무시되지 않음
LoLBin 사용 (comsvcs.dll 등) 불가 (정상 파일) 가능 정상 DLL의 비정상 사용 패턴 탐지
높은 평판 도구 악용 (procdump) 불가 (MS 서명) 가능 LSASS 대상 인수 탐지

5.4 레이어 간 상관관계 매트릭스

              정적 우회   동적 우회   휴리스틱 우회
정적 탐지       —         ✓ 가능     ✓ 가능
동적 탐지      ✓ 가능      —         ✓ 가능
휴리스틱 탐지   ✓ 가능     ✓ 가능      —

✓ = 해당 레이어를 우회해도 다른 레이어에서 탐지 가능

5.5 LoLBin 사례 분석 — 다중 레이어 동시 우회

rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump

이 명령은 Windows 시스템 DLL을 사용하여 LSASS를 덤프한다:

  • 정적 분석: comsvcs.dll은 정상 시스템 파일 → 우회
  • 휴리스틱: Microsoft 서명 + 정상 경로 → 우회
  • 동적 분석: "comsvcs.dll의 MiniDump 함수 + lsass.exe PID" 인수 → 탐지됨

결론: 동적 분석이 최후의 보루 역할을 한다.

5.6 핵심 인사이트

  1. 동적 분석이 가장 견고: 정적/휴리스틱 우회 시에도 동적 분석이 가장 높은 확률로 탐지
  2. 정적 분석이 가장 취약: 난독화/패킹으로 비교적 쉽게 우회 가능
  3. LoLBin은 정적+휴리스틱 동시 우회: 시스템 바이너리 악용 시 정적과 휴리스틱 모두 우회되나 동적은 탐지
  4. 직접 시스콜은 동적+정적 부분 우회: 유저랜드 후킹과 IAT 분석 우회하나 커널 수준 모니터링과 바이트 패턴 분석은 탐지
  5. 3계층 모두 우회하는 유일한 방법: 커널 수준 악성코드 (루트킷) — 이는 별도의 방어 레이어(Secure Boot, HVCI 등) 필요

Part 3: 제품별 탐지 비교 매트릭스

6. 멀티 AV/EDR 제품 비교

6.1 테스트 대상 제품 개요

항목 Microsoft Defender CrowdStrike Falcon SentinelOne Elastic Security Kaspersky
유형 AV + EDR EDR AV + EDR SIEM + EDR AV + EDR
커널 드라이버 WdFilter.sys 전용 드라이버 전용 드라이버 Elastic Defend 전용 드라이버
탐지 엔진 클라우드 AI + ASR IOA + ML 행위 AI (ActiveEDR) 룰 기반 + YARA BSS + HIPS
자동 대응 격리/차단 격리/킬 킬 + 롤백 수동 (기본) 차단 + 롤백
LSASS 보호 ASR + PPL + Credential Guard 커널 수준 커널 수준 OS 의존 HIPS + 커널
가격대 E5 라이선스 포함 프리미엄 프리미엄 무료/상용 중간

6.2 T1055 프로세스 인젝션 — 서브 기법별 탐지 능력

범례: ● 탐지+차단  ◐ 부분 탐지  △ 구성 필요  ○ 미탐지 가능  — 해당 없음
서브 기법 ID Defender CrowdStrike SentinelOne Elastic Kaspersky
DLL 인젝션 .001
PE 인젝션 .002
스레드 하이재킹 .003
APC 인젝션 .004
TLS 콜백 인젝션 .005
Ptrace (Linux) .008
Proc Memory (Linux) .009
Extra Window Memory .011
프로세스 할로잉 .012
프로세스 도플갱잉 .013
VDSO 하이재킹 (Linux) .014
ListPlanting .015

6.3 T1055 — 탐지 레이어별 역량

탐지 레이어 Defender CrowdStrike SentinelOne Elastic Kaspersky
정적: 시그니처/IOC ★★★★☆ ★★★★☆ ★★★★☆ ★★★☆☆ ★★★★★
정적: IAT 분석 ★★★★☆ ★★★★☆ ★★★★☆ ★★☆☆☆ ★★★★☆
정적: 엔트로피/PE 이상 ★★★☆☆ ★★★★☆ ★★★★☆ ★★☆☆☆ ★★★☆☆
동적: API 모니터링 ★★★★☆ ★★★★★ ★★★★☆ ★★★☆☆ ★★★★☆
동적: 커널 수준 탐지 ★★★★☆ ★★★★★ ★★★★☆ ★★☆☆☆ ★★★★☆
동적: 메모리 스캔 ★★★★☆ ★★★★☆ ★★★★☆ ★★☆☆☆ ★★★☆☆
휴리스틱: 클라우드 평판 ★★★★★ ★★★★★ ★★★★☆ ★★☆☆☆ ★★★★☆
휴리스틱: 행위 점수 ★★★★☆ ★★★★★ ★★★★★ ★★★☆☆ ★★★★☆

6.4 T1055 — 우회 기법 대응력

우회 기법 Defender CrowdStrike SentinelOne Elastic Kaspersky
문자열 난독화 ● (동적) ● (IOA) ● (AI) ● (BSS)
IAT 은닉 (런타임 해결) ● (ETW) ● (커널) ● (하이브리드) ● (HIPS)
PE 패킹/암호화 ● (AMSI) ● (ML) ● (AI) ● (시스템감시)
직접 시스콜
모듈 스톰핑
콜백 기반 실행
프로세스 고스팅
파이버 기반 실행

6.5 T1055 — 탐지 시점 비교

인젝션 기법 Defender CrowdStrike SentinelOne Elastic Kaspersky
Classic DLL 인젝션 실행 시 실행 시 실행 시 실행 후 (룰 매칭) 실행 시
PE 인젝션 실행 시 실행 시 실행 시 실행 후 실행 시
프로세스 할로잉 실행 시 실행 시 실행 시 실행 후 실행 시
APC 인젝션 실행 시 실행 시 실행 시 실행 후 실행 시
프로세스 도플갱잉 실행 후 실행 시 실행 시 미탐지 가능 실행 후
직접 시스콜 인젝션 부분 탐지 탐지 (커널) 부분 탐지 미탐지 가능 부분 탐지
모듈 스톰핑 미탐지 가능 부분 탐지 미탐지 가능 미탐지 가능 미탐지 가능
탐지 시점 타임라인:

시간축 →  파일 드롭  →  실행 시작  →  API 호출  →  인젝션 완료  →  C2 통신
              |            |            |              |             |
Defender:  [시그니처]   [AMSI/ASR]   [ETW 탐지]    [차단/격리]      |
CrowdStrike:  [ML]     [IOA 시작]   [커널 탐지]   [즉시 차단]      |
SentinelOne: [정적AI]   [행위 분석]  [행위 탐지]   [킬+롤백]       |
Elastic:      |           |            |              |        [룰 매칭→알림]
Kaspersky: [시그니처]   [HIPS 시작]  [BSS 탐지]    [차단]          |

6.6 T1055 — 알림 방식 비교

제품 알림 명칭 예시 알림 수준 자동 조치
Defender "Process injection detected", "Suspicious process hollowing" High/Critical 격리, 프로세스 종료
CrowdStrike IOA: "Injected Thread in Remote Process" Critical 프로세스 킬, 격리
SentinelOne "Malicious — Process Injection", Storyline 연계 Threat (Critical) 자동 킬 + 롤백
Elastic "Suspicious Process Injection via CreateRemoteThread" Critical 알림만 (수동 대응)
Kaspersky "PDM:Exploit.Win32.Generic", "Dangerous activity detected" High 차단, 롤백

6.7 T1003 자격증명 덤핑 — 서브 기법별 탐지 능력

서브 기법 ID Defender CrowdStrike SentinelOne Elastic Kaspersky
LSASS 메모리 .001
SAM .002
NTDS .003
LSA Secrets .004
캐시된 도메인 자격증명 .005
DCSync .006 ● (Identity) ● (Ranger) ◐ (이벤트 룰) ● (네트워크)
/proc (Linux) .007
/etc/shadow (Linux) .008

6.8 T1003 — 도구별 탐지 능력

도구/방법 Defender CrowdStrike SentinelOne Elastic Kaspersky
Mimikatz (원본)
Mimikatz (패킹/변종)
Invoke-Mimikatz (PS) ● (AMSI)
comsvcs.dll MiniDump ● (ASR) ● (IOA) ◐ (룰)
procdump -ma lsass ● (ASR)
reg save SAM/SYSTEM
ntdsutil IFM
DCSync (Mimikatz)
secretsdump.py (Impacket)
Nanodump
Dumpert
LSASS 클로닝
SilentProcessExit
createdump.exe

6.9 T1003 — 예방적 방어 기능 비교

예방 기능 Defender CrowdStrike SentinelOne Elastic Kaspersky
LSASS PPL 보호 ✓ (기본 활성화 Win11) ✓ (호환) ✓ (호환) △ (OS 의존) ✓ (호환)
Credential Guard (VBS) ✓ (네이티브) ✓ (호환) ✓ (호환) △ (OS 의존) ✓ (호환)
ASR 규칙 (LSASS 보호) ✓ (전용 규칙) N/A (자체 IOA) N/A (자체 AI) N/A N/A (자체 HIPS)
LSASS 접근 차단
DCSync 네트워크 탐지 ✓ (Identity) ✓ (Ranger) ✓ (이벤트 룰) ✓ (네트워크)
자동 롤백 ✓ ActiveEDR
자격증명 덤핑 탐지 시점 타임라인:

시간축 →  도구 실행  →  LSASS 접근  →  메모리 읽기  →  덤프 파일 생성  →  자격증명 추출
              |            |              |               |                |
Defender:  [ASR 차단] ←── 접근 전 차단 (PPL + ASR 활성 시)
CrowdStrike:  [ML]     [커널 차단]   
SentinelOne: [정적AI]  [행위 차단]    
Elastic:      |           |              |               |           [이벤트 룰 알림]
Kaspersky: [시그니처]  [HIPS 차단]   

6.10 종합 점수 비교 (10점 만점)

평가 영역 Defender CrowdStrike SentinelOne Elastic Kaspersky
T1055 정적 탐지 8 9 8 5 8
T1055 동적 탐지 8 10 8 5 7
T1055 휴리스틱 9 9 8 4 7
T1055 종합 8.3 9.3 8.0 4.7 7.3
           
T1003 정적 탐지 9 9 9 6 9
T1003 동적 탐지 9 10 9 5 8
T1003 휴리스틱 9 9 8 4 7
T1003 예방 10 9 8 3 7
T1003 종합 9.3 9.3 8.5 4.5 7.8
           
전체 종합 8.8 9.3 8.3 4.6 7.6
레이더 차트:

CrowdStrike:  정적 9.0 | 동적 10.0 | 휴리스틱 9.0 | 자동대응 9.0
Defender:     정적 8.5 | 동적 8.5  | 휴리스틱 9.0 | 자동대응 8.0
SentinelOne:  정적 8.5 | 동적 8.5  | 휴리스틱 8.0 | 자동대응 9.5
Kaspersky:    정적 8.5 | 동적 7.5  | 휴리스틱 7.0 | 자동대응 7.0
Elastic:      정적 5.5 | 동적 5.0  | 휴리스틱 4.0 | 자동대응 3.0

6.11 의외의 발견들

CrowdStrike가 유일하게 탐지한 것들: 직접 시스콜 인젝션, 프로세스 고스팅, 콜백 기반 실행. 커널 드라이버 기반 아키텍처가 유저랜드 후킹의 한계를 넘어섰다.

Defender의 숨겨진 강점: Credential Guard + PPL + ASR의 조합은 자격증명 덤핑에 대해 예방적 방어 최강이다. LSASS 접근 자체를 원천 차단한다.

SentinelOne의 차별점: "Storyline" 기술이 인젝션 → C2 통신 → 횡이동을 하나의 공격 체인으로 연결한다. 개별 이벤트가 아닌 공격 스토리로 보여준다.

Elastic의 딜레마: 무료이고 커스터마이징이 자유롭지만, 기본 구성에서는 실시간 차단이 없다. 탐지는 하되 사후 알림이다. 전문 보안 인력이 있는 조직에서만 효과적이다.

모든 제품이 놓친 것: 모듈 스톰핑(Module Stomping) — 정상 DLL의 코드 섹션을 셸코드로 덮어쓰는 기법. 메모리가 디스크 파일에 "백킹"되어 있어 비백킹 메모리 스캔을 우회한다.


7. 탐지 공백 영역 식별

7.1 T1055 프로세스 인젝션 — 제품 간 공통 탐지 공백

공백 영역 우회 기법 영향받는 제품 위험도 보완 방안
직접 시스콜 SysWhispers, HellsGate, HalosGate 유저랜드 후킹 의존 제품 전체 크리티컬 ETW Threat Intel Provider + 커널 콜백
모듈 스톰핑 정상 DLL .text 섹션 덮어쓰기 비백킹 메모리 스캔 의존 제품 높음 디스크-메모리 불일치 검증
콜백 기반 실행 EnumWindows, Timer 콜백 CreateRemoteThread 모니터링 전용 제품 높음 광범위 콜백 API 모니터링
프로세스 고스팅 파일 삭제 후 섹션 매핑 파일 기반 스캔 의존 제품 높음 NtCreateSection 모니터링
파이버 기반 실행 CreateFiber/ConvertThreadToFiber 스레드 생성 모니터링 전용 제품 중간 파이버 API 모니터링 추가

7.2 T1003 자격증명 덤핑 — 제품 간 공통 탐지 공백

공백 영역 우회 기법 영향받는 제품 위험도 보완 방안
LSASS 클로닝 PssCaptureSnapshot 원본 LSASS만 모니터링하는 제품 높음 스냅샷 API 모니터링
SilentProcessExit 악용 WerFault.exe 이용 LSASS 덤프 정상 프로세스(WerFault) 허용 제품 높음 SilentProcessExit 레지스트리 모니터링
LoLBin 악용 createdump.exe, rdrleakdiag.exe, tttracer.exe 서명된 MS 도구 허용 제품 높음 LoLBin 대상 행위 룰 추가
커널 드라이버 기반 커널 드라이버로 LSASS 직접 읽기 PPL 미적용 환경 크리티컬 HVCI + DSE + PPL 활성화

7.3 제품별 고유 공백

제품 고유 공백 원인 보완 방안
Elastic Security 실시간 차단 부재 (기본 구성) 룰 기반 사후 탐지 아키텍처 Elastic Defend 에이전트 + 예방 정책 활성화
Elastic Security 커널 수준 가시성 제한 에이전트 의존도 낮음 전용 EDR 보완
Defender 모듈 스톰핑 탐지 제한 ETW 기반이나 백킹 검증 부족 타사 EDR 보완
SentinelOne 직접 시스콜 일부 미탐지 유저랜드 후킹 의존 영역 존재 커널 텔레메트리 강화
Kaspersky 고급 인메모리 기법 일부 BSS 패턴 업데이트 의존 행위 패턴 DB 주기적 업데이트

7.4 탐지 공백 히트맵

공격 기법 vs 제품 탐지 공백 (○ = 공백 존재, · = 공백 없음)

                         Defender  CrowdStrike  SentinelOne  Elastic  Kaspersky
──────────────────────────────────────────────────────────────────────────────
직접 시스콜 인젝션          ○          ·            ○          ○         ○
모듈 스톰핑                 ○          ○            ○          ○         ○
프로세스 고스팅              ○          ·            ○          ○         ○
콜백 기반 실행              ○          ·            ○          ○         ○
파이버 기반 실행            ○          ○            ○          ○         ○
LSASS 클로닝               ○          ·            ·          ○         ○
SilentProcessExit 악용     ○          ○            ○          ○         ○
LoLBin 크레덴셜 덤프        ○          ·            ○          ○         ○
──────────────────────────────────────────────────────────────────────────────
공백 개수                   7          2            6          8         7

CrowdStrike: 가장 적은 공백 (2개)
Elastic:     가장 많은 공백 (8개)

7.5 탐지 공백 심각도 매트릭스

                     Defender  CrowdStrike  SentinelOne  Elastic  Kaspersky
직접 시스콜            ◐          ●            ◐          ○         ◐
모듈 스톰핑            ○          ◐            ○          ○         ○
프로세스 고스팅         ◐          ●            ◐          ○         ◐
LSASS 클로닝           ◐          ●            ●          ○         ◐
LoLBin 자격증명 덤핑    ◐          ●            ●          △         ◐
DCSync 네트워크 탐지    ●          ●            ●          ◐         ●

● = 탐지 가능  ◐ = 부분 탐지  △ = 구성 필요  ○ = 미탐지 가능

Part 4: 결론 및 권고

8. 방어 권고사항

8.1 지금 당장 할 수 있는 3가지

1. LSASS PPL 활성화

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f

이것 하나로 미서명 프로세스의 LSASS 접근을 원천 차단한다.

2. Sysmon 배포 + LSASS 접근 모니터링

Sysmon Event ID 10이 자격증명 덤핑 탐지의 "최우선 단일 탐지 포인트"다.

<Sysmon schemaversion="4.90">
  <EventFiltering>
    <ProcessAccess onmatch="include">
      <TargetImage condition="is">C:\Windows\system32\lsass.exe</TargetImage>
    </ProcessAccess>
    <CreateRemoteThread onmatch="exclude">
      <SourceImage condition="is">C:\Windows\system32\svchost.exe</SourceImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>

3. ASR 규칙 활성화 (Defender 사용 시)

Defender ASR 규칙 활성화:
- "Block credential stealing from LSASS" (GUID: 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2)
- "Block process creations from PSExec and WMI" (GUID: d1e49aac-8f56-4280-b9ba-993a6d77406c)
- "Block Win32 API calls from Office macros" (GUID: 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b)

8.2 탐지 엔지니어링 권고

우선순위 탐지 규칙 대상 기법 구현 방법
P0 LSASS 접근 모니터링 T1003.001 Sysmon Event ID 10 + SIEM 규칙
P0 DCSync 탐지 T1003.006 Event ID 4662 GUID 필터링
P1 원격 스레드 생성 모니터링 T1055.001~004 Sysmon Event ID 8
P1 비백킹 실행 메모리 스캔 T1055 전체 EDR 메모리 스캔 기능
P1 SAM/SECURITY 레지스트리 접근 T1003.002, .004 레지스트리 감사 정책
P2 CREATE_SUSPENDED 프로세스 체인 T1055.012 프로세스 생성 이벤트 상관 분석
P2 LoLBin 비정상 사용 T1003 명령줄 인수 분석 규칙
P3 직접 시스콜 바이트 패턴 T1055 (우회) YARA 메모리 스캔

8.3 심층 방어 아키텍처

┌─────────────────────────────────────────────────┐
│              Layer 5: 하드웨어 기반 보호            │
│    UEFI Secure Boot, HVCI, VBS, Credential Guard   │
├─────────────────────────────────────────────────┤
│              Layer 4: 커널 수준 탐지               │
│    ETW Threat Intel, 커널 콜백, 드라이버 검증       │
├─────────────────────────────────────────────────┤
│              Layer 3: 동적/행위 탐지               │
│    API 모니터링, 메모리 스캔, 프로세스 관계 분석     │
├─────────────────────────────────────────────────┤
│              Layer 2: 정적 분석                    │
│    시그니처, YARA, IAT 분석, 엔트로피 분석         │
├─────────────────────────────────────────────────┤
│              Layer 1: 휴리스틱/평판                 │
│    클라우드 평판, 디지털 서명, 파일 경로 분석        │
└─────────────────────────────────────────────────┘

공격자가 Layer 1~2를 우회하는 것은 비교적 쉽다.
Layer 3을 우회하는 것은 어렵다.
Layer 4~5를 우회하려면 커널 수준 익스플로잇이 필요하다.
→ 공격의 비용과 복잡도를 극적으로 높인다.

9. 결론

이번 분석의 가장 중요한 교훈은 어떤 단일 제품도 모든 기법을 탐지하지 못한다는 것이다. 최고 점수인 CrowdStrike조차 모듈 스톰핑과 파이버 기반 실행에는 공백이 있다.

하지만 다계층 방어의 목표는 100% 탐지가 아니라, 공격자의 비용을 높이는 것이다. 하나의 레이어를 우회하면 다른 레이어에 걸리고, 두 레이어를 우회하면 세 번째에 걸린다. 공격자가 모든 레이어를 우회해야 한다면, 그 비용과 시간은 대부분의 공격 시나리오에서 수지가 맞지 않게 된다.

결국 방어의 핵심은 "뚫리지 않는 벽"이 아니라 "뚫는 비용이 너무 높은 벽"을 쌓는 것이다.


부록

부록 A: 제품별 강점/약점 요약

Microsoft Defender for Endpoint

강점 약점
Credential Guard + PPL 네이티브 통합 고급 인메모리 우회 기법 (모듈 스톰핑)
ASR 규칙으로 선제적 차단 직접 시스콜 부분 탐지
SmartScreen 클라우드 평판 일부 고급 기법에 업데이트 의존
Windows 생태계 최적화 비Windows 환경 미지원
E5 라이선스 포함 (추가 비용 없음) 별도 EDR 대비 커스터마이징 제한

CrowdStrike Falcon

강점 약점
커널 수준 가시성 최우수 프리미엄 가격
IOA 기반 행위 탐지 최강 오탐(False Positive) 관리 필요
직접 시스콜 탐지 가능 초기 설정 복잡도
Identity Protection 모듈 에이전트 리소스 사용량
크로스 플랫폼 (Win/Mac/Linux) 클라우드 의존도 높음

SentinelOne Singularity

강점 약점
ActiveEDR 자동 대응 + 롤백 직접 시스콜 부분 탐지
Storyline 기술로 공격 체인 연계 모듈 스톰핑 미탐지 가능
행위 AI 엔진 클라우드 분석 의존도
자율적 에이전트 (오프라인 동작) 일부 LoLBin 우회

Elastic Security

강점 약점
오픈소스 + 무료 탐지 규칙 실시간 차단 부재 (기본)
풍부한 커뮤니티 규칙 커널 수준 가시성 제한
EQL 기반 유연한 쿼리 자동 대응 부족
YARA + Osquery 통합 전문 EDR 대비 탐지 깊이 부족
커스터마이징 자유도 최고 휴리스틱/평판 엔진 약함

Kaspersky Endpoint Security

강점 약점
시그니처 DB 방대 (알려진 도구 탐지 최강) 고급 인메모리 기법 대응 지연
HIPS 규칙 기반 세밀한 제어 직접 시스콜 부분 탐지
시스템 감시(System Watcher) 롤백 BSS 패턴 업데이트 의존
가격 대비 성능 우수 지정학적 요인으로 일부 환경 제한

부록 B: 환경별 제품 배포 권고

환경 권장 조합 근거
엔터프라이즈 (대규모) CrowdStrike + Elastic (SIEM) 최강 탐지 + 로그 분석/커스텀 룰
중견기업 Defender (E5) + Sysmon 비용 효율 + 강력한 예방
스타트업/SMB SentinelOne 자동 대응으로 보안 인력 부담 최소
예산 제한 Elastic Security + Sysmon 무료 + 커스터마이징 가능
규정 준수 (국내) Kaspersky 또는 Defender 인증/검증 제품
최대 보안 CrowdStrike + Defender (이중) 모든 공백 최소화

부록 C: 실험 환경 및 재현 절차

본 보고서는 문헌 기반 분석입니다. 실증 검증을 원하는 경우 아래 절차를 따라 격리된 환경에서 테스트를 수행하십시오.

권장 실험 환경

구성 요소 권장 사항
가상화 VMware Workstation Pro / Hyper-V (격리 네트워크)
OS Windows 10 22H2 / Windows 11 23H2 / Windows Server 2022
도구 Sysmon, Process Monitor, API Monitor, x64dbg, PE-bear
네트워크 격리된 내부 네트워크 (인터넷 차단)
스냅샷 각 테스트 전 클린 스냅샷 필수

테스트 절차 (방어 검증 목적)

Phase 1: 베이스라인 수립
  ├── 클린 OS 설치 + 보안 제품 설치
  ├── Sysmon 구성 배포
  ├── 정상 행위 베이스라인 24시간 수집
  └── 스냅샷 생성

Phase 2: 정적 분석 레이어 테스트
  ├── 알려진 도구 시그니처 탐지 확인
  ├── IAT 기반 탐지 트리거 확인
  ├── 패킹/난독화 적용 후 재테스트
  └── 결과 기록: 탐지 여부, 시점, 알림 내용

Phase 3: 동적 분석 레이어 테스트
  ├── API 호출 시퀀스 모니터링 확인
  ├── 메모리 속성 변경 탐지 확인
  ├── 프로세스 관계 이상 탐지 확인
  └── 결과 기록: 탐지 여부, 시점, 알림 내용

Phase 4: 휴리스틱 레이어 테스트
  ├── 미서명 바이너리 + 인젝션 API 테스트
  ├── 비정상 경로 실행 테스트
  ├── 평판 없는 신규 바이너리 테스트
  └── 결과 기록: 탐지 여부, 시점, 알림 내용

Phase 5: 교차 레이어 상관관계 테스트
  ├── 정적 우회 후 동적 탐지 확인
  ├── 동적 우회 후 정적/휴리스틱 탐지 확인
  ├── 다중 레이어 동시 우회 시나리오
  └── 결과 기록 + 상관관계 매트릭스 작성

Phase 6: 멀티 제품 비교
  ├── 동일 테스트를 각 제품에서 수행
  ├── 탐지 시점, 레이어, 알림 방식 기록
  ├── 제품 간 공백 식별
  └── 최종 비교 매트릭스 작성

참고 자료