使用Apache mod_rewrite模拟实现CIA Hive流量分发

作者: 公司简介  发布:2020-01-23

  本文的复现场景源于2017年11月维基解密Vault 8文件曝光的CIA网络武器库之CIA Hive[1]工具。CIA Hive工具的主要功能是辅助CIA其他恶意软件隐蔽控制、运行。

  具体关于CIA Hive各层对应详细解析请参考[2],本次复现场景聚焦模拟实现并验证隐藏服务器(Blot)的流量分发功能——Blot Server根据不同来源把请求分发到事先设定好的不同服务器。即当Blot Server收到访问请求时,Blot Server会基于对客户端证书验证结果进行流量分发。若SSL验证该访问非法,Blot会将流量分发给cover server,返回一个正常的网页。若Blot 接收到带有有效证书的流量(只有受控主机会发送带有有效证书的流量)则将此流量转发给Honeycomb,从而实现隐蔽通信和控制。

  本文主要从技术角度出发,尝试使用Apache的mod_rewrite模块实现其流量分发功能,完成与CIA Hive的Blot Server相同的功能。

  mod_rewrite是apache的一个模块,安装apache环境默认安装此模块,但通常默认不启用,苹果6手机模块需要手动启用。该模块是基于一定规则实时重写URL请求的引擎。此模块可以操作URL的所有部分,在服务器级f)和目录级(.htaccess)的配置都有效。

  通过手动启用rewrite模块,进入apache配置文件apache2.conf,开启.htaccess的目录级配置,打开AllowOverride,最后在.htaccess文件中配置规则来实现流量分发。具体配置规则及配置技巧可参考和 。

  数字证书是一种网络身份证明文件,同时还包含有公钥。证书的真伪需要一个验证方式,而验证方需要认同这种验证方式,以完成证书的颁发过程。一个https的站点需要和一个证书绑定,客户端通过维护一个“根受信任机构列表”完成站点的可信识别过程,而客户端是否信任这个站点的证书取决于客户端程序是否导入了证书颁发者的根证书。目前,X.509证书是一种通用的证书格式,符合ITU-T X.509国际标准。

  通用证书格式X.509主要包含三个文件:key,csr,crt。各文件描述如下:

  key文件——服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密。

  csr文件——证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名。

  crt文件——由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书、包含证书持有人的信息、持有人的公钥、以及签署者的签名等信息。

  注:本文以复现实验为主,将采用HTTPS双向认证。其中,双向认证和单向认证原理类似,区别在于除了客户端需要认证服务端以外,苹果6手机模块增加了服务端对客户端的认证。服务端在验证客户端证书后,根据其验证结果可以提供不同的服务(如:验证合法后才转到特定服务链接)。具体可参考

  证书使用openssl生成,具体生成过程请参考伪造HTTPS证书和合天在线实现-HTTPS证书伪造。最终本次实验使用https双向认证,即需要生成用于服务端和客户端验证的证书文件和对应的两对公私钥文件。

  注:需要根据提示依次填入配置信息,Common Name项需要和域名项对应(即ciahive.com)。

  2)、客户端安装服务器的自签名证书crt为受信任的根证书颁发机构,安装结果如图4。

  3)、向客户端添加特定证书client.p12文件,用于服务器验证客户端。安装结果如图5。

  (1) 通过未配置crt证书的客户端1访问,应该是不安全连接被拦截。如图6。

  (2) 若客户端只安装了证书crt,缺少client.p12证书的客户端访问会直接连接失败,结果如图7。

  (3) 使用已完成两个证书安装的客户端2访问,会首先提示进行客户端证书选择,如图 8。

  (4) 确认使用client.p12作为客户端证书后,与建立安全链接。成功页面如图 9。

  (5) 访问出现如图 9的安全连接页面后,表示https双向认证配置成功。

  (2) 编辑f文件,开启支持 .htaccess文件——用于编辑转发规则。定位到如下位置:

  (3) 创建并编辑 .htaccess文件,文件保存路径为:/var/。编写测试规则。

  具体的配置规则可以按需编辑,关于 .htaccess 编写相关详细技巧请参考和。

  注:本次实验环境受限,仅仅使用两台虚拟主机进行实验,特编写以下规则对CIA Hive的转发思想进行最简单的模拟。

  #认证通过后进行重定向到payload地址(可以本地或其他远程主机),即类比CIA Hive中的Honey Server

  1)、访问其他页面(除0.html外所有ciahive.com及各目录文件)均正常。苹果6手机模块参照图10。

  2)、访问0.html时被强制使用https访问,由于未获得合法证书将提示连接失败。参照图11。

  2)、访问/0.html时被强制使用https访问。将提示选择客户端证书确认(实际攻击场景可以设计为默认,即不弹窗提示)后连接被重定向到页面(模拟Honey Server)。参照图12 。

  (1) 本次复现实验对于理解CIA Hive框架有很大帮助时,同时在Apache+openssl环境搭建及其过程中遇到的各种问题,当问题逐一被解决就形成了对整个流程的清晰认识。

  (2) 需要特别注意 X.509证书链及其基本原理。同时实验中采用的HTTPS的双向认证在公共站点基本不会开启,因此攻击者如果采用此类少数人关注的技术点实现攻击目的是很难被发现的。

  (3) 本次复现只在基础学习理解上进行了最简单的功能实现,在.htaccess文件的转发规则的设计和整各实验设计上都还有很大的提升空间。

  感谢:本文以实验为主,作为复现详细笔记,感谢众多大神(3gstudent、arkteam等)博客文章为我解惑,且本文也是在众多博客文章基础上实验形成的!

本文由佛山市光源模块有限公司发布于公司简介,转载请注明出处:使用Apache mod_rewrite模拟实现CIA Hive流量分发

关键词: 苹果6手机模块