哇!有黑客(一)

来源:安全焦点论坛

异象:昨夜西风凋碧树

序幕:
話説那日elly與衆人閒談完"黑客趨勢(趣事)"之後,獨自下樓喝茶去了。 鳳簫
聲動,玉壺光轉,正恍惚閒,忽聞手機鈴聲。原是尋到一服務器,正在閒置,可
為所用。於是登錄上去,稍做配置...


PCAnywhere正在登录。

方世玉的老妈的师兄经常说,安全第一,安全第一。上去之后,当然是先看看服
务器的服务配置。运行"Services.msc"打开服务管理器,一眼看去,不对啊...
这里有几位新住客怎么恁得陌生?

代码
============================================================

Dcom Services   [描述: 空]            已启动  自动  LocalSystem

Secure Port Server       [同上]

Windows Event Logger     [同上]
============================================================


用小脑也知道第一位肯定是用假身份证登录的!查看详细信息:
代码
============================================================
服务名称:          dcomsvc
显示名称:          DCOM Services
描述:             [空]
可执行文件路径:     C:\WINNT\system32\Dcomsvc.exe
启动类型:          自动
============================================================


C:\WINNT\system32 elly在那儿住了那么多年,就没见到过这号兄弟。elly
开始意识到了问题的严重性:系统很可能已经被人入侵了,并且安装了后门!

先看一下当前服务的状态:
代码
============================================================
C:\WINNT\cmd>sclist  
...
running          dcomsvc                                                        
34567890                 DCOM Services                                          
running          Server Administrator             Secure Port Server  
running          Windows Event Logger             Windows Event Logger    

...
============================================================


sclist   列出了当前所有正在运行的Windows系统服务。从服务列表中,我们
最简单直接的先发现了上面三个异常服务。至于怎么发现的么...
第一,他们都没有服务说明(或正确的服务说明),代表他们不是系统自带的服务;
第二,更主要是根据经验啦,一个熟练的Windows系统管理员,对系统中的各项服
务情况是应该做到心中有数洞若观火的;手边至少应该准备好两份文档,第一是
Windows自带的服务列表、功能和状态,第二是每台服务器安装完成之后初始化镜
像状态下的服务列表。

再使用sc query看一下更详细的服务信息:
代码

============================================================
SERVICE_NAME: dcomsvc
34567890
DISPLAY_NAME: DCOM Services
(null)
    TYPE          : 10 WIN32_OWN_PROCESS 
    STATE          : 4  RUNNING
                   (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
 

    WIN32_EXIT_CODE      : 0  (0x0)
    SERVICE_EXIT_CODE : 0  (0x0)
    CHECKPOINT      : 0x0
    WAIT_HINT      : 0x0

============================================================
SERVICE_NAME: Windows Event Logger
DISPLAY_NAME: Windows Event Logger
(null)
    TYPE          : 10 WIN32_OWN_PROCESS 
    STATE          : 4  RUNNING
                   (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)

    WIN32_EXIT_CODE      : 0  (0x0)
    SERVICE_EXIT_CODE : 0  (0x0)
    CHECKPOINT      : 0x0
    WAIT_HINT      : 0x0

============================================================
SERVICE_NAME: CCProxy
DISPLAY_NAME: Dell OpenManage
(null)
    TYPE          : 110 WIN32_OWN_PROCESS INTERACTIVE_PROCESS  
    STATE          : 1  STOPPED
                   (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE      : 1077 (0x435)
    SERVICE_EXIT_CODE : 0  (0x0)
    CHECKPOINT      : 0x0
    WAIT_HINT      : 0x0

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


代码

============================================================
C:\WINNT\cmd>psservice config dcomsvc                                           
 


 Error opening dcomsvc on \\CJL-NMS:                                            

指定的服务并未以已安装的服务存在。                                              
============================================================

C:\WINNT\cmd>psservice config "Windows Event Logger"                            


SERVICE_NAME: Windows Event Logger                                              
(null)                                                                          
        TYPE              : 10 WIN32_OWN_PROCESS                                
        START_TYPE        : 2  AUTO_START                                       
        ERROR_CONTROL     : 0  IGNORE                                           
       

        BINARY_PATH_NAMEE  : C:\WINNT\system32\Termsrv.exe                       
        LOAD_ORDER_GROUP  :                                                     
        TAG               : 0                                                   
        DISPLAY_NAME      : Windows Event Logger                                
        DEPENDENCIES      :                                                     
        SERVICE_START_NAME: LocalSystem
============================================================
C:\WINNT\cmd>psservice config ccproxy  

SERVICE_NAME: ccproxy                                                          
(null)                                                                          
        TYPE              : 110 WIN32_OWN_PROCESS INTERACTIVE_PROCESS           
        START_TYPE        : 3  DEMAND_START                                     
        ERROR_CONTROL     : 1  NORMAL                                           
        BINARY_PATH_NAME  : "C:\WINNT\AppPatch\app\openmange.exe" -service      
        LOAD_ORDER_GROUP  :                                                     
        TAG               : 0                                                   
        DISPLAY_NAME      : Dell OpenManage                                     
        DEPENDENCIES      :                                                     
        SERVICE_START_NAME: LocalSystem            

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



现在,三个服务露出狐狸尾巴来了,

第一个程序位于C:\WINNT\system32\Dcomsvc.exe
经过分析是一个sock5代理服务器skserver v1.0,经常被入侵者安装用来作为攻击其它机器的跳板;

第二个程序位于C:\WINNT\system32\Termsrv.exe,它其实是-- Windows 2000的终端服务程器序,可是它为什么会是这个名字呢?

第三个程序是CCProxy 6.0,一个多功能的应用代理服务器,很显然它也不是管理员正常安装的。


很明显,现在服务器已经被入侵过了,而且也留下了一个后门和两个用作跳板或其它非法用途的代理服务器,那么是不是还存在其它没发现的东西呢?请待下回分解...

本章结论:
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)

本章遗留问题:
1. TerminalServer为什么会变了脸?
2. 系统中按现在的情况还可能存在哪些后门途径?
3. 为什么查看Dcomsrv服务信息失败?

所要做的事:
所要做的事,是指在每个阶段,我们正常情况下应急处理所需要进行的工作。
在本节中,主要是发现异常状况。
在Windows 2000系统中,当系统可能被入侵时,会有一些异常情况发生,系统管理员需要有足够的警觉,并且当异常事件发生时迅速定位原因。主要有以下几种情况:
1. 进程异常
2. 服务异常
3. 资源异常
4. 帐户异常
5. 日志异常
6. 网络异常

正确的途径:
根据上面可能发生的情况,进行异常检查时,可以有一些常用和可选的手段来进行检查。
1. 进程检查。
   任务管理器: 这是Windows 2000系列系统中最常用的进程管理方法了。但是存在一些缺陷。它也必须运行在图形界面下,而可能某些时候
          我们只能在命令行下工作,比如现在--当我只有56k小猫上网的时候。
   ps系列工具: 这是sysinternal公司出品的一系列命令行工具,其中ps和pslist就可以在命令行下列出系统中的所有进程;在windows-2000 ResourceKit中,也有一个类似的命令,tslist。而ps系列命令最强大的功能就是不仅能本地执行,还可以通过IPC$匿名共享连接管道进行远程执行。
   Windows Reskit系列工具: Windows NT/2000 ResourceKit中包含了一系列非常强大的工具,比如tslist和ptree。其中ptree也是另一个强大的工具,包含图形界面和明令行两个版本,能够以树状格式列出进程树和依赖关系,同样它也可以连接远程服务器进行管理。缺点是--在远程服务器上,你必须先安装ptree服务。

2. 服务检查:
   服务管理器: 同样,Windows2000系统中内置了一个服务管理器,它只能运行在图形界面下。可以在[控制面板]->[管理工具]->[服务]中找到 它,或者通过命令行快捷方式"services.msc"来打开。它能够查看、停止、启动服务,并且能够有限度的修改一些服务参数。

   net.exe:   net是Windows 2000系列中内置的一个非常强大的管理命令,包括服务管理的功能。net start用来查看和启动服务;而 net stop 则用来停止服务。不带参数的net start命令将列出当前系统上正在运行的所有服务。它最大的缺点就是在服务管理方面功能比较简单,例如无法得知系统中安装的所有服务,同样也需要管理员对Win2000的服务本身非常熟悉。

   sc.exe:    sc最早也是WinNT ResKit中出现的一个更强大的服务管理工具。在Windows 2003中它已经成为一个内置命令。它可以对Windows服务做几乎所有的操作:

代码

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

 sc query 查询服务状态,不带参数则列出所有服务;

 sc config 配置服务参数;

 sc start 启动一个服务;

 sc stop 停止一个服务;

 sc pause 暂停服务;

 sc delete 删除服务;

 sc create 创建服务;


 同样sc也可以直接在远程机器上连接和执行。使用:

 sc [hostname] [command]的格式连接远程主机。

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


   psservice: psservice.exe是sysinternal ps系列命令中的一个,它的功能与参数都基本和sc一致,具体差别看帮助。

4. 帐户异常:
   计算机管理: 计算机管理是Windows系统内置的系统管理工具,我们可以在这里查看到系统用户信息。
   net.exe:   net user命令可以在命令行模式下管理系统用户帐号和口令。
代码
net user 不带参数则列出所有用户帐号;
net user [username] 查看某用户详细信息;
net user [username] [password] 修改用户口令;
net user [username] /add 添加用户;
net user [username] /delete 删除用户;
net user ... ... /domain 在域模式下执行。

   注意,当系统中发现陌生的用户名,或正常用户帐号口令被修改、滥用等事件都需要引起注意。

5. 日志异常
   当系统各项服务(系统日志、Web日志、ftp日志等)出现异常日志信息时需要注意。
   使用系统命令eventvwr.msc可以打开日志查看器;
   iis日志默认在%SYSTEMROOT%\system32\LogFiles目录下。

3/6. 系统资源和网络
   当系统中出现大量的CPU、内存、磁盘空间、网络带宽异常时,可以用各项手段检测异常原因。

本章Tips:
1. sc命令还有一个姐妹sclist,可以像pslist一样简单的列出所有服务列表。
2. 当使用net start/stop命令管理服务时,可以使用"引号"把包含空格的服务名包括起来。
3. Windows 2000中服务名字有两种形式,分别是 服务名 (缩写短名)和 显示 服务名(带空格的长名)。在大多数情况下两个名字都是有效的,因而也各有优缺点,长名易记,但是难写;短名易写,但是难记。可以使用sc命令查询服务

名字对照。
      sc GetDisplayName 查询DisplayName(长名)
      sc GetKeyName 查询KeyName(短名)
   当使用包含空格的长名时,有可能shell不能正确解析,可以使用""引号引住。

4. Windows 系列的各项服务都有依赖关系,比如RPC Server就是很多服务的前置条件,虽已停止服务可能会造成无法预料的后果,可以使用sc命令查看命令依赖关系。
      sc EnumDepend [服务名]查看服务依赖关系 或
      psservice depend [服务名]

5. 最终的服务管理工具是...注册表编辑器regedit.exe。系统中所有服务在注册表中都存在一个映射数据库,通过修改对应的值就可以查看和修改对应参数。
   例如IIS WWW服务

代码

============================================================
   C:\>reg query HKLM\SYSTEM\CurrentControlSet\Services\W3SVC


   Listing of [SYSTEM\CurrentControlSet\Services\\W3SVC]


   REG_DWORD       Type    32
   REG_DWORD       Start   2
   REG_DWORD       ErrorControl    1
   EXPAND_SZ       ImagePath       C:\WINNT\system32\inetsrv\inetinfo.exe
   REG_SZ          DisplayName     World Wide Web Publishing Service
   MULTI_SZ        DependOnService IISADMIN;
   MULTI_SZ        DependOnGroup
   REG_SZ          ObjectName      LocalSystem
   REG_SZ          Description     [ASP]

   [Parameters]
   [Performance]
   [Security]
   [Enum]
============================================================


...说太多了...详细的看偶的《Windows 2000服务管理》吧。

Leave a comment

Your comment

Why not Login? Sign up now! »