• 欢迎访问安全专题网站,安全专题信息,安全专题教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入安全专题 QQ群7652650
  • 安全专题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏安全专题吧

内网穿透——Android木马进入高级攻击阶段

安全漏洞 网络收集 2年前 (2016-12-26) 343次浏览

一、概述

近日,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 万之多,在世界范围内分布相当广泛,感染了该恶意代码的手机在全世界的分布情况如下图所示:

内网穿透——Android 木马进入高级攻击阶段

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

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

三、详细分析

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

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

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

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

内网穿透——Android 木马进入高级攻击阶段

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

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

(一)CONNECT 指令

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

内网穿透——Android 木马进入高级攻击阶段

木马转发数据过程

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

内网穿透——Android 木马进入高级攻击阶段

 

图 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 服务端开始转发数据流。这样攻击者就通过木马完成了对内网文件服务器的数据窃取。

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

内网穿透——Android 木马进入高级攻击阶段

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

四.总结建议

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

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

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

作者:360 烽火实验室

 


安全专题 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:内网穿透——Android 木马进入高级攻击阶段
喜欢 (0)