用友软件首页

WebServer端口重定向后门的研究

2016-1-15 0:0:0 wondial

WebServer端口重定向后门的研究

WebServer端口重定向后门的研究

0×00

前段时间有朋友问到了我一个关于“无端口可用”的问题。说在如下图所示的内网环境中,firewall只允许Web Server的80端口建立网络连接,并且Web Server上的80端口已经被IIS、Apache等软件占用了的情况下,怎么建立一个RAT后门。


 

0×01

早些时候的著名后门byshell就考虑到了这个问题,于是使用了一种非常挫的方式去解决。客户端将数据发送到80端口,服务端将IIS的进程打开,循环遍历IIS进程的整个内存去寻找数据标记。显然这种方法从效率和稳定性上来讲,都是不可取的。这里姑且不把这种方法当做方法。

过去有人提出过一种端口复用的方法去建立的后门,这个方法使用了setsockopt()这个API,这个API在MSDN里说是用来设置套接字的选项的。原型如下。


int setsockopt(SOCKET s,int level,int optname,const char FAR* optval,int optlen);

我们这里只关心它的第三个参数,这个参数用来设置套接字状态。这个参数有一个取值为SO_REUSEADDR,MSDN对这个参数的解释如下。

The state of the SO_REUSEADDR socket option determines whether the local transport address to which a socket will be bound is always shared with other sockets. This socket option applies only to listening sockets, datagram sockets, and connection-oriented sockets.

 

也就是说,当第三个参数的取值设置为SO_REUSEADDR时,套接字的端口是可以共享复用的。具体共享细节为后来居上,后建立该参数链接的套接字先拿到数据。此方法目前对Apache和IIS5.0及以下版本有效。那为什么IIS6.0及以上就不行了呢?之后会做解释。

0×02

通过逆向和查阅开源代码可以得知,Apache和IIS5.0及以下版本使用了应用层的IOCP模型进行通信,尽管框架比较复杂,但是依然在应用层创建了套接字。到这里你是否有新的想法呢?没错,我想到了可以使用远程线程注入一个DLL进行Api Hook例如WSARecv()、WSASend()这样的API获取套接字和异步IO的缓冲区指针,再使用getpeername()函数对比客户端信息,紧接着用套接字进行IO。

或者也可以使用更简单粗暴的方法,直接使用SPI安装一个LSP,也可以抓到数据,但是就比较难再做通信了。我们将这种在应用层建立套接字通信转接通信过程的方法总结为下图,红线表示可以利用的地方。



 

这里可能就有同学会问到,为什么不能直接上Rootkit呢?如果从ring0层去考虑这个问题理论上是非常容易的。我们可以使用TDI或者NDIS的过滤驱动直接过滤所有IO网卡的流量,不过写个这么重量级的后门,的确有“杀鸡焉用宰牛刀”的意味。再者,也可以使用SSDT HOOK和对TCP驱动下IRP HOOK去解决问题。但是为什么不去做呢?因为使用驱动目前已经不是Windows木马编程潮流所在。

0×03

还记得之前提到的IIS6.0和以上版本的问题吗?这里一个新问题出现了,从IIS6.0开始,微软可能考虑到了安全性和稳定性以及数据处理的效率的问题,将网络通信的过程封装在了ring0层,使用了http.sys这个驱动来直接进行网络通信。如下图所示。

这样一来,应用层就没有了套接字,我们就不能使用上述方法去解决这个问题了。那怎么办呢?难道应用层因此就再没有可以利用的地方了吗?这么想并不符合Geek的风格。于是,经过对W3wp.exe的初步的逆向,又发现了一些可以利用的地方。



 这个过程中,ring0无法处理的HTTP请求,都下发由w3wp.exe进程处理。针对HTTP请求考虑,我想到了如下几点可以转接网络通信过程的地方。
1.GET或者POST对硬盘中的文件做访问,有可能需要通过应用层CreateFile()、ReadFile()、WriteFile()去完成。(API HOOK?)
2.对于HTTP这种大部分内容由ANSI字符串解析的协议,难道用不到标准字符串处理函数吗?(还是API HOOK?)
3.对ASP、PHP、JSP脚本的解释,可能需要将数据提交给解释引擎去完成。(inline hook?)
0×04
基于以上几点,我也一一做了验证。这里逆向要注意了,OllyDbg对低权限进程的Attach调试稳定性并不好,经常崩掉。所以我换了非常难看的Windbg。微软自家的调试器调自家的程序非常稳定。首先bp了CreateFileW(),得到了一个比较惊喜的效果。如图所示。
 

 

Windbg拦下了CreateFileW(),并且在第一个参数里,我们看到了我们提交的“fuckyou1234”,这里我们就完全可以用if(wcsncmp(s1,L”fuckyou1234”,11))这样取得后门命令了。

而我通过对多个字符串处理函数的bp,同样也发现了可以利用的地方。例如wcsstr()函数的断点,成功的抓到了cookies和一些其他与HTTP协议相关的信息。cookies可以比URL提交跟多内容,并且可以绕过一些log和过滤。如下图所示。


 

这是对前两个问题逆向的初步成果,至于第三个问题,暂时先留着好了。现在遇到了一个新的问题,当拿到需要执行的命令,我们至少不能让他去w3wp.exe这个低权限的进程去实施。那么怎么让他在高权限的进程去实施呢?还有,我们执行完的结果,该怎么返回给客户端呢?

0×05

这里我考虑到了留一个宿主进程,建立事件对象和邮槽或者管道接受由w3wp.exe发来的命令。至于把数据反馈到客户端,我们可以重定向CreateFileW()的第一个参数,将他指向管道也好,指向某个硬盘里的输出文件也好,当紧接着去ReadFile()的时候,就可以顺利将我们的执行结果反馈到客户端去了。

这里涉及到高低权限进程通信的一个问题,高权限进程创建的内核对象必须设置安全属性为低权限可继承句柄,并且设置安全描述符和DACL。事件、邮槽、管道的等内核对象才能被低权限进程打开。具体代码如下。最后,我用上述所诉内容,写了如下的一个后门。


HANDLE secCreateEventPort(WCHAR* szNameEvent){SECURITY_DESCRIPTOR SecDescriptor = {0};SECURITY_ATTRIBUTES SecurityAttributes = {0};if (InitializeSecurityDescriptor(&SecDescriptor,SECURITY_DESCRIPTOR_REVISION) == FALSE)return INVALID_HANDLE_VALUE;if(SetSecurityDescriptorDacl(&SecDescriptor,TRUE, NULL, FALSE) == 0)return INVALID_HANDLE_VALUE;SecurityAttributes.bInheritHandle = TRUE;SecurityAttributes.lpSecurityDescriptor = &SecDescriptor;SecurityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);return CreateEvent(&SecurityAttributes,TRUE,FALSE,szNameEvent);}


 

 


如果您的问题还没有解决,可以到 T+搜索>>上找一下答案

分享到:

微博关注

bj用友软件

最新信息

编制合并会计报表体现了实质重于形式的原则和历史成本原则的要求吗

编制合并会计报表体现了实质重于形式的原则和历史成本原则的要求吗 编制合并会计报表体现了实质重于形式的原则和历史成本原则的要求吗''
是的,这个说法是正确的。合并会计报表正是体现了实质重于形式的原则,实质重于形式原则它也是对历史成本原则补充和修正,所以这个说法正确。

用友财务通标准版2005当一张固定资产卡片中设备台数有两...

用友财务通标准版2005当一张固定资产卡片中设备台数有两...财务通标准版2005当一张固定资产卡片中设备台数有两...


财务通标准版2005-当一张固定资产卡片中设备台数有两...

自动编号:3764产品版本:财务通标准版2005
产品模块:总账所属行业: 通用
适用产品:关 键 字:固定资产
问题名称:当一张固定资产卡片中设备台数有两...
问题现象:当一张固定资产卡片中设备台数有两台时,现在只要报废其中一台,应该怎样操作最好?
原因分析:参见答案
解决方案:做原值和累计折旧调整。

温馨提示:如果您的问题还没有解决,欢迎进入用友云基地

热点文章

新闻资讯

  • 【新年首签】天津用友&通广集团签署战略协议

    【新年首签】天津用友&通广集团签署战略协议

    天津用友软件技术有限公司(以下简称天津用友)和天津通信广播集团有限公司(以下简称通广集团)就企业信息化建设事宜进行战略签约。

    参加此次会议有天津用友总经理赵永春,天津用友副总经理王成岩、通广集团副总经理马严、通广集团科技质量部部长尹刚、七一二公司技术质量部部长门国梁、七一二公司技术中心主任黄建尧等。

    image

  • 会计职场堪比宫斗剧

    会计职场堪比宫斗剧

     近几年,各种宫斗剧火爆,《甄嬛传》《芈月传》等等都脍炙人口,许多人经常打趣自己像某个人物,若是在古代能活到第几集。让人不禁想起,会计职场又何尝不是一场宫斗,每天要察言观色,明了领导的内心,就像后宫谁也不敢惹皇后一样。但当你坐上领导位置的时候,盯着你的眼睛就会很多,稍有不慎就会被取代。就像后宫的嫔妃一样,就算坐上了皇后的位置也要时刻担心有没有人觊觎。

    image

知 识 库

  • 用友软件凭证填制环节常见问题及解决方案

    用友软件凭证填制环节常见问题及解决方案

    用友软件凭证填制环节常见问题及解决方案用友软件凭证填制环节常见问题及解决方案

      用友软件的账务处理采用放射式数据处理流程,对业务数据采用集中收集、统一处理、数据共享的操作方法,凭证数据库既是数据归集的“信息仓库”,又是后续业务处理的“信息源泉”。因此,凭证填制数据的正确与否直接关系到后续账表及相关业务信息的准确性。
      在用友软件中,其基础设置及凭证管理模块为我们提供了凭证类别控制、受控科目控制、制单序时控制、支票控制、制单权限控制等功能,加强了对发生业务的及时管理和控制,通过严密的制单控制保证填制凭证的正确性。然而在实际应用中,却常因用户不理解各项控制参数的含义,以及对后续操作的影响;没有准确无误地设置相关控制参数及基础信息;没有正确完整地录入凭证辅助信息等原因,使先进的控制工具无法充分发挥效用,损失了部分数据信息,降低了软件的使用效能。对此,笔者将以用友ERP-U8.72软件为例,总结凭证填制环节的常见问题,结合典型案例,追根寻源,深入剖析其产生的原因,以便对症解决。一、凭证类别设置时常见问题
      出错信息描述:“不满足借方必有条件”,“不满足贷方必有条件”,“不满足借贷必无条件”,“不满足凭证必有条件”。
      典型案例剖析:2009年8月16日,总经理办公室支付业务招待费1 200元,转账支票号ZZR003。凭证内容如下:
      借:管理费用/招待费(660205)1 200
      贷:银行存款/工行存款(100201)1 200
      当凭证保存时,弹出出错信息框,提示“不满足借贷必无条件”。此信息说明用户之前为不同类别的凭证设置了限制条件,指定了相应的限制类型和限制科目。这样,当凭证填制时,系统就会根据所设置的凭证类别判断凭证内容是否符合限制条件,不相符时就会出现类似的出错信息。对于此类问题,用户首先应根据提示信息,认真查对所选凭证类别与所录入的业务内容是否相符,然后进一步判断究竟是凭证类别设置错误,还是会计科目选择错误?
      此案例中的凭证类别选择的是“转账凭证”,转账凭证的限制类型应为“凭证必无”,限制科目为“1001,100201,100202”,即在凭证借贷方不能出现这三个科目。而该凭证的贷方却出现了100201科目,显然违背了所设置的限制条件。进一步判断可知,此问题是因凭证类别设置错误所致的。根据业务内容该凭证类别应为“付款凭证”,而非“转账凭证”。当更正凭证类别后,问题即得到解决。经进一步分析得知,用户在填制凭证时,因为看到在业务中用到了转账支票,就认为这应该是一张转账凭证,从而导致凭证类别判断错误。而追根寻源是由于用户对业务的凭证类别判断不准,不明白凭证类别的限制条件,甚至于不清楚什么是收、付、转凭证。当问题出现时,就会因不理解凭证类别限制条件的含义而找不到问题解决的方向和方法。
      此外,对于此类问题,如果用户在认真查对后,发现凭证类别与凭证内容匹配,但仍出现出错信息,则应考虑可能是因用户粗心将凭证类别的限制条件设置有误。常见的错误有将收款凭证和付款凭证的限制类型设反了,或将转账凭证的限制类型设为“凭证必有”,或未写全限制科目。

  • 用友t3怎么备份

    用友t3怎么备份

    用友t3怎么备份

    用友软件提供两种备份方式:手工备份和自动备份,下面我们讲解这两种方式的备份账套数据操作步骤(T6和U8与T3备份恢复方法相同,此处以T3为例):

    ㈠、手工备份

    1、先在硬盘上建立一个空文件夹

    打开我的电脑(双击)D(或E、F)盘,(空白处右击右键)新建文件夹,把这个新建的文件夹,改名为如用友数据手工备份。(双击)打开用友数据手工备份,(右击)出现新建文件夹,把所新建的文件夹改名为当天的备份日期如2016-12-16后退出

  • 最新文章排行
  • 热门文章排行

管理软件

关于我们 | 公司动态 | 获奖记录 | 联系我们 | 招聘信息 | 用友产品中心 | 用友云基地
Copyright ©  www.kuaiji66.com  All Rights Reserved 天龙瑞德
京ICP备11046295号-1 技术支持 北京天龙瑞德信息技术有限责任公司   北京海淀上地十街辉煌国际大厦3号楼6层 总机:010-59798025   售后:4009908488
北京天龙瑞德信息技术有限责任公司