티스토리 뷰

91번째 글.

 

 

 

1. Powershell

Windows 파워셸은 마이크로소프트가 시스템 관리자들을 위해 만든 명령어 셸이다.
파워셸은 Windows 명령줄과 마찬가지로 강력한 스크립팅 환경뿐만 아니라 대화형 명령 프롬프트도 제공한다.
PowerShell은 Windows에서 응용 프로그램을 빌드하고 실행하는 데 사용되는 NET Framework 위에 구축되어 있다.
운영 체제와 상호작용하기 위한 매우 강력한 도구가 된다.
명령 프롬프트처럼 파워셸은 우리가 파일 시스템에 직접적으로 접근할 수 있도록

하며 cmd shell에서 사용한 주요 명령어들 또한 실행할 수 있다.

 

 

 

2. Cmdlet

파워셸은 셸안에 내장되어있는 single-function인 cmdlet(command let)을 이용한다.
100개 이상의 핵심 cmdlet이 있고 계속 작성되고 있으며 더 복잡한 작업을 수행하기 위해 자체적으로 제작할 수 있다.
또한 PowerShell은 시스템 관리 작업, 자동화 등에 사용되는 단순 및 복잡한 스크립트를 모두 지원한다.

cmdlet은 아래와 같이 '동사-명사' 형태로 이루어진다. 'Get-ChildItem' 명령을 사용하여 현재 디렉터리를 나열할 수 있다.


또한 인자나 플레그를 가진다. 'Get-ChildItem -'을 입력하고 탭키를 누를 때마다 사용할  수 있는 인자가 나온다.


예시로 'Get-ChildItem -Recurse'는 현재 작업 디렉토리와 모든 서브 디렉토리의 컨텐츠들을 보여준다.
다른 예시로는 'Get-ChildItem -Path C:\Users\Administrator\Documents'는 다른 디렉토리의 컨텐츠를 얻을 수 있다.

 

 

 

3. Aliases

많은 파워셸안에 있는 cmdlets은 aliases를 가지고 있다. 예를 들어 디렉토리를 변경하는 'Set-Location'의 별칭은 cd 또는 sl이다. 'Get-ChildItem' 경우에는 ls와 gci가 있다.

모든 별칭을 보고 싶으면 아래와 같이 'Get-Alias'를 입력하면 된다.

 

'New-Alias'를 사용하여 별칭을 설정하고 'Get-Alias -Name <aliase-name>'을 사용하여 cmdlet에 대한 별칭을 볼 수 있다.

 

 

 

4. Running Scripts

파워셸 ISE(Integrated Scripting Environment)를 사용하면 파워셸 스크립트를 즉시 작성할 수 있다.
이것은 또한 파워셸 명령어를 위한 autocomplete/lookup function을 가지고 있다.
파워셸 ISE를 사용하면 동일한 콘솔에서 우리가 스크립트를 작성하고 실행할 수 있게 해 주며 빠른 디버깅을 하도록 해준다.

 

 

 

5. Execution Policy

가끔씩 시스템에서 실행할 수 없는 스크립트를 만날 수 있는데

이는 실행 정책이라는 악의적인 스크립트의 실행을 차단하는 보안 기능 때문이다.

 

정책 설명
AllSigned 모든 스크립트를 실행할 수 있지만 신뢰할 수 있는 게시자는 스크립트 및 구성 파일에 서명해야한다. 로컬 또는 원격 스크립트 모두를 포함한다.
Bypass 스크립트나 구성 파일이 차단되지 않으며 사용자에게 경고 또는 프롬프트가 표시되지 않는다.
Default 실행 정책의 디폴트, Restricted for Windows desktop machines and RemoteSigned for 
Windows servers.
RemoteSigned 스크립트를 실행할 순 있지만 인터넷에서 다운로드한 스크립트에 대해서
디지털 서명이 필요하다.(로컬에서 작성된 스크립트는 디지털 서명 필요 x)
Restricted 개별 명령은 허용하지만 스크립트 실행은 허용하지 않는다.
All script file types, including configuration files (.ps1xml), module script files (.psm1), and
PowerShell profiles (.ps1) are blocked
Undefined 실행정책이 현재 scope에서 설정되지 않음.
모든 scope에 대한 실행 정책이 undefined이면 기본 실행 정책인 Restricted가 설정된다.
Unrestricted Windows가 아닌 시스템의 기본 실행 정책이며 변경할 수 없다.
서명되지 않은 스크립트를 실행할 수 있도록 허용하지만 로컬 인트라넷 영역에 없는 스크립트를 실행하기 전에 사용자에게 경고한다.

실행 정책은 사용자 작업을 제한하는 보안 제어가 아니다.
사용자는 PowerShell 창에 스크립트 내용을 직접 입력하거나 스크립트를 다운로드 및 호출하거나 

스크립트를 인코딩 된 명령으로 지정하여 정책을 쉽게 우회할 수 있다.
실행 정책(사용자가 적절한 권한을 가진 경우)을 조정하거나 현재 프로세스 범위에 대한 실행 정책을 설정하여 우회할 수 있다.
(설정을 변경할 필요가 없으며 사용자 세션 기간 동안만 설정되므로 거의 모든 사용자가 이 작업을 할 수 있다.)

 

'Get-ExecutionPolicy -List'를 통해 모든 scope의 실행 정책을 확인할 수 있다.

 

Reference

'study > pentest' 카테고리의 다른 글

[pentest] Local File Inclusion  (2) 2022.05.01
[pentest] Web Fuzzing에 있어서 Sub-domains, Vhost 차이점  (0) 2022.03.08
[pentest] IMAP/POP3  (0) 2022.03.04
[pentest] SMTP  (0) 2022.02.23
[pentest]Enumeration Principles & Methodology  (0) 2022.02.10