윈도우 서버간 통신을 자동스크립트를 생성하여 파일 배포 및 명령어 실행 시 패스워드를 하드코딩해서 넣으면 보안취약점으로 지적을 받습니다.

이때 패스워드를 파일로 암호화하여 저장해 두고, 변수로 선언하여 사용하는 방법이 있네요.

 

암호화 파일 만들기

PS C:\WINDOWS\system32> Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File -FilePath c:\cred.txt
************* # 패스워드 입력
PS C:\WINDOWS\system32>

 

cred.txt 내용 보기

01000000d08c9ddf0115d1118c7a00c04fc297eb010000000b464dafe9afab4a8b426b3595128ba00000000002000000000003660000c000000010000000be62cdae82fc8a4f2cd7bf2ea3089ac60000000004800000a000000010000000a2b5f4768a73d76011a84bc70dd5e9c610000000c73efee628af3c133ad0e42befb36257140000001d386d28f83d911c3b4aac2f323d824a1627c2a6

 

암호화된 파일 읽어오기

$cred = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
$cred = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($cred)
$cred = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($cred)

 

다른 서버에서 cred.txt 파일을 복호화 하니까 오류가 나네요.

PS C:\Users\Administrator> $cred = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
ConvertTo-SecureString : Key not valid for use in specified state.
At line:1 char:53
+ ...  = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
+                                                    ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
    + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.Conv
   ertToSecureStringCommand

PS C:\Users\Administrator>

 

활용 방안

#powhershell에서만 적용
# 변수에 저장된 패스워드 파일로 해당 서버의 자격증명을 생성
cmdkey /generic:192.168.000.000 /user:administrator /pass:$cred

# 생성한 자격증명의 서버에 패스워드 없이 접속하기
mstsc /v 192.168.000.000

'기술 노트 > Windows' 카테고리의 다른 글

Windows 로그인 OTP 적용하기  (1) 2024.10.10
출력문에서 필드 변수 선언하기  (0) 2024.01.18
virtualbox 설치하기  (0) 2023.09.27
Windows PC 시간 예약해서 끄기  (0) 2023.06.23
가상 OS 설치하기  (0) 2023.05.10

+ Recent posts