在沙箱中IE不能上网的解决方法

最近在解决一个问题,在我们的沙箱中IE不能上网

现象:

IE不能上网,输入www.baidu.com 提示:不能查找到DNS。也不能ping 通

其他浏览器上网没有问题(SG浏览器,Chrome ,firefox,猎豹,360)

为什么IE不能上网呢?

解决:

在应用层挂调试IE,在ws2_32!socket 下断点,发现 socket 不能创建成功。然后发现首先需要访问 qurl.f.360.cn ,然后再访问www.baidu.com

那么难道我访问网址需要经过qurl.f.360.cn过滤么?而qurl.f.360.cn 域名解析不成功然后就不能上网么?在ws2_32!socket 上继续追踪

在内核模式调试,最后定位的栈

kd> kbn

# RetAddr : Args to Child : Call Site

00 fffff880`0505f14c : 00000000`00000000 00000000`000007a0 fffffa80`02894010 00000000`00000018 : afd! ?? ::NNGAKEGL::`string‘+0x1b1a

01 fffff880`04c20ed7 : 00000000`000007a0 00000000`000007a0 00000000`00000000 00000000`00000000 : afd!AfdDispatch+0x6c

02 fffff880`04c20095 : 00000000`00000010 00000000`00000000 fffff880`021776d8 fffffa80`02c49710 : 360AntiHacker64+0x2ed7

03 fffff800`041d9477 : 00000000`00000005 fffff800`041d8ed0 fffffa80`05600870 fffffa80`02c497a8 : 360AntiHacker64+0x2095

04 fffff800`041cf764 : fffffa80`035d23b0 00000000`00000000 fffffa80`035f1360 00000000`00000001 : nt!IopParseDevice+0x5a7

05 fffff800`041d4876 : fffffa80`035f1360 fffff880`021779f0 fffffa80`00000042 fffffa80`02548820 : nt!ObpLookupObjectName+0x585

06 fffff800`041db587 : 00000000`00000000 00000000`00000003 00000000`00000001 00000000`00000000 : nt!ObOpenObjectByName+0x306

07 fffff800`041e5198 : 00000000`067ee158 00000000`c0140000 00000000`00000000 00000000`067ee180 : nt!IopCreateFile+0x2b7

08 fffff800`03ed8153 : fffff880`02177c60 fffffa80`03867500 fffff880`02177bb8 00000000`00000000 : nt!NtCreateFile+0x78

09 00000000`76ff040a : 000007fe`fc502747 00000000`0532e1f0 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13

0a 000007fe`fc502747 : 00000000`0532e1f0 00000000`00000000 00000000`00000000 00000000`0052ba80 : ntdll!ZwCreateFile+0xa

0b 000007fe`fc503874 : 00630069`004d005c 006f0073`006f0072 0057005c`00740066 00000000`067ee320 : mswsock!SockSocket+0x502

0c 000007fe`fdb81fe2 : 00000000`00000000 00000000`004c3f90 00000000`00000002 00000000`00000000 : mswsock!WSPSocket+0x23a

0d 000007fe`fdb83600 : 00000004`00000017 000007fe`00000002 00000000`00000000 00000000`00000000 : ws2_32!WSASocketW+0x112

0e 000007fe`fdb84b60 : 000007fe`00000002 00000000`05309f70 00000000`00000000 00000000`004a6ea0 : ws2_32!GetProtocolStateForFamily+0x7c

0f 000007fe`fdb83332 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`067ee5f4 : ws2_32!LookupAddressForName+0x100

10 000007fe`fdb82d28 : 00000000`00000000 00000000`00000000 00000000`0050b620 000007fe`fd7a3b2c : ws2_32!GetAddrInfoW+0x232

11 000007fe`fd1b1845 : 00000000`00000000 00000000`067ee818 00000000`067ee838 00000000`00000000 : ws2_32!getaddrinfo+0x98

12 000007fe`fd1cfabb : 00000000`00000000 00000000`0050bec0 00000000`03d496c0 00000000`0050b620 : WININET!MyGetAddrWithTracing+0xca

13 000007fe`fd1b249b : 00000000`00549a50 00000000`00000000 00000000`00549a50 00000000`00000000 : WININET!CAddressList::ResolveHost_Fsm+0x3a6

从ws2_32 调用 getaddrinfo 后经过 360AntiHacker64 然后再到tcpip

最后出错的栈

kd> kbn

# RetAddr : Args to Child : Call Site

00 fffff880`0184e33d : fffffa80`03940950 fffff880`01966128 00000000`00000001 fffff880`018602bf : tcpip!InetInspectCreateEndpoint+0x5e

01 fffff880`0184e24c : fffffa80`03940950 fffffa80`037f3d70 fffffa80`02d6d930 00000000`000007ff : tcpip!UdpCreateEndpointWorkQueueRoutine+0xad

02 fffff880`0184e3e9 : 00000000`00000011 fffffa80`025e78c0 fffffa80`03612c60 fffff880`0184e3b0 : tcpip!UdpCreateEndpoint+0x1ac

03 fffff880`0504ee17 : fffff8a0`098abde0 fffffa80`025e78c0 fffffa80`03612c60 fffffa80`026e1530 : tcpip!UdpTlProviderEndpoint+0x39

04 fffff880`0505f14c : 00000000`00000000 00000000`000007a0 fffffa80`026e1530 00000000`00000018 : afd! ?? ::NNGAKEGL::`string‘+0x1b1a

05 fffff880`04c20ed7 : 00000000`000007a0 00000000`000007a0 00000000`00000000 00000000`00000000 : afd!AfdDispatch+0x6c

06 fffff880`04c20095 : 00000000`00000010 00000000`00000000 fffff880`040806d8 fffffa80`04f25d00 : 360AntiHacker64+0x2ed7

07 fffff800`041d9477 : 00000000`00000005 fffff800`041d8ed0 fffffa80`027ec9c0 fffffa80`04f25d98 : 360AntiHacker64+0x2095

08 fffff800`041cf764 : fffffa80`035d23b0 00000000`00000000 fffffa80`042c8760 00000000`00000001 : nt!IopParseDevice+0x5a7

09 fffff800`041d4876 : fffffa80`042c8760 fffff880`040809f0 00000000`00000042 fffffa80`02548820 : nt!ObpLookupObjectName+0x585

0a fffff800`041db587 : 00000000`00000000 00000000`00000003 00000000`00000001 00000000`00000000 : nt!ObOpenObjectByName+0x306

0b fffff800`041e5198 : 00000000`0647da68 00000000`c0140000 00000000`00000000 00000000`0647da90 : nt!IopCreateFile+0x2b7

0c fffff800`03ed8153 : fffff880`04080c60 fffffa80`03867500 fffff880`04080bb8 00000000`00000000 : nt!NtCreateFile+0x78

0d 00000000`76ff040a : 000007fe`fc502747 00000000`0532efb0 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13

0e 000007fe`fc502747 : 00000000`0532efb0 00000000`00000000 00000000`00000000 00000000`0052ba80 : ntdll!ZwCreateFile+0xa

0f 000007fe`fc503874 : 00630069`004d005c 006f0073`006f0072 0057005c`00740066 00000000`0647dc30 : mswsock!SockSocket+0x502

10 000007fe`fdb81fe2 : 00000000`00000000 00000000`004c3f90 00000000`00000002 00000000`00000000 : mswsock!WSPSocket+0x23a

11 000007fe`fdb83600 : 00000004`00000017 00000000`00000002 00000000`00000000 00000000`00000000 : ws2_32!WSASocketW+0x112

12 000007fe`fdb84b60 : 000007fe`00000002 00000000`03d47f60 00000000`00000000 00000000`004a6ea0 : ws2_32!GetProtocolStateForFamily+0x7c

13 000007fe`fdb83332 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`0647df04 : ws2_32!LookupAddressForName+0x100

tcpip!WfpAleCaptureSecurityInformation

WfpAlepLookupProcessInformation 函数的代码:

.text:0000000000068EB0 mov [rsp+arg_0], rbx

.text:0000000000068EB5 push rdi

.text:0000000000068EB6 sub rsp, 40h

.text:0000000000068EBA mov rdx, [rdx]

.text:0000000000068EBD mov rbx, r8

.text:0000000000068EC0 mov rdi, rcx

.text:0000000000068EC3 test rdx, rdx

.text:0000000000068EC6 jz loc_9894A

.text:0000000000068ECC

.text:0000000000068ECC loc_68ECC: ; CODE XREF: WfpAlepLookupProcessInformation+2FA9Ej

.text:0000000000068ECC lea r8, [rsp+48h+var_28]

.text:0000000000068ED1 lea rcx, gAleMasterHashTable

.text:0000000000068ED8 call cs:__imp_RtlLookupEntryHashTable

.text:0000000000068EDE test rax, rax

.text:0000000000068EE1 jz loc_9896E

.text:0000000000068EE7

.text:0000000000068EE7 loc_68EE7: ; CODE XREF: WfpAlepLookupProcessInformation+2FAB8j

.text:0000000000068EE7 add rax, 0FFFFFFFFFFFFFFB8h

.text:0000000000068EEB cmp [rax], rdi

.text:0000000000068EEE jnz loc_98953

.text:0000000000068EF4 mov [rbx], rax

.text:0000000000068EF7 xor eax, eax

.text:0000000000068EF9

.text:0000000000068EF9 loc_68EF9: ; CODE XREF: WfpAlepLookupProcessInformation+2FAD9j

.text:0000000000068EF9 mov rbx, [rsp+48h+arg_0]

.text:0000000000068EFE add rsp, 40h

.text:0000000000068F02 pop rdi

.text:0000000000068F03 retn

最后 call cs:__imp_RtlLookupEntryHashTable 返回 0 ,出错,但是为何出错还是一头雾水

到底是360AntiHacker64中做了什么么?逆向在360AntiHacker64 没有文件操作的痕迹。那么到底是否是360AntiHacker64有问题呢?

使用U盘启动,然后修改360所有的exe 的名字,所有的sys都改名,IE能上网了。

然后将360AntiHacker64.sys 保留 也能上网,再实验将360Box64.sys保留,问题出现了。并且沙箱初始化过程很慢。

因为我们的沙箱和360沙箱用的都是minifilter 文件过滤技术。因此如果一个文件的访问,比如

CreateFile --->我们的驱动--->360box64.sys--->ntfs驱动

或者CreateFile --->360box64.sys--->我们的驱动-->ntfs驱动

那么谁在前呢?注册表中 Altitude 决定的 360box64为 : 382310 我们的为140000,我们的驱动在后面运行

当我把此驱动的Altitude 修改为382311 ,重启后,OK

因为同为文件过滤驱动,你重定向后的路径需要传递给下个驱动,而下个驱动怎么操作不知道,是否处理也不知道,是否360box64 对IE的文件操作进行了过滤也没有进行深究。

其中还发生了一些插曲:

1 观察驱动之间的通讯,都是构造IRP然后调用IofCallDriver

2 调用其他驱动中的函数,找到其他驱动的DeviceObject 然后获得Device扩展,然后使用其中的函数指针

3 驱动和应用层通讯竟然使用物理内存映射到虚拟内存然后和应用层共享

4 在进程被杀掉后,进程的thread都被释放但是进程并没有消失,只是在人物管理器中不见了。

比如讲360AntiHacker64改名后,被修改了回来。所以干脆把exe和sys干脆都改名字,省着有些保护程序碍事。

找到问题定位问题是很费事的事情,修改就简单多了。

在沙箱中IE不能上网的解决方法

时间: 2024-12-29 09:45:42

在沙箱中IE不能上网的解决方法的相关文章

VMware虚拟机的CentOS无法上网的解决方法

前言:由于Linux下很多软件安装必须网络环境下进行,因此,对于如何在VMware下进行上网,我折腾了至少三天,今天上午,也即五一劳动节,终于搜到一遍技术文章,经过自己实践,VMware下Linux的可以上网啦. VMware虚拟机的CentOS无法上网的解决方法 本人在虚拟机中安装了CentOS,按照安装Windows XP的经验,想要CentOS可以上网,发现居然上不了.找百度一些大神的方法,终于解决了问题. 流程如下: 1)点击 VM->Settings Hardware选项卡下面 2)点

Eclipse ADT中的logcat不显示解决方法

Eclipse ADT中的logcat不显示解决方法: 1.在Eclipse界面中找到DDMS,然后找到device选项卡,在这个选项卡中选择reset adb,如果不行尝试方法2: 2.不用关闭eclipse和模拟器,在Android SDK的tools目录下有个 ddms.bat 批处理文件,运行这个文件可以启动DDMS,同时这里面有logcat,可以显示信息: 3.以上方法都不行,最终杀手锏就是重启eclipse,重启模拟器,记得在任务管理器中关闭adb.exe,这时应该就可以了. 4.用

loadrunner安装破解中遇到的问题和解决方法

今天我们来总结下loadrunner在安装破解过程中遇到的问题以及解决方法 安装过程: 1.点击setup.exe运行我们的安装文件的时候,在安装的过程中,出现提醒“计算机缺少vc2005_sp1_with_atl_fix_redist”,安装不能继续下去. 2,出现这种情况是因为本机缺少该组件所致,安装此组件后重新安装就可以解决这个问题,我们可以在网上下载这个组件,但其实loadrunner是自带这个组件的,可以直接进行安装,找到安装程序自带的lrunner\Chs\prerequisites

asp.net url址址中中文汉字参数传递乱码解决方法

中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirect("B.asp教程x?Name="+Server.UrlEncode(Name)); 接参的时候用UrlDecode: Response.Write(Server.UrlDecode(Request.QueryString["Name"])); 脚本儿里传参的时候用e

Android实际开发中的bug总结与解决方法(一)

                                                                             Android实际开发中的bug总结与解决方法(一) Android开发中有很多bug,我们是完全可以在线下避免的,不要等到线上报的BUG的再去修复.下面是我在实际开发中遇到过的bug和解决方法. BUG 1: java.lang.RuntimeException: Unable to start activity ComponentInfo

js中style.display=""无效的解决方法

本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多的操作,但如果我们style.display=""可能导致没有效果. 看下面一段代码: 复制代码代码如下: <style> #name {     display:none; }</style></head><body><div id=

在启动php时,无法启动此程序,由于计算机中丢失MSVCR110.dll的解决方法

在启动php时,运行RunHiddenconsole.exe php-cgi.exe -b 127.0.0.1:9000 -c时,出现错误:无法启动此程序,由于计算机中丢失MSVCR110.dll 方法/步骤 首先进入 http://www.microsoft.com/zh-CN/download/details.aspx? id=30679 这个网址来进行相关程序的下载. 打开之后,在"选择语言"里选择"中文简体".然后点击右边的"下载"but

MS-SQLSERVER中的MSDTC不可用解决方法

今天在本地机直接在触发器里更新还有一台服务器数据时出现: MSDTC不可用  解决的方法:  在windows控制面版-->管理工具-->服务-->Distributed   Transaction   Coordinator-->属性-->启动 1.A.不用事务,关用SELECT   语句.能否够分布式查询?     B.LINKSERVER   在做分布式更新事务时不能对本机操作.(就是不能环回分布式事务)  C.DBCC   TRACEON   (3604,   730

WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而由于WCF服务的特殊性,调试起来也不是那么方便,因此往往会花费不少时间来进行跟踪处理.本文介绍我在我在我的框架里面使用WCF服务的时候,出现的一个常见错误的处理方法,它的提示信息是:基础连接已经关闭: 连接被意外关闭.这种情况我碰到的有两种,一种是返回DataTable的时候出现的,一种是返回实体类