Loading
0

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

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

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

(一)CONNECT指令

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

图3木马转发数据过程

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

图4木马转发数据的代码

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

(二)BIND指令

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

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

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

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

攻击者想要窃取内网FTP服务器数据时,会首先发送CONNECT指令,处于内网中的SOCKS服务端接收到此命令后,会试图和FTP服务器

分页阅读: 1 2 3
【声明】:8090安全小组门户(https://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。