PowerShell 스크립트 보안에 대해 자세히 알아보기

적용 대상: Configuration Manager(현재 분기)

해당 환경에서 제안된 PowerShell 및 PowerShell 매개 변수 사용의 유효성을 검사하는 것은 관리자의 책임입니다. 다음은 관리자에게 PowerShell의 힘 및 잠재적 위험 노출 영역을 교육하는 데 도움이 되는 몇 가지 유용한 리소스입니다. 이 지침은 잠재적인 위험 표면을 완화하고 안전한 스크립트를 사용할 수 있도록 돕기 위한 것입니다.

PowerShell 스크립트 보안

Configuration Manager 스크립트 기능을 사용하면 스크립트를 시각적으로 검토하고 승인할 수 있습니다. 다른 관리자는 스크립트가 허용되도록 요청할 수 있습니다. 관리자는 PowerShell 스크립트에 난독 제거된 스크립트가 있을 수 있다는 것을 알고 있어야 합니다. 난독 처리된 스크립트는 악의적이고 스크립트 승인 프로세스 중에 시각적 검사를 통해 검색하기 어려울 수 있습니다. PowerShell 스크립트를 시각적으로 검토하고 검사 도구를 사용하여 의심스러운 스크립트 문제를 검색합니다. 이러한 도구는 PowerShell 작성자의 의도를 항상 확인할 수 없으므로 의심스러운 스크립트에 주의를 끌 수 있습니다. 그러나 도구는 관리자가 악의적이거나 의도적인 스크립트 구문인지 판단해야 합니다.

권장 사항

  • 아래에서 참조하는 다양한 링크를 사용하여 PowerShell 보안 지침을 숙지합니다.
  • 스크립트 서명: 스크립트를 안전하게 유지하는 또 다른 방법은 스크립트를 검사한 다음 서명한 후 사용을 위해 가져오기 전에 스크립트를 보호하는 것입니다.
  • PowerShell 스크립트에 비밀(예: 암호)을 저장하지 말고 비밀을 처리하는 방법에 대해 자세히 알아보세요.

PowerShell 보안에 대한 일반 정보

이 링크 컬렉션은 Configuration Manager 관리자에게 PowerShell 스크립트 보안 권장 사항에 대해 알아보기 위한 시작점을 제공하기 위해 선택되었습니다.

PowerShell 공격 방어

악성 코드 삽입으로부터 보호

PowerShell - Blue 팀에서 심층 스크립트 블록 로깅, 보호된 이벤트 로깅, 맬웨어 방지 검사 인터페이스 및 보안 코드 생성 API에 대해 설명합니다.

맬웨어 방지 검사 인터페이스용 API

PowerShell 매개 변수 보안

매개 변수 전달은 스크립트를 유연하게 사용하고 런타임까지 결정을 연기할 수 있는 방법입니다. 또한 또 다른 위험 표면을 엽니다.

다음 목록에는 악의적인 매개 변수 또는 스크립트 삽입을 방지하기 위한 권장 사항이 포함되어 있습니다.

  • 미리 정의된 매개 변수만 사용할 수 있습니다.
  • 정규식 기능을 사용하여 허용되는 매개 변수의 유효성을 검사합니다.
    • 예: 특정 값 범위만 허용되는 경우 정규식을 사용하여 범위를 구성할 수 있는 문자 또는 값만 확인합니다.
    • 매개 변수의 유효성을 검사하면 사용자가 따옴표와 같이 이스케이프할 수 있는 특정 문자를 사용하지 못하게 할 수 있습니다. 여러 종류의 따옴표가 있을 수 있으므로 정규식을 사용하여 허용되는 문자의 유효성을 검사하는 것이 허용되지 않는 모든 입력을 정의하는 것보다 더 쉬운 경우가 많습니다.
  • PowerShell 갤러리 PowerShell 모듈 "삽입 헌터"를 사용합니다.
    • 가양성일 수 있으므로 의심스러운 것으로 플래그가 지정된 경우 의도를 찾아 실제 문제인지 여부를 확인합니다.
  • Microsoft Visual Studio에는 PowerShell 구문을 확인하는 데 도움이 될 수 있는 스크립트 분석기가 있습니다.

"DEF CON 25 - Lee Holmes - get $pwnd: Attacking Battle Hardened Windows Server"라는 제목의 비디오는 보호할 수 있는 문제 유형(특히 섹션 12:20~17:50)에 대한 개요를 제공합니다.

환경 권장 사항

다음 목록에는 PowerShell 관리자에 대한 일반적인 권장 사항이 포함되어 있습니다.

  • Windows 10 이상에 기본 제공되는 버전 5 이상과 같은 최신 버전의 PowerShell을 배포합니다. Windows Management Framework 배포할 수도 있습니다.
  • 필요에 따라 보호된 이벤트 로깅을 포함하여 PowerShell 로그를 사용하도록 설정하고 수집합니다. 이러한 로그를 서명, 헌팅 및 인시던트 대응 워크플로에 통합합니다.
  • 고가치 시스템에서 Just Enough Administration을 구현하여 해당 시스템에 대한 제한 없는 관리 액세스를 제거하거나 줄입니다.
  • 사전 승인된 관리 작업이 PowerShell 언어의 전체 기능을 사용할 수 있도록 Windows Defender 애플리케이션 제어 정책을 배포하고 대화형 및 승인되지 않은 사용을 PowerShell 언어의 제한된 하위 집합으로 제한합니다.
  • Windows 10 이상 배포하여 PowerShell을 포함한 Windows 스크립팅 호스트에서 처리하는 모든 콘텐츠(런타임에 생성되거나 난독 처리된 콘텐츠 포함)에 대한 모든 액세스 권한을 바이러스 백신 공급자에게 제공합니다.