蜜罐与内网安全从0到1(五)
2018-3-20 23:55:30 Author: mp.weixin.qq.com(查看原文) 阅读量:6 收藏

涉及一些读了就能明白的数学计算..

将蜜罐技术应用到内网攻击感知中,一篇硕士论文的研究过程与demo实现,抛砖引玉。计划的系列文章内容分为以下几个部分,按照论文撰写的脉络来讲:

  1. 蜜罐与内网安全选题思考

  2. 蜜罐技术科普与发展简述(2016年)

  3. 常见内网攻击类型及检测思路

  4. 多款开源蜜罐数据样例与应用分析

  5. 攻击序列、攻击模式与攻击者标签-本文

  6. demo系统设计与系统测试

  7. 我的论文小结(附脱敏的答辩PPT与参考文献列表)


现在毕业论文的要求越来越高,工科硕士毕业论文要是没有一些理论依据,比如数学公式、算法、机器学习之类的,估计是难以通过审核和答辩的。当然咱们也不能为了理论而理论,要是能结合实际技术稍微抽象升华一下,岂不美滋滋~这篇文章就班门弄斧,讲一点根据论文抽象的几个概念:攻击序列、攻击模式、攻击者标签、攻击模式匹配

0x01 攻击序列、攻击模式、攻击者标签

基于上一篇文章展示的基础数据,可以初步判断攻击者的攻击行为,能发现攻击者正在探测某个端口和服务,能记录下攻击者暴力破解SSH服务的字典数据,也能够简单识别出攻击者使用的操作系统和工具版本,能对攻击者来源定位等。基于基础数据的简单匹配,可以实现攻击行为的快速初判和预警。

但是攻击行为的深度分析需要更细粒度的数据挖掘,通过对底层蜜罐软件的调用,能够获取到攻击者发送的具体的数据内容,进而为更细粒度的分析提供了数据基础。

通过字符串的特征匹配可以方便地对少量数据进行快速处理和分析以及对攻击行为和攻击来源进行简单地判断,但是当数据量越来越大后,纯字符串的存储和分析就会出现存储空间占用高以及分析角度局限的缺点。因此,本节提出了一种攻击序列提取算法,通过将每条字符串攻击数据提取成二进制数值序列,达到降低存储空间和提高分析效率的效果

本文将每条攻击数据数值化后的二进制数值序列定义为“攻击序列”,将一个攻击者某段时间内的二进制攻击序列进行“按位或运算”的结果定义为该攻击者的“攻击模式”。并从攻击者所有的攻击序列中提取高频标签作为对该攻击者的特征描述,即“攻击者标签”

具体的算法设计思路如下:

(1)从蜜罐系统能捕获到的数据中列举攻击源、攻击目标和攻击手法相关的关键词作为标签,标签设计要尽可能精简且覆盖面广,建立一个列表,每个标签相当于列表的一个字段,对未能考虑到的关键词预留若干字段,方便将来扩展。

(2)对于每条攻击数据,对照列表中的每个字段,进行0/1的二值化处理,符合就填1,不符合就填0。这样,每条攻击数据就变成了一串0/1二进制数值串,即“攻击序列”

(3)对某个攻击者一段时间或者全部时段的多条攻击序列进行按位或运算得到的一串0/1数值化数据,就代表该攻击者的“攻击模式”

(4)对攻击者所有攻击序列中,值为1的标签数目进行统计,从统计结果中选出排名靠前的若干个标签作为对攻击者的描述标签,即“攻击者标签”

假设A表示攻击者,D表示一条数据抽象后的0/1数值化攻击序列,B表示攻击序列的某一位(B的值只能是0或者1),M表示攻击模式,n表示标签的总数目。

那么攻击者A的某条攻击序列D可以表示如式3-1:

若攻击者A总共有j条攻击序列,|表示按位或运算,那么攻击者A的攻击模式MA可以表示如式3-2:

为便于理解,结合实例进行说明。由于篇幅有限,为便于叙述,选取少量标签对算法进行说明,如下图所示。

上表中共选取了12个标签,其中前4个标签代表识别出的攻击者的操作系统,中间3个标签代表识别出的攻击者使用的工具名称,后5个标签代表攻击者的攻击行为,如针对80端口的攻击、内网ARP欺骗等。

由上表数据可知,攻击者A1总共有3条攻击序列,第1条攻击序列DA11可抽象为100010010000,第2条攻击序列DA12可抽象为100001001000,第3条攻击序列DA13可抽象为100010000001,进而可知攻击者A1的攻击模式MA1为100010010000 | 100001001000 | 100010000001 = 100011011001,计算过程如下表所示。

根据上表,可以统计攻击者A1的标签频率,如Windows(3次)、Nmap(2次)、BBScan(1次)、80(1次)、22(1次)、其他(1次),然后就可以把Windows和Nmap作为该攻击者的标签。如果数据量足够多,那么选取前几个高频标签作为对攻击者A1的描述就比较有意义。

攻击序列是攻击数据的数值化表示,数值化后能大幅减少存储空间,然后方便进行统计运算,当数据量足够大后,也方便将机器学习算法应用到蜜罐数据分析中,来对数据进行更智能的分析研判。

攻击模式是攻击者每一次攻击行为的聚合,一定程度上反映了该攻击者特有的手法和习惯,需要说明的是,攻击者攻击模式计算的过程中,损失了相同攻击标签次数和频率的信息,因此可以结合攻击序列中标签频率来更全面地刻画攻击者。

0x02 攻击模式匹配

在实际的攻防对抗中,攻击者往往会通过变换攻击来源来伪装和保护自己,因此通过攻击来源IP难以关联同一攻击者。攻击模式在一定程度上反映了攻击者的攻击手法和习惯,而同一个攻击者的攻击手法和习惯在一段时间内是稳定的,因此可以通过对攻击模式进行匹配来关联出同一个或同一类的攻击者。

攻击模式相似度算法

通常,攻击模式越相似,那么越可能是同一个或者同一类攻击者。关于如何将相似度量化,本文基于攻击模式,提出了一种简单清晰的攻击模式相似度算法。参照第一个表的示例数据,算法具体说明如下。

假设Sim(MA1, MA2)表示攻击者A1和攻击者A2攻击模式的相似度,n表示标签总的类别数目,k表示攻击模式MA1和MA2中相同标签值(同为1或者同为0)的个数,那么Sim(MA1, MA2)可以为式3-3:

结合第一个表的示例数据,MA1 = 100011011001,MA2 = 010010111100,MA1和MA2中相同标签值(同为1或者同为0)的个数k为6,因此Sim(A1,A2) = 6/12∙100%=50%,即攻击者A1和攻击者A2攻击模式的相似度为50%。

需要说明的是,攻击模式相似度匹配算法,在实际的应用还需要考虑一些问题,首先对于某一攻击者A来说,攻击模式的计算是考虑A的所有攻击序列,还是对每一个时段的攻击序列分别计算对应时段的攻击模式,这些要在具体的应用场景下进行取舍。举例说明,假设攻击者A1总共有5条攻击数据记录,对应5条攻击序列,而攻击者A2有10条攻击序列,那么直接计算攻击者A1和攻击者A2攻击模式的整体相似度是否合理有效,或者从A2的10条攻击序列中,依次取5条和的攻击模式进行相似度计算,则总共需计算6轮,得到6个A1和A2的攻击模式相似度数值,这又可能会衍生出最高、最低或平均相似度的概念。因此,本文的相似度算法在解决具体的数据分析问题时,需要根据应用场景和实际效果进行选取和调整。

聚类算法的应用

通过攻击者的攻击模式相似度匹配,可以关联出同一个或者同一类攻击者的所有攻击数据,便于分析和溯源。在实际的攻防对抗中,随着蜜罐终端部署的愈发广泛,和捕获的攻击行为数据量持续增长,自然会衍生出对于同一类攻击者进行聚类的问题,目的是检测有组织的网络攻击行为或网络黑客团体。

在大数据条件下对同类攻击者和攻击模式进行归类时,普通的特征匹配已经难以取得好的效果,因此本文引入机器学习中的聚类算法进行讨论。二进制数值序列的攻击模式,为机器学习算法的运用提供了良好的输入特征。

根据上一小节的定义,又引申出一个“攻击模式距离”的定义来表示不同攻击者的量化差异。

对于攻击模式MA1和MA2之间攻击模式距离D(M_A1,M_A2 )的定义如式3-8所示,其中Sim(MA1, MA2)表示攻击者A1和攻击者A2攻击模式的相似度。

由上式可知,攻击模式距离D的取值范围为[0,100],且攻击模式距离与攻击模式相似度成反比。

在聚类算法的选择和应用这部分,写论文里的时候我是一知半解的,这里我就不扯了….汗

系列文章,未完待续,看这断更的时间


转载请注明出处 :sosly 菜鸟笔记

电脑上也可直接访问博客(https://sosly.me)查看,如有内容更新以博客为准。点击原文链接即可跳转。


文章来源: https://mp.weixin.qq.com/s?__biz=MzIxODYyNjczNA==&mid=2247483717&idx=1&sn=5a17edbdc568ce7ebb03da5267a3f2e3&chksm=97e6ee84a09167921b4a6802420335e8265f776ebea58de304ac1a199021bd4c7f85993e2b5b&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh