이번에는 주통기 W-01, 02, 04, 06을 점검하는 스크립트를 작성해보겠습니다.

import subprocess
import re
def check_administrator_account():
"""Administrator 계정 정보를 점검하는 함수"""
# net user administrator 명령 실행
result = subprocess.run("net user administrator", shell=True, capture_output=True, text=True)
if "The command completed successfully." in result.stdout:
return "취약: Administrator 계정이 변경되지 않았거나 비밀번호가 약할 가능성이 있습니다."
elif "The user account is disabled." in result.stdout:
return "양호: Administrator 계정이 비활성화되어 있습니다."
else:
return "양호: Administrator 계정이 변경되었거나 강력한 비밀번호가 설정되어 있을 가능성이 있습니다."
if __name__ == "__main__":
# Administrator 계정 정보 점검
result = check_administrator_account()
# 결과 출력
print(result)
위 코드를 통해 Windows 서버의 Administrator 계정 이름이 변경되었거나 강력한 비밀번호가 설정되었는지 여부를 파이썬 코드를 통해 자동으로 점검할 수 있습니다.
만약 '취약'이 나왔다면 Administrator의 계정의 이름을 바꾸고 보안성이 있는 비밀번호를 설정해야합니다.

윈도우 cmd를 통해 실행시킨 결과 '양호'가 나왔습니다.

import subprocess
def check_guest_account():
"""Guest 계정 상태를 점검하는 함수"""
# net user guest 명령 실행
result = subprocess.run("net user guest", shell=True, capture_output=True, text=True)
# 결과 분석
if "The user account is active." in result.stdout:
return "취약: Guest 계정이 활성화되어 있습니다."
else:
return "양호: Guest 계정이 비활성화되어 있습니다."
if __name__ == "__main__":
# Guest 계정 상태 점검
result = check_guest_account()
# 결과 출력
print(result)
Guest 계정의 활성 상태를 점검하는 코드를 작성하였습니다.
만약 '취약'이 나온다면 Guest 계정을 비활성화 해야합니다.

윈도우 cmd를 통해 확인한 결과 '양호'가 나왔습니다.

import subprocess
def check_account_lockout_threshold():
"""계정 잠금 임계값을 점검하는 함수"""
# net accounts /forcelogoff:5 명령 실행
result = subprocess.run("net accounts /forcelogoff:5", shell=True, capture_output=True, text=True)
# 결과 분석 (예시 출력: The account lockout threshold is 5 bad logon attempts.)
if "The account lockout threshold is 5" in result.stdout:
return "양호: 계정 잠금 임계값이 5 이하로 설정되어 있습니다."
else:
return "취약: 계정 잠금 임계값이 5 초과로 설정되어 있습니다."
if __name__ == "__main__":
# 계정 잠금 임계값 점검
result = check_account_lockout_threshold()
# 결과 출력
print(result)
Windows 서버의 계정 잠금 임계값이 5 이하로 설정되어 있는지 확인하는 코드입니다.
만약 '취약'이 나온다면 계정 잠금 임계값을 5 이하로 내려주어야합니다.

윈도우 cmd를 통해 확인한 결과 '취약'이 나왔습니다.
따라서 계정 임계값을 5 이하로 내려주었습니다.

import subprocess
def check_administrators_group():
"""Administrators 그룹 구성원을 점검하는 함수"""
# net localgroup administrators 명령 실행
result = subprocess.run("net localgroup administrators", shell=True, capture_output=True, text=True)
# 결과 분석 (단순화된 예시, 실제 환경에서는 더 복잡한 로직 필요)
if "Guest" in result.stdout:
return "취약: Administrators 그룹에 Guest 계정이 포함되어 있습니다."
else:
return "양호: Administrators 그룹에 불필요한 사용자가 발견되지 않았습니다."
if __name__ == "__main__":
# Administrators 그룹 구성원 점검
result = check_administrators_group()
# 결과 출력
print(result)
위 코드는 Administrator 그룹 구성원을 점검하는 코드입니다.
만약 Administrator 그룹에 불필요한 계정이 존재할 경우 '취약'이 출력됩니다.

점검 결과 '양호'가 나왔습니다.
위 w-01 ~ w-06 점검 항목들의 취약이 나온 부분을 조치하고 다시 실행한 결과입니다.

감사합니다.