본문 바로가기

Learning/└◆Shell Scripts

[System Hacking] 윈도우 취약점 체크리스트 & 안전진단 스크립트 제작

[본 문서는 http://blog.naver.com/sbd38 의 블로그에 기재되어 있으며 학습 용도로

문서를 훼손 또는 수정하지 않았습니다.]

 

윈도우 취약점 체크리스트

 

윈도우 취약점 점검시 확인해야할 사항

대부분의 보안종사자들은 자동화된 툴을 이용하여 다음 취약점들을 점검한다.

간단한 것들은 한번 제작해 보는 것도 공부에 도움이 될 것이다.

 

Windows 취약점 점검 결과

항목

항목번호

세부항목

중요도

점수

장비명

진단결과

점수환산

상세내용

계정 및 패스워드 관리

SW101

Administrator 계정의 이름을 변경하였는가? 

  중

 

 

 

 

SW102

관리자 그룹에 일반 사용자 계정이 존재하지 않는가?

  중

 

 

 

 

SW103

취약한 패스워드를 사용하고 있지 않은가? 

  상

 

 

 

 

SW104

최근 암호를 기억하도록 설정되어 있는가?

  하

 

 

 

 

SW105

패스워드의 최소 길이를 8자 이상으로 설정하였는가? 

  중

 

 

 

 

SW106

잘못된 로그인 시도를 하면 계정을 잠그도록 임계값을 설정하였는가? (5회) 

  중

 

 

 

 

SW107

패스워드 최대 사용기간을 설정하였는가? 

  중

 

 

 

 

접근제어

SW201

널 세션 접근을 차단하도록 설정 하였는가? 

  중

 

 

 

 

SW202

불필요한 공유 디렉토리가 존재하지 않는가? 

  중

 

 

 

 

SW203

허가된 사용자에게만 원격에서 레지스트리에 접근할 수 있도록 제한되어 있는가? 

  상

 

 

 

 

SW204

화면 보호기에 암호를 설정하도록 되어있는가?

  중

 

 

 

 

파일 시스템

SW301

하드디스크는 모두 NTFS로 포맷되어 있는가? 

  하

 

 

 

 

SW302

원격에서 로그온한 사용자가 시스템을 shutdown 할 수 없게 설정되어 있는가? 

  상

 

 

 

 

SW303

관리자 계정으로 자동 로그온 할 수 없도록 설정되어 있는가? 

  상

 

 

 

 

SW304

관리자 계정으로 자동 로그온 할 수 없도록 설정되어 있는가? 

  중

 

 

 

 

SW305

시스템 종료 시 페이지 파일을 삭제하는가? 

  하

 

 

 

 

SW306

윈도우 시스템 디렉토리에 대하여 적당한 ACL을 설정하였는가? 

  상

 

 

 

 

서비스 제어

SW401

터미널 서버가 디폴트 포트를 변경하여 사용하고 있는가? 

  하

 

 

 

 

SW402

웹에서 Command Shell을 실행하지 못하게 설정 하였는가? 

  상

 

 

 

 

SW403

MS 샘플 파일을 삭제 하였는가? 

  중

 

 

 

 

SW404

웹 루트 디렉토리와 시스템 디렉토리가 서로 다른 드라이브에 있는가ㅏ? 

  중

 

 

 

 

SW405

익명 FTP를 사용하지 않는가? 

  중

 

 

 

 

SW406

IIS 샘플 파일을 삭제하였는가? 

  중

 

 

 

 

SW407

불필요한 Startup 서비스는 제거 되었는가? 

  중

 

 

 

 

로그관리

SW501

Anonymous에 의한 이벤트로그의 읽기권한을 제한하였는가?

  하

 

 

 

 

SW502

이벤트 로그 겹쳐쓰기 시간 설정을 하였는가? 

  중

 

 

 

 

SW503

로그 정책 변경 검사를 하도록 설정되어 있는가? 

  중

 

 

 

 

SW504

프로세스 추적 검사를 하도록 설정되어 있는가?

  하

 

 

 

 

SW505

IIS 웹서버 로그를 관리하고 있는가?

  하

 

 

 

 

기타 보안관리 및 패치

SW601

로그온 경고 메세지를 설정하였는가? 

  하

 

 

 

 

SW602

서비스팩 최종버전 및 최신 핫픽스가 설치되어 있는가? 

  상

 

 

 

 

표 출처 (i2sec.co.kr)

 

 

 

안전진단 스크립트 제작

 

 

안전진단 체크리스트에 따라 사람이 일일이 검사하는 게 좋겠지만

실상에선 많은 검사량 때문에 쉽지 않을 것이다.

그래서 대부분의 검사를 자동화된 스크립트를 사용하는 것이 일반적이다.

 

따라서 배치파일을 만들어 자동검사를 구현하자.

 

-검사항목-

1. Administrator 계정 존재시 이름 변경

2. Guest 계정 활성화시 비활성화 변경


 

■ 안전진단 코드

 

@echo off

쉘 창에 결과만 표시한다. 명령어 입력을 보여주지 않는다.

 

secedit /export /cfg i2sec.inf

보안설정파일을 edit한다. 위와같이 적으면 C:드라이브 최상위에 위치한다.

 

setlocal

밑줄부터는 지역변수로 설정한다.

 

set flags=0

flags변수를 0으로 초기화

 

echo [Administrators 계정관리]

 

for /f "skip=3 tokens=*" %%a in ('type i2sec.inf') do (

i2sec.inf에서 3줄을 skip하고 한줄씩 한뭉터기로 불러온다. /f는 파일내용을 불러올때 쓰는 옵션이다.

배치파일내에서는 변수를 %%변수 형식으로 사용한다. cmd창에서의 변수는 %변수로 사용한다.

 

if"%%"=="NewAdministratorName = "Administrator"" (

echo Administrator 계정발견 [CAUTION]

set /p flags="Administrator 계정 이름을 변경하시겠습니까?<y/n>"

관리자 계정이 있다면 메세지를 띄우고 flags에 입력을 받는다.

/p는 문자를 변수에 할당할 때 사용한다.

)

)

if /i "%flags%"=="y" (

wmic useraccount where name='Administrator' rename 'i2sec'

flags에 y를 입력받았으면 다른 이름으로 바꾼다.

)

 

net user Guest /active:no

게스트 계정 비활성

echo Guest 계정 비활성[OK]


Win XP 기준으로 제작된 스크립트이며 메모장으로 쓴 뒤에 확장자만 bat로 하면 실행 가능하다.