【原创】FltGetFileNameInformation蓝屏分析
FAULTING_IP:
nt!SeCreateAccessStateEx+5b
80564184 848788000000 test byte ptr [edi+88h],al
TRAP_FRAME: f1c6756c -- (.trap 0xfffffffff1c6756c)
ErrCode = 00000000
eax=00000001 ebx=81be08e0 ecx=819a7af4 edx=00000000 esi=81be0994 edi=00000000
eip=80564184 esp=f1c675e0 ebp=f1c675ec iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010202
nt!SeCreateAccessStateEx+0x5b:
80564184 848788000000 test byte ptr [edi+88h],al ds:0023:00000088=??
PROCESS_NAME: drwtsn32.exe
LAST_CONTROL_TRANSFER: from 805641e9 to 80564184
STACK_TEXT:
f1c675ec 805641e9 81baada8 819a7a88 81be08e0 nt!SeCreateAccessStateEx+0x5b
f1c6760c 80568481 81be08e0 81be0994 00100001 nt!SeCreateAccessState+0x28
f1c67644 8056cbeb 00000000 00000000 9a7a8800 nt!ObOpenObjectByName+0x90
f1c676c0 80579c80 f1c67778 00100001 f1c67758 nt!IopCreateFile+0x407
f1c67708 f7450c79 f1c67778 00100001 f1c67758 nt!IoCreateFileSpecifyDeviceObjectHint+0x52
f1c6777c f7450f63 821c5128 f1c677b4 f7451480 fltmgr!FltpNormalizeNameComponent+0x75
f1c67788 f7451480 821c5128 00000000 821c5128 fltmgr!FltpCallNormalizeNameComponentHandler+0x41
f1c677b4 f745215a 00000052 00000000 821c5128 fltmgr!FltpExpandShortNames+0x110
f1c677d0 f745276b 00005128 00000000 000000fe fltmgr!FltpGetNormalizedFileNameWorker+0x90
f1c677e8 f74502a2 821c5128 00000000 821c5128 fltmgr!FltpGetNormalizedFileName+0x19
f1c67800 f7450365 80552000 821c5128 f1c6783c fltmgr!FltpCreateFileNameInformation+0x84
f1c67810 f7440e0a 821c5128 822fdf14 00000000 fltmgr!CreateTemporaryFileNameInformation+0xf
f1c6783c f7441366 821c5128 821ec694 f1c678c4 fltmgr!FltpGetFileNameInformation+0xaa
f1c67864 f776bef5 122fdf14 00000101 f1c67888 fltmgr!FltGetFileNameInformation+0x114
f1c678a4 f743c888 822fdf14 f1c678c4 f1c678f4 mydrv!PreCleanup+0xf5
可见是访问了一个空指针导致的蓝屏,那这个BUG是怎么触发的?
PAGE:00495A13 push edi
PAGE:00495A14 push [ebp+arg_4]
PAGE:00495A17 mov [ebx+30h], esi
PAGE:00495A1A push [ebp+arg_0]
PAGE:00495A1D call _SeCaptureSubjectContextEx@12 ; SeCaptureSubjectContextEx(x,x,x)
PAGE:00495A22 mov edi, [edi]
PAGE:00495A24 test edi, edi
PAGE:00495A26 jnz short loc_495A2B -? 这里虽然判断了EDI是否为空,但为空还是继续走到下条指令
PAGE:00495A28 mov edi, [ebx+24h]
PAGE:00495A2B
PAGE:00495A2B loc_495A2B: ; CODE XREF: SeCreateAccessStateEx(x,x,x,x,x,x)+45 j
PAGE:00495A2B xor eax, eax
PAGE:00495A2D inc eax
PAGE:00495A2E test [edi+88h], al
可见是 _SeCaptureSubjectContextEx的第三个参数返回有问题. 第三个参数是指向如下结构体
typedef struct _SECURITY_SUBJECT_CONTEXT {
PACCESS_TOKEN ClientToken; -> 这里是ClientToken 为空.
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
PACCESS_TOKEN PrimaryToken;
PVOID ProcessAuditId;
} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
为啥 ClientToken 会空?根据进入 SeCaptureSubjectContextEx 发现有俩种情况 ClientToken 会空, 一种是当前线程为NULL,一种是PsReferenceImpersonationToken返回了NULL,很显然是第二种
PsReferenceImpersonationToken的入口有这么几条指令
PAGE:004952A8 mov ebp, esp
PAGE:004952AA push ebx
PAGE:004952AB mov ebx, [ebp+arg_0]
PAGE:004952AE test byte ptr [ebx+248h], 8
PAGE:004952B5 jnz loc_4A218F
PAGE:004952BB xor eax, eax
PAGE:004952BD
PAGE:004952BD loc_4952BD: ; CODE XREF: PsReferenceImpersonationToken(x,x,x,x)+CF79 j
PAGE:004952BD pop ebx
PAGE:004952BE pop ebp
PAGE:004952BF retn 10h
大意就是 test byte ptr [ebx+248h], 8 如果为真,就返回NULL,其实就是判断线程是否要结束,查看当前的线程情况
dt _ETHREAD @$thread
….
+0x248 Terminated : 0y1
+0x248 DeadThread : 0y0
+0x248 HideFromDebugger : 0y0
+0x248 ActiveImpersonationInfo : 0y0
所以这个BUG就是这么触发的。虽然是微软的BUG,但我们是增添了触发这个BUG的概率,因为我们的FILTER调用了 FltGetFileNameInformation 导致触发了这个BUG
结论: XP上,在PreCleanup上调用FltGetFileNameInformation要判断当前线程是否Terminated
【原创】FltGetFileNameInformation蓝屏分析的更多相关文章
- 【原创】FltSendMessage蓝屏分析
INVALID_PROCESS_DETACH_ATTEMPT (6)Arguments:Arg1: 00000000Arg2: 00000000Arg3: 00000000Arg4: 00000000 ...
- 电脑蓝屏分析教程,附工具WinDbg(x86 x64)6.12.0002.633下载
我们常常在使用电脑中,有时会碰到电脑蓝屏,我们经常束手无策,不知道为什么会蓝屏?有些蓝屏后自动重启能正常进入系统,那么我们就可以借助工具进行分析.而有些可能需要进入到安全模式或者pe系统才会正常,那么 ...
- WinDbug之DUMP蓝屏分析
Microsoft (R) Windows Debugger Version 6.2.8400.0 X86Copyright (c) Microsoft Corporation. All rights ...
- 一次真实的蓝屏分析 ntkrnlmp.exe
故事背景: 话说我一直都是远程公司的电脑,在我晚上11点敲代码敲得正爽的时候,被远程的主机挂掉了,毫无征兆的挂掉了,我特么还好有闲着没事就ctrl + s保存代码的习惯,要不然白敲了那么久,我以为是公 ...
- 记一次Windows蓝屏分析
大半夜收到此类信息,应该是让所有系统管理员最头大的事情了 首先我快速通过iDRAC,发现服务器发生了重启操作,并得到相关日志信息 通过Dell的官方解释,确定了该问题是OS层面的异常导致.打开Wind ...
- 关闭win10 自动更新 及蓝屏解决办法
"控制面板-管理工具-服务"(或在"此电脑"鼠标右键,点击"管理"),找到Windows Update项目后,将"启动类型&quo ...
- Win 10 蓝屏,出现DRIVER_POWER_STATE_FAILURE的解决方法
笔者个人笔记本电脑,用的是华硕的飞行堡垒FZ系列,上个月装了个Ubuntu的系统,之后换回Windows后,电脑疯狂蓝屏,错误代码只有这个DRIVER_POWER_STATE_FAILURE.一开始我 ...
- 记一次解决关机蓝屏 | MULTIPLE_IRP_COMPLETE_REQUESTS | klflt.sys
已经解决蓝屏问题,原因是卡巴斯基安全软件驱动导致,需要卸载卡巴斯基安全软件,详细过程如下. 一.关机时蓝屏 Win10系统,在关机动画快结束时突然蓝屏,提示:你的设备遇到问题,需要重启,终止代码:MU ...
- 蓝屏 Dump文件分析方法
WinDbg使用有点麻烦,还要符号表什么的.试了下,感觉显示很乱,分析的也不够全面... 试试其他的吧!今天电脑蓝屏了,就使用其dump文件测试,如下: 1.首先,最详细的,要属Osr Online这 ...
随机推荐
- koa-router学习笔记
koa-router 是koa框架的一个路由处理级别的中间件. 目录结构 ├── app.js ├── middleware │ ├── m1.js │ └── m2.js ├── package-l ...
- bat实现监控进程守护程序-保证平台服务的稳定执行
背景是平台所在的服务器经常因异常原因导致当前机器所在的服务关闭....直接贴代码吧. ********************************************************* ...
- IDEA安装及默认配置习惯配置(一)
最新新转战IDEA,每次安装完需要做一些操作习惯的设置,在这里记录一下,下次安装可以快速上手用. 第一步,JAVA安装 JDK官方下载地址:https://www.oracle.com 下载JDK时根 ...
- 对SPI进行参数化结构设计
前言 为了避免每次SPI驱动重写,直接参数化,尽量一劳永逸. SPI master有啥用呢,你发现各种外围芯片的配置一般都是通过SPI配置的,只不过有3线和四线. SPI slave有啥用呢,当外部主 ...
- sql根据一个表查询的数据作为条件查询另一个表
代码格式如下: ) 要注意的是:in后面的查询语句必须是查询一个字段跟前面的表相对应的.比如要根据订单号orderID,OpenBills 这个表就需要查询到orderID这个字段,BillConsu ...
- python 操作Hbase 详解
博文参考:https://www.cnblogs.com/tashanzhishi/p/10917956.html 如果你们学习过Python,可以用Python来对Hbase进行操作. happyb ...
- Image Processing and Analysis_8_Edge Detection:Edge Detection Revisited ——2004
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- JDK8 dockerfile
# AlpineLinux with a glibc-2.28-r0 and Oracle Java 8FROM hub.devops.docker.com/library/alpine-glibc: ...
- idou老师教你学Istio 26:如何使用Grafana进行可视化监控
使用Grafana插件进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,Grafana插件在Istio对Prometheus支持的基础上,为用户提供基于网页仪表面板的可视化监控效果 ...
- 用js刷剑指offer(调整数组顺序使奇数位于偶数前面)
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 牛客网链接 js代码 ...