大白话解释拟态安全,再不学就落伍了!
2021-03-01 12:36:00 Author: mp.weixin.qq.com(查看原文) 阅读量:63 收藏

原创稿件征集

邮箱:[email protected]

QQ:1272460312

黑客与极客相关,互联网安全领域里

的热点话题

漏洞、技术相关的调查或分析

稿件通过并发布还能收获200-800元不等的稿酬

0x00 前言
半年前k0nJAc就已经在星球发了这篇文章,我答应过他要发公众号,但是由于篇幅太长复制黏贴太麻烦因此迟迟到现在还没发。最近群里又聊到了拟态,似乎大家都还挺有兴趣,而且有些人也一直认为拟态就是“骗经费”,因此我觉得有必要把这篇文章发出来重新扫扫盲。毕竟我觉得如果因为自己无知而去排斥新的知识甚至给它扣帽子,这种做法很傲慢。
以下是作者原文的正文内容,公众号就不附上引用的资料包了。
如果只是为了了解大概,只需要看一半理解一下整体逻辑就行了,如果要完证的PDF可以加入星球哦
0x01 正文前言
一千个读者有一千个哈姆雷特,可能我有一些地方没有理解透彻和没有彻底明白,所以对于我讲的东西存在偏面或者不好地方,欢迎指正但是不要骂我。
各位师傅可能这几年都听过一些特别高大上的词语,拟态安全,内生安全...在我看来,一开始,可能以 为这是什么全新的技术,全新的理念。其实都是一些旧概念,旧技术的衍生。我们今天主要来讲的就是 拟态安全,究竟是什么东西,尽量使用能听得懂的话语,来进行通俗易懂的解释。此外,要注意的是,拟态安全并没有开源或公开的设备,或者说我这种菜鸡接触不到。所以我只能根据 网上的公开的文章,论文等资料进行阅读和理解,进行云解答。所以一定会存在理解误差的情况。我会 把看到的文献论文 以caj或pdf的形式打包成压缩包贴在文章后面。
0x02 拟态是什么
拟态是生物学里面的概念,即指一种生物在形态、行为等特征上模拟另一种生物,从而使一方或双方受 益的生态适应现象。其实就是模拟,模仿,拟态听起来比较高大上。如果有联想记忆好的师傅可能就已 经想到一个历史更为悠久的名词--蜜罐。我觉得如果不能明白拟态是什么,就把拟态当成蜜罐V2.0,蜜 罐的延伸技术就好了。
1、起源 
追溯一个事务的本质,就要去理解其发展的过程和历史,根据国内的论文显示拟态安全最早追溯于2013 年9月,那么,真的是如此吗?
我们通过谷歌把时间限制在2013年8月30日之前
其实可以看到最早是可以追溯到2005年一篇来自中国台湾省国立交通大学的硕士论文。这里给出链接, 我随后也会打包(以下开始,有关引用链接做相同处理)
https://ir.nctu.edu.tw/bitstream/11536/73946/1/759101.pdf
这是拟态攻击之入侵检测,巴拉巴拉巴拉的 就是在写ids是怎么通过fork来进行防御的,这和我们的拟态 防御没有关系,跳过。(为了确认,通读了全文,顶- -) 别的13年以前的拟态都是和我们要看的拟态无关。那么拟态防御这个概念 在国外的相关技术是什么呢 Moving Target Defence, MTD(叫做移动目标防御) 
(译文截图)(直接跳过吧,不用看,感兴趣的自己google搜一下)
出发点 
移动防御的出发点和拟态的出发点是相似的 
划重点了,师傅们,这有助于理解拟态安全的出发点。现有的安全体系里面,大部分(严谨滑稽)都是 基于指纹或者常说的特征来进行识别的,是一种被挨打的方式,大部分都是黑客组织们攻击成功,比如 17010已经打了不知道多少年了,才被后人所知。所以现有的安全体系是无法面对零日漏洞的。所以, 什么拟态安全,内生安全,出发点就是为了增加未知的可利用的漏洞和故意设置的后门成本。注意,这 里是增加成本,因为邬江兴院士也在论文里提及了这个点,不可能保证系统的百分百安全,就是为了恶 心黑客,啊,写到这里让我想到了宝塔。
区别
  • 移动目标防御对于后门不是特别关注,主要关注自身内部未知漏洞攻击的防护(原因:联想一下棱 镜门,再想想大量的后门都是谁写的。2333) 

  • 目前移动目标防御主要基于软件技术;拟态安全防御, 不仅仅基于软件, 而是基于拟态计算的软硬件 协同的技术。共同特点还是动态化、多样化、随机化。 

相同点 
  • 相同的都是动态化、多样化、随机化的主动防御思想。

2、前提
首先,要记住一个基准。安全是服务于产品的。所以拟态安全不能对用户的使用进行较大的影响。
3、实现 
别的不提,讲一些我觉得是重点的东西。
硬件层面, 它的目标就是主动变化处理、存储、互联、输入、输出等方式。让系统充满随机性 听起来好像好高大上,就是什么地址分配随机化(眼熟不,2333),指令随机化...就是让一些固定的, 能让黑客容易且需要获取的东西,变成多样化,增加成本,这个其实现在的产品都在做- -。
传统安全体系
拟态安全体系
拟态安全,不是真的就是一个百分百全新的技术,是结合现有的入侵检测,蜜罐,应急响应等等一起 做。 
说了这么多 拟态究竟是什么东西?怎么实现的 
那么在web层面上,拟态的网络拓扑是怎么样的呢,请看图,(注意,这是来自2017年的论文,可能有 新迭代)
看出亮点了吗,我们以前传统的网络架构,可能就是客户端对应的一个服务端,或者做了负载均衡的服 务端。(说错指正)
拟态怎么做的 就是他在服务端,做了几个流程,第一个点就是 你的请求会随机交到后面的所有服务器处 理,有服务器A 服务器B 服务器C。他们的架构不同,但是对于正常的用户请求,他们返回的应该是一样 的。比如
?include=头像.jpg #所有的服务器都有这个头像文件
但是你这个老黑客就不同了,你请求的是
?include=../../../../../../etc/passwd
这时候centos 或者ubuntu的服务器可能的确包含成功了,但是winserver摇了摇头,他们根本没有这个 文件,所以包含没成功,响应的内容是空的。 
这时候DDRV(响应表决器)看到,怎么请求的结果不一样啊,可能就会 
  • 把你这个请求给取消了或者响应正常的?include=头像.jpg

  • 并且可能对执行了恶意请求的服务器进行还原

同理,这些也可以应用到各种攻击手段中,比如
  • 你sql注入,你注入的一开始,探测到的是mysql,结果后面的mssql orcale接收到你注入的mysql 指令根本不认识,结果导致返回结果不一样,而且别忘了,前面说过,其实拟态不会只用拟态, waf,入侵检测这些恶心东西都在的。过完waf发现 只bypass了mysql mssql不行。 

  • 或者你发现了个apache的0day,结果Nginx的服务器没有这个洞- -。又凉。

  • 比如基于Apache的hash collision进行ddos,但是还有nginx和别的服务器能够正常响应,只需要 屏蔽Apache的不一致消息即可 

  • 拟态DNS:例如dns投毒,多架几个dns,对于缓存的过程中 不一样啥的 就重新请求。(具体可以 看看:一种基于拟态安全防御的DNS框架设计) 

扫描拟态的网站 可以发现,每次的响应都是有区别的,下面看对比图
(关闭拟态)
(开启拟态)
webshell连接:
(1) 准备一组web服务执行体, 开启拟态防御功能; 
(2) 向单一执行体中植入php木马; 
(3) 使用Weevely客户端尝试连接木马, 连接失败; 
(4) 向所有执行体中植入php木马; 
(5) 使用Weevely客户端尝试连接木马, 连接成功后执行dir命令, 命令执行失败如图下图
ps:这里我猜是linux没有dir的指令。所以所有的执行体响应不一致,如果执行个whoami呢?或者不要 回显写入进文件里面呢。不过接触不到拟态站,没辙
我猜着可能可以绕过。
这时候师傅可能提问,这不会影响业务吗。每次请求,用户获取的响应是一样的吗?我们看看下图
MNOS:拟态网络操作系统设计与实现 
可以看看这篇 技术细节很多。但是这里不过多叙说,想了一下,这篇讲的真的明白,我觉得没必要再复 述一遍,对拟态的一些简单的处理和实现 感兴趣的 推荐看看
3.2、网络拟态
网络拟态防御通过变换网络结构来改变网络拓扑, 使得网络拓扑呈现出动态性、异构性、不确定性、非持续性。网络拟态防御主要是通过降低网络的确定性、静态性和同构性来增加攻击者的攻击难度, 使得攻击者没有足够的时间对目标网络进行探测;同时降低其所搜集信息的有效性, 使其在探测期间收集的信息在攻击期间变得无效, 降低系统被成功攻击的概率。
人话:这内网的拓扑图一直在变 。而且还容易给检测到我常规的扫描发送的数据包
人话 :主流技术已经实现,分别是:
  • 变形网络 

        变形网络主要是网络、主机以及应用程序进行随机调整和配置, 使得整个网络呈现出动态性。相关技术是:美国雷声公司的Morphinator项目、SAFE等 
  • 自适应计算机网络 

        自适应计算机网络指的是网络本身如何通过自动改变拓扑结构和设置 相关技术是:有Fuzzbuster和ACD等技术 
  • 开放流随机主机转换技术 (OFRHM) 

        就是动态网络地址转换、地址空间随机化、网络地址跳变等技术使得网络对外地址呈现出动态性, 目的:使攻击者找不到攻击目标, 以此破坏攻击者的攻击链,相关技术是:NSAR, HSS, MT6D等技术。
实际:技术未成熟,还没有应用到实践中,2333,但是说不定现在成熟了,毕竟也过了几年了
0x03 更加详细的一些技术细节
1、拟态防御模型
传统的模型,是
输入-> 处理-> 输出
动态异构冗余模型(听起来比较高大上,只要知道其实就是个名字而已):
->输入 ->预处理(把输入的内容通过分发器复制多份,然后分发给不一样的执行体,执行体不会互相干扰,互相独立的)->所有执行体执行完成以后都会把结果发给表决器 ->表决器对多个输出结果处理,得到正确的输出,->输出
其中每个执行体还可以继续拆分成不同的执行体,举个例子
->输入 ->预处理(把输入的内容通过分发器复制多份,然后分发给不一样的执行体,执行体不会互相干扰,互相独立的) #执行体集群1 windows 执行体集群2 linux #执行体1.1 windows2003 apache #执行体1.3 windows08 apache#执行体1.4 windows03 nginx #执行体1.5 windows08 apache ... ->所有执行体执行完成以后都会把结果发给表决器 ->表决器对多个输出结果处理,得到正确的输出, ->输出
执行体差异越多越不容易出洞。分的越详细越安全。这个就是拟态的基本原理或者说思想,可以把这个思想用在所有的产品上,不止局限于web
2、模型中需要解决的问题
分发器
分发器是关键,是核心。所有的请求都要通过分发器发送给执行体。要实现一个简洁而又高效的分发 器,又要实现分发器的所有功能。这其中的技术细节是很大的,可以理解成写一个少量用户购买电影票 处理和写一个面向全国的所有用户高铁订票的处理之间的差异是很大的。要让用户感受不到分发器,解 决分发器复制n份带来的占用空间问题、时间损耗问题。http中特殊的session机制带来的问题等等。session问题这个挺有意思的,师傅们再想想,怎么处理session问题。
表决器
  1. 时间复杂度高。如何对比,一个一个比较?处理的时间是多少,如果表决器处理不过来,这个模型就 废掉了。当然了,这个问题交给算法大佬解决。2333

  2. 空间复杂度问题。等待n个服务器的返回结果的时候,要把这个先存起来吧,如果返回结果很大呢, 一个用户就是n*1。n个用户就是n*n了。这是平方增长的消耗?(有算错吗) 

  3. 表决器现有的处理原则是少数服从多数,n个响应数据包,只要n/2+1的数据包相同,那么就判断这 个包为正确。或者没有超过这个数量的包,就触警。这里似乎绕口 举个例子。 

存在一个注入点
10个执行体,比如6个mysql,4个mssql 
黑客以为是mssql目标,对注入点进行注入。(假设黑客已经绕过了拟态防御的前面所有关卡。)
select username and (select IS_SRVROLEMEMBER('sysadmin'))=1 (伪语法,不要纠结会不会 报错) 
这时候执行体的结果是 
  1. 4个mssql发给表决器

  2. 4个正常的响应

  3. 6个mysql发给了表决器相同的报错 

  4. 表决器就会接纳6个mysql响应的相同报错

这里其实也可以看出一个问题,如果是存在漏洞点的机器大过没有存在漏洞点的机器怎么办,我想到的 是结合waf,waf也可以动态化,执行体a是360,执行体b是绿帽的,执行体c是xx。。或者有别的操作 方法,这些问题不展开讲述,毕竟目的是为了弄明白拟态。
0x04 接触过拟态的人是怎么样描述拟态的
(以下内容都是来源于 网上,不是我写的)
https://mp.weixin.qq.com/s/cfEqcb8YX8EuidFlqgSHqg
强网杯拟态防御精英赛 WEB WP 2018-05-16 
部分只言片语
只言片语:
0x05 重点看2019年,可以具有更深层的感受
https://zhuanlan.zhihu.com/p/67369780
2019强网杯拟态挑战赛Writeup 这里的拓扑图是他们黑盒出来的。
拟态防火墙
两次参加拟态比赛,再加上简单了解过拟态的原理,我大概可以还原目前拟态防御的原理,也逐渐佐证 拟态防御的缺陷。下面是我在攻击拟态防火墙时,探测到的后端结构,大概是这样的(不保证完全准确):
其中 Web 服务的执行体中,有 3 种服务端,分别为 nginx、apache 和 lighttpd 这3 种。 
Web 的执行体非常简陋,其形态更像是负载均衡的感觉,不知道是不是裁决机中规则没设置还是 Web 的裁决本身就有问题。
而防火墙的执行体就更诡异了,据现场反馈说,防火墙的执行体是开了2个,因为反馈不一致,所以返回 到裁决机的时候会导致互判错误...这种反馈尤其让我疑惑,这里的问题我在下面实际的漏洞中继续解 释。 
配合防火墙的漏洞,我们下面逐渐佐证和分析拟态的缺点。
我首先把攻击的过程分为两个部分,1是拿到 Web 服务执行体的 webshell,2是触发修改访问控制权限 (比赛中攻击得分的要求)。
GetShell
首先我不得不说真的是运气站在了我这头,第一界强网杯拟态挑战赛举办的时候我也参加了比赛,当时 的比赛规则没这么复杂,其中有两道拟态 Web 题目,其中一道没被攻破的就是今年的原题,拟态防火 墙,使用的也是天融信的 Web 管理界面。 
一年前虽然没日下来,但是幸运的是,一年前和一年后的攻击得分目标不一致,再加上去年赛后我本身 也研究过,导致今年看到这个题的时候,开局我就走在了前面。具体可以看下面这篇 wp 。 
https://mp.weixin.qq.com/s/cfEqcb8YX8EuidFlqgSHqg 
由于去年我研究的时候已经是赛后了,所以我并没有实际测试过,时至今日,我也不能肯定今年和去年 是不是同一份代码。不过这不影响我们可以简单了解架构。
https://github.com/YSheldon/ThinkPHP3.0.2_NGTP 
然后仔细阅读代码,代码结构为 Thinkphp3.2 架构,其中部分代码和远端不一致,所以只能尝试攻击。
在3.2中,Thinkphp 有一些危险函数操作,比如 display,display 可以直接将文件include 进来,如果 函数参数可控,我们又能上传文件,那么我们就可以 getshell。 
全局审计代码之后我们发现在/application/home/Controller/CommonControler.class.php
如果我们能让 type 返回为 html ,就可以控制 display 函数。搜索 type 可得 $this->getAcceptType();
只要将请求头中的 accept 设置好就可以了。然后我们需要找一个文件上传,在 UserController.class.php moduleImport函数里
这里的上传只能传到 /tmp 目录下,而且不可以跨目录,所以我们直接传文件上去。紧接着然后使用之前的文件包含直接包含该文件
上传文件的时候要注意 seesion 和 token ,token 可以从首页登陆页面获得。 
至此我们成功获得了 webshell 。这里拿到 webshell 之后就会进入一段神奇的发现。
首先,服务端除了 /usr 以外没有任何的目录,其中 /usr/ 中除了3个服务端,也没有任何多余的东西。换言之就是没有 /bin ,也就是说并没有一个linux的基本环境,这里我把他理解为执行体,在他的外层 还有别的代码来联通别的执行体。
由于没有 /bin ,导致服务端不能执行system函数,这大大影响了我的攻击效率,这可能也是我被反超 的一个原因... 
继续使用php eval shell,我们发现后端3个执行体分别为nginx\apache\lighthttpd,实际上来说都是在 同一个文件夹下
/usr/local/apache2/htdocs/usr/local/nginx/htdocs /usr/local/lighttpd/htdocs
由于 Web 的服务器可以随便攻击,有趣的是,在未知情况下,服务端会被重置,但神奇的是,一次一 般只会重置3个服务端的一部分,这里也没有拟态裁决的判定,只要单纯的刷新就可以进入不同的后端, 其感觉就好像是负载均衡一样。 
这样我不禁怀疑起服务端的完成方式,大概像裁决机是被设定拼接在某个部分之前的,其裁决的内容也 有所设定,到这里我们暂时把服务端架构更换。
阅读服务端代码
在拿到 shell 之后,主办方强调 Web 服务和题目无关,需要修改后端的访问控制权限,由于本地的代码 和远程差异太大,所以首先要拿到远端的代码。从 /conf/menu.php 中可以获得相应功能的路由表。
其中设置防火墙访问控制权限的路由为 ?c=Policy/Interview&a=control_show', 然后直接读远端的代码 /Controller/Policy/interviewController.class.php 其操作相关为
直接访问这个路由发现权限不够,跟入 getPrivilege
一直跟到 checklogin

发现对 cookie 中的 loginkey 操作直接对比了 auth_id ,id 值直接盲猜为1,于是绕过权限控制 添加相应的 cookie ,就可以直接操作访问控制页面的所有操作,但是后端有拟态防御,所以访问 500. 至此,我无意中触发了拟态扰动...这完全是在我心理预期之外的触发,在我的理解中,我以为是我的参 数配置错误,或者是这个 api 还需要添加策略组,然后再修改。由于我无法肯定问题出在了哪,所以我 一直试图想要看到这个策略修改页面,并正在为之努力。(我认为我应该是在正常的操作功能,不会触 发拟态扰动...)
ps:这里膜@zsx和@超威蓝猫,因为我无法加载 jquery ,所以我看不到那个修改配置的页面是什么样 的,但 ROIS 直接用 js 获取页面内容渲染...
在仔细分析拟态的原理之后,我觉得如果这个功能可以被正常修改(在不被拟态拦截的情况下),那么 我们就肯定触发了所有的执行体(不可能只影响其中一台)。 
那么我们反向思考过来,既然无法修改,就说明这个配置在裁决机背设置为白名单了,一旦修改就会直 接拦截并返回 500! 
所以我们当时重新思考了拟态防火墙的结构...我们发现,因为Web服务作为防火墙的管理端,在防火墙 的配置中,至少应该有裁决机的 ip ,搞不好可以直接获取防火墙的 ip 。
这时候如果我们直接向后端ip构造socket请求,那么我们就能造成一次降维打击。只是可惜,因为没有 system shell ,再加上不知道为什么蚁剑和菜刀有问题,我们只能花时间一个一个 文件去翻,结果就是花了大量的时间还没找到(远程的那份代码和我本地差异太大了),赛后想来,如果当 场写一个脚本说不定就保住第一了2333
关于拟态(这是刚刚的那个2019的文章 不是我的总结)
在几次和拟态防御的较量中,拟态防御现在的形态模式也逐渐清晰了起来,从最开始的测信道攻击、 ddos攻击无法防御,以及关键的业务落地代价太大问题。逐渐到业务逻辑漏洞的防御缺陷。
拟态防御本身的问题越来越清晰起来,其最关键的业务落地代价太大问题,在现在的拟态防御中,逐渐 使用放弃一些安全压力的方式来缓解,现在的拟态防御更针对倾向于组件级安全问题的防御。假设在部 分高防需求场景下,拟态作为安全生态的一环,如果可以通过配置的方式,将拟态与传统的Waf、防火 墙的手段相结合,不得不承认,在一定程度上,拟态的确放大了安全防御中的一部分短板。拟态防御的 后续发展怎么走,还是挺令人期待的。
0x06 总结
主要是要学会拟态的思想,把这个拟态思想运用到各种想的到的,想不到的地方。
此外,拟态一直在迭代,一直在优化。不是一层不变的
其次我觉得拟态自身一定会有安全问题,这是不可避免的,但是他不开源啊,不开源也是为了拟态的安 全。存在战略性的一些事情吧,现在也很难接触到。大概这么多,不太多总结,自己感受一下,如果我有表达不清楚的地方,欢迎各位师傅提问,或者我讲错和讲的不好的地方,希望各位师傅多多指点。谢谢。
本实验通过Jetico Personal Firewal的安装、配置向导和使用来了解有关防火墙的有关设置。复制下方链接开始实操!
https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015081317162900001&pk_campaign=weixin-wemedia#stu     

欲知更多课程详情请点击图片
可点击下方“阅读原文”体验靶场实操

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652871329&idx=2&sn=29d20c201d82ce27fa4be99d1704e99d&chksm=bd59e66c8a2e6f7a6c92c959a3652a26444fda1dddf8f04c47204ddf02ec092de072fa4c15f6#rd
如有侵权请联系:admin#unsafe.sh