서비스중인 서버 하나가 윈도우 자동업데이트가 되지 않아 바이러스를 의심하고 별별 바이러스 프로그램을 수행하였으나 아무것도 나오지 않는다. RootKit문제로 단정하고 RootKit관련 파일에 대한 조사를 실시하여 레지스트리를 수동으로 수정하는 일을 하였다. 두개의 서버가 문제가 있었는데 하나는 수정하다 실패하여 날려먹고 두번째 서버에서 RootKit를 찾아 내었다. 일단 수많은 바이러스, Trojan, RootKit가 복합된 아래 리스트를 감상하자.
90,112 AdmDll.dll
83 as.bat
1,308 csrss.reg
6,656 cygcrypt-0.dll
1,295,582 cygwin1.dll
159 dir.txt
63 ds.bat
57 hide.bat
1,063 hxdef100.ini
18,432 instsrv.exe
21,584 KILL.EXE
856 load.reg
4 mybot.pid
176 mybot.state
176 mybot.state~
81,920 ntlogonwrk.exe
999 os.txt
19 psinfo.bat
143,360 Psinfo.exe
29,440 raddrv.dll
28,160 reboot.exe
1,664 rundll32.dll
997 ServUDaemon.ini
622 ServUStartUpLog.txt
15 start1.bat
797 start2.bat
796 stats.txt
27 svchost.bat
250,600 svchost.exe
578,048 winlogon.exe
이 모든 파일들은 Windows 디렉토리 안에 있었는데 hxdef100으로 추정되는 RootKit가 아예 이 디렉토리를 보여주지를 않는다.(서버의 실제 Windows 디렉토리는 WINNT에 있다.) 디렉토리가 아예 없으니 바이러스탐지 프로그램은 모두 무용지물이다. 이런 파일들이 여러분의 Registry에 존재한다면 시스템에 알수 없는 일들이 생긴다. 이들이 윈도우 자동업데이트를 못하게 만드는 방법은 윈도우즈 보안업데이트 파일의 이름이 나타나면(KB어쩌구 하는 파일이다.) 이를 RootKit가 숨겨서 어떤 프로그램도 그것을 보지 못하게 만든다. 그러니 다운로드는 받았으나 설치할수 없고 다음에 재시도 하면 이미 파일이 있으므로 아무것도 못한다. 심지어 이런 파일이 있는 디렉토리는 지우지도 못한다. RootKit는 대부분 서비스로 등록 되므로 Run key 만 봐서는 절대 찾아내지 못한다. 레지스트리의 서비스 폴더 내의 모든 항목을 수동으로 보고 검사하여 지우는 방법밖에 없다. IDC에 있는 서버라 safe모드로 들어가서 보지는 못한 점이 아쉽다.
svchost, winlogon등 어디서 많이 본 이름들이 보이지 않는가? 모두 윈도우 시스템 파일의 이름을 빌린 것들이다. RootKit는 먼저 설치되는 놈이 우선이라 프로그램으로 감지해 내기는 매우 어렵다. 아무튼 V3최신 버전으로도 여기 나오는 어떤 놈들도 발견하지 못했다는 사실만 밝혀둔다.
* RootKit: 시스템 Kernel API를 훅한다. Kernel Level에서 동작하기 때문에 어플리케이션에 불과한 안티바이러스 프로그램이 이를 발견하는 것은 불가능에 가깝다.