강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

해킹피해시스템(Windows NT/2000) 분석절차

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

 

해킹피해시스템(Windows NT/2000) 분석절차

 

2001.03.02

하도윤/CERTCC-KR dyha@certcc.or.kr

 

이 문서는 윈도우 NT 시스템이 해킹을 당했는지 여부를 알 수 있는 절차를 제공한다. 해킹을 당했다면 분석한 로그는 컴퓨터 포렌식스를 위한 자료로 활용될 수도 있다. 이 문서는 일반적인 분석절차이므로 시스템관리자는 운영중인 시스템환경에 맞게 적용하기를 권고한다.

1. 사용하지 않는 IP 대역이나 비정상적인 행위를 하는 로그를 점검한다.

▶ 이벤트 표시기(시작 ->프로그램 ->관리도구(공용) ->이벤트 표시기)를 실행하여 시스템, 보안, 애플리케이션 로그를 점검한다.

o 시스템 로그 점검

매개 변수 '/gjgjgjgjgjh'을(를) 가진 URL '/scripts/../../winnt/system32/cmd.exe'에서 시작한 스크립트가 구성된 시간 초과 기간 내에 응답하지 않았습니다. HTTP 서버가 스크립트를 종료하고 있습니다.

매개 변수 '/c+del+"'을(를) 가진 URL '/scripts/../../winnt/system32/cmd.exe'에서 시작한 스크립트가 구성된 시간 초과 기간 내에 응답하지 않았습니다. HTTP 서버가 스크립트를 종료하고 있습니다.

o 보안 로그 점검

로그온 실패:
원인: 알 수 없는 사용자 이름 또는 잘못된 암호
사용자 이름: CHIEF
도메인: CERT
로그온 유형: 3
로그온 프로세스: KSecDD
인증 패키지: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
워크스테이션 이름: \CHIEF

o 응용프로그램 로그 점검 예제

Microsoft FrontPage Server Extensions:
Error #20015 Message: Cannot open "C:InetPubwwwroot rojanhorse.htm": no such file or directory.

침입탐지시스템(Firewall), 웹서버(IIS), 라우터를 운영하고 있다면 관련로그도 점검하여야 한다.

Top

2. 사용자 계정과 그룹을 점검한다.

도메인 사용자 관리자(시작 ->프로그램 ->관리도구(공용) ->도메인 사용자 관리자)를 실행하여 불법적인 계정이나 그룹의 생성여부를 점검한다.

o 사용자 계정 점검

C:>net user
\TESTNT에 대한 사용자 계정
----------------------------------------------------------------
Administrator chief FuckU
Guest IUSR_TESTNT IWAM_TESTNT
명령이 잘 실행되었습니다.

FuckU란 해커계정이 생성되어 있음을 알 수 있다.

o 글로벌그룹 계정 점검예제

C:>net group
\TESTNT에 대한 그룹 계정
-------------------------------------------------------------------
*Domain Admins *Domain Guests *Domain Users
*FuckYou
명령이 잘 실행되었습니다.

FuckYou란 불법 글로벌그룹 생성되어 있음을 알 수 있다.

o 로컬그룹 계정 점검예제

C:>net localgroup
\TESTNT에 대한 별명
---------------------------------------------------------------------------
*Account Operators *Administrators *Backup Operators
*FuckYouAll *Guests *MTS Trusted Impersonators
*Print Operators *Replicator *Server Operators
*Users
명령이 잘 실행되었습니다.

FuckYouAll 이란 불법 로컬그룹 생성되어 있음을 알 수 있다.

그리고 내장된 guest 계정이 사용안함으로 되어 있는지 점검한다.

Top

3. 모든 그룹에서 불법사용자를 점검한다.

디폴트 그룹에서 그룹에 속한 사용자들에게 특별한 권한을 준다. 즉, 예를 들면 Administrator 그룹에 속한 사용자는 로컬시스템에서 무엇이든지 할수 있고, Backup operators 그룹에 속한 사용자는 시스템상의 어떤 파일이든지 읽을수 있고, PowerUsers 그룹에 속한 사용자는 공유를 생성할 수 있다. 물론 이외에 다른 권한도 있다.

4. 사용자권한을 점검한다.

사용자와 그룹에 할당될수 있는 권한은 27가지가 있다.

5. 비인가된 응용프로그램이 실행되었는지 점검한다.

공격자가 백도어 프로그램을 심을 수 있는 방법은 여러 가지가 있다. 다음을 점검한다.

▶ 시작폴더를 점검한다. c:winntprofiles(Administrator, All Users, Default

User 중 선택)시작 메뉴프로그램\시작프로그램 폴더를 점검한다. 혹은 시작-> 프로그램-> 시작프로그램을 클릭하여 간단히 확인할 수 도 있다.

※ 주의: 시작폴더가 2개 있다. 하나는 로컬사용자를 위한 것이고 다른 하나는 모든 사용자를 위한 것이다.

▶ 레지스트리를 점검한다.

레지스트리를 통한 일반적인 애플리케이션의 위치정보

o 레지스트리 리스트 점검

HKEY_LOCAL_MACHINESystemCurrentControlSetControlSessionManagerKnownDLLs
HKEY_LOCAL_MACHINESystemControlSet001ControlSession ManagerKnownDLLs

HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrent VersionRun
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrent VersionRunOnce
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrent VersionRunOnceEx
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices
HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWindows ("run=" line)

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrent VersionRun
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrent VersionRunOnce
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrent VersionRunOnceEx
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices
HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindows ("run=" value)

Top

▶ 실행중인 불법서비스를 점검한다.

어떤 백도어 프로그램은 시스템 부팅시 시작되는 서비스로 설치된다. 이 백도어 서비스는 "서비스로 로그온 권한"을 가진 사용자에 의해 실행된다. 자동으로 실행되는 서비스를 점검하고, 트로이쟌이나 백도어 프로그램인지 점검한다.

다음은 레지스트리로부터 실행중인 서비스정보를 수집할 수 있는 간단한 배치화일이다. 실행하면 서비스키, 시작 값과 실행파일을 볼수 있다. 이 배치파일은 리소스킷에 있는 reg.exe를 사용한다.

o 배치파일을 이용한 점검

@echo off

REM The 'delims' parameter of PULLINFO1 and PULLINFO2 should be a single TAB.

for /f "tokens=1 delims=[]" %%I in ('reg queryHKLMSYSTEMCurrentControlSet

Services') do call :PULLINFO1 %%I

set START_TYPE=

goto :EOF

:PULLINFO1

for /f "tokens=3 delims= " %%I in ('reg query HKLMSYSTEMCurrentControlSet

Services\%1 ^| findstr "Start" ') do call :PULLINFO2 %1 %%I

goto :EOF

:PULLINFO2

for /f "tokens=3,4 delims= " %%I in ('reg query HKLMSYSTEMCurrentControlSet

Services\%1 ^| findstr "ImagePath" ') do call :SHOWINFO %1 %2 %%I %%J

goto :EOF

:SHOWINFO

if /i {%2}=={0} set START_TYPE=Boot

if /i {%2}=={1} set START_TYPE=System

if /i {%2}=={2} set START_TYPE=Automatic

if /i {%2}=={3} set START_TYPE=Disabled

if not "%4" == "" (echo %1 -%START_TYPE%- %3\%4) else (echo %1 -%START_TYPE%- %3)

goto :EOF

o reg 명령어를 이용한 점검

C:Administrator>reg query HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices

! REG.EXE VERSION 2.0

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAbiosdsk

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesabp480n5

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesACPI

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesACPIEC

-----------------------중간생략--------------------------------

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinMgmt

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinSock2

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinTrust

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWmi

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices{C898773A-5CF1-4AAD-B822-4

D0EEA86B27}

Top

6. 변경된 시스템 바이너리 파일을 점검한다.

CD-ROM이나 기타 설치매체에서 설치된 초기 시스템 바이너리 정보를 복사한 후 주기적으로 비교한다. 또한 백업시 트로이쟌이나 백도어 파일이 있는지 미리 점검한다.

트로이쟌호스 프로그램을 정상 프로그램과 같은 파일 사이즈, timestamp 로 조작이 가능하다. 이런 경우는 MD5, Tripwire나 기타 무결성 점검도구를 이용하여 트로이쟌호스 프로그램을 탐지할 수 있다. 이런 무결성 점검도구는 공격자에 의해 조작되지 않도록 안전하게 보관하여야 한다.

또는 백신프로그램을 이용하여 바이러스, 백도어, 트로이쟌호스 프로그램을 점검 할 수 있다. 하지만 변종 프로그램이 지속적으로 나오기 때문에 백신 프로그램은 최신버전으로 업데이트 하여야 한다.

7. 시스템과 네트워크 환경설정을 점검한다.

WINS, DNS, IP 포워딩 같은 환경설정변경을 점검한다. 네트워드 환경설정 등록정보를 이용하거나 ipconfig /all 명령어를 이용하여 점검한다.

o ipconfig 명령어를 이용한 점검

C:Administrator>ipconfig /all

Windows 2000 IP Configuration

Host Name . . . . . . . . . . . . : chiefw2k
Primary DNS Suffix . . . . . . . : kisa.or.kr
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : kisa.or.kr
or.kr
Ethernet adapter 로컬 영역 연결:
Connection-specific DNS Suffix . :
Description . . . . . . . . : FE574B-3Com 10/100 LAN PCCard-Fast Ethernet
Physical Address. . . . . . . . . : 00-50-DA-D4-11-A4
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 172.16.2.202
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.2.1
DNS Servers . . . . . . . . . . . : 211.252.150.xxx
211.252.150.xxx

불필요한 네트워크 서비스가 실행중인지 점검한다. "netstat -an" 명령어를 이용하여 의심스러운 호스트의 접근이나 연결대기중인 의심스러운 포트를 점검한다.

Top

o netstat 명령어를 이용한 점검

C:>netstat -na

Active Connections

Proto Local Address Foreign Address State

TCP 0.0.0.0:21 0.0.0.0:0 LISTENING

---------------------- 중간생략 ------------------------

TCP 0.0.0.0:31337 0.0.0.0:0 LISTENING

TCP 127.0.0.1:1026 0.0.0.0:0 LISTENING

TCP 172.16.2.168:31337 172.16.2.154:1652 ESTABLISHED

UDP 0.0.0.0:135 *:*

UDP 172.16.2.168:137 *:*

UDP 172.16.2.168:138 *:*

백오리피스2000이 설치되었고, 연결되어 있음을 알수 있다.

o 배치파일을 이용한 점검

@echo off

for /f "tokens=1,2 delims=:" %%I in ( 'netstat -an ^| findstr "0.0.0.0:[1-9]"' ) do call : CLEAN %%I %%J

goto :EOF

:CLEAN

set X=0

for /f "tokens=1,2,3 delims=TAB " %%A in ( 'findstr /I "<%3/%1>" port-numbers.txt' ) do call :SETUP %%A %%C %3 %1

if %X% == 0 echo %3/%1 ***UNKNOWN***

goto :EOF

:SETUP

echo %3/%4 %1 %2

set X=1;

goto :EOF

port-numbers.txt 라는 파일이 필요하다. 이 파일에는 점검하고자 하는 포트를 정리한다. 첨부1. 참고

Top

8. 비인가된 파일공유를 점검한다.

명령프롬프트에서 net share 명령어를 이용하여 점검하거나 서버관리자를 이용하여 점검한다. 공유폴더의 끝에 "$" 표시가 있으면 이는 hidden share이다. 즉, 불법 공유폴더와 NT의 디폴트나 공유폴더에 비인가된 사용자가 연결되어 있는지 점검한다.

o net share 명령어를 이용한 점검

C:>net share

공유 이름 리소스 설명

--------------------------------------------------------------

print$ C:WINNTsystem32spooldrivers 프린터 드라이버

IPC$ Remote IPC

C$ C: Default share
ADMIN$ C:WINNT Remote Admin
I386 C:I386
QLaserSF LPT1: 스풀됨 QLaser SF710
명령이 잘 실행되었습니다.

o net use, net session 명령어를 이용하여 점검

o 서버관리자(시작->프로그램->관리도구(공용)->서버관리자)를 이용한 점검

Windows%20NT.jpg

FuckU 란 해커가 C 드라이버에 공유연결을 사용하고 있음을 찾을 수 있다.

Top

9. 실행중인 스케줄러를 점검한다.

"at" 명령어나 리소스 킷에 있는 WINAT 도구를 사용하여 점검한다.

o at 명령어를 이용한 점검

C:>at
상태 ID 날짜 시간 명령줄
-------------------------------------------------------------
1 다음 29 오후 3:00 cmd.exe

10. 불법프로세스를 점검한다.

작업관리자나 리소스 킷에 있는 pulist.exe나 tlist.exe를 이용하여 실행중인 프로세스를 점검한다. pulist 명령어를 이용하면 누가 프로세스를 실행시켰는지 알수 있다.

o tlist 명령어를 이용한 점검

C:Administrator>tlist -t
System Process (0)
System (8)
smss.exe (200)
csrss.exe (228)
winlogon.exe (252) NetDDE Agent
services.exe (280)
mstask.exe (1188) SYSTEM AGENT COM WINDOW
svchost.exe (2204) ModemDeviceChange
dns.exe (1812)
---------------------- 중간생략 ------------------------
explorer.exe (1836) Program Manager
cmd.exe (2080) C:WINNT.0System32cmd.exe - tlist -t
tlist.exe (2352)
IEXPLORE.EXE (2064) Microsoft Internet Explorer
regedt32.exe (1360) 레지스트리 편집기
mmc.exe (1988) 컴퓨터 관리
spade.exe (440) Spade - [Scan 172.16.2.200-172.16.2.202, finished]
tp4mon.exe (2420) Zoom Window
internat.exe (864)
conime.exe (2020

spade.exe 프로그램으로 스캔이 완료되었음을 알 수 있다.

Top

11. 이상한 파일이나 숨겨진 파일을 찾는다.

패스워드 크래킹 프로그램이나 다른 시스템의 패스워드 파일이 있는지 점검한다. 탐색기(보기 ->폴더 옵션 ->보기 ->모든 파일 표시)를 이용하여 숨겨진 파일을 찾거나, "dir /ah" 명령어를 이용하여 점검한다.

12. 파일 퍼미션 변경이나 레지스트리 키값의 변경을 점검한다.

리소스 킷의 xcacls.exe 프로그램을 이용하여 디렉토리별 파일들을 점검한다.

13. 사용자나 컴퓨터의 정책변화를 점검한다.

정책편집기(poledit.exe)에서 구성된 현재 정책의 복사본을 정리하여 주기적으로 변경되었는지 점검한다.

14. 시스템이 다른 도메인으로 변경되었는지 점검한다.

15. 한 시스템이 해킹을 당했다면 로컬 네트워크내의 모든 시스템을 점검한다.

첨부1. 윈도우 NT 4.0의 잘 알려진 서비스 포트정리

서비스(function)

포트(static ports)

Browsing
DHCP Lease
DHCP Manager
Directory Replication
DNS Administration
DNS Resolution
Event Viewer
File Sharing
Logon Sequence
NetLogon
Pass Through Validation
Performance Monitor
PPTP
Printing
Registry Editor
Server Manager
Trusts
User Manager
WinNT Diagnostics
WinNT Secure Channel
WINS Replication
WINS Manager
WINS Registration

UDP:137,138
UDP:67,68
TCP:135
UDP:138 TCP:139
TCP:135
UDP:53
TCP:139
TCP:139
UDP:137,138 TCP:139
UDP:138
UDP:137,138 TCP:139
TCP:139
TCP:1723 IP Protocol:47 (GRE)
UDP:137,138 TCP:139
TCP:139
TCP:139
UDP:137,138 TCP:139
TCP:139
TCP:139
UDP:137,138 TCP:139
TCP:42
TCP:135
TCP:137

[ Reference ]

1. http://www.cert.org/tech_tips/win_intruder_detection_checklist.html
2. http://www.cert.org/tech_tips/win-resources.html
3. http://www.cert.org/tech_tips/win-UNIX-system_compromise.html
4. http://www.boran.com/security/nt1.html
5. http://support.microsoft.com

Top

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,070 명
  • 현재 강좌수 :  35,986 개
  • 현재 접속자 :  494 명