当前位置:主页   - 电脑 - 网络技术 - 网络安全
编写和应用穿墙Shellcode
来源:网络   作者:   更新时间:2010-09-26
收藏此页】    【字号    】    【打印】    【关闭

  Shellcode要求是:满足攻击机器位于NAT的内网中的情况,溢出后能突破防火墙限制、突破操作系统版本限制、能自动接收并执行文件、最后安全退出。这实际上是要编写一个综合性的Shellcode,结合这两个漏洞的具体情况,经过两整天的编写和调试最终成功,完整的Shellcode汇编代码和攻击程序参见文章附带的源码。这里我主要想和大家交流实现的思路和过程。

  第一部分:打造综合功能的Shellcode

  制定最佳的防火墙突破思路及文件传送方式

  我们的目标是攻击个人主机,这里的防火墙也专指个人防火墙(PFW)。防火墙突破思路的选取将直接影响汇编代码的复杂程度和文件的传送方式,为什么这么说呢?先简单回顾一下4期文章《射雕之突破Windows个人防火墙》中总结的几种防火墙突破方法:

  方法一、查找到当前连接的socket,在通过该连接完成指定的功能(如,传送文件)。关于socket的查找,有通过getpeername、字符串匹配、 hook recv等几种方式。实践证明,这几种方式要么不适用于攻击者位于内网的情况(getpeername法)、要么就是目标服务进程中代码在调用recv函数时开辟的缓冲区大小很难确定(字符串匹配法)或则是该服务进程根本就没使用recv函数来接收数据(hook recv法)。根据Shellcode设计要求,该方法不应该成为首选。

  方法二、端口复用,也就是溢出成功后在目标服务进程中重复绑定其开放的TCP端口。这种方法应该能满足我们的设计要求,但它存在一个限制:假如服务进程中绑定端口时通过setsockopt函数设置了SO_EXCLUSIVEADDRUSE选项的话,重复绑定该端口是不会成功的。那么究竟怎么检测服务进程是否设置了SO_EXCLUSIVEADDRUSE呢?比如检测CCProxy进程(对应808端口),在本地运行该进程,另外编写一程序,绑定808端口,并且设置:

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明