基点俱乐部

 找回密码
 成为基民

QQ登录

只需一步,快速开始

搜索
查看: 6335|回复: 4

常见进程与动态连接库DLL木马【讨论】

[复制链接]
发表于 2003-12-3 19:21 | 显示全部楼层 |阅读模式
讨论常见进程与动态连接库DLL木马
我首先说明一下,这片文章不是我写的,是在一个网友自己编写的教材里面找到的

讨论常见进程与动态连接库DLL木马
在一个运行中的系统究竟跑了那些进程?这些进程都是作什么用的?那些进程比较可疑?

说明一下win2k server在运行中的进程:

Svchost.exe
Svchost.exe文件对那些从动态连接库中运行的服务来说是一个普通的主机进程名。
Svhost.exe文件定位在系统的%systemroot%\system32文件夹下。在启动的时候,Svchost.exe
检查注册表中的位置来构建需要加载的服务列表。这就会使多个Svchost.exe在同一时间运行每个Svchost.exe
的回话期间都包含一组服务,以至于单独的服务必须依靠Svchost.exe怎样和在那里启动。这样就更加容易控制
和查找错误。Svchost.exe 组是用下面的注册表值来识别。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost

每个在这个键下的值代表一个独立的Svchost组,并且当你正在看活动的进程时,它显示作为一个单独的例子。
每个键值都是REG_MULTI_SZ类型的值而且包括运行在Svchost组内的服务。
每个Svchost组都包含一个或多个从注册表值中选取的服务名,这个服务的参数值包含了一个ServiceDLL值。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Service

更多的信息为了能看到正在运行在Svchost列表中的服务。

开始-运行-敲入cmd

然后在敲入 tlist -s (tlist 应该是win2k工具箱里的冬冬)

Tlist 显示一个活动进程的列表。开关 -s 显示在每个进程中的活动服务列表。如果想知道更多的关于进程的
信息,可以敲 tlist pid。

Tlist 显示Svchost.exe运行的两个例子。
0 System Process
8 System
132 smss.exe
160 csrss.exe Title:
180 winlogon.exe Title: NetDDE Agent
208 services.exe

Svcs: AppMgmt,Browser,Dhcp,dmserver,Dnscache,Eventlog,lanmanserver,LanmanWorkstation,LmHosts,Messenger
,PlugPlay,ProtectedStorage,seclogon,TrkWks,W32Time,Wmi
220 lsass.exe Svcs: Netlogon,PolicyAgent,SamSs
404 svchost.exe Svcs: RpcSs
452 spoolsv.exe Svcs: Spooler
544 cisvc.exe Svcs: cisvc
556 svchost.exe Svcs: EventSystem,Netman,NtmsSvc,RasMan,SENS,TapiSrv
580 regsvc.exe Svcs: RemoteRegistry
596 mstask.exe Svcs: Schedule
660 snmp.exe Svcs: SNMP
728 winmgmt.exe Svcs: WinMgmt
852 cidaemon.exe Title: OleMainThreadWndName
812 explorer.exe Title: Program Manager
1032 OSA.EXE Title: Reminder
1300 cmd.exe Title: D:\WINNT5\System32\cmd.exe - tlist -s
1080 MAPISP32.EXE Title: WMS Idle
1264 rundll32.exe Title:
1000 mmc.exe Title: Device Manager
1144 tlist.exe

在这个例子中注册表设置了两个组。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost:
netsvcs: Reg_Multi_SZ: EventSystem Ias Iprip Irmon Netman Nwsapagent Rasauto
Rasman Remoteaccess SENS Sharedaccess Tapisrv Ntmssvc
rpcss :Reg_Multi_SZ: RpcSs

smss.exe
csrss.exe
这个是用户模式Win32子系统的一部分。csrss代表客户/服务器运行子系统而且是一个基本的子系统必须一直运行。
csrss 负责控制windows,创建或者删除线程和一些16位的虚拟MS-DOS环境。

explorer.exe
这是一个用户的shell(我实在是不知道怎么翻译shell),在我们看起来就像任务条,桌面等等。这个进程并不是
像你想象的那样是作为一个重要的进程运行在windows中,你可以从任务管理器中停掉它,或者重新启动。通常不会
对系统产生什么负面影响。

internat.exe
这个进程是可以从任务管理器中关掉的。
internat.exe在启动的时候开始运行。它加载由用户指定的不同的输入点。输入点是从注册表的这个位置
HKEY_USERS\.DEFAULT\Keyboard Layout\Preload 加载内容的。internat.exe 加载"EN"图标进入系统的图标区,
允许使用者可以很容易的转换不同的输入点。当进程停掉的时候,图标就会消失,但是输入点仍然可以通过控制面板
来改变。

lsass.exe
这个进程是不可以从任务管理器中关掉的。
这是一个本地的安全授权服务,并且它会为使用winlogon服务的授权用户生成一个进程。这个进程是通过使用授权
的包,例如默认的msgina.dll来执行的。如果授权是成功的,lsass就会产生用户的进入令牌,令牌别使用启动初始
的shell。其他的由用户初始化的进程会继承这个令牌的。

mstask.exe
这个进程是不可以从任务管理器中关掉的。
这是一个任务调度服务,负责用户事先决定在某一时间运行的任务的运行。

smss.exe
这个进程是不可以从任务管理器中关掉的。
这是一个会话管理子系统,负责启动用户会话。这个进程是通过系统进程初始化的并且对许多活动的,包括已经正
在运行的Winlogon,Win32(Csrss.exe)线程和设定的系统变量作出反应。在它启动这些进程后,它等待Winlogon
或者Csrss结束。如果这些过程时正常的,系统就关掉了。如果发生了什么不可预料的事情,smss.exe就会让系统
停止响应(就是挂起)。

spoolsv.exe
这个进程是不可以从任务管理器中关掉的。
缓冲(spooler)服务是管理缓冲池中的打印和传真作业。

service.exe
这个进程是不可以从任务管理器中关掉的。
大多数的系统核心模式进程是作为系统进程在运行。

System Idle Process
这个进程是不可以从任务管理器中关掉的。
这个进程是作为单线程运行在每个处理器上,并在系统不处理其他线程的时候分派处理器的时间。

taskmagr.exe
这个进程是可以在任务管理器中关掉的。
这个进程就是任务管理器。

winlogon.exe
这个进程是管理用户登录和推出的。而且winlogon在用户按下CTRL+ALT+DEL时就激活了,显示安全对话框。

winmgmt.exe
winmgmt是win2000客户端管理的核心组件。当客户端应用程序连接或当管理程序需要他本身的服务时这个进程初始化。




[此贴子已经被作者于2003-12-3 19:23:24编辑过]

回复

使用道具 举报

 楼主| 发表于 2003-12-3 19:22 | 显示全部楼层
动态嵌入式DLL木马发现与清除
By:Variant [SirVarian@hotmail.com]

随着MS的操作系统从Win98过渡到Winnt系统(包括2k/xp),MS的任务管理器也一下子脱胎换骨,变得火眼金睛起来(在WINNT下传统木马再也无法隐藏自己的进程),这使得以前在win98下靠将进程注册为系统服务就能够从任务管理器中隐形的木马面临前所未有的危机,所以木马的开发者及时调整了开发思路,所以才会有今天这篇讨论如何清除动态嵌入式DLL木马的文章。

首先,我们来了解一下什么是动态嵌入式木马,为了在NT系统下能够继续隐藏进程,木马的开发者们开始利用DLL(Dynamic Link Library 动态链接库)文件,起初他们只是将自己的木马写成DLL形式来替换系统中负责Win Socket1.x的函数调用wsock32.dll(Win Socket2中则由WS2_32.DLL负责),这样通过对约定函数的操作和对未知函数的转发(DLL木马替换wsock32.dll时会将之更名,以便实现日后的函数转发)来实现远程控制的功能。但是随着MS数字签名技术和文件恢复功能的出台,这种DLL马的生命力也日渐衰弱了,于是在开发者的努力下出现了时下的主流木马--动态嵌入式DLL木马,将DLL木马嵌入到正在运行的系统进程中.explorer.exe、svchost.exe、smss.exe等无法结束的系统关键进程是DLL马的最爱,这样这样在任务管理器里就不会出现我们的DLL文件,而是我们DLL的载体EXE文件.当然通过进一步的加工DLL木马还可以实现另外的一些如端口劫持/复用(也就是所谓的无端口)、注册为系统服务、开多线程保护、等功能。简而言之,就是DLL木马达到了前所未有的隐蔽程度。
那么我们如何来发现并清除DLL木马呢?
一,从DLL木马的DLL文件入手,我们知道system32是个捉迷藏的好地方,许多木马都削尖了脑袋往那里钻,DLL马也不例外,针对这一点我们可以在安装好系统和必要的应用程序后,对该目录下的EXE和DLL文件作一个记录:运行CMD--转换目录到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt,这样所有的EXE和DLL文件的名称都被分别记录到exeback.txt和dllback.txt中,日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL木马了.这是我们用同样的命令将system32下的EXE和DLL文件记录到另外的exeback1.txt和dllback1.txt中,然后运行CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命令比较前后两次的DLL和EXE文件,并将结果输入到diff.txt中),这样我们就能发现一些多出来的DLL和EXE文件,然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马光顾了。没有是最好,如果有的话也不要直接DLL掉,我们可以先把它移到回收站里,若系统没有异常反应再将之彻底删除或者提交给杀毒软件公司。

二、上文也曾提到一些系统关键进程是这类木马的最爱,所以一旦我们怀疑系统已经进驻了DLL木马,我们当然要对这些关键进程重点照顾了,怎么照顾?这里推荐一个强大的脱壳工具工具Procedump.exe他可以帮您看出进程到底调用了那些DLL文件(如图1)

但是由于有的进程调用的DLL文件非常多,使得靠我们自己去一个核对变的不太现实,所以我们会用到一个shotgun写的NT进程/内存模块查看器ps.exe,用命令ps.exe /a /m >nowdlls.txt将系统目前调用地所有DLL文件地名称保存到nowdlls.txt,然后我们再用fc将之于事先备份dllback.txt比较一下,这样也能够缩小排查范围。

三、还记得木马的特征之一端口么?所有的木马只要进行连接,只要它接受/发送数据则必然会打开端口,DLL木马也不例外,这也为我们发现他们提供了一条线索,我们可以使用foundstone的进程端口查看工具Fport.exe来查看与端口对应的进程,这样可以将范围缩小到具体的进程,然后结合Procedump来查找DLL木马就比较容易了.当然有如上文提到的有些木马会通过端口劫持或者端口重用的方法来进行通信,139、80、1443、等常见端口则是木马的最爱。因为即使即使用户使用端口扫描软件检查自己的端口,发现的也是类似TCP UserIP:1026 ControllerIP:80 ESTABLISHED 的情况,稍微疏忽一点,您就会以为是自己在浏览网页(防火墙也会这么认为的)。所以光看端口还不够,我们要对端口通信进行监控,这就是第四点要说的。

四、我们可以利用嗅探器来了解打开的端口到底在传输些什么数据。通过将网卡设为混杂模式就可以接受所有的IP报文,嗅探程序可以从中选择值得关注的部分进行分析,剩下的无非是按照RFC文档对协议进行解码。这样就可以确定木马使用的端口,结合Fport和Procedump我们就能够查找到该DLL木马了。至于嗅探器个人推荐使用IRIS,图形界面比较容易上手。

五、通常说道查杀木马我们会习惯性地到注册表碰碰运气,以前可能还蛮有效的,但如果碰到注册为系统服务的木马(原理:在NT/2K/XP这些系统中,系统启动时会加载指定的服务程序)
这时候检查:启动组/注册表/autoexec.bat/win.ini/sysytem.ini/wininit.ini/*.inf(例如autorun.inf)/config.sys等文件
就发现不了丝毫的异样,这时候我们就应该查看一下系统服务了:右击我的电脑--管理--服务和应用程序--服务,这时您会看到100多个服务,(MS也真是的,其中75%对个人用户无用,可以禁止。),慢慢找吧,看谁不顺眼就把它拎出来:),当然如果您以前曾经用导出列表功能对服务备份过,则用文件比较的方法会很容易发现哪些是外来客,这时您可以记录下服务加载的是那个文件,然后用Resource Kits里提供的srvinstw.exe来移除该服务并清除被加载的文件。

通过以上五步,基本能发现并清除狡猾的动态嵌入式DLL木马了,也许您也发现如果适当地做一些备份,会对我们的查找木马的过程有很大的帮助,当然也会减轻不少工作的压力哦。
回复

使用道具 举报

 楼主| 发表于 2003-12-3 19:22 | 显示全部楼层
系统的进程列表 进程名 描述
              
基本的系统进程(也就是说,这些进程是系统运行的基本条件,有了这些进程,系统就能正常运行)
              smss.exe Session Manager
              csrss.exe 子系统服务器进程
              winlogon.exe 管理用户登录
              services.exe 包含很多系统服务
              lsass.exe 管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序。(系统服务)
              产生会话密钥以及授予用于交互式客户/服务器验证的服务凭据(ticket)。(系统服务) ->netlogon
              svchost.exe 包含很多系统服务 !!!->eventsystem,
              (SPOOLSV.EXE 将文件加载到内存中以便迟后打印。)
              explorer.exe 资源管理器
              (internat.exe 托盘区的拼音图标)

              ====================================================================
              附加的系统进程(这些进程不是必要的,你可以根据需要通过服务管理器来增加或减少)
              mstask.exe 允许程序在指定时间运行。(系统服务)->schedule
              regsvc.exe 允许远程注册表操作。(系统服务)->remoteregister
              winmgmt.exe 提供系统管理信息(系统服务)。
              inetinfo.exe->msftpsvc,w3svc,iisadmn
              tlntsvr.exe->tlnrsvr
              tftpd.exe 实现 TFTP Internet 标准。该标准不要求用户名和密码。远程安装服务的一部分。(系统服务)
              termsrv.exe ->termservice
              dns.exe 应答对域名系统(DNS)名称的查询和更新请求。(系统服务)
              =================================================================
              以下全是系统服务,并且很少会用到,如果你暂时用不着,应该关掉(对安全有害 )
              tcpsvcs.exe 提供在 PXE 可远程启动客户计算机上远程安装 Windows 2000 Professional
              的能力。(系统服务)->simptcp
              支持以下 TCP/IP 服务:Character Generator, Daytime, Discard, Echo, 以及
              Quote of the Day。(系统服务)
              ismserv.exe 允许在 Windows Advanced Server 站点间发送和接收消息。(系统服务)
              ups.exe 管理连接到计算机的不间断电源(UPS)。(系统服务)
              wins.exe 为注册和解析 NetBIOS 型名称的 TCP/IP 客户提供 NetBIOS 名称服务。(系统服务)
              llssrv.exe License Logging Service(system service)
              ntfrs.exe 在多个服务器间维护文件目录内容的文件同步。(系统服务)
              RsSub.exe 控制用来远程储存数据的媒体。(系统服务)
              locator.exe 管理 RPC 名称服务数据库.->rpclocator(区 RpcSs)
              lserver.exe 注册客户端许可证。(系统服务)
              dfssvc.exe 管理分布于局域网或广域网的逻辑卷。(系统服务)
              clipsrv.exe 支持“剪贴簿查看器”,以便可以从远程剪贴簿查阅剪贴页面。(系统服务)
              msdtc.exe 并列事务,是分布于两个以上的数据库,消息队列,文件系统,或其它事务保护资源管理器。(系统服务)
              faxsvc.exe 帮助您发送和接收传真。(系统服务)
              cisvc.exe Indexing Service(system service)!!!
              dmadmin.exe 磁盘管理请求的系统管理服务。(系统服务)
              mnmsrvc.exe 允许有权限的用户使用 NetMeeting 远程访问 Windows 桌面。(系统服务)
              netdde.exe 提供动态数据交换 (DDE) 的网络传输和安全特性。(系统服务)
              smlogsvc.exe 配置性能日志和警报。(系统服务)
              rsvp.exe 为依赖质量服务(QoS)的程序和控制应用程序提供网络信号和本地通信控制安装功能。(系统服务)
              RsEng.exe 协调用来储存不常用数据的服务和管理工具。(系统服务)
              RsFsa.exe 管理远程储存的文件的操作。(系统服务)
              grovel.exe 扫描零备份存储(SIS)卷上的重复文件,并且将重复文件指向一个数据存储点,以节省磁盘空间。(系统服务)
              SCardSvr.exe 对插入在计算机智能卡阅读器中的智能卡进行管理和访问控制。(系统服务)
              snmp.exe 包含代理程序可以监视网络设备的活动并且向网络控制台工作站汇报。(系统服务)
              snmptrap.exe 接收由本地或远程 SNMP 代理程序产生的陷阱消息,然后将消息传递到运行在这台计算机上 SNMP
              管理程序。(系统服务)
              UtilMan.exe 从一个窗口中启动和配置辅助工具。(系统服务)
              msiexec.exe 依据 .MSI 文件中包含的命令来安装、修复以及删除软件。(系统服务)
              总结:
              发现可疑进程的秘诀就是要多看任务管理器中的进程列表,看多了以后,一眼就可以发现可疑进程,就象
              找一群熟悉人中的陌生人一样。
回复

使用道具 举报

 楼主| 发表于 2003-12-3 19:38 | 显示全部楼层
ALEN你说对吗?
回复

使用道具 举报

 楼主| 发表于 2003-12-4 11:56 | 显示全部楼层
结束进程和结束进程树到底有什么区别??各位大大不好意思打搅了
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 成为基民

本版积分规则

手机客户端|基点俱乐部 ( 粤ICP备16117437号-1 )

GMT+8, 2024-5-3 11:19

Copyright © 2001-2021, 基点俱乐部.

快速回复 返回顶部 返回列表