门卫的工作好不好:哇!有黑客(二)

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 01:16:36

哇!有黑客(二)

来源:安全焦点论坛

寻踪:众里寻他千百度

场景:
話説elly機分鐘前發現這台機器上數個木馬,心頭一驚:這特洛伊人果然了得,
于無聲閒,竟然已經滲透進來。待我細細思索,尋蹤覓跡,先把它們一個一個的
殺掉,再把它們一個一個的捉拿出來...


elly稍作休息,又倒了一杯茶,准备好工具,开始发掘信息。

上面一节最后,我们简单看了一下系统检查的大概步骤,那么在Windows系统中
进行入侵检查需要详细调查一下一些信息:

进程
>>系统进程
>>系统服务
>>用户进程

在进程信息调查中,主要通过对系统 驱动模块、系统进程、服务、用户进程 的
查看,找出异常信息。

网络
>>网络端口
>>网络连接
>>命名管道

网络信息调查,包含异常网络驱动、协议过滤器、接口状态、网络连接、开放端口
和命名管道的信息查询。

帐户
>>用户帐号
>>用户口令
>>用户环境文件

帐户检查主要是对系统帐户和各项应用程序帐户的配置信息检查。

日志
>>系统日志
>>应用日志

日志检查是对系统日志、安全日志以及应用程序日志的取证和分析。

系统环境
>>系统启动项
>>注册表启动项
>>文件信息

系统环境调查对系统启动和运行环境、初始化运行程序、注册表的关键键值以及
文件系统信息进行调查,文件系统调查包括MAC访问记录、异常和隐藏文件、文
件系统权限和流文件检查。

应用程序
>>应用程序配置

这部分工作主要是对各项应用程序的配置做审计和分析。

那么看看在这台机器上我们所取得的信息(摘录部分关键信息):
1.进程
在进程检查部分,我们依次运行多个进程检查工具,并把输出重定向到日志文件
中,完成系统映像的当前状态副本: 代码

============================================================
;process.cmd

ps >log\ps.log

sclist >log\ps.log

sclist -r >log\ps.log

psservice  >log\ps.log

ptree >log\ps.log

kproccheck -d >log\ps.log

kproccheck -p >log\ps.log

============================================================


在这个脚本中,我们运行的程序有:
ps 列出当前所有进程;
sclist 列出所有服务;
sclist -r 列出所有当前正在运行的服务;
psservice 列出服务详细信息;
ptree 列出当前进程树(派生关系);
kproccheck -d 列出所有内核进程(模块);
kproccheck -p 列出所有用户进程;

这里有两个命令比较特殊,ptree可以列出所有进程派生关系,对于我们进行异常
进程分析大有帮助;kproccheck是一个第三方工具,可以从内核进程表中读取信息
能够更深入的发掘一些隐藏信息。

ptree输出 代码 ============================================================
[System Process] (0)
   System (8)
      SMSS.EXE (192)
         CSRSS.EXE (216)
         WINLOGON.EXE (240)
            LSASS.EXE (280)
            SERVICES.EXE (268)
               AWHOST32.EXE (652)
               dcevt32.exe (700)
               Dcomsvc.exe (744)
               dcstor32.exe (756)
               DefWatch.exe (804)
               fsshd2.exe (1776)
                  fsshd2srv.exe (2056)
                    fssh2console.ex (2416)
                        CMD.EXE (2456)
                           ptree.exe (2484)
                     fsshsftpd.exe (2432)
                  inetinfo.exe (1196)
               LLSSRV.EXE (856)
               msdtc.exe (488)
               msiexec.exe (2540)
               mstask.exe (976)
               omaws32.exe (1052)
               diagorb.exe (1732)
               ptreesvc.exe (2640)
               Rtvscan.exe (936)
               SERVUD~1.EXE (1008)
               SNMP.EXE (1068)
               svchost.exe (1216)
               svchost.exe (1856)
               svchost.exe (1176)
               svchost.exe (824)
               svchost.exe (436)
                  DLLHOST.EXE (2576)
                  DLLHOST.EXE (1804)
               termsrv.exe (2128)
               WinMgmt.exe (1164)
explorer.exe (1832)
   atiptaxx.exe (1752)
   BacsTray.exe (2004)
   CMD.EXE (2236)
      mmc.exe (2256)
      msiexec.exe (1804)     Terminated
         conime.exe (2120)
   daemon.exe (2024)
   IEXPLORE.EXE (2496)
   IEXPLORE.EXE (2140)
      flashget.exe (1888)
   internat.exe (2040)
   magentproc.exe (2064)
   SERVUT~1.EXE (2048)
   VPTray.exe (2016)
============================================================

ps输出 代码

============================================================
PsList v1.12 - Process Information Lister


Copyright (C) 1999-2000 Mark Russinovich
Systems Internals - http://www.sysinternals.com
Process information for CJL-NMS:


Name         Pid Pri Thd  Hnd    Mem     User Time   Kernel Time   Elapsed Time


Idle           0   0   4    0     16   0:00:00.000 818:51:39.750  211:18:24.375

System         8   8  52  159    300   0:00:00.000   4:45:45.921  211:18:24.375

SMSS         192  11   6   38    412   0:00:00.015   0:03:26.828  211:18:24.375

CSRSS        216  13  15  677   2232   0:00:31.500   0:02:24.796  211:18:18.609

WINLOGON     240  13  17  442   2488   0:00:00.453   0:11:11.859  211:18:17.703

SERVICES     268   9  28  530   5960   0:00:03.750   0:05:22.546  211:18:16.812

LSASS        280   9  19  315   6364   0:00:01.484   0:12:06.015  211:18:16.796

svchost      436   8  12  349   5672   0:01:08.687   0:08:35.265  211:18:15.671

msdtc        488   8  36  228   6708   0:00:00.312   0:04:49.671  211:18:15.140

AWHOST32     652   8  19  375   9124   0:01:15.281   0:15:17.203  211:18:14.500

dcevt32      700   8   4  104   3688   0:00:00.093   0:14:31.796  211:18:04.843

Dcomsvc      744   8   5  110   3872   0:00:00.031   0:03:38.343  211:18:04.703

dcstor32     756   8   8  126   4704   0:00:47.812   0:06:46.765  211:18:04.640

DefWatch     804   8   4   49   2740   0:00:00.015   0:05:47.046  211:17:56.546

svchost      824   8  20  419   9936   0:00:42.093   0:06:35.453  211:17:56.484

LLSSRV       856   9   9   82   2580   0:00:00.156   0:09:22.390  211:17:56.046

Rtvscan      936   8  35  301  16112   2:16:39.390  11:58:04.312  211:17:55.859

mstask       976   8   6  127   3980   0:00:00.062   0:04:30.781  211:17:55.593

SERVUD~1    1008   8  10  131   7484   0:00:03.921   0:04:26.546  211:17:55.437

omaws32     1052   8  47  453  23656   0:12:32.093   0:06:14.609  211:17:55.250

SNMP        1068   8  11  266   6452   0:00:00.281   0:06:14.640  211:17:55.218

termsrv     1124  10  12  118   4220   0:00:00.109   0:04:00.312  211:17:55.031

WinMgmt     1164   8   5  177    512   0:00:05.046   0:06:32.046  211:17:54.843

svchost     1176   8   7  381  13416   0:00:06.406   0:24:42.015  211:17:54.671

inetinfo    1196   8  21  514   8904   0:02:42.968   0:28:18.281  211:17:54.609

diagorb     1732   8   2   84   4004   0:00:01.062   0:02:13.312  211:17:46.421

svchost     1856   8  14  177   3856   0:00:00.062   0:11:49.890  211:17:24.812

svchost     1216   8   7  211   7808   0:00:00.046   0:16:46.593  189:17:22.078

Explorer    1832   8  13  605   5236   0:00:20.234   0:01:33.156   10:36:36.453

Atiptaxx    1752   8   2   87   3848   0:00:00.046   0:00:00.484   10:36:34.109

BacsTray    2004   8   1   18   1972   0:00:00.046   0:00:00.125   10:36:33.984

vptray      2016   8   3  138   6112   0:00:00.093   0:00:00.671   10:36:33.875

daemon      2024   8   2   72   4724   0:00:00.015   0:00:00.375   10:36:33.843

internat    2040   8   1   28   2152   0:00:00.031   0:00:00.171   10:36:33.750

SERVUT~1    2048   8   1   30    396   0:00:00.046   0:00:00.046   10:36:33.656

magentproc  2064   8   4  154   4928   0:00:00.125   0:00:01.140   10:36:33.437

conime      2120   8   1   19   1388   0:00:00.031   0:00:00.062    6:57:40.312

cmd         2236   8   2   48    124   0:00:00.062   0:00:00.531    2:49:29.328

mmc         2256   8   6  154   4600   0:00:02.218   0:00:05.937    2:49:24.468

termsrv     2128  10  38   65   3392   0:36:39.750   2:27:58.125    2:48:38.343

IEXPLORE    2140   8   7  361  10040   0:00:13.640   0:00:33.046    2:41:03.859

flashget    1888   8   8  327   6060   0:00:05.531   0:00:02.843    2:16:59.796

fsshd2      1776   8   3   91   3908   0:00:00.125   0:00:00.156    1:40:23.812

fsshd2srv   2056   8   3  141   6124   0:00:01.296   0:00:01.281    1:35:53.093

fssh2consol 2416   8   1   30   1920   0:00:14.031   0:00:38.125    1:35:36.531

cmd         2456   8   1   29   1572   0:00:00.078   0:00:01.000    1:35:36.421

fsshsftpd   2432   8   1   63   2956   0:00:00.296   0:00:01.046    1:07:11.453

ps          2488   8   2   96   1692   0:00:00.046   0:00:00.281    0:00:00.062
============================================================



kproccheck -p 输出 代码 ============================================================
KProcCheck Version 0.1 Proof-of-Concept by SIG^2 (www.security.org.sg)

Process list by traversal of ActiveProcessLinks

8     -           System  
192   -         SMSS.EXE  
220   -        CSRSS.EXE  
240   -     WINLOGON.EXE  
268   -     SERVICES.EXE  
288   -        LSASS.EXE  
444   -      svchost.exe  
468   -      spoolsv.exe  --[Hidden]--
488   -        msdtc.exe  
656   -     AWHOST32.EXE  
704   -      dcevt32.exe  
748   -      Dcomsvc.exe  
760   -     dcstor32.exe  
808   -     DefWatch.exe  
828   -      svchost.exe  
840   -       fsshd2.exe  
848   -    fsshd2srv.exe  
880   -       LLSSRV.EXE  
960   -      Rtvscan.exe  
996   -     ptreesvc.exe  
1016  -       mstask.exe  
1052  -     SERVUD~1.EXE  
1104  -      omaws32.exe  
1116  -         SNMP.EXE  
1136  -       syinfo.exe  --[Hidden]--
1172  -      termsrv.exe  
1208  -      WinMgmt.exe  
1232  -      svchost.exe  
1252  -     inetinfo.exe  
1744  -       daemon.exe  
1788  -       VPTray.exe  
1800  -     BacsTray.exe  
1824  -     atiptaxx.exe  
1832  -      diagorb.exe  
1920  -      svchost.exe  
1996  -     explorer.exe  
2000  -   KProcCheck.exe  
2044  -     internat.exe  
2052  -     SERVUT~1.EXE  
2060  -   magentproc.exe  
2096  -  fssh2console.ex  
2108  -          CMD.EXE  
2116  -    fsshsftpd.exe  


Total number of processes = 44
============================================================

在ptree和ps中,我们看到了这两个异常进程: 代码  Dcomsvc.exe (744)
 termsrv.exe (2128)
也就是第一节中我们发现的skserver和后门TerminalServer;

然后在Kproccheck中我们又发现了这样两个隐藏进程: 代码 468   -      spoolsv.exe  --[Hidden]--
1136  -       syinfo.exe  --[Hidden]--
而这两个进程在ps中竟然看不到!显然在这个系统中除了TerminalServer之外
还存在更深入一层的后门程序!

那么我们来看看它们都干了什么。作为一个后门(木马、特洛伊),它最终的目的
就是取得对应主机的控制权,创造一个意外的通路。那么,只要有动机,就一定
能查到根源,我们就从它的途径着手,来分析这两个后门。


2.网络
入侵者要使用后门,就必须通过网络连接,而无论是skserver还是termserv,
要连接到它们,都必须开放端口的。我们运行了这样一个脚本来检查网络状态: 代码

============================================================
;network.cmd
 

netstat -na >log\netstat.log

fport >log\fport.log

promiscdetect >promisc.log

pipelist >pipelist.log
============================================================


解释一下我们这里所使用的工具。
netstat 是windows系统内置的命令,-na参数可以列出所有tcp\udp连接。
fport是一个非常有用的第三方工具,可以列出所有端口与开放它们的进程的
关连表。
promiscdetect是一个第三方工具,可以检测网络接口状态,是否有sniffer
类程序运行。
pipelist是Windows ResKit中的一个工具,列出系统中的所有管道,察看
是否有通过Windows管道连接的后门。

Fport输出 代码

===========================================================
FPort v2.0 - TCP/IP Process to Port Mapper

Copyright 2000 by Foundstone, Inc.
http://www.foundstone.com

Pid   Process            Port  Proto Path            

              
1008  SERVUD~1       ->  21    TCP   C:\PROGRA~1\Serv-U\SERVUD~1.EXE

1776  fsshd2         ->  22    TCP   C:\Program Files\F-Secure\ssh server\fsshd2.exe

2056  fsshd2srv      ->  22    TCP   C:\Program Files\F-Secure\ssh server\fsshd2srv.exe

436   svchost        ->  135   TCP   C:\WINNT\system32\svchost.exe

2064  magentproc     ->  443   TCP   C:\Program Files\Mercury Interactive\LoadRunner\launch_service\bin\magentproc.exe

8     System         ->  445   TCP                                

488   msdtc          ->  1025  TCP   C:\WINNT\System32\msdtc.exe  

976   MSTask         ->  1029  TCP   C:\WINNT\system32\MSTask.exe  

1196  inetinfo       ->  1030  TCP   C:\WINNT\System32\inetsrv\inetinfo.exe

1052  omaws32        ->  1031  TCP   C:\Program Files\Dell\OpenManage\iws\bin\win32\omaws32.exe

1732  diagorb        ->  1032  TCP   C:\PROGRA~1\Dell\OPENMA~1\oldiags\vendor\pcdoctor\bin\diagorb.exe

1732  diagorb        ->  1033  TCP   C:\PROGRA~1\Dell\OPENMA~1\oldiags\vendor\pcdoctor\bin\diagorb.exe

1732  diagorb        ->  1034  TCP   C:\PROGRA~1\Dell\OPENMA~1\oldiags\vendor\pcdoctor\bin\diagorb.exe

1052  omaws32        ->  1035  TCP   C:\Program Files\Dell\OpenManage\iws\bin\win32\omaws32.exe

8     System         ->  1036  TCP                                

1052  omaws32        ->  1311  TCP   C:\Program Files\Dell\OpenManage\iws\bin\win32\omaws32.exe

1176  svchost        ->  1407  TCP   C:\WINNT\system32\svchost.exe

1176  svchost        ->  1409  TCP   C:\WINNT\system32\svchost.exe

8     System         ->  1421  TCP                                

488   msdtc          ->  3372  TCP   C:\WINNT\System32\msdtc.exe  

2064  magentproc     ->  5001  TCP   C:\Program Files\Mercury Interactive\LoadRunner\launch_service\bin\magentproc.exe

2064  magentproc     ->  5002  TCP   C:\Program Files\Mercury Interactive\LoadRunner\launch_service\bin\magentproc.exe

2064  magentproc     ->  5003  TCP   C:\Program Files\Mercury Interactive\LoadRunner\launch_service\bin\magentproc.exe

652   awhost32       ->  5631  TCP   C:\Program Files\Symantec\pcAnywhere\awhost32.exe

1052  omaws32        ->  8000  TCP   C:\Program Files\Dell\OpenManage\iws\bin\win32\omaws32.exe

1196  inetinfo       ->  8222  TCP   C:\WINNT\System32\inetsrv\inetinfo.exe

1196  inetinfo       ->  8333  TCP   C:\WINNT\System32\inetsrv\inetinfo.exe

1008  SERVUD~1       ->  43958 TCP   C:\PROGRA~1\Serv-U\SERVUD~1.EXE

2064  magentproc     ->  50500 TCP   C:\Program Files\Mercury Interactive\LoadRunner\launch_service\bin\magentproc.exe

2064  magentproc     ->  54345 TCP   C:\Program Files\Mercury Interactive\LoadRunner\launch_service\bin\magentproc.exe

1068  snmp           ->  161   UDP   C:\WINNT\System32\snmp.exe    

8     System         ->  445   UDP                                

280   lsass          ->  500   UDP   C:\WINNT\system32\lsass.exe  

2140  IEXPLORE       ->  1367  UDP   C:\Program Files\Internet Explorer\IEXPLORE.EXE

1888  flashget       ->  1399  UDP   C:\Program Files\FlashGet\flashget.exe

1196  inetinfo       ->  3456  UDP   C:\WINNT\System32\inetsrv\inetinfo.exe

652   awhost32       ->  5632  UDP   C:\Program Files\Symantec\pcAnywhere\awhost32.exe

============================================================



PromiscDetect输出 代码

============================================================
PromiscDetect 1.0 - (c) 2002, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
               - http://ntsecurity.nu/toolbox/promiscdetect/

Adapter name:

- Broadcom NetXtreme Gigabit Ethernet

Active filter for the adapter:


- Directed (capture packets directed to this computer)

- Multicast (capture multicast packets for groups the computer is a member of)

- Broadcast (capture broadcast packets)

- Promiscuous (capture all packets on the network)



WARNING: Since this adapter is in promiscuous mode there could be a sniffer running on this computer!



Adapter name:

- Broadcom NetXtreme Gigabit Ethernet

Active filter for the adapter:


- Directed (capture packets directed to this computer)

- Multicast (capture multicast packets for groups the computer is a member of)

- Broadcast (capture broadcast packets)

============================================================



Pipelist输出 代码 ============================================================
PipeList v1.01

by Mark Russinovich
http://www.sysinternals.com


Pipe Name                                    Instances       Max Instances
---------                                    ---------       -------------

InitShutdown                                      2               -1      
lsass                                             3               -1      
ntsvcs                                           58               -1      
scerpc                                            2               -1      
net\NtControlPipe1                                1                1      
略    
sshpipe.000006f0.00000006                         1                1      
sshpipe.000006f0.00000007                         1                1      
sshconsolepipe.00000808.00000000                  1                1      
sshpipe.00000808.00000000                         1                1      
sshpipe.00000808.00000001                         1                1      
sshpipe.00000808.00000002                         1                1    

============================================================


结果很快就出来了,但是这里我们也发现了最令人惊惧的事情!我们完全没有看到
Dcomsvc.exe (744)和termsrv.exe (2128)监听任何网络端口!结合上一小节
中发现了两个系统隐藏进程的问题,我们可以断定,在这个系统中当前一定还隐藏
着藏匿更深的后门。

那么我们做一个小测试,看看TerminalServer是否真的没有监听端口。
使用终端服务客户端连接主机的3389端口--这是终端服务常规监听的端口。
失败了。但是我不相信它真的是良民 -- 毕竟上面只是常规的情况,而现在 --
这个程序是被入侵者作为后门而存在的。

此外,在PromiscDetect的输出中,我们可以看到第一块网卡的状态是Promiscuous
这代表着当前网络接口处与混杂模式下,混杂模式只有当系统中存在Sniffer类程序的
时候才会存在,而当前系统中没有运行任何可见的网络分析程序,那这就只有一种可能
-- 入侵者还安装了Sniffer用以窃听网络中传输的用户口令!
BTW: 当前主机上运行了FTP,这些用户的口令都有危险;另外,还有一个异常事件,
就是当我使用PCAnywhere登录到系统时,PCAnywhere提示,当前连接加密被设为none!
这显然也不是系统管理员所为的...

3.系统环境检查
接下来我们进行了系统环境检查,主要是手工检查了若干个系统启动项 -- Windows
系统中能够在启动时自动运行和加载程序的地方,包括注册表的若干处键值和"启动"
程序组。没有发现什么异常程序。

Tips: 可以使用msconfig程序来查看系统启动项加载的程序;或使用注册表编辑器
查看[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
等键值,查看相关值;当然注册表中能够隐藏加载程序的地方还有很多,略过不讲。

在注册表的检查中,我特别检查了这么一项: 代码 ============================================================
C:\WINNT\cmd> reg query "HKLM\System\CurrentControlSet\Control\Terminal

Server\WinStations\RDP-TCP\PortNumber"                      

REG_DWORD       PortNumber      4652

============================================================

这是TerminalServer服务指定监听服务端口的键值,哈哈,露出狐狸尾巴了吧。
这台机器上的后门TerminalServer服务当前监听端口被改成了TCP:4652,而不是
正常的TCP:3389,当然连接不上! 换个端口使用终端服务客户端连接,成功!
登录进来,丢掉垃圾的PCAnywhere,终端服务速度的确要快很多 -- 跑题一下,
在56k Modem的连接速度下,PCAnywhere刷新窗口几乎只能一行行刷新,每个动作
都要>5秒钟才能响应,而终端服务256色模式的速度还是能够接受的,起码能够立刻
回显和响应我的操作。鸟枪换炮啦,这让我想起抗日战争时的红军爷爷们--没有枪,
没有炮,鬼子给我们造!这里是不是改换成...黑客给我们造?

开心5秒钟后,我们继续。

分析一下文件系统吧。既然前面的网络检查中分析出当前系统中有sniffer,同样
还怀疑系统中可能存在keylogger程序,那么这两类程序都是需要随时记录日志文
件的,那么我们就看看系统中最新修改过的文件:

使用系统命令dir /s /O:D /T:C [目录名]可以按创建时间排序列出目录下的所
有文件;而要按修改时间排序的话可以使用/T:W参数。我们先看下最近修改过的文
件: 代码

============================================================
C:\WINNT\system32>dir /s /O:D /T:W

驱动器 C 中的卷是 Dell Server

卷的序列号是 B4C7-DFC5

C:\WINNT\system32 的目录


1996-10-15  09:53               78,848 INLOADER.DLL
1998-03-20  18:14                1,927 axctrnm.h
1998-06-19  21:31                  344 Pintlpad.cnt
1998-09-16  19:08                5,523 nntpctrs.h
1998-11-05  13:21              154,487 Pintlpad.HLP
1999-02-26  19:30                  773 ntfsdrct.h
1999-02-28  02:31               69,120 msdbg.dll
1999-02-28  02:32              183,574 pdm.dll

...略...

2004-03-31  12:02               16,384 Perflib_Perfdata_414.dat
2004-04-02  16:24               16,384 Perflib_Perfdata_41c.dat
* 2004-04-07  11:52               55,296 list.gif
* 2004-04-07  11:53               45,056 finder.gif
* 2004-04-07  11:53               28,160 nlog.gif
* 2004-04-07  11:53               77,824 kill.gif
* 2004-04-07  11:53              131,072 info.gif
* 2004-04-07  11:53               14,747 TInject.Dll
* 2004-04-07  11:53               69,632 spinfo.dll
* 2004-04-07  11:57                8,464 sporder.dll
* 2004-04-07  11:57                   49 mslsp.dat
* 2004-04-07  12:01               16,384 Perflib_Perfdata_450.dat
* 2004-04-07  12:06               62,048 perfc009.dat
* 2004-04-07  12:06              376,760 perfh009.dat
* 2004-04-07  12:11               20,480 Dcomsvc.exe
* 2004-04-07  12:11                   93 nt.bat
 

2004-04-13  17:05               16,384 Perflib_Perfdata_45c.dat

...略...

2005-02-10  03:00      

          drivers
* 2005-02-10  03:03                  405 Svclog.log
2005-02-10  03:04                 NtmsData
2005-02-10  03:04                  201 events.txt
2005-02-18  15:35                 AdCache
2005-02-18  16:25                 inetsrv
2005-02-18  23:01                 .
2005-02-18  23:01                 ..

            2107 个文件    287,603,315 字节
              35 个目录    414,384,128 可用字节
============================================================



注意看前面打了*号的那些文件,说它们不是后门之类入侵者留下的文件我才不信。
先随便打开一个最近修改过的(就在不久前)Svclog看看: 代码 ============================================================
C:\WINNT\system32>type Svclog.log

Performing Time: 2/19/2005 3:11:0 --> Start OK

Performing Time: 2/19/2005 3:11:0 --> The System Is Online

Performing Time: 2/19/2005 3:11:0 --> Read Setting OK

Performing Time: 2/19/2005 3:11:0 --> InitBackDoor() OK

Performing Time: 2/19/2005 3:11:0 --> InitSocket() OK

Performing Time: 2/19/2005 3:11:0 --> Probably Static IP

Performing Time: 2/19/2005 3:11:0 --> Start Sniffing On 61.***.***.***

Performing Time: 2/19/2005 3:19:35 --> The Service Is Stopping

Performing Time: 2/19/2005 3:19:36 --> The Service Is Stopped Successfully

============================================================

呔!现形了吧。然后我们就顺藤摸瓜,看了下这个文件的创建时间,竟然又是
2004年4月7日?再看看其他那几个文件,也都是那一天的,包括我们一开始就
发现的那个Dcomsvc.exe 。我们再看看2004年4月7日留下的另一个文件nt.bat 代码

============================================================

C:\WINNT\system32>type nt.bat
 

dcomsvc -install

dcomsvc -config port 1432

dcomsvc -config starttype 2

net start dcomsvc

============================================================


这个就是最初安装和启动dcomsvc(真名skserver)的脚本吧,同时也指出了它
的监听端口 TCP:1432。测试连接成功,但是与TermServ一样,不可见。

我们总结性的看一下这一天创建的所有文件: 代码 ============================================================
C:\WINNT\system32>dir /s /O:D /T:C |findstr 2004-04-07

2004-04-07  11:52               55,296 list.gif
2004-04-07  11:52               45,056 finder.gif
2004-04-07  11:53               28,160 nlog.gif
2004-04-07  11:53               77,824 kill.gif
2004-04-07  11:53              131,072 info.gif
2004-04-07  11:53               76,288 SvcHostDLL.dll
2004-04-07  11:53               62,464 sysinfo.dll
2004-04-07  11:53               14,747 reginfo.exe
2004-04-07  11:53               69,632 spinfo.dll
2004-04-07  11:54                  944 ms29.ini
2004-04-07  11:55               14,747 TInject.Dll
2004-04-07  11:55                  412 Svclog.log
2004-04-07  11:57                8,464 sporder.dll
2004-04-07  11:57                   49 mslsp.dat
2004-04-07  12:01               16,384 Perflib_Perfdata_450.dat
2004-04-07  12:11                   93 nt.bat
============================================================


4.用户帐号
黑客在入侵后,经常会用一种最简单直接古老的方法留下后门,那就是添加用户
帐号。我们可以使用[控制面板]->[管理工具]->[计算机管理]来查看系统用户
帐号,或者象下面这样直接用net user命令行工具来查看用户属性。

net user 输出 代码

=====================================================================
用户名                 Administrator

全名                  

注释                   管理计算机(域)的内置帐

用户的注释            

国家(地区)代码         000 (系统默认值)

帐户启用               Yes

帐户到期               永不

上次设置密码           2003/10/30 下午 04:20

密码到期               永不

密码可更改             2003/10/30 下午 04:20

需要密码               Yes

用户可以更改密码       Yes

允许的工作站           All

登录脚本              

用户配置文件          

主目录                

上次登录               2005/2/20 下午 10:01
 

可允许的登录小时数     All

本地组会员             *Administrators      

全局组成员             *None                

命令成功完成。

=====================================================================
用户名                 Guest

全名                  

注释                   供来宾访问计算机或访问域的内置帐户

用户的注释            

国家(地区)代码         000 (系统默认值)

帐户启用               Yes

帐户到期               永不

上次设置密码           2004/4/7 上午 11:52

密码到期               永不

密码可更改             2004/4/7 上午 11:52

需要密码               No

用户可以更改密码       No

允许的工作站           All

登录脚本              

用户配置文件          

主目录                

上次登录               永不

可允许的登录小时数     All

本地组会员             *Administrators       *Guests              

全局组成员             *None                

命令成功完成。

=====================================================================
用户名                 monitor

全名                   monitor

注释                   Special account for Remote Performance Monitor

用户的注释            

国家(地区)代码         000 (系统默认值)

帐户启用               Yes

帐户到期               永不

上次设置密码           2004/6/1 下午 04:32

密码到期               永不

密码可更改             2004/6/1 下午 04:32

需要密码               Yes

用户可以更改密码       No

允许的工作站           All

登录脚本              

用户配置文件          

主目录                

上次登录               永不

可允许的登录小时数     All

本地组会员             *Administrators      

全局组成员             *None                

命令成功完成。

=====================================================================
用户名                 TsInternetUser

全名                   TsInternetUser

注释                   这个用户帐户被终端服务所使用。

用户的注释            

国家(地区)代码         000 (系统默认值)

帐户启用               Yes

帐户到期               永不

上次设置密码           2005/2/18 上午 03:03

密码到期               永不

密码可更改             2005/2/18 上午 03:03

需要密码               No

用户可以更改密码       No

允许的工作站           All

登录脚本              

用户配置文件          

主目录                

上次登录               永不

可允许的登录小时数     All

本地组会员             *Guests              

全局组成员             *None                

命令成功完成。
=====================================================================



在这里我们列举了4个比较重要的用户,它们包含了和这次入侵事件相关的一些
重要数据。在用户帐号中最重要的信息是关于Guest帐号: 代码

=====================================================================
* 用户名                 Guest
 

全名                  

注释                   供来宾访问计算机或访问域的内置帐户

* 帐户启用               Yes

帐户到期               永不

* 上次设置密码           2004/4/7 上午 11:52

密码到期               永不

* 密码可更改             2004/4/7 上午 11:52

需要密码               No

用户可以更改密码       No    

* 上次登录               永不

可允许的登录小时数     All

* 本地组会员             *Administrators       *Guests  

=====================================================================


注释*的这几行透漏出了重要信息,默认情况下Guest用户是Guests组成员,并且
不可能用来登录系统。而这台机器上Guest被加进了Administrators组,这就意
味着它和系统超级用户Administrator具有同等特权!再看一下它的激活时间,
上次修改密码是在2004/4/7 上午 11:52,这几乎就是系统被入侵的精确时间了。
与文件系统MAC分析结合,可以证实系统入侵发生的准确时间。

那么其他帐户和这次入侵事件有什么关系呢?我们看一下本地用户密码破解后的
口令明文信息: 代码 =====================================================================
USERNAME           LANMAN_PASSWORD       PASSWORD    

__vmware_user__           * empty *           * empty *                    

Administrator                                        

Guest                   * empty *           * empty *                        

monitor                   123456               123456    

IUSR_CXL                

IWAM_CXL        

TsInternetUser               

=====================================================================

这里就显示出了更多信息,__vmware_user__和Guest用户的口令为空!而且Guest
用户还具有Administrator特权,并且可以从任何地点通过网络登录到本机;此外,
当前系统上还有一个monitor用户,密码为123456,显然这个密码也是极不安全的,
破解它连一秒钟都不用。虽然这是系统管理员用于管理的额外用户,但是它也具有
Administrator同等特权,而这个密码我相信入侵者想得到它也不是难事。最后就
是关于Administrator用户,本来Administrator用户的密码长度为12位,应该
说是足够安全了,但只要别人能够进入这台机器,对于入侵者来说,就完全没有隐私
可言,我们看一下黑客留下的工具之一 c:\winnt\system32\finder.gif 代码

=====================================================================
C:\>finder.exe


         To Find Password in the Winlogon process

Usage: a.exe DomainName UserName PID-of-WinLogon

The debug privilege has been added to PasswordReminder.

The WinLogon process id is 216 (0x000000d8).

To find CXL/Administrator password in process 216 ...

The encoded password is found at 0x010f0800 and has a length of 12.

The logon information is: CXL/Administrator/@rigen2000x#.

The hash byte is: 0x7e.

=====================================================================


Windows2000有一个特性,就是会把当前登录用户的口令明文缓存在Winlogon
进程的缓存空间中,而finder就是从Winlogon缓存中发掘当前登录用户口令的
黑客工具。


5.日志,网络,和其他
在这一节中,实际还作了其他的很多取证工作,使用eventdmp和eventlog对系统日
志信息作了分析和备份等等。但是因为当前系统中,各项应用服务运行基本正常,
而至于事件日志--Windows 2000默认就不记安全日志,而其他日志能够提供的信息
又太少了,所以略过这些部分。另外,在PipeList的输出中,也没有发现异常管道,
所以略过此部分。


本章结论:
1.本主机已被渗透入侵;
2.本主机已被安装如下后门:
  C:\WINNT\system32\Dcomsvc.exe(skserver 1.0)
  C:\WINNT\system32\Termsrv.exe(TerminalServer)                                                        
  C:\WINNT\AppPatch\app\openmange.exe(CCProxy 6.0)
3.发现隐藏后门程序:
  468   -      spoolsv.exe  --[Hidden]--
  1136  -       syinfo.exe  --[Hidden]--
4.系统上运行了Sniffer程序,可能用以窃听口令;
5.系统Guest用户被激活,口令为空,同时被加入Administrators组;
  __vmware_user__用户口令为空;
  monitor用户和Administrator用户口令已泄漏。
6.PCAnywhere的连接加密被设为none。
7.确定终端服务端口被修改作为后门,工作端口TCP:4652;skserver工作端口
  TCP:1432。同时这些进程和端口被隐藏,这意味着系统中有更深层次的后门。
8.基本确定系统被入侵时间为2004年4月7日,中午12时左右。



本章遗留问题:

虽然本章中,通过一些常规的系统管理手段分析,查出了一些问题,但是也发现
了一些隐藏更深的蛀虫。它们藏在哪儿呢?
1. Terminal会隐身?
2. 抓住忍者!


所要做的事:
在本章中,主要是初步分析异常状况。通过对系统中各项信息的分析,找出入侵者
的踪迹和藏身之地,这个过程可能很简单,只用fport之类的简单工具就可以清除;
也可能很复杂,迎接你的,将是通往更广袤幽暗地域的一个黑洞...

在本章所要做的是,主要使用过各种工具,尽可能快速、全面、详尽、冗余的取得
系统当前状态下的更多信息。具体的方面和步骤,如同本章开始所述的六个方面,
不再赘述。


正确的途径:
在实际的应急响应、取证和分析过程中,需要的步骤更严谨些,就不像本章中那么
快速简洁了。

正确的步骤应该从发现问题开始,当发现系统被入侵后,进行分析的步骤应该是:
1.根据情况和系统重要级别确定处理方针,是抓,还是堵?
1.1如果是堵的话,那么很好说,立刻断开网线,然后继续第二步过程;
1.2如果是抓的话...这就按照本文的正常顺序,直接跳转到第二步,同样进行
下一步过程。

2.迅速建立系统的当前状态镜像,主要是磁盘镜像、内存镜像以及当前系统信息
采集。
系统信息的采集过程就如本章过程所述,但是需要注意的一点,准备好你自己的
应急工具包,包括各项系统信息采集和分析工具的。同时分析过程最好能够用脚本
自动化完成,并且直接存储在远程计算机上。这能够保证信息的正确性、完整性,
以及系统映像的纯洁性和稳定性 -- 记住这一点,案发时保持案发现场的纯洁稳定
是最重要的一点。
Tips:为了不受系统入侵者的影响,在本案中elly安装了一个ssh服务器(出于
带宽限制的苦衷和对安全性的考虑两方面),之后上传了自己的一个工具包,来对
系统信息进行检查。

接下来就是按照可能性和环境对系统磁盘、内存进行完整干净的镜像备份。对磁盘
镜像Unix下的dd是一个最好的选择,但是Windows下有时很可能你的系统不能够
重启或离线,那么这时候,我个人推荐一个好工具,Acronis TruImage,虽然
它并不一定能够完全完整的保证镜像纯净(可能不符合司法鉴定程序),但对于一般
情况,在在线的Windows平台上它是一个好选择。主要特性有:支持在线(Windows
本机正在运行时)镜像,支持远程镜像,支持把镜像文件作为虚拟硬盘直接还原加载。
仅这三点都是我认为它成为不可替代的好选择。

BTW:在本例中,elly因为只有56K猫猫,所以偷了个懒,直接在主机上进行分析
操作了,这不符合极端安全原则,大家不要跟我学--偷懒。

3.加载你的备份镜像为只读。并且进行分析和取证操作。
如果是TrueImage的镜像,可以直接加载为虚拟磁盘;如果是DD镜像,则可能需要
恢复到一个物理磁盘,或Vmware虚拟机中重建虚拟现场环境,或不需要运行程序的
时候,也可以使用各种Unix的loopback FS特性进行虚拟文件系统的加载。

4.深入分析,继续见下一章。


本章Tips:
1.尽量进行离线分析,为了不破坏系统当前状态和引起入侵者注意,注意采集到
足够信息后立刻建立系统的静态离线镜像,然后在镜像副本上进行操作,保持现
场最重要。
2.天下武功,无奸不破,唯快不破。在入侵分析和取证工作中,对系统的熟知程度
和反应速度是最重要的。能够越快的采集到越多的信息,你胜利的把握就越大。在与
黑客的战争中,往往速度就是成功与否的取决因素。因此,最好能够迅速的准备好
处理程序,并且使用脚本进行自动化的信息收集和分析,以加快人工分析的速度和
缩短响应时间。
3.MAC是文件系统分析中的重要证据,分别是文件的M(最后修改时间)A(最后访问
时间)C(创建时间)。其中每一项都包含着非常重大的隐藏意义,合理的利用MAC信
息,结合系统日志等其他证据,良好的推理就可以刻划出一个黑客行为的流程图!
但是MAC信息是非常脆弱易失的,同时也并非没有方法伪造,所以尽可能的尽早建立
系统影响副本,保持MAC证据,同时使用副本时注意尽量进行只读加载,因为A(最
后访问时间),只要读取文件就可能造成改变,只读加载是可以避免这个问题。
再次说明,注意保持现场,你的机会只有一次。