주요정보통신기반시설 기술 취약점 분석 가이드 W-01, W-02, W-04, W-06 점검 스크립트

김동현·2024년 12월 13일

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

W-01


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를 통해 실행시킨 결과 '양호'가 나왔습니다.

W-02


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를 통해 확인한 결과 '양호'가 나왔습니다.

W-04


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 이하로 내려주었습니다.

W-06


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 점검 항목들의 취약이 나온 부분을 조치하고 다시 실행한 결과입니다.

감사합니다.

profile
코딩

0개의 댓글