内网穿透——Android木马进入高级攻击阶段
作者: 日期:2016年12月02日 阅:3,332

一、概述

近日,360烽火实验室发现有数千个样本感染了一种名为“DressCode”的恶意代码,该恶意代码利用实下流行的SOCKS代理反弹技术突破内网防火墙限制,窃取内网数据。这种通过代理穿透内网绕过防火墙的手段在PC上并不新鲜,然而以手机终端为跳板实现对企业内网的渗透还是首见。

SOCKS是一种网络传输协议,SOCKS协议位于传输层与应用层之间,所以能代理TCP和UDP的网络流量,SOCKS主要用于客户端与外网服务器之间数据的传递,那么SOCKS是怎么工作的呢,举个例子:A想访问B站点,但是A与B之间有一个防火墙阻止A直接访问B站点,在A的网络里面有一个SOCKS代理C,C可以直接访问B站点,于是A通知C访问B站点,于是C就为A和B建立起信息传输的桥梁。其工作流程大致分为以下5步:

  1. 代理方向代理服务器发出请求信息。
  2. 代理服务器应答。
  3. 代理方需要向代理服务器发送目的IP和端口。
  4. 代理服务器与目的进行连接。
  5. 连接成功后将需要将代理方发出的信息传到目的方,将目的方发出的信息传到需要代理方。代理完成。

由于SOCKS协议是一种在服务端与客户端之间转发TCP会话的协议,所以可以轻易的穿透企业应用层防火墙;它独立于应用层协议,支持多种不同的应用层服务,如TELNET,FTP,HTTP等。SOCKS协议通常采用1080端口进行通信,这样可以有效避开普通防火墙的过滤,实现墙内墙外终端的连接。

二、地域分布

360互联网安全中心数据显示,截止目前,“DressCode”恶意代码传播量已达24万之多,在世界范围内分布相当广泛,感染了该恶意代码的手机在全世界的分布情况如下图所示:

dresscode%e6%9c%a8%e9%a9%ac%e5%9c%a8%e4%b8%96%e7%95%8c%e5%90%84%e5%9c%b0%e7%9a%84%e5%88%86%e5%b8%83%e6%83%85%e5%86%b5

“DressCode”木马在世界各地的分布情况

数据显示,已有200多个国家的用户手机安装了带有“DressCode”恶意代码的应用,该恶意代码大多寄宿在时下流行的手机游戏中,其扩散能力很强,其中美国、俄罗斯,德国、法国等欧美发达国家属于重灾区,中国的形势也不容乐观,企业内网安全正在遭受前所未有的挑战。

三、详细分析

该木马的主要攻击过程如下:

  • 木马运行时主动连接到攻击者主机(SOCKS客户端),建立一个与攻击者对话的代理通道。
  • 作为SOCKS服务端的木马根据攻击者传来的目标内网服务器的IP地址和端口,连接目标应用服务器。
  • 木马在攻击者和应用服务器之间转发数据,进行通信。

当木马安装上手机后,首先会连接C&C服务器,连接成功后,那么木马就与C&C服务器建立了一个对话通道, 木马会读取C&C服务器传送过来的指令, 当木马收到以“CREATE”开头的指令后,就会连接攻击者主机上的SOCKS客户端,攻击者与处于内网中的木马程序建立了信息传输的通道了。

SOCKS服务端读取SOCKS客户端发送的数据,这些数据包括目标内网应用服务器的IP地址和端口、客户端指令。如下图所示:

socks%e6%9c%8d%e5%8a%a1%e7%ab%af%e8%8e%b7%e5%8f%96%e5%ae%a2%e6%88%b7%e7%ab%af%e6%8c%87%e4%bb%a4%e7%ad%89%e4%bf%a1%e6%81%af

SOCKS服务端获取客户端指令等信息

客户端传递过来的命令主要有CONNECT与BIND两种指令。

(一)CONNECT指令

当SOCKS客户端要与目标应用服务器建立连接时,首先会发送一个CONNECT指令,SOCKS服务端接收到CONNECT指令后,会根据读取到的IP地址和端口连接目标应用服务器,连接成功后,会将请求结果发送给SOCKS客户端,此时目标应用服务器与SOCKS服务端,SOCKS服务端与SOCKS客户端都建立起了会话通道,木马作为数据中转站,可以在攻击者和应用服务器转发任意数据了,其转发过程如图所示:

%e6%9c%a8%e9%a9%ac%e8%bd%ac%e5%8f%91%e6%95%b0%e6%8d%ae%e8%bf%87%e7%a8%8b

木马转发数据过程

SOCKS协议对数据转发的实现代码如下:

%e6%9c%a8%e9%a9%ac%e8%bd%ac%e5%8f%91%e6%95%b0%e6%8d%ae%e7%9a%84%e4%bb%a3%e7%a0%81

 

图4 木马转发数据的代码

那么通过这两条已连接的数据传输通道如何窃取数据的呢?以HTTP协议为例,假设攻击者要访问位于内网的HTTP服务器,那么攻击者首先通过SOCKS客户端将HTTP请求数据发送给SOCKS服务端,SOCKS服务端读取到这些数据后,马上将这些数据转发给应用服务器,应用服务器收到HTTP请求后,将HTTP应答数据发送给木马,木马检查到应答数据,马上转发给攻击者,这样攻击者就通过木马完成了对内网HTTP服务器的访问。

(二)BIND指令

当攻击者需要访问内网FTP应用服务器时, SOCKS代理客户端需要向服务端发送BIND指令。SOCKS协议支持采用PORT模式传输FTP数据,PORT模式传输数据的主要过程如下:

FTP客户端首先和FTP服务器建立控制连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。FTP服务器必须和客户端建立一个新的连接用来传送数据。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务端通过自己的端口(默认是20)连接至客户端的指定端口发送数据。

SOCKS代理服务端接收到BIND指令后,木马会利用本地IP和匿名端口生成一个服务端Socket A,并通过建立的数据转发通道,将本地IP和端口发送给攻击者;等待目标应用服务器连接(多为FTP服务器)。

(三)攻击FTP服务器的过程

攻击者想要窃取内网FTP服务器数据时,会首先发送CONNECT指令,处于内网中的SOCKS服务端接收到此命令后,会试图和FTP服务器建立一个控制流,如果FTP服务器响应此请求,最终FTP控制流建立;攻击者建立新的到SOCKS服务端的TCP连接,并在新的TCP连接上发送BIND请求,SOCKS 服务端接收到BIND请求后,创建新的Socket,等待目标FTP服务器的连接,并向SOCKS客户端发送第一个BIND响应包;SOCKS客户端收到第一个BIND响应包后,攻击者通过FTP控制流向FTP服务器发送PORT命令,通知FTP服务器主动建立到Socket A的连接;FTP服务器收到PORT命令,主动连接到Socket A;SOCKS服务端接收到来自FTP服务器的连接请求,向SOCKS客户端发送第二个响应包,然后SOCKS服务端开始转发数据流。这样攻击者就通过木马完成了对内网文件服务器的数据窃取。

以上攻击过程如下图所示:

%e9%bb%91%e5%ae%a2%e6%94%bb%e5%87%bbftp%e6%9c%8d%e5%8a%a1%e5%99%a8%ef%bc%8c%e7%aa%83%e5%8f%96%e6%95%b0%e6%8d%ae%e7%9a%84%e8%bf%87%e7%a8%8b

黑客攻击FTP服务器,窃取数据的过程

四.总结建议

“DressCode”恶意代码穿透能力强,地域分布广泛,已成为对内网安全的一种新的潜在威胁,减除接入企业内网的智能终端设备所带来的安全威胁客不容缓。针对此种情况,企业应做好如下两点防范措施:

  • 严格限制不可信的智能终端设备接入公司内部网络,对要接入公司内网的终端设备进行身份认证。
  • 智能终端设备不应该与企业内部服务器处于同一个局域网段内。

与此同时,手机用户应该提高安全意识,要从正规的安卓应用商店下载应用,不要安装来历不明的应用软件。

作者:360烽火实验室

 

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章