SystemCrashDumpStateInformation加载驱动

NtQuerySystemInformation的不同参数的结构 __kernel_entry NTSTATUS NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS SystemInformationClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength ); typed... 阅读详情

使用如下代码可将系统中的atapi.sys (如果你的机器磁盘PORT驱动是atapi.sys的话,如果是scsiport的话会有不同)加载到系统中。模块名为dump_atapi.sys(如果已配置了生成dump则无法生效)

HMODULE hlib = LoadLibrary("ntdll.dll");
PVOID p = GetProcAddress(hlib , "NtSetSystemInformation");
ULONG stat;
__asm
{
   push 0
   push 0
   push 0
   push 34

//SystemCrashDumpStateInformation
   call p
   mov   stat ,eax
}

代码非常简单,而且不需要任何额外权限,user权限也可以调用

结合替换或感染atapi.sys则可加载自己的驱动

不过,只能加载而已,加载完了系统会将加载的信息保存到IopDumpxxxx结构中,等到KeBugCheckEx调用IopWriteCrashDump时会调用到这个驱动

也就是说,实现攻击所要条件:

1.宿主机关闭了crash dump 选项(貌似很多机器都关闭了,尤其是XX优化版,XX美化版)

2.宿主机上存在引发bsod的驱动程序(很多杀毒软件、HIPS都有这样的设计缺陷)

这两点条件具备则可达成攻击。但其实还有一些细节要处理,例如,部分HIPS会报警写SYSTEM32下文件,因此我们需要直接通过磁盘读写该文件

另外,需要让原本不生成crashdump 的机器调用IopWriteCrashDump也是需要一定方法的

什么?你说不好利用?笨啊,好利用我还会放出来吗?

下面说说主要原理:

系统生成crash dump(崩溃转储)的当时其实并没有写入文件,而是实现在pagefile.sys中分配预留一块区域,将物理内存写入这块区域,等重启时再转储到文件中

之所以这么做,是因为WINDOWS不希望在转储时(BSOD时)使用文件系统相关功能,因为它可能已经被破坏了,而磁盘驱动其实也是可能被破坏的,因此WINDOWS在Config CrashDump时,将系统中的atapi.sys磁盘端口驱动备份了一份,以dump_xxxx.sys的方式加载,等到BSOD时调用此驱动来写入磁盘。

 

这个功能还可以帮助我们做另一件事,例如系统原始的atapi.sys可能被HOOK了,那么我们可以利用dump_atapi.sys来写磁盘

 
《0day 安全》-22章-内核漏洞利用技术 内核漏洞利用技术 22.1 利用实验之 exploitme.sys ​ 首先给出实验代码,这里的代码经过作者微小的修改,但是基本与书上一致,看懂这里的代码需要有一点驱动编程基础。 #include<ntddk.h> #define DEVICE_NAME L"\\Device\\ExploitMe" #define DEVICE_LINK L"\\DosDevices\\ExploitMe" #define FILE_DEVICE_EXPLOIT_ME 0x00008888 #define 阅读详情

相关推荐

动态加载驱动程序源代码

源代码包含三种不同的驱动加载方法,使用ZwSetSystemInformation函数加载驱动,使用NtLoadDriver函数加载驱动,使用服务控制管理器加载驱动,还包括三种线程注入技术,使用RtlCreateUserThread 函数注入线程,使用CreateRemoteThread函数注入线程,使用NtCreateThreadEx函数注入线程,源代码包含C,C#的demo

使用 NtQuerySystemInformation 遍历进程信息

通过遍历系统进程信息,我们可以了解系统中运行的各种进程的详细信息,从而更好地进行系统管理和性能优化。本文介绍了一种通过调用 Windows 系统API来获取并遍历系统进程信息的技术,并提供了一段示例代码以帮助读者理解该技术的实现方法。

溡漪幽博客 3099

VirtualBox 7.0.8 + Android-x86 9.0 保姆级安装教程(附图形界面卡顿解决方案)

本文提供VirtualBox 7.0.8与Android-x86 9.0的详细安装教程及性能优化方案,帮助开发者解决图形界面卡顿问题。从环境准备到高级配置,涵盖硬件要求、安装步骤、显存优化及ADB调试等实用技巧,显著提升虚拟机流畅度,适用于应用测试和开发调试。

weixin_29224309的博客 529

微软NativeApi-NtQuerySystemInformation

微软有一个比较实用的Native接口:NtQueryInformationProcess,具体可以参考微软msdn官方文档:NtQueryInformationProcess

ccf19881030的专栏 1516

ADS中HB仿真自动优化报错问题解决心得

在ADS HB仿真中自动优化出现报错被强制暂停,解决方法如下

yyyyyyyyyyjy的博客 6543

Landsat9 地表温度反演方法

landsat9地表温度反演及缺失值处理方法

xiangliu12345的博客 3919

NTDLL

/*++ Copyright (c) Module Name: SafeModel.h Abstract: This framework is generated by QuickSYS 0.4 Author: Environment: User or kernel mode. Revision History: --*/ #ifndef

Lassewang的成长历程 1289

深入解析WIFI与蓝牙模块电路设计:从原理到实战

本文深入解析了WIFI与蓝牙模块的电路设计,从核心原理到实战应用。文章以AP6256模块为例,详细拆解了电源树、时钟电路、接口设计及天线射频路径等关键环节,并提供了PCB布局布线的实用准则与调试方法,旨在帮助硬件工程师设计出稳定可靠的无线产品,规避常见陷阱。

weixin_29186249的博客 150

Nt内核函数原型and中文

NtLoadDriver 服务控制管理器加载设备驱动. NtUnloadDriver 服务控制管理器支持卸载指定的驱动程序. NtRegisterNewDevice 加载新驱动文件. NtQueryIntervalProfile 返回数据. NtSetIntervalProfile 指定采样间隔. NtStartProfile 开始取样. NtStopProfile 停止...

dengjiatao9832的博客 738

C++利用spdlog生成日志

C++利用spdlog生成日志下载编译spdlog配置并使用 环境:Win10-x64+VS2015 spdlog是一个快速的C++日志库,能够兼容C++11,具备快速、无需依赖第三方库、支持多线程、多平台的优良特性! 下载编译spdlog 1.第一步,下载spdlog 下载spdlog,下载地址:https://github.com/gabime/spdlog#header-only-version,从Github上下载zip压缩包。下载完成后会获取一个名为spdlog-1.x.zip的压缩包 2.第二步

weixin_42975610的博客 3223

智能问数系统的完整技术栈与实现逻辑

提取并增强数据库 Schema(含业务语义)选择 LLM(开源 qwen2 / 商业 GPT-4o)构建 RAG 向量库(存储历史问法)实现 SQL 安全校验与权限控制添加结果自然语言解释 + 可视化部署到只读数据库环境🔑核心原则“先保证安全,再追求智能”—— 一个能生成错误 SQL 的智能问数系统,比没有更危险。

我们的征途是星辰大海 1632

一个可以再WIN2000及以上操作系统使用的GetTickCount64

<br />以后尽量用Delphi/C++双代码写.<br />GetTickCount返回值是整数,这样的话最多49天多就会复位重新从0开始.Vista以后提供了GetTickCount64这个函数,但是WindowsXP还是主流.在项目中为了处理这个,自己实现了一套办法.这个GetTickCount和真正的额GetTickCount相比会恒定的相差800毫秒左右.不过这个不影响使用.获取开机时间这800毫秒完全可以忽略.计算时间差的话就和GetTickCount是一样的了.<br /> <br />De

wr960204(武稀松)的专栏 8807

实战封神!YOLOv7 轻量化部署全攻略:ONNX格式转换+TensorRT极致加速(速度直接提升3-5倍,精度无损)

部署核心链路,这是YOLO系列部署的最优解,速度提升3~5倍,精度无损;ONNX是桥梁:解决模型兼容性问题,简化后能去掉冗余节点,是TensorRT加速的前提;TensorRT是核心:NVIDIA显卡的极致加速引擎,FP16量化是速度与精度的最优平衡,无需手动配置,一键开启;轻量化终极组合YOLOv7-tiny + 416尺寸 + TensorRT FP16,速度提升5~8倍,满足所有实时检测场景;避坑核心:转换参数必加,推理尺寸必须一致,engine文件显卡专属。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 308

Greg Hoglund大牛的ZwSetSystemInformation()加载驱动

这里备份一下: #include #include typedef struct _UNICODE_STRING {     USHORT Length;     USHORT MaximumLength; #ifdef MIDL_PASS

blackbean的专栏 842

组态王与SqlServer数据库交互总结

组态王可以与SqlServer、mysql、acess、oracle等数据库进行数据交互。 本文重点梳理了如何把组态王中的数据保存到SqlServer数据库中,并使用ADO控件对数据库中的数据进行查询。 一、数据存到SQL数据库 1.新建记录体 2、创建表格模板(用于创建数据库中的表格) 3、打开sqlserver,新建数据库 4、创建ODBC数据源 选择自己新建的数据库 5.使用SQLConnect函数连接数据库,SQLCraetTable函数用于在数据库中创建表格 6.使用

逍遥子的博客 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NT下实现不通过注册表加载进程的方法

http://blog.mmbest.com/?6576发布时间2006年10月26日  翻译发布:2006年10月29日译者按:本文提供了一种在win NT下悄声无息的加载“驱动”的方法。这里所将的“驱动”并不是指平常的驱动,而是指将程序载入系统的内核中,采用该方式将不通过任何注册表项,因此将无法使用任何方法(包括各种杀毒软件)查出这一加载项,达到隐藏自身的目的。为了翻译的方便,本人暂将里面提到

1583

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

atapi.sys 蓝屏 难度系数☆☆☆ ...

  这得记录一下哈,有"损"学知识,哎..... 如下。    刚才,在半岛博客上看视频,机子有点卡,我看了看cpu使用率也不高,内存也剩不少,这是怎么回事儿呢?我就想,想着想着,电脑就黑了,崩儿~  蓝屏了...... 怎么说咱也是见过蓝屏的人,这一堆字母的罗列说半天就是这么个意思:为了防止伤害您的电脑,系统实施了保护措施...

纪争光 9371

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

加载windows驱动的几种方式

windows api加载驱动的几种方式:

要把所有那些负面的信息当做对自身行为的评价,而不是对自身价值的评判。 3374

由句柄所调用的 NtClose 已使用 NtSetInformationObject 以防止关闭 问题解决

今天使用VS2008调试dll程序,调用dll的exe抛出异常 由句柄所调用的 NtClose 已使用 NtSetInformationObject 以防止关闭 发现原因是小红伞Avira更新导致的。 官方的解决方案为: http://www.avira.com/de/support-for-free-faq-detail/faqid/805 不过是德语的 官方称这个b...

ahch8077的博客 525

Windows NT引导过程源代码分析(三)

1.3建立用户登录会话 Windows内核在阶段1初始化的最后,启动了一个用户模式进程——会话管理器子系统(smss)。Smss进程是Windows操作系统的关键组成部分,它尽管是一个用户模式进程,但有其特殊性:首先,它是可信的,这意味着它可以做一些其他用户进程无法做的事情,比如创建安全令牌;其次,它直接建立在Windows内核的基础上,只使用Windows内核提供的系统服务,...

hnzwx888的专栏 1290

 Windows子系统(GUI)

Windows子系统 1 Windows子系统结构 Windows子系统结构,如图: Windows子系统有用户模式和内核模式组件。列出这些组件的职责: a. 内核模块win32k.sys。是Windows内核的扩展。包含两大功能组成部分: 窗口管理器(window manager): 负责控制窗口显示、管理屏幕输出、手机来自键盘鼠标和其他设备的输入,以及将用户信息传递给应用程序。 GDI:图形输出设备的函数库。 b.图形设备驱动程序。 c.Windows环境子系统进程(csrss.e..

maomao171314的专栏 6396

zwSetSystemInformation加载驱动

转自http://blog.youkuaiyun.com/xiaocaiju/article/details/7583234   zwSetSystemInformation函数是个未公开的函数,调用38号会加载驱动,对应的第二个参数为SYSTEM_LOAD_AND_CALL_IMAGE结构体,第三个参数为SYSTEM_LOAD_AND_CALL_IMAGE结构体的长度.. [c

lerroy312的专栏 803

读书笔记之《Windows内核原理与实现》

最近学习《Windows内核原理与实现》发现其博大精深,粗略过了一遍,很多东西比较茫然,看书之余把书中涉及的函数,结构,全局变量的所在页数总结出来,便于以后查阅。 由于半自动半手工,难免有写错的地方,如有发现还请留言通知,谢谢。 函数 函数名称 所在页数 _KeSystemStartup 149 _KiExce...

weixin_34306593的博客 974

Nt内核函数大全

Nt内核函数大全 NtLoadDriver 服务控制管理器加载设备驱动. NtUnloadDriver 服务控制管理器支持卸载指定的驱动程序. NtRegisterNewDevice 加载新驱动文件. NtQueryIntervalProfile 返回数据. NtSetIntervalProfile 指定采样间隔. NtStartProfile 开始取样. NtStopProfile 停止采样...

huang714的专栏 1936
上一篇: ATAPI(磁盘端口驱动)级文件保护简单实现
下一篇: CORE SECURITY TECHNOLOGIES DISCOVERS CRITICAL VULNERABILITY IN VMWARE´S DESKTOP VIRTUALIZATION
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值