경로: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TermService\Parameters 
   
parameters 아래에 있는 모든 데이터를 삭제하시고, 리부팅 


마이크로소프트(이하 MS)의 운영체제(OS)가 업그레이

드되면서 가장 큰 변화 중의 하나가 보안이다. 예를 들어 XP 계열 OS의 최신 서비스 팩은 방화벽 기능을 기본으로 내장했으며, 윈도우 2003 서버 계열의 OS 2000 버전에서 기본으로사용가능했던 서비스가중지상태로 바뀌었다. 문제는 필요한 서비스 명령을 숙지하지 못한 관리자의 경우 이를 모두 오픈할 가능성이 크다는 것이다. 실제로 서버를 운영하는 많은 기업들이 다음과 같은 증상을 호소하며 문의를 해오곤 한다.


윈도우 서버를 운영 중인데 특정 프로세스가 CPU 점유율이 너무 높습니다. 해킹을 당한 건 아닌지, 리부팅을 해도 해당 현상이 지속됩니다

터미널 서비스 접속이 되지 않습니다. 터미널 서비스 기본 포트인 3389 포트는 Listen 상태지만 접속할 수 없습니다


이 경우 가장 먼저 윈도우 서버가 해킹을 당했거나 시스템의 성능을 저하시키는 웜에 감염된 경우를 의심해 봐야 한다. 그러나 터미널 서비스가 되지 않으니 원격 접속이 불가능한 상황. 터미널 서비스부터 접속할 수 있도록 해야 한다.

1단계 : 터미널 서비스 복구
윈도우 서버를 관리하는 사용자들의 PC는 대부분이 윈도우 계열일 것이다. 해당 서버에 Netbios 포트(135,139,445 )가 오픈돼 있다면 커맨드 창에 <화면 1>처럼 입력한다. 이렇게 하면 해당 서버의 관리자 권한을 획득할 수 있다.
터미널 서비스 연결이 제대로 되지 않을 경우는 대부분이 터미널 서비스 포트가 변조됐기 때문이다. 터미널 서비스 포트 설정 정보는 다음 윈도우 레지스트리 키에서 확인할 수 있다. 3389 포트가 기본포트이다.


HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control \TerminalServer\Wds\Rdpwd\Tds\Tcp
PortNumber REG_DWORD 0x00000d3d(3389)


터미널 서비스를 사용하지 않는 상태에서 3389 포트가 Listen 상태라면 대부분 불법적인 프로그램이 터미널 서비스 포트인 3389 포트를 대체해 사용하고 있는 것이다. 이 때는 telnet 10.30.101.251 3389이라고 입력해 같이 서버의 3389 포트로 커넥션 체크를 한다.

<화면 1> 커맨드 창을 이용해 원격 서버에 세션 연결하기

 

<화면 2> 원격 서버의 컴퓨터 관리 열기


정상적이라면 빈 화면으로 커넥션만 되어야 하지만 QOS-Controller Server(불특정)라는 이름으로 연결되면 터미널 서비스가 해당 프로그램으로 대체된 것이다. 불특정으로 연결되면 커맨드 창에 compmgmt.msc 명령을 입력해 관리 도구의 컴퓨터 관리를 연다. 원격 서버에 연결하려면 컴퓨터 관리(로컬) 부분을 클릭한 후 오른쪽 마우스 버튼을 클릭해 다른 서버로 연결 항목을 선택한다. 그리고 <화면 2>처럼 서버 IP 주소를 입력한다.

이제 서비스 항목을 클릭하면 변조된 서버에서 작업할 수 있다. 서버의 콘솔로 커맨드 창에서 services.msc 명령을 입력해보자. 해당 서비스 항목에는 기본적으로 윈도우 서버에서 제공하는 서비스와 관리자가 설치한 실행 가능한 서비스 항목들이 나타난다(윈도우 2000에서 기본적으로 제공하는 서비스 항목은 MS 웹사이트(http://www.micro soft.com/korea/technet/security/prodtech/windows/windows2000/staysecure/ secopsb.asp)를 참조하기 바란다).

다양한 서비스 항목 가운데 문제가 되는 서비스를 찾는 가장 좋은 방법은 정상적으로 운영되는 윈도우 시스템의 서비스와 해킹이 의심되는 시스템의 서비스를 서로 비교하는 것이다. 즉 유닉스 계열의 명령어 중에서 ‘diff file1 file2’와 같이 변조된 서비스를 찾는 것이다.

그러면 <화면 3>처럼 서비스 이름은 이상이 없지만 불법적인 프로세스가 실행되도록 만들어 놓은 서비스를 찾을 수 있다.

변조된 서비스를 찾았으면 해당 서비스를사용안함으로 변경한 후 실행 중인 서비스를 중지한다. 변조된 서비스는 다음과 같은 레지스트리에서 삭제하면 된다.


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services


2단계 : 변조된 레지스트리 복구
서비스 항목 중 <화면 4>와 같은 Remote Registry 서비스가 있다. 이 서비스가 실행 중이면 원격에서 레지스트리를 관리할 수 있다(관리 측면에서는 매우 편리하지만 외부에서 불법으로 접근하면 시스템에 심각한 영향을 줄 수 있으므로 주의를 요한다).

<화면 3> 변조된 서비스의 예

 

<화면 4> Remete Registry 서비스 확인

 

먼저 앞서 원격 서버에 세션을 연결한 것처럼 Administrator 권한 계정이 있어야 한다. <화면 5>처럼 레지스트리 편집기를 열고 원격 서버에서 연결해보자. 다음은 레지스트리에서 시스템 부팅시 자동 시작되는 프로그램이 위치하는 키다. 여기에 불법적인 프로세스가 나열되지 않았는 지를 점검해 <화면 6>과 같은 변조된 서비스를 확인한다.


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion\RunOnceEx
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion\RunservicesOnceHKEY_CURRENT_USER\ SOFTWARE\Microsoft\Windows\ CurrentVersion\Run


3단계 : 정상 접속 후 필수 확인사항
서버에 정상적으로 접속한 이후에도 반드시 확인해야 할 사항이 몇 가지 있다. 먼저 커맨드 창에서 netstat 명령으로 현재 서버의 네트워크 연결과 프로토콜 상태를 확인한다. <화면 7>처럼 무수히 많은 포트와 연결 상태를 볼 수 있는데, 각 포트들이 어떤 역할을 하고 있으며 또 정상적으로 사용되는 것인지 의심스러운 경우도 있을 것이다.

이 때 유용하게 활용할 수 있는 툴이 Foundstone에서 제공하는 fport라는 프리웨어 프로그램이다. 이를 이용하면 각 포트와 프로세스들이 어떻게 연결되어 있는지 한눈에 확인할 수 있다. Foundstone 웹 사이트(www.foundstone.com/resources/termsofuse.htm?file = fport.zip)에서 다운로드할 수 있다.

<
화면 9>처럼 서버 사용자 계정을 확인하는 것도 중요한 작업이다. Guest 계정은 기본적으로사용안함으로 설정돼 있으나 해킹으로 인해사용가능하도록 되어 있거나 ‘Administrators 그룹에 포함되는 경우가 있다. 이런 이상을 발견하면 해당 부분을 체크해 Admin 권한을 제거하고 Guest 계정을사용안함으로 설정한다.

 

<화면 5> 원격에서 레지스트리에 연결하기

 

<화면 6> 레지스트리에서 변조된 서비스 확인


4단계 : 재발을 막는 방법
지금까지 시스템 해킹이 의심될 때 IT 관리자들이 수행해야 할 응급처치법에 대해 살펴봤다. 그러나 근본적으로 net use 명령을 이용한 세션 연결을 제한하지 않으면 문제가 계속될 가능성이 있다. 네트워크 기본 공유 중 IPC$ Netbios 포트가 열려 있다면 패스워드없이 목적한 서버의 세션을 얻을 수 있으며 <화면 10>처럼 net use 명령을 이용해 손쉽게 권한을 획득할 수 있다.

<화면 7> netstat 명령을 이용해 포트정보 보기

 

<화면 8> fport 프로그램을 실행한 화면


대안은 취약한 포트들을 막는 것이다. MS 웹사이트(support. microsoft.com/default.aspx?scid=kb;ko;813878)를 참고하면 서버의 앞단에 별도의 방화벽을 설치하지 않아도 서버 내에서 보안 설정을 할 수 있는 ‘IPSEC’을 통해 포트를 차단할 수 있다. IPSEC은 유닉스 계열에서 ipchain이나 iptable과 같은 역할을 한다.


ipsecpol -w REG -p “Netbios
포트 필터링” -r “NetBIOS-BLOCK” -f *+0:135:TCP -f *+0:137:UDP -f *+0:138:UDP -f *+0:139:TCP -f *+0:445:TCP -n BLOCK


지금까지 설명한 사항을 모두 점검했다면 마지막으로 바이러스 검사를 실행한다. 문제가 발생한 대부분의 서버들은 기존에 백신 프로그램이 설치돼 있어도 이런 증상이 나타난 것이므로 다양한 바이러스 점검 사이트에서 중복 체크하기를 권한다.@

<화면 9> 사용자 계정 확인

 

<화면 10> net use 명령을 이용한 IPC$ 권한 획득

 

위 내용은 마이크로소프트웨어에 게재된 내용입니다.

+ Recent posts