文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.06.026
中文引用格式: 陶晓玲,伍欣,亢蕊楠. 基于树莓派的隐蔽式渗透测试方法[J].电子技术应用,2016,42(6):94-97.
英文引用格式: Tao Xiaoling,Wu Xin,Kang Ruinan. A raspberry pi based evasive penetration test approach[J].Application of Electronic Technique,2016,42(6):94-97.
0 引言
自2010年Google报道“极光行动”之后[1],APT(Advanced Persistent Threat)攻击便成为安全界热议的话题。特别的针对性、高度的复杂性以及极强的隐蔽性是APT攻击的主要特点[2],从暗鼠行动的鱼叉式邮件钓鱼攻击,到夜龙行动的多攻击向量组合攻击,再到震网病毒的多0day漏洞利用攻击可见一斑。APT攻击有愈演愈烈的趋势,由于其隐蔽性的特点,导致其可在目标环境进行长期的潜伏而难以被发现,对信息安全造成了持续性的巨大危害,同时,这也是当前安全防护与检测的技术难点[3]。
PT(Persistent Threat)攻击是APT攻击的组成部分,相对于APT攻击,其缺少复杂强大的针对性攻击载荷,但其拥有隐蔽的通信手段,可通过伪装、加密、混淆等技术实现攻击代码的隐藏与网络后门的建立,能够长期对目标环境进行信息窃取与主机操控等活动[4]。例如Rootkit、后门程序以及一些僵尸网络等攻击属于PT攻击的范畴,而SQL注入、XSS、DDos等攻击不属于这一范畴。目前,针对APT/PT攻击的渗透测试方法研究相对较少,由此本文针对其隐蔽性的特点进行研究,以渗透测试的形式进行模拟实验,为帮助安全人员了解攻击者的意图、看到系统的潜在威胁提供信息支持。
1 渗透测试模型
本文的渗透测试模型如图1所示,模型主要由树莓派、C&C服务器和Tor网络三部分组成。其中,树莓派是一款基于Linux系统的卡片式电脑,虽然只有信用卡的大小,却具有电脑的所有基本功能。由于其具有极高的性价比以及很好的兼容性与可扩展性,使得它成为物理后门植入载体的首选。渗透测试过程中,为其写入的是当前最为流行的Kali Linux树莓派定制版系统,其中集成了许多必要的渗透工具,为进行渗透测试提供帮助[5]。C&C服务器使用具有公网IP的云服务器进行模拟,并运行Ubuntu 14.04 Server实例。Tor被安装在一台Ubuntu 14.04主机上,供渗透测试使用。
渗透测试工作流程如下:
(1)以一台有root权限的实例作为C&C服务器;(2)配置树莓派,并将其植入目标环境;(3)树莓派上电后,穿过防火墙限制,自动与C&C服务器建立起持久的隐蔽隧道;(4)渗透人员与Tor网络建立连接而获得匿名;(5)渗透人员通过Tor网络登陆到C&C服务器;(6)渗透人员通过C&C服务器对内网环境的树莓派进行控制。
由此,渗透人员与树莓派之间建立起了一条通信链路,渗透人员可向树莓派发送操作指令,通过树莓派对目标环境进行持续的渗透测试。
2 隐蔽式隧道建立方法
本文采取反向SSH实现外网C&C服务器对树莓派的控制;使用Stunnel对SSH通信进行加密,并将其伪装成HTTPS流,从而避开防火墙和IDS/IPS的拦截与检测。
2.1 反向SSH隧道建立
反向SSH隧道建立有两个目的:一方面是实现外网C&C服务器对内网树莓派的Shell控制;另一方面利用SSH对数据流加密的性质,实现控制信息的隐蔽[6]。其连接过程如图2所示。
反向SSH连接建立过程如下:
(1)树莓派向C&C服务器发起反向SSH请求;(2)通过认证后,树莓派与C&C服务器之间建立起了一条隧道,同时在C&C服务器的Port1端口上开启监听,任何在C&C服务器上使用SSH连接Port1端口的用户,将会反向连接到树莓派上;(3)渗透人员登录C&C服务器的SSH服务;(4)渗透人员通过SSH访问C&C服务器上的Port1监听端口,从而获得内网中树莓派root权限下的Shell;(5)对树莓派的操作指令通过SSH隧道进行发送,实现了对内网树莓派的控制。
自此,树莓派与渗透人员之间相当于建立起了一条VPN隧道, 隧道内的信息对外不可见。
2.2 使用Stunnel对SSH进行伪装
SSH的数据包会被协议分析器解析出来,网络管理人员通常为安全考虑,会禁止这类VPN隧道的建立与数据包的传输。为了达到更好的隐蔽性,本文使用Stunnel,将SSH流伪装为HTTPS流。
在将SSH流伪装成HTTPS流之前,需要对HTTPS的工作过程进行一些分析。HTTPS是安全版的HTTP,它在HTTP下增加了SSL/TLS层,从而对通信数据进行了加密,实现CA认证功能,提高了使用的安全性。而Stunnel是一个为应用程序之间进行安全通信而设计开发的自由跨平台软件,它使用OpenSSL库,在应用层下增加SSL/TLS层,完成客户端与服务器之间的通信加密[7],而这与HTTPS加密方式类似,本文利用这一特性,将SSH流伪装成HTTPS流,其伪装过程如图3所示。
在为树莓派和C&C服务器分别配置好Stunnel 客户端和Stunnel服务器后,就可将SSH流伪装为HTTPS流,其过程如下:
(1)树莓派向本机Stunnel客户端的监听端口Port2发起反向SSH连接请求;
(2)树莓派的Stunnel客户端与C&C服务器的Stunnel服务器进行SSL/TSL握手,握手成功后建立起Stunnel隧道,加密后的SSH数据包通过Stunnel隧道发送至C&C服务器的Stunnel服务器443监听端口;
(3)C&C服务器的Stunnel服务器收到加密的SSH数据包,对其解密后,反向SSH连接请求被转发到本机SSH服务的22端口;
(4)反向SSH请求成功后,C&C服务器在Port1端口开启监听,并建立一个反向SSH隧道;
(5)渗透人员登录C&C服务器的SSH服务;
(6)渗透人员通过反向SSH监听端口,登录树莓派SSH服务;
(7)渗透人员向树莓派发送的指令操作都被进行两次封包,并最终伪装为HTTPS流。
3 匿名远程控制方法
渗透人员对树莓派进行远程控制时,会留下面包屑,容易被追踪到,无法达到隐蔽的效果,由此,本文使用Tor网络进行匿名,并最终实现匿名的远程控制。
3.1 Tor匿名原理
Tor网络主要由洋葱代理(Onion Proxy,OP)、目录服务器(Directory Server,DS)和洋葱路由器(Onion Router,OR)三部分组成[8]。OP主要为Tor用户完成路由节点的选择、电路(Circuit)建立、数据包发送与接收等代理工作;DS主要负责汇总Tor网络的运行状态,并向OP发布最新的Tor路由节点列表;OR主要由Tor网络志愿者组成,用于对数据包进行重路由,从而实现匿名效果。在Tor网络建立连接的过程中,OP会随机选择3个可用的OR分别作为Tor网络的入口节点(Guard Node,GN)、中继节点(Relay Node,RN)和出口节点(Exit Node,EN),在使用Diffie-Hellman依次进行密钥协商后,得到3个会话密钥,并用其依次对消息进行加密,最后OP将3次加密的数据包发送至GN。GN、RN和EN依次使用共享的会话密钥对数据包进行解密,并发往下一跳,使得数据包最终由EN以明文的形式发送至目标站点。数据包的返回,在依次经过EX、RN和GN时,被各节点使用共享会话密钥进行加密,最终GN将3次加密的数据包发送给OP,OP再通过3个共享会话密钥进行依次解密,最后将得到的明文传递给Tor用户。
由于入口节点只知道数据包的发送者,中继节点不知道任何关键信息,而出口节点也仅知道数据包的接收者和明文信息,总之没有一个节点可以获得消息的发送者、消息的接收者和消息的内容这一完整信息,也无法同时得到消息发送者和消息内容这两个关键信息的组合,从而实现了匿名。
3.2 匿名SSH实现
虽然Tor网络主要用于匿名传输HTTP/HTTPS流,但只要是以TCP为传输层协议的应用,都可以通过Tor网络进行传输,达到匿名效果。SSH是基于TCP上的应用,故其数据流可通过Tor网络进行传输,但需要进行端口转发工作。要将SSH端口的数据转发到Tor端口,可以使用Sock4/Socks5代理服务器实现。本文在Ubuntu 14.04环境下,使用Proxychains代理工具,成功通过Tor网络匿名传输SSH流,实现了匿名的远程控制。
4 渗透测试实验
首先,为了检验本文提出的渗透方法的隐蔽性,通过在树莓派上使用Wireshark工具,对树莓派与C&C服务器之间的连接与通信数据包进行捕获,捕获的数据包如图4所示(黑底白字是树莓派发送至C&C服务器的数据包,白底黑字的是反向数据包)。
由图4可以看出,Wireshark没有解析出任何的SSH数据包,SSH流已被伪装成HTTPS流。较之于正常的HTTPS流,伪装的HTTPS流内包含恶意的控制流,而较之于常规的控制流,伪装的HTTPS流由于内部信息对外不可见,使其可避开防火墙的拦截与IDS/IPS的检测,而难以被发现,达到了隐蔽的效果。
接着,为了揭露本文提出的渗透测试方法可能会导致的威胁,故对此进行渗透测试实验,为安全人员对此类攻击的识别与防范提供参考。渗透测试流程图如图5所示。
渗透测试过程中,首先将树莓派伪装成一台网络监控摄像机[9],可用于家庭或企业的远程监控管理;其次,使用本文提出的隐蔽式渗透方法为树莓派植入后门,同时编写开机启动项脚本程序,利用SSH公钥认证、autossh自动重连功能,实现树莓派一经上电联网,即刻与C&C服务器建立起隐蔽的稳固隧道;再者,将树莓派置于一台已联网的路由器后上电,并在路由器网络外,使用一台配置好的Ubuntu主机,通过Tor网络匿名控制树莓派;最后,利用树莓派进行拍照、录像以及文件回传等操作,实现对远程监控录像的窃取与篡改,并利用nmap对网络环境进行扫描,开始实施横向扩展攻击。
通过实验了解到,虽然该类攻击相对隐蔽,可避开常规的防御检测,但可以通过加强对进出人员的管理,以及使用正规渠道获得的电子设备,来减少遭受到此类攻击的可能性。同时,可以通过对网络关键位置进行定期的物理排查,以及对内网环境进行异常流检测等措施,及时发现攻击源,以减少损失。
5 结束语
本文阐述了一种基于树莓派的隐蔽式渗透测试方法,该方法通过对树莓派进行配置与植入,对通信数据进行加密与伪装,对渗透人员的操作进行匿名,最终实现一种基于树莓派的PT攻击。实验表明,网络的安全不应只关注对网络边界的防御,还应了解潜在的物理漏洞可能导致的内部网络风险,同时通过对攻击的理解,更好地提高网络的安全。
参考文献
[1] STEWART J.Operation Aurora:Clues in the code[EB/OL].(2010-1-19)[2016-04-02].https://www.secureworks.com/blog/research-20913.
[2] WRIGHTSON T.Advanced persistent threat hacking:the art and science of hacking any organization[M].McGraw-Hill Education,2014.
[3] 曹自刚,熊刚,赵咏,等.隐蔽式网络攻击综述[J].集成技术,2014,3(2):1-16.
[4] BODMER S,KILGER M,CARPENTER G,et al.Reverse deception:organized cyber threat counter-exploitation[M].McGraw-Hill Education,2012.
[5] MUNIL J,LAKHANI A.Penetration testing with raspberry pi[M].Packt Publishing Ltd,2015.
[6] 甘长华.网络安全协议SSH的研究与实现[D].天津:天津大学,2007.
[7] 彭乐.网络穿透技术的研究[D].北京:北京邮电大学,2008.
[8] 王付刚.TOR匿名通信技术研究[D].哈尔滨:哈尔滨工业大学,2010.
[9] JONES D.Raspberry pi-teach,learn,and make with raspberry pi[EB/OL].(2016)[2016].https://www.raspberrypi.org/learning/python-picamera-setup/worksheet.md.