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

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

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

PowerShell 스크립트 보안

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

추천

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

PowerShell 보안에 대한 일반 정보

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

PowerShell 공격으로부터 방어

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

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

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

PowerShell 매개 변수 보안

매개 변수를 전달하는 것은 스크립트에 유연성을 부여하고 런타임까지 결정을 연기하는 방법입니다. 또한 또 다른 위험 표면이 열립니다.

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

  • 미리 정의된 매개 변수만 사용할 수 있습니다.
  • 정규식 기능을 사용하여 허용되는 매개 변수의 유효성을 검사합니다.
    • 예: 특정 값 범위만 허용되는 경우 정규식을 사용하여 범위를 구성할 수 있는 문자나 값만 검사합니다.
    • 매개 변수의 유효성을 검사하면 따옴표와 같이 이스케이프할 수 있는 특정 문자를 사용자가 사용하지 못하도록 방지할 수 있습니다. 따옴표에는 여러 유형이 있을 수 있으므로 허용되는 것으로 결정한 문자의 유효성을 정규식을 사용하는 것이 허용되지 않는 모든 입력을 정의하는 것보다 쉬운 경우가 많습니다.
  • 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 이상에 기본 제공되는 최신 버전의 PowerShell(예: 버전 5 이상)을 배포합니다. Windows Management Framework를 배포할 수도 있습니다.
  • 선택적으로 보호된 이벤트 로깅을 포함하여 PowerShell 로그를 사용하도록 설정하고 수집합니다. 이러한 로그를 서명, 헌팅 및 인시던트 응답 워크플로에 통합합니다.
  • 가치가 높은 시스템에 충분한 관리를 구현하여 해당 시스템에 대한 제약 없는 관리 액세스를 제거하거나 줄입니다.
  • Windows Defender Application Control 정책을 배포하여 사전 승인된 관리 작업이 PowerShell 언어의 전체 기능을 사용할 수 있도록 허용하는 한편 대화식 및 승인되지 않은 사용을 PowerShell 언어의 제한된 하위 집합으로 제한합니다.
  • Windows 10 이상을 배포하여 바이러스 백신 공급자에게 PowerShell을 비롯한 Windows 스크립팅 호스트에서 처리되는 모든 콘텐츠(런타임에 생성되거나 난독 처리된 콘텐츠 포함)에 대한 모든 액세스 권한을 부여합니다.