.NET | 剖析通过 TcpClient 实现内网端口转发

01阅读须知

此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面

02基本介绍

在Windows内网渗透环境中,某些环境下防火墙可能仅允许本地的端口访问,通过 TcpClient 和 NetworkStream技术将流量转发到受限端口,可以绕过安全防护的限制。

2.1 TcpClient

TcpClient 是 .NET 提供的一个用于客户端应用程序的类,封装了对 TCP 协议的底层操作,能够轻松地建立 TCP 连接并进行数据通信。一般用法如下所示。

TcpClient client = new TcpClient();
client.Connect("example.com", 80);
if (client.Connected)
{
    Console.WriteLine("连接成功!");
}
client.Close();

代码中,Connect表示连接到指定的远程主机和端口,另外常用的Connected 属性仅在初次连接时准确。在通信过程中,网络中断或对端断开连接时,该属性可能仍然返回 true,需要额外逻辑(如心跳包)确认连接状态

2.2 NetworkStream

NetworkStream 是基于 TcpClient 或 TcpListener 提供的流对象,用于在客户端和服务器之间传输数据。它继承自 Stream 类,因此可以使用 Stream 的所有功能(如读写、异步操作等)。一般用法如下代码所示。

TcpClient client = new TcpClient("example.com", 80);
NetworkStream stream = client.GetStream();

byte[] request = System.Text.Encoding.UTF8.GetBytes("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n");
stream.Write(request, 0, request.Length);

byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);

Console.WriteLine("响应内容: " + response);

stream.Close();
client.Close();

默认情况下,Read 方法是阻塞的,会一直等待数据。如果需要非阻塞式操作,可以结合异步方法或使用 DataAvailable 属性。

两者之间相互配合,TcpClient 是建立连接的工具,而 NetworkStream 是传输数据的管道,使用 TcpClient 和 NetworkStream 建立与多个主机的连接,实现数据的转发和代理功能。

03工具实现

Sharp4TranPort.exe 是一个高效的端口转发工具,利用 .NET 的 TcpClient 和 NetworkStream 实现数据流的转发。通过简单的命令行参数配置,可以轻松实现复杂网络环境下的远程连接,广泛应用于内网渗透测试中。

假设需要将本地端口 8899 的流量转发至目标主机 192.168.101.86 的 3389 端口,可以按照以下步骤操作,打开命令提示符,输入以下命令。

Sharp4TranPort.exe -a pf -lp 8899 -rh 192.168.101.86 -rp 3389

这条命令的含义是在本地监听 8899 端口,将所有流量转发至远程 IP 为 192.168.101.86 的 3389 端口,如下图所示。

图片

配置完成后,可以通过 RDP客户端连接到 localhost:8899。工具会将你的请求透明地转发至远程主机 192.168.101.86:3389,实现对目标主机的远程控制。

 04.NET安全星球

dot.Net安全矩阵星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,从Web应用到PC端软件应用,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。

图片

图片

图片

星球文化始终认为授人以鱼不如授人以渔!加入星球后可以跟星主和嘉宾们一对一提问交流,20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。

图片

.NET 免杀WebShell
.NET 反序列化漏洞
.NET 安全防御绕过
.NET 内网信息收集
.NET 本地权限提升
.NET 内网横向移动
.NET 目标权限维持
.NET 数据外发传输

这些阶段所涉及的工具集不仅代表了当前.NET安全领域的最前沿技术,更是每一位网络安全爱好者不可或缺的实战利器。

文章涉及的工具已打包,请加/入/后下/载:https://wx.zsxq.com/group/51121224455454

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dot.Net安全矩阵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值