보안 / 개발 챌린저가 목표

Window 서버 진단 (2) 본문

IT Security/Class_Do it

Window 서버 진단 (2)

햄미은서 2020. 9. 23. 13:47

~ 서비스 관리 ~

   - 어떤 서비스인지 테스트해보고, 어떤 부분에서 약점이 있는지 찾아보고, 이 서비스를 대체할 것은 어떤 것이 있는지 찾아보면 좋다!

▶ 하드디스크 기본 공유 제거

   - 윈도우 운영체제에서 기본적으로 실행되고 있는 원격관리용 서비스이다.

     * 원격관리?

        서버에 접근권한을 가진 관리자가 자주 사용하는 PC와서버에 물리적으로 접근이 용이하지 않을 때,

        빠른 접속을 통한 장애처리 등을 위해 관리자 PC에서 윈도우 서버에 네트워크를 이용한 원격접속을 말함

 

   - 하드디스크 기본 공유를 통한 원격접속 위협(제거하라고 하는 이유)

     ☞ 하드디스크 기본공유에 대한 관리미흡으로 불법접근 및 윈도우 서버 장악

        * 관리 미흡?

          ① 하드디스크 기본공유 서비스에 대해 잘 인지하지 못한 상태에서 지속적으로 운영되는 경우

          ② 하드디스크 기본공유 뿐만 아니라 다른 원격접속 서비스(SSH, Telnet 등)를 사용하고 있는 경우

          ③ 하드디스크 기본공유를 이용한 원격접속 접근제어가 이루어지지 않은 경우

      ⇒ 내ㆍ외부 공격자가 하드디스크 공유 접속을 위한 계정 및 패스워드를 획득한 후 무단으로 원격접속이 가능할 수 있다.

 

   - 하드디스크 기본공유를 이용한 원격접속하는 명령어

     ☞ 관리자 PC ⇒ 윈도우 서버(하드디스크 기본공유)

     ☞ 관리자 PC(Client)

         net use [드라이브명]: \\[윈도우서버IP]\[윈도우서버드라이브명]$ "[패스워드]" /user:[윈도우서버계정명]

         - 드라이브명 : 볼륨. C, D 같이 사용하고 있는 것은 지정할 수 없다.

 

ipconfig 를 이용하여 ip 주소를 확인한 다음,

 

Host PC에서 ping을 보내보면 잘 보내지는 것이 확인된다.

 

X: \\192.168.0.128\C$ "abcd" /user:Administrator

C드라이브를 마운트한다.

   * 마운트?

      저장 장치에 접근할 수 있는 경로를 디렉터리 구조에 편입시키는 작업.

   

Host PC에서 확인하면 생기는 것이 확인된다.

 

net share 을 이용하여 확인하면 잘 연결된 것을 볼 수 있다.

여기서,

   C$, ADMIN$ : 기본 공유 가능

   IPC$ : 프로세스 간 공유이므로 제외. 우리가 중지할 수 있는 방법으로 중지 안됨. 필수이기 때문!

 

fsmgmt.msc 를 통하여  IPC$를 제외한 기본공유를 중지한다(재시작 시 다시 기본공유가 시작된다).

 

공유 폴더에서 우리가 제거하고자 하는 것(ADMIN$, C$)을 우클릭하여 공유 중지를 클릭한 다음 yes한다.

 

없어진 것이 확인된다.

 

net share 를 통하여 없어진 것을 확인할 수 있다.

 

!여기서 문제는!

Server이기 때문에 재부팅을 자주 하지 않는다. PC와 다르게! 지속적으로 서비스를 하는 것이 목적이기 때문이다.

그래도 패치, 특정 서비스 설치 후 재시작 등 재시작을 하긴 한다.

다시 껐다가 켜보면,

다시 시작이 되어있는 것이 보인다.

 

regedit 을 이용하여 레지스트리 편집기를 열어준다.

 

https://support.microsoft.com/ko-kr/help/954422/how-to-remove-administrative-shares-in-windows-server-2008

링크를 참고하여, 레지스트리 하위 키를 찾는 곳을 알아낸다.

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\AutoShareServer

 

AutoShareServer의 DWORD 값 : 0 (false)

 

새로 만들기 - DWORD(32비트) 값 - AutoShareServer 를 만들어준다.

 

추가가 됐다. 이제, 윈도우 서버 재시작 후 net share로 하드디스크 기본 공유 제거를 확인한다.

 

없어진 것이 확인되었다.

 

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /s /v AutoShareServer

명령어를 이용하여 AutoShareServer 레지스트리 DWORD 값을 확인이 가능하다.

/s : 모든 하위 키 및 이름을 재귀적으로 쿼리를 지정

/v : 쿼리 수 있는 레지스트리 값 이름을 지정

 

echo [W-20 Start]					>>[win]%computername%.txt
echo [W-20 하드디스크 기본 공유 제거]			>>[win]%computername%.txt
echo # 하드디스크 기본 공유 확인 #				>>[win]%computername%.txt
net share						>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo # 레지스트리 AutoShareServer 확인 #			>>[win]%computername%.txt
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /s /v AutoShareServer		>>[win]%computername%.txt
echo W-20 END						>>[win]%computername%.txt
echo ==================================================	>>[win]%computername%.txt

실행한 다음, bat 파일을 만들어서 window server에서 실행했다가 나온 파일을 다시 host pc에서 열어보면,

 

잘 나오는 것이 확인된다.

  * AutoShareServer가 아예 안나오거나, 표시한 부분이 1이 나오면 취약!

▷ FTP 서비스 구동 점검

   - FTP 서비스? 파일 전송을 위한 프로토콜이며 기본적으로 21 Port를 사용한다.

   - FTP 서비스가 불필요하게 운영될 경우

     ☞ FTP 서비스 무단 접속을 통해 악성코드를 전송하여 유포시키거나 원격지 서버에 중요파일 열람 및 삭제할 수 있는 위협을 받는다.

   - FTP 서비스 확인 방법 : net start | find /I "ftp"

   - FTP 서비스가 불필요하게 사용중인 경우 중지 및 삭제를 해야한다.   

 

net start 는 실행중인 서비스 목록을 얻어오는 것이다.

 

echo [W-37 Start]					>>[win]%computername%.txt
echo [W-37 FTP 서비스 구동 점검]				>>[win]%computername%.txt
echo # FTP 서비스 구동 여부 확인 #				>>[win]%computername%.txt
net start | find /I "ftp"				>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo W-37 END						>>[win]%computername%.txt
echo ==================================================	>>[win]%computername%.txt

▶ SNMP 서비스 구동 점검

   - SNMP(Simple Network Management Protocol) ? 네트워크에 존재하는 다양한 장비들을 관리하기 위해 사용되는 간단한 프로토콜

   - 사용하는 이유는 가용성 때문이다.

PING SNMP Service Client NMS
(Network Management System)
request msg → ← response msg ① 네트워크 데이터 전송 가능상태 제공
② 시스템의 CPU, Memory, Storage 정보 제공
③ 시스템의 네트워크 Traffic 정보 제공
④ 시스템의 명령어 또는 응용프로그램 실행 권한 제공
⇒ 현재 상태를 지속적으로 확인할 수 있는 자동화된 특징을 가지고 있음
SNMP Service Client로부터 현재상태
즉, 옆의 정보를 제공받음

 

net start | find /I "snmp" 으로 SNMP 서비스 동작 여부를 확인할 수 있다.

위에는 아무것도 밑에 뜨지 않기 때문에 서비스가 동작하지 않고 있다는 것이다.

 

서버 관리자

 

 

서버관리자 - 기능 - 기능추가

 

SNMP 서비스를 설치한다.

 

설치가 완료되었다.

 

다시 net start | find /I "snmp" 를 하면 서비스가 실행되는 것이 확인된다.

 

services.msc 를 통하여 서비스 창에 들어와 SNMP Service의 속성을 들어간다.

 

보안 탭의 받아들인 커뮤니티 이름에 추가를 하여 다음과 같이 읽기 전용, 커뮤니티 이름은 kisec123$%^로 설정하고 추가를 한다.

여기서 커뮤니티 이름은 패스워드 같은 개념이다.

 

잘 추가가 되었다.

 

echo [W-46 Start]					>>[win]%computername%.txt
echo [W-46 SNMP 서비스 구동 점검]				>>[win]%computername%.txt
echo # SNMP 서비스 구동 여부 확인 #			>>[win]%computername%.txt
net start | find /I "snmp"				>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo W-46 END						>>[win]%computername%.txt
echo ==================================================	>>[win]%computername%.txt

 

결과를 확인할 수 있다.

▷ SNMP 서비스 커뮤니티 스트링의 복잡성 설정

   - 일종의 패스워드로 사용하는 Community String을 유추할 수 없는 복잡한 값으로 변경하여 불필요한 시스템 정보 노출을 차단하기 위함이다.

   - public, private가 아니어야함과 동시에 패스워드의 정책에 따라야 양호로 판정한다.

 

reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities"

 


~ 로그 관리 ~

▶ 정책에 따른 시스템 로깅 설정

   - 권고 기준 : KISA 홈페이지의

                    (한국인터넷진흥원)주요정보통신기반시설_기술적_취약점_분석_평가_상세_가이드(2017).pdf

 

위의 설명을 보고 다음과 같이 기준이 설정되어 있다.

 

 

위의 표와 같이 보안 설정을 바꿔준다(각 항목을 더블클릭 하여 설정 열어서 바꿔줄 수 있음!).

 

echo [W-58 Start]					>>[win]%computername%.txt
echo [W-58 정책에 따른 시스템 로깅 설정]			>>[win]%computername%.txt
echo # 로컬보안정책 설정정보 추출 #				>>[win]%computername%.txt
secedit /export /cfg c:\secpol.txt			>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo.							>>[win]%computername%.txt
echo # 로깅 설정 확인 #					>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditObjectAccess"	>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditAccountManage"	>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditAccountLogon"	>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditPrivilegeUse"	>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditDSAccess"		>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditLogonEvents"		>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditSystemEvents"	>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditPolicyChange"	>>[win]%computername%.txt
type c:\secpol.txt | find /I "AuditProcessTracking"	>>[win]%computername%.txt
echo W-58 END						>>[win]%computername%.txt
echo ==================================================	>>[win]%computername%.txt

AuditObjectAccess : 객체 액세스 감사

AuditAccountManage : 계정 관리 감사

AuditAccountLogon : 계정 로그온 이벤트 감사

AuditPrivilegeUse : 권한 사용 감사

AuditDSAccess : 디렉토리 서비스 액세스 감사

AuditLogonEvents : 로그온 이벤트 감사

AuditSystemEvents : 시스템 이벤트 감사

AuditPolicyChange : 정책 변경 감사

AuditProcessTracking : 프로세스 추적 감사

 

0 감사 안함 / 1 성공 / 2 실패 / 3 성공, 실패


~ 보안 관리 ~

▷ 화면보호기 설정

다음과 같이 디스플레이 - 화면 보호기 변경 에서 설정을 변경시켜준다.

 

reg 명령어로 해당 레지스트리 값을 찾는다.

reg query "HKCU\Control Panel\Desktop" /v "ScreenSaveActive"   ☞   화면보호기 설정 여부 확인

reg query "HKCU\Control Panel\Desktop" /v "ScreenSaverIsSecure"  ☞   화면보호기 해제 암호 사용 여부

reg query "HKCU\Control Panel\Desktop" /v "ScreenSaveTimeOut"  ☞   대기시간 확인

1 -> True.

 

 

'IT Security > Class_Do it' 카테고리의 다른 글

모의해킹 실습 (1)  (0) 2020.10.07
네트워크 장비 진단  (0) 2020.09.25
Window 서버 진단 (1)  (0) 2020.09.21
리눅스 쉘 스크립트 작성 실습  (0) 2020.09.16
쉘의 이해와 스크립트 작성  (0) 2020.09.16
Comments