当前位置:安全客 >> 知识详情

【技术分享】构建一台Python BITS服务器

2017-07-17 11:53:48 阅读:11847次 收藏 来源: safebreach.com 作者:WisFree

http://p8.qhimg.com/t0165662fe24118ec3a.png

译者:WisFree

预估稿费:120RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


写在前面的话


除了分析新出现的安全漏洞以及漏洞利用技术之外,SafeBreach Labs还会对现有的攻击技术进行分析。当我们在分析一款恶意软件的时候,我们感兴趣的不仅是恶意软件所使用的Payload,我们还会对初始攻击向量、传播方法以及恶意软件在与C2服务器交互时所使用的各种技术进行深入研究和分析。


研究意义


近期,我们对一个使用了bitsadmin.exe工具(微软的一款已过时的内置工具,用于处理BITS任务)的下载器进行了分析,而这个下载器会通过BITS服务来下载恶意Payload。

微软在Windows XP/2000平台中正式引入了BITS(后台智能传输服务)协议,并且一直沿用至今。需要注意的是,很多应用程序都将该协议作为一种更新机制来使用。(关于BITS协议的更多内容请参考维基百科

对于恶意软件的开发人员来说,BITS(后台智能传输服务)是一种非常具有吸引力的工具,因为BITS(后台智能传输服务)不仅可以给恶意Payload的下载提供更多的缓冲区空间,而且还可以帮助恶意软件与攻击者控制的服务器进行C2通信。除此之外,还有以下几点原因:

1. BITS主要应用于合法软件,例如Windows update和Chrome update等等,这也使得恶意BITS流量更加难以被安全防护产品检测到。

2. BITS传输主要由操作系统负责处理,恶意软件只会发送初始请求,而不会处理BITS数据传输。

3. BITS使用的是80端口,并且建立在HTTP协议之上。

4. BITS支持使用代理。

5. BITS提供了非常优秀的下载管理功能。

一般来说,攻击者会使用bitsadmin.exe和PowerShell作为BITS客户端来下载类似恶意宏或.LNK文件这样的恶意Payload。不过在有的情况下,某些恶意软件(并非恶意软件Dropper)还会使用BITS下载额外的依赖组件,例如动态链接库文件(DLL)以及需要在主机运行的脚本等等。

但我们想了解的远远不止这些。我们专门选取了一个我们目前正在分析的恶意软件样本,这款恶意软件样本极度依赖于bitsadmin来下载依赖组件。下图显示的是恶意软件的处理创建流程:

http://p4.qhimg.com/t012593e0fcde4eaff8.png

首先,我们使用了WinDBG注入了恶意软件尝试下载的那些额外文件,这个过程中需要修改内存数据,虽然这种方法能够奏效,但如果每一次都要这样做的话就未免有些过于繁琐了。因此,我们可以使用一台BITS服务器来注入某些依赖文件,以此来实现与之前相同的效果,而且操作的过程还更加简单了。


使用Python构建BITS服务器


但令我们感到惊讶的是,在搜索了半天之后,我们竟然没有发现任何与Python BITS服务器有关的东西。虽然网上有很多采用C#实现的BITS服务器,但这些实现想要移植到Linux平台的话会非常的不方便。当然了,既然我们都已经走到这一步了,这点困难肯定是拦不住我们的。于是我们便开始自己创建一个Python模块来实现构建一台BITS服务器(基于SimpleHTTPRequestHandler),最终搭建完整的服务器将支持下载和上传操作。


SimpleBITSServer


广大用户可以访问SimpleBITSServer的【GitHub主页】来获取更多信息,我们也欢迎有能力的开发人员贡献自己的代码。

SimpleBITSServer是我们使用Python简单实现的BITS服务器。由于BITS协议是用来在服务器端和客户端之间异步传输文件的一种协议,而SimpleBITSServer是基于Python内置的SimpleHTTPRequestHandler实现的。


工具使用


服务器端:

python SimpleBITSServer.py [port]

客户端:

可使用PowerShell进行简单控制

> Import-Module BitsTransfer
> Start-BitsTransfer -TransferType Upload -Source C:\temp\to_upload.txt -Destination http://127.0.0.1/to_upload.txt -DisplayName TEST


环境要求


服务器:

Python 2.7

客户端:

1.必须是启用了微软Windows BITS后台智能传输服务的Windows操作系统。

2.一个BITS客户端,可以是Windows内置工具-bitsadmin.exe(已过时),也可以是任何实现了BITS接口的应用程序。


许可证


SimpleBITSServer遵循BSD 3-Clause许可证协议。



本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://safebreach.com/Post/Building-a-Python-BITS-Server

参与讨论,请先 | 注册 | 匿名评论
发布
用户评论
无任何评论