PortBender 是一个 TCP 端口重定向工具,允许红队操作员将发往一个 TCP 端口(例如 445/TCP)的入站流量重定向到另一个 TCP 端口(例如 8445/TCP)。PortBender 包含一个攻击者脚本,操作员可以利用该脚本将工具与 Cobalt Strike 集成。但由于该工具以反射 DLL 形式实现,它可以与任何支持通过“ReflectiveLoader”接口加载模块的 C2 框架集成 [1]。该工具还允许操作员模拟 Duqu 2.0 威胁行为体所使用的“PortServ.sys”能力中的后门/持久化机制。
PortBender 利用 WinDivert 库通过 Windows 筛选平台 (WFP) 拦截网络流量。PortBender 的设计深受同样利用 WinDivert 库的 DivertTCPConn 工具的影响 [1]。
PortBender 有两种操作模式。第一种是“重定向模式”,第二种是“后门模式”。在“重定向模式”下,任何对目标目的端口(例如 445/TCP)的连接都会被重定向到另一个端口(例如 8445/TCP)。在“后门模式”下,只有当攻击者向目标端口(例如 443/TCP)发送一个特殊格式的 TCP 包时,我们才重定向流量。然后 PortBender 将该客户端 IP 地址添加到后门客户端列表中,并将所有发往该目标端口的流量重定向到另一个端口(例如 3389/TCP)。操作员可以利用此机制模拟 Duqu 2.0 威胁行为体在入侵卡巴斯基时使用的持久化技术。
要执行 PortBender,我们首先必须将“PortBender.cna”脚本导入 Cobalt Strike,并根据目标操作系统架构将“PortBender.zip”中包含的 WinDivert32.sys 或 WinDivert64.sys 二进制文件上传到目标主机。PortBender 的帮助菜单及示例用法如下所示:
beacon> help PortBender
重定向用法: PortBender redirect FakeDstPort RedirectedPort
后门用法: PortBender backdoor FakeDstPort RedirectedPort Password
示例:
PortBender redirect 445 8445
PortBender backdoor 443 3389 praetorian.antihacker
例如,我们可能希望在重定向模式下执行 PortBender,以便从受感染的 Windows 系统执行 SMB 中继攻击。为此,我们可以指示 PortBender 将发往 445/TCP 的所有流量重定向到运行攻击者 SMB 服务的另一个端口 8445/TCP。在此示例中,我们运行命令“PortBender redirect 445 8445”来实现。预期输出如下:
在此示例中,我们希望在受感染的面向互联网的 IIS Web 服务器上部署隐蔽的持久化机制。这里我们运行“PortBender backdoor 443 3389 praetorian.antihacker”来指示后门服务将来自提供指定“praetorian.antihacker”关键字的任何 IP 地址的连接(发往 443/TCP)重定向到目标主机上的 3389/TCP。预期输出如下:
[1] https://github.com/Arno0x/DivertTCPconn
[2] https://github.com/stephenfewer/ReflectiveDLLInjection
[3] https://github.com/basil00/Divert
[4] https://diablohorn.com/2018/08/25/remote-ntlm-relaying-through-meterpreter-on-windows-port-445