SystemCrashDumpStateInformation加载驱动

使用如下代码可将系统中的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来写磁盘

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值