现在的位置: 首页 > 综合 > 正文

RES协议详解与安全

2014年10月06日 ⁄ 综合 ⁄ 共 2791字 ⁄ 字号 评论关闭
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

抱歉!评论已关闭.