해킹피해시스템(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 서버관리자(시작->프로그램->관리도구(공용)->서버관리자)를 이용한 점검
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 |