ETERNALROMACE漏洞利用流程备录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ETERNALROMACE漏洞利用流程备录相关的知识,希望对你有一定的参考价值。
NSA中Eternalromance模块为windows中针对SMB服务的漏洞利用工具,该工具针对CVE-2017-0145。
SMB在处理SMB_COM_TRANSACTION命令的请求时,如果发送的内容超过最大长度,需要使用SMB_COM_TRANSACTION_SECONDARY命令请求发送之后的数据,如下图所示,通过该函数SMB_COM_TRANSACTION_SECONDARY才能获取对应的正确SMB_COM_TRANSACTION(主要通过判断两个包的PID,MID,TID和UID是否一致),该漏洞函数在SMB协议处理对应的SMB_COM_WRITE_ANDX命令请求时也会被调用,此时对mid域的处理存在混淆的情况,构造恶意SMB_COM_WRITE_ANDX的数据包,使SMB_COM_WRITE_ANDX->fid=SMB_COM_TRANSACTION->mid时,会返回错误的transcation(该transcation原本应该是返回给SMB_COM_TRANSACTION_SECONDARY请求的)。
该transcation的indata域在之后的代码中被增加长度。
而之后再处理SMB_COM_TRANSACTION_SECONDARY命令的请求包时,进行数据拼接时就有可能发生越界写的情况。
如下图所示修改了indata的长度。
整体利用使的函数调用关系如下:
对应的内存布局图。
以下为我使用到的相关断点,通过这些断点可以监控整个利用时的相关过程(内存上的,代码上的),注意不同版本的srv.sys偏移可能不一致(我这里的版本为5.1.2600.5671,对应的漏洞文件放在云盘上了,有兴趣的可以直接看这个版本https://pan.baidu.com/s/1slM36Zb)。
bp SrvSmbTransactionSecondary ".printf \\"SrvSmbTransactionSecondaryexectures:\\";.echo;g" bp SrvSmbTransactionSecondary+0x26d ".printf \\"SrvSmbTransactionSecondaryexectures writeoption:\\";.echo des;dc poi(esp);.echo src;dc poi(esp+4);.if(poi(poi(esp+4))=0x40000023|poi(poi(esp+4))=0x00000000){.echo;r;.echo;dc esp;.echo;u eip;.echo;g}.else{.echo;g}" bp SrvFindTransaction ".printf \\"SrvFindTransaction exectures:\\";.echo;g" bp SrvSmbWriteAndX ".printf \\"SrvSmbWriteAndX exectures:\\";.echo;g" bp SrvSmbWriteAndX+0x659 ".printf \\"SrvSmbWriteAndX extend the size:\\";.echo;r;.echo;dc esp;.echo;u eip;.echo;g" bp SrvCompleteExecuteTransaction ".printf \\"SrvCompleteExecuteTransaction exectures:\\";.echo;g" bp SrvCompleteExecuteTransaction+0x52a8 ".printf \\"SrvCompleteExecuteTransaction readoption:\\";.echo des;dc poi(esp);.echo src;dc poi(esp+4);.echo;r;.echo;dc esp;.echo;u eip;.echo;g" bp ExecuteTransaction ".printf \\"ExecuteTransaction exectures:\\";.echo;g" bp ExecuteTransaction+0x5a ".printf \\"ExecuteTransaction get poolpage:\\";.echo;dc esi L30;.echo;r;.echo;dc esp;.echo;u eip;.echo;g" bp SrvPeekNamedPipe ".printf \\"SrvPeekNamedPipe exectures:\\";.echo;g" bp RestartPeekNamedPipe ".printf \\"RestartPeekNamedPipe exectures:\\";.echo;g" bp RestartPeekNamedPipe+0x5f ".printf \\"RestartPeekNamedPipe set writeleak datacount:\\";.echo;r;.echo;dc esp;.echo;u eip;.echo;dc ecx-1200 LA00;.echo;g"
参考链接
http://m.bobao.360.cn/learning/detail/3747.html
转载请注明出处
以上是关于ETERNALROMACE漏洞利用流程备录的主要内容,如果未能解决你的问题,请参考以下文章