.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
通过打补丁绕过函数的插件
patchit etw
patchit amsi
patchit all
可以看到调用插件后两个函数的开头变成了 ret
EventWrite 函数
AmsiScanBuffer 函数