首页 IT技术 热点问题 查看内容

关于近两天网吧0x7F蓝屏的分析

热点问题 4459 0 2017-7-31 17:46

一个不太平的周末,尤其周六,从早到晚,电话都被爆了,蓝屏!蓝屏!蓝屏!听到这俩字都吃不下饭了,不知道什么原因,这个周末,尤其是28、29两天集中爆发了一样,全都是7F的蓝屏。问了下几个技术群里面的大胸弟,貌 ...

一个不太平的周末,尤其周六,从早到晚,电话都被爆了,蓝屏!蓝屏!蓝屏!听到这俩字都吃不下饭了,不知道什么原因,这个周末,尤其是28、29两天集中爆发了一样,全都是7F的蓝屏。问了下几个技术群里面的大胸弟,貌似网维大师,易乐游,云更新都没法幸免,全都蓝。因为腾讯游戏下面出现的比较多,目前都联系了腾讯官方协助处理中。
今天(30号)好一点,少了很多,不然我也没法空下来写这个分享(特别感谢易游的研发大神协助)。
话说多说,以一个蓝屏文件为例:
1. 错误码:
错误码.png
栈回溯:(这里可以看到调用了一个双重异常处理
2.png
完整的栈:(没有发现什么有用的信息
3.1.png.3.2.png
出问题的进程:
4.png


2. 由于是双重错误,那么windbg显示的栈有可能不是第一现场的栈,thread命令查看发现当前线程的栈的地址为fffff88009f23000到fffff88009f2c000,而fffff88009f23000处于栈的末端,恰好又在调用双重错误的栈上,说明这应该是一个栈溢出导致的蓝屏。那么只要找出是谁导致的栈溢出即可,从线程栈的末端里能看到大量重复的数据,说明有可能是递归函数使用不当造成的蓝屏

5.png
3. 从栈上可以发现,有一段数据大量重复,但是windbg又没有显示驱动名称,那么只有两种可能,要么是一个驱动压了大量重复数据到堆栈,要么是使用了内核shellcode,所以显示不出代码所在的驱动。
4. 继续往下看栈信息,没有发现可疑的驱动调用,所以怀疑是某个驱动使用了内核shellcode,而这个shellcode使用递归不当造成的蓝屏。
5. 反汇编其中一个重复的地址,进一步正实了我的猜想
6.png

6. 将这段代码区域内存dump下来,发现递归调用的函数为[0x0FFFFF8800C22F050],可是这个地址所指向的值,dump文件里没有,这个地址也不属于任何一个驱动模块。
7.png

7. 由于dump文件里看不出来这段shellcode是谁创建的,所以只能用排除法,分析不同网吧的dump文件发现,情况都类似,都是由于这段shellcode引起的蓝屏,而且这些网吧都有一个共同点,即有一个imagesize为0x3B00的随机名称的驱动被卸载了,猜想shellcode可能就来自于这个驱动。
8.png

8. 结论:这次网吧大范围出现0x7f蓝屏是由一个驱动的shellcode代码出现栈溢出导致的蓝屏,而这个驱动的imagesize为0x3b000

9. 排查办法:使用pchunter找出所有大小为0x3b000的驱动,如果没有,可以使用驱动备份工具,然后用everything搜索所有备份过的驱动(.sys.worm),找到符合下列条件的驱动
   ①. 驱动名称随机
   ②. 驱动模块已经被卸载(pchunter里找不到)

碎碎念:一般来说如果碰到了腾讯游戏的蓝屏,都可以尝试屏蔽腾讯的相关进程临时缓解下,TP3Helper.exeTenioDL.exe、TenSafe.exe、TenSafe_1.exe、TPHelper.exe、TQMCenter.exe,然后可以加上平台上面自带的驱动过滤功能,看能不能拦截到一些异常的驱动进程




路过

雷人

握手

鲜花
1

鸡蛋

刚表态过的朋友 (1 人)

  • 鸡蛋

    匿名

原作者: 皇阿玛丶