溢出植入型木马(后门)的原型实现.ppt

上传人:牧羊曲112 文档编号:6312458 上传时间:2023-10-16 格式:PPT 页数:28 大小:740.50KB
返回 下载 相关 举报
溢出植入型木马(后门)的原型实现.ppt_第1页
第1页 / 共28页
溢出植入型木马(后门)的原型实现.ppt_第2页
第2页 / 共28页
溢出植入型木马(后门)的原型实现.ppt_第3页
第3页 / 共28页
溢出植入型木马(后门)的原型实现.ppt_第4页
第4页 / 共28页
溢出植入型木马(后门)的原型实现.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《溢出植入型木马(后门)的原型实现.ppt》由会员分享,可在线阅读,更多相关《溢出植入型木马(后门)的原型实现.ppt(28页珍藏版)》请在三一办公上搜索。

1、溢出植入型木马(后门)的原型实现,作者:FLASHSKY 邮箱:站点:,感谢与申明,感谢此文成型中获得的如下人员的讨论与支持XUNDI,大鹰,冰河,ALERT7,BENJURRY,ISNO,REFDOM给予的技术讨论和提出了有益的意见感谢所有到会成员给予的指点申明:作者无意实现一个木马,只是提供一种思路:将缓冲区溢出攻击和木马/后门相结合的木马实现手段,通过一个简单的原型来验证,并展示给大家这种实现方式的一些特点。作者提供关键代码段的技术实现的文档和演示来验证其实现,但不提供源代码和二进制程序,任何人都可以利用此文进行自己的技术研究和代码实现,但是自己负担自己开发程序进行非法行为的法律责任。,

2、基本思路,木马(后门)如何有效的隐蔽?溢出植入型木马(后门)的思路 溢出植入型木马(后门)的优势,木马(后门)如何有效的隐蔽?,应用/代码本身的隐蔽 应用进程执行的隐蔽 自动启动相关的隐蔽 通讯的隐蔽,当前木马/后门发展的趋势 驱动和内核级 拦截系统调用服务来实现系统级的隐蔽存在的问题 代码量多 影响一定的性能 实现需要高的技巧与技能,溢出植入型木马(后门)的思路,被动工作式的木马 瘦服务器端的木马依赖于系统机制进行加载,和执行,溢出植入型木马(后门)的优势,为什么会选择溢出植入?溢出漏洞具备通用性 溢出漏洞具备非常好的隐蔽性溢出本身就可以实现远程的控制溢出的攻击程序指令是由数据传输的,灵活,

3、不留痕迹在服务内部进行,很容易实现进程,通讯,启动代码的隐藏完全被动方式工作,对性能等影响小。制造一个溢出漏洞比较简单和容易实现。,Recv(s,buf,100,0);,Recv(s,buf,200,0);,BUF(100),OTHER,BUF(100),被覆盖,通用溢出漏洞的植入,通用化溢出漏洞要解决的4个问题 实现植入通用化溢出漏洞的思路 植入通用化溢出漏洞的实现 木马(后门)的在W2K下的实现,通用化溢出漏洞要解决的4个问题,溢出点定位 JMP ESP代码提供和定位 溢出覆盖后对变量的引用访问违例 溢出覆盖后执行代码对溢出区的修改,实现植入通用化溢出漏洞的思路,扩展堆栈 植 入某个特定函

4、数的替换转发函数,扩展堆栈,PUSH EBPMOV EBP,ESPSUB ESP,XXX(代码执行区)ADD ESP,XXXPUSH EBP,YYYXXX,PUSH EBPMOV EBP,ESPSUB ESP,YYY(代码执行区)ADD ESP,YYYPUSH EBP,返回地址,其他变量,上级函数变量,传入参数,目标BUF,xxx,返回地址,其他变量,上级函数变量,传入参数,目标BUF,xxx,多出的空间,Yyy-xxx,多出空间的作用自动调整大小,使得溢出点一致多余空间内放置SHELLCODE,不会被后面修改可精心选择覆盖内容。避免访问违例需要的条件对传入参数引用使用EBP+XXX,对变量引

5、用使用ESP+XXX的方式,替换转发函数,0X4444,Recv函数地址,PUSH FLAGPUSH XXXPUSH BUFPUSH SCALL 0X4444,0X4c88,Recv函数地址,PUSH FLAGPUSH XXXPUSH BUFPUSH SCALL 0 x4444,RecvAdd代码:,PUSH FLAGPUSH YYYPUSH BUF1PUSH SCALL 0 x4c88COPY(BUF,BUF1,XXX)RET,0X4444,RecvAdd函数地址,替代转发函数的作用可以制造一个完全通用的溢出漏洞溢出点可控不会引发访问违例在溢出控制前BUF内容不会被修改可以解决一些更多的技术

6、问题,植入的通用化溢出漏洞的实现,JMP ESP提供和定位RECV函数的替换转发函数实现更深层次的利用,DWORD WINAPI recvadd(SOCKET s,char FAR*buf,int len,int flags)int num;char buf10 x1190;if(len0 x1000)num=recv(s,buf,len,flags);elsenum=recv(s,buf1,0 x11a9,flags);/扩大到标准指定的溢出点上if(num0)/判断是否收到包 if(num=len)/判断是否溢出,没有则拷贝内存memcpy(buf,buf1,num);else/提供JMP

7、 ESP的地址num=-1;_asmmoveax,1010101Hmovesp+11A4H,eax;return num;,更深层次的利用,检测溢出和溢出返回地址 其他需要利用的变量提供环境保护和线程的安全返回新的替换转发函数的汇编实现,木马(后门)的在W2K下的实现,植入代码结构 PE文件节点分析和代码的附加 附加代码的自动计算和替换 调用函数分析和导入表的替换,植入代码结构,RECVADD替代函数地址,RECVADD函数,RECV函数地址,JMP ESP代码,PE文件结构,导入函数节,代码节,多余代码节空间,数据节,代码附加过程,分析代码节接点空间找到需要替换的函数地址在进程空间查找对应地

8、址的导入地址替换函数调用地址存在jmp recv 的形式,替换为jmp recvadd不存在jmp recv 的形式,直接替换每个call recv保留真实的recv的地址,计算jmp esp代码和recvadd的地址,替换到植入代码的对应偏移处附加代码,并进行相应PE头修改,自我删除,通用远程溢出的SHELLCODE,函数定位处理SOCKET复用 环境变量引用和环境上下文保护溢出线程的安全返回,SOCKET复用,SOCKET复用的意义 基本思路(针对阻塞式SOCKET)获得有效的SOCKET描述符 判断关联的SOCKET描述符的线程(2次连接)挂起SOCKET相关的线程接管SOCKET通讯实

9、现代码非阻塞式SOCKET的复用,环境变量引用和环境上下文保护,引用的变量和作用SOCKET描述符号转发函数参数占用堆栈的大小函数返回地址环境上下文和积存器的保护,溢出线程的安全返回,安全返回的意义需要考虑的问题保存溢出SHELLCODE执行前的积存器内容保存需要返回的地址值计算恢复后的ESP/EBP,好放入对应的地址值。在恢复积存器后,还需要使用积存器读取返回地址值并放入返回前的ESP和读取函数在溢出前提供的函数参数大小来计算正常的ESP,因此对于积存器的保护需要一点技巧。安全返回的代码实现演示植入溢出到TEST服务并远程控制,阐发,饶过WIN的系统文件完整性保护(SFP)溢出植入的通用化测试探讨:只修改内存影象避免文件完整性检查,饶过WIN的SFP,饶过SFP的意义SFP的基本实现机理饶过的思考饶过SFP的实验,溢出植入的通用化测试,溢出植入的过程是完全通用的溢出植入的替代函数是只针对函数级通用的溢出植入远程控制端是完全通用且可根据需要灵活编写和变化的DNS服务的RECV溢出植入演示SQL SERVER服务的WSARECV溢出植入演示通用的WSARECV的替换函数 重载异步IO的SOCKET的内存置换的问题,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号