.NET | 剖析通过 TcpClient 实现内网端口转发
2024-12-19 00:33:0 Author: mp.weixin.qq.com(查看原文) 阅读量:3 收藏

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 的 TcpClientNetworkStream 实现数据流的转发。通过简单的命令行参数配置,可以轻松实现复杂网络环境下的远程连接,广泛应用于内网渗透测试中。


假设需要将本地端口 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安全各个关键方面,为您呈现最新、最全面的.NET安全知识,下面是公众号发布的精华文章集合,推荐大家阅读!




05

欢迎加入.NET安全星球

为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。 星球门票后期价格随着内容和质量的不断沉淀会适当提高,因此越早加入越好! 

    目前dot.Net安全矩阵星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,从Web应用到PC端软件应用,无论您是初学者还是经验丰富的开发人员,都能在这里找到对应的安全指南和最佳实践。

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。

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

    我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

我们还有一个会员专属的内部星球陪伴群,加入的成员可以通过在群里提出问题或参与论的方式来与其他成员交流思想和经验。此外还可以通过星球或者微信群私聊向我们进行提问,以获取帮助迅速解决问题。

为了助力大家在2024国家级hvv演练中脱颖而出,我们特别整理出了一套涵盖dotNet安全矩阵星球的八大.NET相关方向工具集

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

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


文章来源: https://mp.weixin.qq.com/s?__biz=MzUyOTc3NTQ5MA==&mid=2247497583&idx=1&sn=b0ece0e0e8deeec80bae9556806cd9c6&chksm=fa595982cd2ed094c375f27a3700b9fa2b6c43f66037e6523421d9f356947f00cec48484ff7b&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh