思睿董靖:机器智能辅助威胁情报生产的三个实例

董靖:首先感谢主办方给我们这样一个机会让我们分享在威胁情报生产方面的实践经验。这个话题我们报的时候说是三个实例,后来想想每一个实例都可以讲至少半天以上。

4  董靖

现在大家碰到的问题是在威胁情报领域大家觉得落地比较困难,在威胁情报领域落地困难其实主要是我们需要有很多的人力资源去投入,会有很多的困境,今天我主要会讲三个有关的困境,这个困境并不代表着我们旧的模式没有吸引力,实际上它还是非常有效果的,可是在落地过程中,大家都会觉得需要改进更进一步,首先我们会讲三个困境,第一是类似于拿webshell,这是大量的互联网公司有大量地露在web的服务器,它跟木马有取消,怎么样快速地除了大量的webshell的应急都有很多的工作可以做。第二个困境是说现在各种会议都讲怎么用威胁情报去做溯源和追踪,大家经常会看到DNS这种方式,这种方式也会遇到很多的问题,比如说现在在隐私保护方面可以用很低的成本做得到,第三还会讲一讲怎么在用户侧做威胁情报的再生产,因为现在有一个很大的困境在于威胁情报发放一天可能有几十万条,企业和用户处如何落地是一个很头疼的问题。

我讲这些东西已经假设大家对分析情报有一定的了解。因为牵扯到人工智能辅助生产威胁情报,所以我简单给大家说说人工智能的技术,现在来看人工智能主要是概括,第一是机器学习,有监督和无监督的机器学习,人工智能今年突然变得热起来,安全领域应用场景也变得多起来,机器学习最大的优势是能大幅度降低分析工作人员和安全工作人员的工作量,如果现在去讲人工智能替代分析人员的话,其实这个为时尚早是不现实的,但我们也能看到它能够大幅度降低50%甚至是到达80%的分析工作量,这对现在的安全行业来讲是非常大的促进。在数据的算法中,实际上数据挖掘只有三类问题,第一是回归主要是做数值预测的,另外是聚类和分类,我们主要在三两个方向是用得比较多的,因为回归可能大家看到广告的点击的预测,像电商购物会有一些货品的推荐,这些用得比较多。聚类和分类,是把一堆不相干的大量原始的样本归成一堆一堆的,这就是聚类。分类是说把很多原始的样本分成一个类别一个类别的,所以这个分类实际上是我们在安全领域用得非常多的,比如说实际上木马识别也可以归纳为分类的问题,因为一个同源的木马,一个家族不管是EK还是哪个EK去做的话,实际上做出来的有高度的代码辅用,所以是很容易分成不同的类别的。当然还有自然语言处理。

机器学习用在安全领域传统的流程步骤是什么样的,基本上我们会有很多的原始数据,进行无监督的机器学习就可以把它做聚类,这个有挺多,实际上很多大数据分析产品里面平台里面会说做异常分析,异常分析很重要的一点是要做聚类,我把相类似的相同的用户行为的业务系统登录行为聚成一类一类的,有一线的部门、后台的部门,不推的业务领域的部门,日常的业务系统登录的行为是不太相同的,有的销售人员每天早上到办公室半个小时,这半个小时的时间是他登录邮件系统CRM系统非常频繁的时间,等他到了10点以后,集中地拜访客户,下午4点钟之前这段时间很少碰CRM系统,看里面详细的客户的详细的信息,典型的行为分析进行聚类。有了分类的结果进行监督的分析,分类其的好处是它的性能非常地有益,所以在海量数据里可以找到我们比较关注的类别,比如说像异常分析里面像我们发现说业务后台人员的登录时间都是在白天的工作时间,突然有很多异常的行为发生在凌晨,这个用分类器很容易很快速地就能做出来。

今天我就讲三个实力这三个实力不太会讲基础的东西,第一是webshell的分类,假设大家对webshell有一些了解,Ctnife一句话的webshell不管是大码还是小码检测的过程中都有困难,因为对webshell用脚本来写的木马,只需要经过简单的几个月的学习,就可以自己去更改这些webshell的特征,代码的顺序,特征的值。怎么样检测webshell就变成了很头疼的问题,第一个困境是用签名的办法去检测木马,碰到了很大的问题。到底是什么样的原因和根源造成了检测webshell的误报和漏报呢?前面的演讲者也提到了写政策表达式,实际上很复杂,原因是它的keyword或者是partten信息不够,你用很少量的信息报木马的话就会有问题。partten写得松就会有误报。大家很自然的想法是,如果只是Keyword  partten信息量不够,或者是函数量不够,是不是可以提取更多的特征,特征提取得更多,就可以判别准确性,我可以用特征信息,先用了那个函数、后用了哪个函数,先给了变量的赋值还是后给了变量的赋值,我们就有了n-gram,前后按一个顺序发生的partten。

可以看到在国际会议上,在首尔刚刚开完的会议,其中有一个议题是讲怎么样用人工智能的办法大规模地识别webshell。做法很简单,把webshell里面先符号化,代号话,先做token,下面有一个例子,有一个函数名都给简化成function,赋值函数值的变化有字符串或者是各种各样的,用n-gram看它发生的顺序,之后再把它向量化,在一个多维向量空间里算余弦。他们选用的办法是SVM和KNN,这个演讲者做了很多年从13年开始到16年做了3年多的时间,但在我们看来其实有很多可以改进的空间,我们自己也在过去半年中跟合作伙伴做了webshell的人工智能的检测识别。首先特征选取上,我们是选了包括函数名、变量代号、字符串代号、运算符代号,如果把一个函数名简化成归一,就变化了一个function的代号,实际上它已经丧失了很多特征。我们就用更多的特征去选,还有ensemble也是机器学习里使用的,把多种算法组合在一起来做的。实际上,我们也看到了聚类的结果,可以做到webshell很多的文件名是用散列值webshell的值来代表做文件名的,即使是不同的散列值也可以作成一个名类,你可以得到非常好的效果,如果能够把木马做实时的据类和分类的话,对应急响应是非常有帮助的因为你首先知道木马的行为是什么,具有多大的破坏性,应该怎么样解决问题,在企业中扩散的范围和扩散的速度是不是很快。我们怎么用机器学习的方法做大规模的webshell的聚类和分类以及识别的问题。

接下来我们再讲一讲看一看现在比较流行的恶意网址,实际上这个网址并不是说一定是一个钓鱼网站,或者说是一个挂着码的网站也有可能是一个木马的主控服务器。传统的做法是用WHOIS的分析,它分析的好处是可以通过注册的邮件地址,可以通过各种各样的注册的人名、地址变化看看这些域名是不是有组织关系,是不是一个黑山组织或者是一个黑客组织来创立的。但实际上,WHOIS也碰到了很多的问题,大家拿出来讲都是讲它发现了的,实际上这里面的不准确里也是非常高的,而且现在黑客组织已经了解到世界上所有主流的安全厂商可以去看黑客组织的分析报告,必然会看到用WHOIS做分析、做关联。这样我们也看到越来越多的地下组织用很便宜的价格去买域名注册的隐私保护的服务,这样的话WHOIS关联有一个很大的问题,可能过去积累10年的数据或者是20年的数据,但只要新发现了一个注册域名,它用了priverce的的话,以后的关联都不可能用起来了,你现在就变成了一个困境,当然WHOIS这种方式现在还是相当有作用的,因为还有很多组织没有跟上使用priverce服务的潮流,可是我们也预期到未来的话会加快。当然还有一些DNS用域名解析注册IT之间的解析到什么地方,这些去做关联,但实际上这也有很大的问题,因为现在动态的DNS也已经很流行乐。包括我们看到的很流行的手法叫域名阴影的技术,实际上是怎么做的,黑掉了一个域名控制了账户,比如说叫ABC.com我在里面注三级到四级的域名,ABC.Com是很正常的网站,可是其他就被解析到有木马的网站,这时候用WHOIS就会遇到很多的问题,因为这是一个正常的域名注册商来注册的,总之,有很多的问题。

现在逼着我们去想,我们有什么更多的办法做到恶意网址、恶意域名,大家自然而然地想到了用指纹的方式去做。其实大家都知道,现在类似于人机识别反欺诈,现在UUID不给你了,只给一个广告的ID,实际上对设备不同的应用是不同的,其实这种情况就完全类似于我们在C&C这上面发现的问题,所以我们怎么做,其实基本上大家的思路是一样的,就是做更多的指纹。我们除了WHOIS和DNS我要看到恶意网络里更多的指纹。比如说我们要看基础设施的指纹。比如说网站的证书,大家知道黑产也是你去恶意网站也是需要维护的,肯定要有SSH,重要的是网站的证书,证书的获取方式很多,可以在网络里抓包抓到网站的证书,也可以直接尝试连接,可以有服务器身份的证书可以拿的到。这个证书为什么会有作用呢?是因为现在地下组织也是讲究自动化作业,因为对他来说手工做自动化服务器成本是非常高的,这就倾向于所有的至少有一部分的服务器是共用相同的证书,这是可以作为指纹而且是可以获取的。这就多了一个维度,我们可以看到更多的指纹,其实很简单还有是服务器之间是有相连的,当然这个相连的流量去获取或者说有一些脚本去指向的话,这些也是需要去做深层的工作才能拿的到,不像证书很容易,因为证书的指纹我相信大家拿回去做都可以做得出来,还有很多,比如说共用了一个黑产的基础设施的供应商,因为现在在黑产行业里也有很多ISP,做的事情就是提供hosting,就提供一个虚拟的云主机服务,我就给你提供云主机,或者说我就给你黑掉的服务器个。

除了基础设施上的指纹我们还可以做到表层应用的指纹,也有很多可以选择的,很简单很多的钓鱼网站,其实黑产也是不停在改进自己的手法,所以在钓鱼网站里嵌入了很多公开的统计代码,他想知道哪个教育网站统计的数量最多,为什么呢?也是跟黑产的产业链做一个价值链相关的,因为现在黑产每个分工非常地明确及他也想知道,也许他们之间会有各种各样的结算的协议,会根据使用量做基础设施提供,所以会在里面加入流行的,比如说Google  anylitics,网站是从哪儿来的,有分层的协议,北京有一堆做伪基站的,天津、上海各有一堆做伪基站的,可是我怎么知道挣的钱到底是北京的伪基站的团伙有没有干活,也许就在家里等着、歇着,结果所有的伪基站都是上海的,上海人帮我赚了钱,北京人没有帮我赚钱,怎么分账呢?有很多做统计的代码页可以把它当做指纹。还有协议层也可以看到协议传输的通信协议也非常有特点,如果简单地做分析的话,简单地投都是非常有作用的。另外像代码层的HTML页面,代码层的javascript也是有分析的,这是webshell里类似的技术。如果把这些指纹想象一下像人机识别的指纹一样,如果欧放进来可以作为关联的维度,从原来的3、4个变成了20个、30个,这样做威胁情报和溯源分析的时候就更有效果。当然有一个问题,WHOIS这种关联分析实际上是非常简单的,因为它是单线的,你可以用鼠标或者是国内的一堆专业的网站,还有Google  kandle这样的服务,一个恶意的域名点进去很容易找到注册的人的邮件或者是电话,你再一点就很轻松地把图画出来了,这实际上可以用手工来做的,但如果把特征量加进来,加到超过20个、30个的话,靠人和分析员做手工是不现实的,这时候就会用到机器学习、数据挖掘的算法。你把这些都合在一起的时候就可以更精确地还原真正的画像,可以看到,这个做法和思路是非常清晰的我们把原来WHOIS碰到的困境,特的特征数太少,关联万一有一个线断了就断了,但我们加入了很多的信息。

接下来我会讲一讲用户侧情报再生产,困境是feed流,现在威胁情报都开始做Feed,一个厂商一天下来几十万的Feed我们也在做域名的识别,经常一天下来几十万的新增的恶意域名是非常正常的,因为现在注册域名太便宜了,而且现在都是DJA算法脚本来进行,非常流程化,怎么把几十万个Feed放到防火墙里面,去这是一个很头疼的问题,这在企业里是没法儿落地的,一般的做法是弄一个所谓的热库,我可能认为针对这个行业我认为是威胁度非常高的url,包括一些样本的散列都可以放进去,但这也有一个很大的问题,你到底相信不相信威胁情报、生产产品能够对行业做出有针对性的筛选?这其实是一个很现实的问题,因为我刚刚在first今年的会上,厂商的展台基本上就是两类,一类是威胁情报的平台,一类是做自动化的应急响应的我问了每一个做威胁情报平台的,只有一家跟我说他们有按照行业划分的威胁情报数据的提供,只有一家。还有一个很严重的问题,就是这一家到底相信不相信,这是一个很大的问题。

怎么样才能让威胁情报更好地落地呢?好像这些糖果一样,你喜欢哪个颜色的糖果只有用户才知道,所以我们的想法很简单,在用户侧才能知道哪种情报更适合组织的自身,我们怎么来做呢?首先,如果我们看看旧模式的话,实际上这个链条非常简单,首先我先去做数据的采集和分析,然后我怀疑可疑的了,可能跟url相关的组织,把这个组织跟url相关的木马的散列值下载下来,不管是webshell还是其他的,我再做threat  hunting,这是传统的大家比较流行的做法,这个做法问题就是我们刚才讲的,如果这个第三方的威胁情报都扔下来,一天几十万条我怎么做threat  hunting,没有机器没有带宽,我们把1万条木马样本的webshell传到终端上去,这个组织有10万终端根本传不下去这是非常现实的问题。我们想把用户侧做威胁情报再生产的链条加进去就变成更有针对性的新模式。我们等于是需要在用户侧放一些设备放一些引擎,他们能够生产这个威胁情报,其实很简单,如果你能够在用用户侧发现一些自己发现的DGA域名,再拿到第三方的威胁情报平台上去查,再拿出来的结果再用threat  hunting在企业里大规模地捕猎,这个效率非常地高,肯定更有针对性。当然在用户侧做威胁情报的生产有一个很大的挑战,就是用户没有大规模的分析师团队,这怎么来解决?其实也是用了webshell的聚类、分类,木马的聚类、分类,像各种各样的机器学习的引擎,他们自动地筛选。

所以它其实有一个先决的条件,想做这件事在用户侧做情报再生产,变成闭环的链条,第一必须得有外部的情报平台,不要想着说作为一个用户不可能生产所有的威胁情报,这是不现实的,因为拿到的数据只是很小的一部分,只有威胁情报平台才有更大的数据。第二是必须要做自动化,因为没有人也不可能说发现了一个可疑的域名就到所有的威胁情报平台上查一下,一个分析员查这么一下半天就过去了,所以自动化的平台和过程也是非常重要的。之前还有一个先决条件是要有机器学习的能力,因为在企业里,去虫之后的域名解析就有上百万,如果靠人工去查,显然是不现实的,需要有一些自动化的引擎和能力,自动把可疑的东西帮助你挑出来,在自动化威胁平台上去查,在自动化地下载相关的威胁情报,再自动化地做threat  hunting。

我就讲这么多。谢谢大家!

上一篇:谷安赵毅:量化信息安全风险

下一篇:对话腾讯马斌 解读互联网+安全战略