Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 자격 증명 관리자로 저장된 암호 안전하게 관리하는 방법

Windows 자격 증명 관리자(Credential Manager)는 네트워크 리소스, 웹사이트, 앱에 접근하기 위한 자격 증명(사용자 이름과 암호)을 저장할 수 있는 기능입니다. 자격 증명 관리자를 사용하면 암호를 직접 입력하지 않고도 원격 리소스에 자동으로 연결할 수 있으며, 앱 역시 자격 증명 관리자에 접근해 저장된 암호를 활용할 수 있습니다.

목차

  • Windows에서 자격 증명 관리자로 암호 저장하기
  • PowerShell에서 Windows 자격 증명 관리자 접근하기

Windows에서 자격 증명 관리자로 암호 저장하기

자격 증명 관리자는 Windows 7부터 도입되었으며, 암호를 보관하기에 상당히 안전한 공간으로 평가받고 있습니다.

Windows 10의 자격 증명 관리자는 다음과 같은 계정 유형을 저장할 수 있습니다.

  • Windows 자격 증명(Windows Credentials) – Windows 로그온 또는 원격 컴퓨터 접근용 자격 증명, RDP 연결용 저장 암호, Windows 통합 인증을 지원하는 웹사이트 암호 등. 단, Windows 자동 로그인 자격 증명이나 도메인 캐시 자격 증명은 저장하지 않습니다.
  • 인증서 기반 자격 증명(Certificate-Based Credentials) – 스마트 카드를 이용한 인증용
  • 일반 자격 증명(Generic Credentials) – 자격 증명 관리자와 호환되는 타사 앱에서 사용
  • 웹 자격 증명(Web Credentials) – Edge 및 IE, Microsoft 앱(MS Office, Teams, Outlook, Skype 등)에 저장된 암호

예를 들어, 공유 네트워크 폴더에 접근할 때 '암호 저장(Save Password)' 옵션을 활성화하면 입력한 암호가 자격 증명 관리자에 저장됩니다.

마찬가지로 원격 RDP/RDS 호스트에 연결하기 위한 암호는 원격 데스크톱 연결(mstsc.exe) 클라이언트에 저장됩니다.

또한 runas /savecred 명령으로 저장한 사용자 암호도 자격 증명 관리자에 보관됩니다.

Windows 10에서는 제어판(Control Panel → 사용자 계정 → 자격 증명 관리자)을 통해 자격 증명 관리자에 접근할 수 있습니다.

여기서는 저장된 자격 증명을 추가하거나 편집하거나(그래픽 인터페이스에서는 저장된 암호를 직접 볼 수 없음), 삭제할 수 있습니다. RDP 연결용으로 저장된 암호는 TERMSRV\호스트명 형식으로 지정됩니다.

기존의 저장된 사용자 이름 및 암호(Stored User Names and Passwords) 인터페이스를 사용해 저장된 암호를 관리할 수도 있습니다. 아래 명령을 실행하면 호출됩니다.

rundll32.exe keymgr.dll,KRShowKeyMgr

이 창에서도 저장된 자격 증명을 관리할 수 있으며, 자격 증명 관리자의 백업 및 복원 기능도 제공합니다. 이 기능을 활용하면 자격 증명 관리자 데이터베이스를 다른 컴퓨터로 이전할 수 있습니다.

vaultcmd 도구를 사용하면 명령 프롬프트에서 자격 증명 관리자를 관리할 수 있습니다. 예를 들어, 저장된 Windows 자격 증명 목록을 표시하려면 다음 명령을 실행합니다.

vaultcmd /listcreds:"Windows Credentials"

Credential schema: Windows Domain Password Credential
Resource: Domain:target=mun-dc01
Identity: RESDOM\j.brion
Hidden: No
Roaming: No
Property (schema element id,value): (100,3)
Property (schema element id,value): (101,SspiPfAc)

다음 명령은 자격 증명 관리자에서 저장된 모든 RDP 암호를 삭제합니다.

For /F "tokens=1,2 delims= " %G in ('cmdkey /list ^| findstr "target=TERMSRV"') do cmdkey /delete %H

저장된 모든 암호는 Windows Vault에 보관됩니다. Windows Vault는 암호, 기밀 정보 등 민감한 사용자 정보를 보관하는 보호된 저장소로, 데이터는 Vault 스키마에 속한 항목 집합으로 구조화되어 있습니다. Windows Vault 항목의 암호화 키 집합은 Policy.vpol 파일에 저장됩니다.

도메인 사용자의 경우 %userprofile%\AppData\Roaming\Microsoft\Vault에, 로컬 사용자의 경우 %userprofile%\AppData\Local\Microsoft\Vault에 위치합니다.

자격 증명 관리자를 사용하려면 VaultSvc 서비스가 실행 중이어야 합니다.

Get-Service VaultSvc

서비스가 비활성화되어 있으면 자격 증명 관리자에 접근할 때 다음과 같은 오류가 표시됩니다.

Credential Manager Error
The Credential Manager Service is not running. You can start the service manually using the Services snap-in or restart your computer to start the service.
Error code: 0x800706B5
Error Message: The interface is unknown.

사용자가 자격 증명 관리자에 네트워크 암호를 저장하지 못하도록 하려면, 컴퓨터 구성 → Windows 설정 → 보안 설정 → 로컬 정책 → 보안 옵션에서 '네트워크 액세스: 네트워크 인증을 위해 암호 및 자격 증명 저장 허용 안 함' GPO 옵션을 활성화합니다.

그러면 사용자가 Windows Vault에 암호를 저장하려 할 때 다음과 같은 오류가 표시됩니다.

Credential Manager Error
Unable to save credentials. To save credentials in this vault, check your computer configuration.
Error code: 0x80070520
Error Message: A specified logon session does not exist. It may already have been terminated.

PowerShell에서 Windows 자격 증명 관리자 접근하기

Windows에는 PowerShell에서 PasswordVault 저장소에 접근할 수 있는 기본 제공 cmdlet이 없습니다. 하지만 PowerShell 갤러리의 CredentialManager 모듈을 사용하면 됩니다.

모듈을 설치하려면 다음 명령을 실행합니다.

Install-Module CredentialManager

모듈의 cmdlet 목록은 다음 명령으로 확인할 수 있습니다.

Get-Command -module CredentialManager

이 모듈에는 4개의 cmdlet이 있습니다.

  • Get-StoredCredential – Windows Vault에서 자격 증명 가져오기
  • Get-StrongPassword – 무작위 암호 생성
  • New-StoredCredential – 자격 증명 추가
  • Remove-StoredCredential – 자격 증명 제거

Windows 자격 증명 관리자에 새 자격 증명을 추가하려면 다음 명령을 실행합니다.

New-StoredCredential -Target 'woshub' -Type Generic -UserName 'maxbak@woshub.com' -Password 'Pass321-b' -Persist 'LocalMachine'

저장된 사용자 자격 증명이 있는지 확인하려면 다음과 같이 입력합니다.

Get-StoredCredential -Target woshub

PowerShell 스크립트에서 자격 증명 관리자에 저장된 암호를 활용할 수 있습니다. 예를 들어, Windows Vault에서 저장된 사용자 이름과 암호를 PSCredential 개체로 가져와 PowerShell에서 Exchange Online에 연결할 수 있습니다.

$psCred = Get-StoredCredential -Target "woshub"
Connect-MSolService -Credential $psCred

참고로, Windows에서 암호를 안전하게 보관하는 데 사용할 수 있는 새로운 PowerShell Secret Management 모듈도 있습니다. KeePass, LastPass, HashiCorp Vault, Azure Key Vault, Bitwarden 등 다양한 암호 볼트를 지원합니다.

Windows Vault에서 자격 증명을 제거하려면 다음 명령을 실행합니다.

Remove-StoredCredential -Target woshub

기본 제공 CLI 도구로는 암호를 일반 텍스트로 표시할 수 없습니다. 다만 Mimikatz와 유사한 유틸리티를 사용하면 credman에 저장된 암호를 일반 텍스트로 추출할 수 있으므로, 보안에 유의해야 합니다.