[这个贴子最后由风灵风之子在 2005/02/21 10:57pm 第 1 次编辑]
############################################################
寻踪:众里寻他千百度
场景:
話説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(最
后访问时间),只要读取文件就可能造成改变,只读加载是可以避免这个问题。
再次说明,注意保持现场,你的机会只有一次。
|