SECURITY AUTOMATIONCompleted

윈도우 보안 점검 자동화 툴

KISA 취약점 가이드 기반 64개 항목을 자동 점검하고 웹 대시보드로 결과를 시각화하는 Windows 보안 점검 도구.

📅 December 23, 2025[릴리즈 다운로드 →]
PowerShellWindowsPS2EXEVanilla JS

프로젝트 개요

KISA(한국인터넷진흥원) 기술적 취약점 분석·평가 방법 상세가이드를 기반으로 Windows 시스템의 보안 설정을 자동 점검하는 개인 프로젝트입니다. 실행 파일을 더블클릭하면 5개 카테고리 64개 항목을 순차 점검하고, 결과를 JSON으로 저장한 뒤 로컬 웹 대시보드로 시각화합니다. 외부 서버나 추가 설치 없이 .exe 단독 실행만으로 동작하며, 이 프로젝트는 이후 Ansible 기반 보안 점검 자동화 시스템의 기반이 됐습니다.

배경 및 동기

보안 공부를 하면서 KISA 취약점 점검 가이드를 접했는데, 이 가이드에 나온 항목들을 실제 시스템에서 직접 확인해보고 싶었습니다. 수작업으로 레지스트리를 열고 보안 정책을 확인하는 것은 비효율적이라 판단해, PowerShell로 전 항목을 자동화하고 결과를 한눈에 볼 수 있는 대시보드까지 직접 만들었습니다.

$

기술 스택

PowerShellPS2EXEHTML/CSS/JSChart.js.NET HttpListener
$

시스템 구조

실행 레이어
[SecurityChecker.exe (PS2EXE 패키징)]
점검 레이어
[계정 관리 (W-01~W-14)][서비스 관리 (W-15~W-37)][패치 관리 (W-38~W-39)][로그 관리 (W-40~W-43)][보안 관리 (W-44~W-64)]
데이터 수집
[Get-LocalUser / Get-LocalGroupMember][net accounts][secedit /export][레지스트리 (HKLM:\\SYSTEM, HKLM:\\SOFTWARE)]
결과 저장
[JSON 파일 (%APPDATA%\\SecurityChecker\\Results)]
시각화 레이어
[.NET HttpListener (로컬 HTTP 서버)][브라우저 자동 실행][Chart.js 도넛 차트][필터 / 검색 / CSV·보고서 내보내기]
↓ ↓ ↓ ↓

실행 파일 클릭 → 점검 수행 → JSON 저장 → 로컬 서버 구동 → 브라우저 대시보드 표시

점검 항목 (총 64개)

KISA 가이드의 항목 코드(W-01 ~ W-64)를 그대로 적용했습니다.

카테고리항목 수주요 점검 내용
계정 관리14개Administrator 계정 이름 변경, Guest 비활성화, 비밀번호 정책, 계정 잠금 임계값
서비스 관리23개불필요한 서비스(FTP/Telnet/SNMP/NetBIOS) 비활성화, 기본 공유(C$) 제거, RDP 암호화
패치 관리2개최신 Windows 빌드 적용, 백신 정의 업데이트 상태
로그 관리4개이벤트 로그 설정, NTP 시각 동기화, 로그 파일 접근 통제
보안 관리21개SAM 파일 보호, 레지스트리 원격 접근 제한, 자동 로그온 비활성화, 방화벽 설정

점검 방식 예시

항목확인 방법
Administrator 계정 이름 변경 (W-01)Get-LocalUser — SID 끝번호 -500 계정 이름 확인
비밀번호 복잡성 정책 (W-09)secedit /exportPasswordComplexity 값 파싱
계정 잠금 임계값 (W-04)net accounts 출력 파싱
EveryoneIncludesAnonymous (W-07)HKLM:\SYSTEM\CurrentControlSet\Control\Lsa 레지스트리 조회
LAN Manager 인증 수준 (W-59)HKLM:\SYSTEM\CurrentControlSet\Control\LsaLmCompatibilityLevel

웹 대시보드

점검 완료 후 결과 JSON 파일을 대시보드에 드래그앤드롭하면 아래 정보를 확인할 수 있습니다.

  • 요약 카드: 양호 / 관리 필요 / 수동 확인 필요 / 점검 불가 항목 수 한눈에 표시
  • Chart.js 도넛 차트: 상태별 분포, 카테고리별 분포 시각화
  • 상세 테이블: 코드, 카테고리, 항목명, 상태, 심각도(상/중/하), 현재 상태값, 상세 모달
  • 필터 & 검색: 상태 / 카테고리 / 심각도 필터 + 키워드 검색
  • CSV·보고서 내보내기: 점검 결과 즉시 CSV와 보고서 형태로 생성

Ansible 프로젝트와의 차이점

이 프로젝트를 만들면서 쌓은 경험이 이후 Ansible 기반 보안 점검 자동화 시스템으로 이어졌습니다.

윈도우 보안 점검 툴Ansible 자동화 시스템
대상로컬 윈도우 단일 시스템다수 서버 (원격)
실행 방식.exe 더블클릭Ansible Control Node (웹 대시보드)
언어PowerShellAnsible YAML + API
결과 조회로컬 웹 대시보드 (JSON 로드)REST API + 웹 대시보드

Ansible 기반 보안 점검 자동화 시스템 보기

배운 점

  • 직접 구현하며 체득한 Windows 보안 구조: 각 점검 항목을 하나씩 직접 PowerShell로 작성하고, 실행하여 반환값을 확인하고, 레지스트리 편집기와 보안 정책 창에서 실제 값을 대조하는 과정을 반복했습니다. 단순히 API 문서를 읽는 것과 달리, 값이 어떻게 바뀌는지 직접 눈으로 확인하면서 각 설정이 시스템에서 어떤 의미를 갖는지 체감할 수 있었습니다.
  • secedit 활용: 암호 복잡성 등 그룹 정책 값은 레지스트리에 직접 노출되지 않아 secedit /export로 정책 파일을 추출해 파싱하는 우회 방식을 찾아야 했습니다. 이 과정에서 Windows 보안 정책이 저장되는 구조를 실질적으로 이해하게 됐습니다.
  • .NET HttpListener: 외부 서버 없이 PowerShell에서 직접 HTTP 서버를 구동하는 방법을 배웠습니다.
  • PS2EXE 패키징: 스크립트를 .exe로 패키징하면서 배포 편의성과 사용자 경험을 함께 고려하게 됐습니다.