.NET 一款内网横向移动利器: Sharp4Shell

01阅读须知

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

02基本介绍

Sharp4Shell 是一个专为内网横向移动设计的强大工具,它整合了 SharpSploit 模块,以提供更多功能。该工具依赖于系统上安装的 .NET Framework >=3.5以上的环境,这是因为它需要依赖 Roslyn API来在内存中执行交叉编译,同时支持交互式Shell功能。

图片

03使用方法

Sharp4Shell 支持交互式Shell,允许用户直接在内网环境中执行命令并实时获取输出,依靠后端强大的SharpSploit 可以实现后渗透各个阶段红队活动。比如可以调用Shell.ShellExecute 方法来执行各种命令,如下所示。

Shell.ShellExecute("whoami");
Shell.ShellExecute("tasklist")

图片

此外,Sharp4Shell 利用 SharpSploit 的模块,可以收集目标系统的各种信息,如网络配置、开放端口、系统进程以及从内存中提取明文密码、哈希等,还可以通过 SMB、WMI 等方式在内网中横向移动。

04编码实现

下面这段代码展示了Sharp4Shell 完整的编译流程:从配置文件中读取嵌入资源,通过动态编译生成程序集,然后加载该程序集并调用其中的 Execute 方法。具体实现的代码如下所示。

using (TextReader reader2 = File.OpenText(Common.SharpShellResourcesConfig))
{
    IDeserializer deserializer2 = new DeserializerBuilder().Build();
    request.EmbeddedResources = (from ER in deserializer2.Deserialize<List<Compiler.EmbeddedResource>>(reader2)
                                 where ER.Enabled
                                 select ER).ToList<Compiler.EmbeddedResource>();
}

这里使用 File.OpenText 方法打开Common.SharpShellResourcesConfig 文件,这里包含了编译时调用其他的动态链接库名。创建了一个反序列化器用于将 YAML 格式的配置文件反序列化为对象。使用 LINQ 查询,过滤出 Enabled 属性为 true 的嵌入资源。

byte[] assemblyBytes = Compiler.Compile(request);
Assembly assembly = Assembly.Load(assemblyBytes);
object result = assembly.GetType(ClassName).GetMethod("Execute").Invoke(null, null);
Console.WriteLine(result.ToString());

调用 Compiler.Compile 方法,将 request 对象编译为字节数组 assemblyBytes,表示编译后的程序集。使用 Assembly.Load 方法从字节数组中加载程序集 assembly并执行Execute 方法,并将结果存储在 result 对象中。

通过这种方式,Sharp4Shell 能够在内存中动态编译和执行代码,提供了高度的灵活性和隐蔽性,非常适合用于内网渗透测试和红队操作。

 05.NET安全星球

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

图片

图片

图片

20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。

图片

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

图片

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值