USDT场外交易平台

U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

浏览器渲染历程破绽行使的一样平常思绪是:在行使破绽获得用户态随便地址读写权限后,通过改动DOM、js等工具的虚表函数指针挟制程序执行流,通过ROP链挪用VirtualProtect等Win32 API,修改保留shellcode buffer的内存属性为PAGE_EXECUTE_READWRITE,最终由ROP链跳转到shellcode执行。Windows 8.1后,Microsoft引入了CFG(Control Flow Guard)缓解手艺[1],对间接挪用的函数指针举行验证,从而缓解了通过改动虚表函数指针挟制程序执行流这种行使手艺。

然而匹敌不会因此终止,随后泛起了一些绕过CFG缓解手艺的新方式,好比chakra/jscript9中通过改动栈上函数返回地址挟制程序执行流[2],v8中行使具有可执行内存属性的WebAssembly工具执行shellcode[3]等。 2020年12月,Microsoft在Windows 10 20H1中基于Intel Tiger Lake CPU加入了CET缓解手艺[4],防护了通过改动栈上函数返回地址挟制程序执行流的行使方式。因此,若何在有CET防护的环境中绕过CFG再次成为破绽行使的难题。

在剖析CVE-2021-26411在野行使样本时[5],我们发现了一种行使Windows RPC(Remote Procedure Call)[5] 绕过CFG的新方式,这种方式无需依赖ROP链,通过组织RPC_MESSAGE并挪用rpcrt4!NdrServerCall2即可实现随便代码执行。

1. CVE-2021-26411回首

《IE浏览器在野0day:CVE-2021-26411剖析》[5] 一文中先容了该破绽的根因:removeAttributeNode()触发属性工具nodeValue的valueOf回调,回调时代手动挪用clearAttributes(),导致nodeValue保留的BSTR被提前释放。回调返回后,没有检查nodeValue是否存在继续使用该工具,最终导致UAF。

3月份Windows补丁中该破绽的修复方式为,在CAttrArray::Destroy函数中删除工具操作前增添索引检查:

对于这样一个巨细可控的UAF破绽,行使思绪为:行使两个差异类型的指针(BSTR和Dictionary.items)指向该朴陋内存,通过类型混淆实现指针泄露和指针解引用:

2. RPC原理及行使方式

Windows RPC用来解决漫衍式客户端/服务端函数挪用问题。基于RPC,客户端可以像挪用内陆函数一样挪用服务端函数,RPC基本架构如下图:

客户端/服务端程序将挪用参数/返回值等传给下层Stub函数,Stub函数认真封装数据成NDR(Network Data Representation)花样,最后通过rpcrt4.dll提供的runtime库举行通讯。

下面给出一示例idl:

当客户端挪用add函数后,服务端由rpcrt4.dll接受处置请求并挪用rpcrt4!NdrServerCall2:

rpcrt4!NdrServerCall2只有一个参数PRPC_MESSAGE,其中包罗了客户端挪用的函数索引、传参等主要数据,服务端RPC_MESSAGE结构及主要子数据结构如下图(32位):

如上图所示,RPC_MESSAGE结构中,函数挪用要害的两个变量为Buffer和RpcInterfaceInformation。其中Buffer存放了函数的传参,RpcInterfaceInformation指向RPC_SERVER_INTERFACE结构。RPC_SERVER_INTERFACE结构保留了服务端程序接口信息,其中+0x2c DispatchTable保留了runtime库和Stub函数的接口函数指针,+0x3c InterpreterInfo指向MIDL_SERVER_INFO结构。MIDL_SERVER_INFO结构保留了服务端IDL接口信息,其中DispatchTable保留了服务端提供的远程挪用例程的函数指针数组。

下面以一个实例先容RPC_MESSAGE的结构:

凭证上面给出的idl,当客户端挪用add(0x111, 0x222),服务端程序断在rpcrt4!NdrServerCall2:

可以看到,动态调试的内存dump与RPC_MESSAGE结构剖析一致,其中add函数就存放在MIDL_SERVER_INFO. DispatchTable中。

接下来剖析rpcrt4!NdrServerCall2是若何凭证RPC_MESSAGE挪用add函数的:

rpcrt4!NdrServerCall2内部挪用rpcrt4!NdrStubCall2,rpcrt4!NdrStubCall2内部凭证MIDL_SERVER_INFO. DispatchTable的基地址和RPC_MESSAGE. ProcNum盘算挪用的函数指针地址,将函数指针、函数参数和参数长度传给rpcrt4!Invoke:



rpcrt4!Invoke内部最终挪用服务端例程函数:

,

IPFS矿机

IPFS官网(www.FLaCoin.vip)是Filecoin致力服务于使用Filecoin存储和检索数据的官方权威平台。IPFS官网实时更新FlaCoin(FIL)行情、当前FlaCoin(FIL)矿池、FlaCoin(FIL)收益数据、各类FlaCoin(FIL)矿机出售信息。并开放FlaCoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。

,

通过上面的剖析可以知道,在获得随便地址读写权限后,可以组织一个RPC_MESSAGE数据结构,传入想要挪用的函数指针和函数参数,最后手动挪用rpcrt4!NdrServerCall2,即可实现随便函数执行。

接下来需要解决两个问题:

1)若何通过js剧本挪用rpcrt4! NdrServerCall2

2)考察rpcrt4!Invoke最后的服务端例程函数挪用:


可以看到这里是一处间接挪用,且有CFG检查。因此需要思量替换MIDL_SERVER_INFO. DispatchTable函数指针后若何绕过这里的CFG防护。

首先解决问题1: 若何通过js剧本挪用rpcrt4! NdrServerCall2

这里可以复用替换DOM工具虚表函数指针挟制程序执行流的方式,由于rpcrt4!NdrServerCall2是纪录在CFGBitmap里的正当指针,以是替换后依然可以通过CFG检查。样本里通过改动MSHTML!CAttribute::normalize,最终由“xyz.normalize()”挪用rpcrt4!NdrServerCall2。

接着解决问题2: 若何绕过rpcrt4!NdrServerCall2中的CFG防护

样本里的思绪是:

1) 行使伪造的RPC_MESSAGE和rpcrt4!NdrServerCall2挪用VirtualProtect修改RPCRT4!__guard_check_icall_fptr内存属性为PAGE_EXECUTE_READWRITE

2)替换rpcrt4!__guard_check_icall_fptr里保留的指针ntdll!LdrpValidateUserCallTarget为ntdll!KiFastSystemCallRet,从而关闭rpcrt4的CFG检查

3) 恢复RPCRT4!__guard_check_icall_fptr内存属性

解决了问题1,2后,后续即可行使伪造的RPC_MESSAGE实现随便函数的挪用。样本中将shellcode写入msi.dll + 0x5000的位置,最终通过rpcrt4!NdrServerCall2挪用shellcode:


最终完整的行使演示:


3.  一些思索

CVE-2021-26411在野样本中泛起了行使RPC绕过CFG缓解手艺的这一创新方式。这种行使方式无需组织ROP链,直接通过伪造RPC_MESSAGE即可实现随便代码执行,行使简朴且稳固,有理由信托该方式会成为绕过CFG缓解措施的一种新的有用行使手艺。

4. 参考文献

[1] https://docs.microsoft.com/en-us/windows/win32/secbp/control-flow-guard

[2] https://zhuanlan.kanxue.com/article-14133.htm

[3] https://www.anquanke.com/post/id/201951

[4] https://windows-internals.com/cet-on-windows/

[5] https://mp.weixin.qq.com/s?__biz=MzI4NjE2NjgxMQ==&mid=2650250070&idx=1&sn=5906feea0cfe498bffbb961e73f5c285

[6] https://docs.microsoft.com/en-us/windows/win32/rpc/rpc-start-page


Usdt自动充值接口声明:该文看法仅代表作者自己,与本平台无关。转载请注明:usdt手续费怎么收(www.payusdt.vip):CVE-2021-26411在野样本中行使RPC绕过CFG缓解手艺的研究
发布评论

分享到:

usdt无需实名(www.caibao.it):夹杂接种新冠疫苗能增强免疫反映吗?
1 条回复
  1. trc20官方交易所
    trc20官方交易所
    (2021-05-01 00:00:19) 1#

    usdt官网下载菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。看得很开心呢

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。