RES协议详解与安全

RES协议详解与安全
2009-09-11 11:47

1.RES的应用测试

在IE里输入以下url,看看出来了什么?

res://shell32.dll/2/131

res://C:\WINDOWS\system32\drivers\aes.sys/16/1

res://cmd.exe/16/1

res://shell32.dll/16/1

是不是可以用来分析 exe dll sys 的版本呢?只要符合 Win32 PE 格式的文件都可以用 res:// 协议来分析。其中第二个数字是资源类型,在 VC++ 的 winuser.h 里有定义

#define RT_CURSOR MAKEINTRESOURCE(1)
#define RT_BITMAP MAKEINTRESOURCE(2)
#define RT_ICON   MAKEINTRESOURCE(3)
#define RT_MENU   MAKEINTRESOURCE(4)
#define RT_DIALOG MAKEINTRESOURCE(5)
#define RT_STRING   MAKEINTRESOURCE(6)
#define RT_FONTDIR MAKEINTRESOURCE(7)
#define RT_FONT   MAKEINTRESOURCE(8)
#define RT_ACCELERATOR MAKEINTRESOURCE(9)
#define RT_RCDATA MAKEINTRESOURCE(10)
#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
#define RT_VERSION MAKEINTRESOURCE(16)
#define RT_DLGINCLUDE    MAKEINTRESOURCE(17)
#define RT_PLUGPLAY      MAKEINTRESOURCE(19)
#define RT_VXD           MAKEINTRESOURCE(20)
#define RT_ANICURSOR     MAKEINTRESOURCE(21)
#define RT_ANIICON       MAKEINTRESOURCE(22)
#define RT_HTML          MAKEINTRESOURCE(23)

res协议,可以用来提取图片、AVI、光标、图标等

2.IE中RES协议的详细用法

"RES://"协议是IE 4.0预定义的一个协议,它的具体语法为:"RES://resource file[/resourcetype]/resource id"。

    resource file:含有资源的模块的文件名,请注意这里的路径分隔符只能使用“\”,而不能使用“/”。

    Resourcetype:资源类型,它是一个字符串或数字。常用的资源类型都对应着一个数,比如BITMAP对应着RT_BITMAP=2,这些常数定义在VC++的WINUSER.H可以找到,如果资源类型是数字,要在数字前面加上“#”号。Resourcetype可以省略,默认为RT_HTML=23,即HTML文件。RT_HTML在VC++ 5.0中没有定义,但现在已经广泛使用。

    Resource id:资源的ID号。在这里要注意一个问题:在VC++中定义资源的时候,通常是使用数字常量,比如ID_BITMAP1,它代表的数字可能是101。而在使用res://协议时,不能使用ID_BITMAP1(在DLL中并没有这个符号),而必须使用#101来代表资源。例如要显示一个位图资源,其ID号为101,应为RES://mydll.dll/#2/#101。

3.RES资源探测工具

有个叫ResHacker的小工具,可以探测dll、exe和sys文件里的资源

4.RES的安全问题

res可以读取本地程序的资源文件,存在泄漏信息的安全隐患,出于这个安全方面的考虑,目前只有IE和利用IE内核的浏览器还在默认持这个协议,其他浏览器已经把这个协议废了。

安全方面的PoC:见,js利用res协议探测客户端软件

5.RES巧用,篡改改about:blank显示的网页

有些朋友经常抱怨,自己把IE的主页设置为了about:blank还是进入别的站点。我们应该怎样面对这种烦人的现象呢?
     首先我们要先看一下设置为about:blank后打开IE系统是怎样工作的。
     IE会进入一个空白页面,其实这个页面其实是指向了一个地址,默认是res://mshtml.dll/blank.htm
     这个地址是可以修改的,其修改地址就在注册表中相应注册键是
     HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AboutURLs
     进去看看吧,把他修改回默认的值或者你喜欢的网页都可以。

     这种情况下往往是由于RES协议造成的。说到RES就不得不提一下RES病毒。最近网上在流传杀不干净得木马吧

     这些也就是一些杀毒软件杀不完全病毒造成的,用杀毒软件杀毒后,过不了多久就会继续中标。此类木马利用了RES协议的漏洞,手段很隐蔽。

     下面我们看一下RES木马的原理。我们在用IE浏览网页的时候,系统会调用shdoclc.dll中的资源,windows系统规定在载入dll文件的时候,如果dll文件含有dllmain函数就对它进行初始化,但是正常的shdoclc.dll文件是没有dllmain函数的,他只是包含了各种资源而已。RES木马包含的dllmain函数,利用这一点,我们就会在浏览网页的时候自动中招。

    我们了解了RES木马原理后,我们便可以把系统的RES给找出来了。原shdoclc.dll文件没有任何执行代码,其函数输出表应该为空,但是木马就会调用系统的API函数。我们根据这点来查出系统的RES内鬼。

    我们要使用的工具是DEPENDENCY WALKER来查看其API输出表即可。
    运行解压后的文件,使用"FLIE-OPEN"打开shdoclc.dll文件
    默认地址在:c:\windows\sysytm32\shdoclc.dll
    查看左面的函数输出表如果为空表明你没有中这种毒。

    如果已经中标了,重启到安全模式,用sfc命令恢复即可,或者从别人机器拷贝一个也可以。

参考:
[1]http://msdn.microsoft.com/en-us/library/aa767740(VS.85).aspx
[2]http://www.dormforce.net/Blog/electronixtar/archive/2006/11/14/11614.aspx
[3]http://blog.csdn.net/freexploit/archive/2005/07/02/410784.aspx


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: crsctl stat res -t是一个Oracle Clusterware命令,用于显示当前集群资源的状态和信息。 -t选项表示输出详细信息,包括资源名称、资源类型、资源状态、资源所在节点、资源所在服务器池、资源的启动次数、资源的故障次数等。 该命令可以帮助管理员了解集群资源的运行情况,及时发现和解决故障,保证集群的高可用性和稳定性。 ### 回答2: crsctl stat res -t是Oracle Clusterware的一个命令,用于显示资源的状态和属性。其,-t选项是用于显示所有供应商特定属性的选项。下面是对该命令的详细解释: 1. crsctl: crsctl是Oracle Clusterware的命令行工具,用于管理集群资源和服务。 2. stat: stat是crsctl命令的一个选项,用于显示资源的状态。 3. res: res是指资源,表示显示资源的状态和属性。 4. -t: -t是crsctl stat res命令的一个选项,用于显示所有供应商特定属性。 crsctl stat res -t命令会显示如下内容: Resource Name:资源名称。 Target:资源的实际状态,可以是ONLINE(在线),OFFLINE(离线),或者UNKNOWN(未知)。 State:资源的当前状态,可以是ONLINE(在线),OFFLINE(离线),or UNKNOWN(未知)。 Server: 在哪个节点上拥有该资源。 State details: 资源的状态细节信息。 Resource type:资源的类型,如:ora.listener.type等。 Target type:资源目标的类型。目标可以是实例或服务。 Host:资源所在的Linux主机。 Uptime:资源处于当前状态的时间。 Reason:如果资源处于离线或未知状态,此字段会给出资源离线的原因或未知的原因。 Health:资源的健康状况,如:HEALTHY,CRITICAL等。 Message:关于资源的信息。 Start time:资源的启动时间。 Group:资源所在的资源组。 以上就是crsctl stat res -t命令的详细解释。通过使用该命令,管理员可以很容易地了解集群各个资源的状态和属性,以便进行相关的管理操作。 ### 回答3: crsctl stat res -t是一个常用的Oracle Clusterware命令,可以显示整个Oracle集群资源的状态信息。该命令可以帮助管理员诊断和解决资源故障问题,同时还可以了解集群资源的运行状态和性能状况,从而做出相应的调整。 下面是crsctl stat res -t命令的详细解释: 1. crsctl:该命令是Oracle Clusterware的管理工具,用于管理集群资源和集群节点。 2. stat:该参数表示“state”,即显示资源状态。 3. res:该参数表示“resource”,即指定显示资源名称。 4. -t:该参数表示显示详细信息,包括资源类型、当前状态、状态变迁次数、最近一次状态变化的时间、依赖关系等。 通过执行crsctl stat res -t命令,可以获得以下信息: 1. 资源的名称:显示当前正在运行的所有资源的名称。 2. 资源的状态:显示每个资源的当前状态,例如ONLINE、OFFLINE、INTERMEDIATE等。 3. 资源类型:显示每个资源的类型,例如Oracle Listener、Oracle Database、Virtual IP等。 4. 资源状态的变化:显示资源状态的变化次数以及最近一次状态变化的时间。 5. 资源依赖关系:显示资源之间的依赖关系,例如某个资源必须在其他资源之前启动或停止,或者某个资源只能在某个节点上运行。 总的来说,crsctl stat res -t命令是一个非常有用的命令,可以帮助管理员了解整个Oracle Clusterware集群资源的状态信息,并快速诊断和解决故障问题。对于Oracle Clusterware的管理者来说,深入掌握该命令的使用方法是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值