.NET

1.CLR

像 Java 是由 JVM 托管的,用 C# 等语言开发的 .NET 程序都是由 CLR 托管的

2.加载方式

execute-assembly

Cobalt Strike 命令,可以使 .NET 程序从内存加载,不必落地,但是这样会创建进程

execute-assembly D:\HackerPC\net.exe

C_Sharp.cs:

using System;

namespace C_Sharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hacker");
        }
    }
}

inject-assembly

GitHub - kyleavery/inject-assembly: Inject .NET assemblies into an existing process

一个可以让 .NET 程序在当前进程运行的插件

inject-assembly 0 D:\HackerPC\C_Sharp.exe

3.反病毒接口

ETW & AMSI

ETW 是一种事件追踪机制,AMSI 是反恶意软件扫描接口 (外国杀软),都会对 .NET 进行监测

正常上线,用 Process Hacker 查看 DLL

在当前进程运行 .NET 后,可以看到多出来一些 .NET 信息,同时出现了 clr.dll 和 amsi.dll

ETW 会通过 clr.dll 中的 EventWrite 函数公开的信息进行监测

asmi.dll 的核心函数是 AmsiScanBuffer 函数

BOF-patchit

GitHub - ScriptIdiot/BOF-patchit: An all-in-one Cobalt Strike BOF to patch, check and revert AMSI and ETW for x64 process. Both syscalls and dynamic resolve versions are available.

通过打补丁绕过函数的插件

patchit etw
patchit amsi
patchit all

可以看到调用插件后两个函数的开头变成了 ret

EventWrite 函数

AmsiScanBuffer 函数

posted @ 2023-04-25 18:49  Hacker&Cat  阅读(172)  评论(0编辑  收藏  举报