《Web安全之机器学习入门》笔记:第十一章 11.6 Fp-growth算法挖掘僵尸主机

本文介绍如何使用FP-growth算法分析防火墙拦截日志,通过浏览器user-agent与被攻击url的关联,识别潜在的僵尸主机。数据集来自sample7.txt,设置支持度3,置信度0.9,挖掘出url1与ua=ua1的显著关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列目录

《Web安全之机器学习入门》笔记:第十一章 11.2 Apriori算法

《Web安全之机器学习入门》笔记:第十一章 11.3 Apriori算法挖掘XSS相关参数

《Web安全之机器学习入门》笔记:第十一章 11.5 Fp-growth算法 

《Web安全之机器学习入门》笔记:第十一章 11.6 Fp-growth算法挖掘僵尸主机

目录

系列目录

一、Fp-growth算法

1. 算法核心思想

2. Apriori算法 和 FP-Growth算法对比

二、数据集

1、数据集处理

2、使用FP-growth算法挖掘僵尸主机

3、运行结果


目前互联网中有大量僵尸主机进行探测扫描行为,这些僵尸主机为了避免被安全设备检测到,通常会频繁更换IP地址,故而很难仅仅只通过ip地址就确定僵尸主机。本小节通过使用FP-growth算法,分析防火墙的拦截日志,挖掘出浏览器的user-agent字段和被攻击的目标url之间的关联关系,来初步确定潜在的僵尸主机。

一、Fp-growth算法

FP-Growth(Frequent Pattern Growth,频繁模式增长)算法是一种用于高效发现数据集中频繁项集的算法,由Jiawei Han等人在2000年提出。它是关联规则挖掘中的一种重要方法,相比传统的Apriori算法有显著的性能提升。

1. 算法核心思想

FP-Growth算法通过以下两步发现频繁项集:

  • 构建FP树(Frequent Pattern Tree):将事务数据库压缩到一个高度浓缩的树结构中

  • 从FP树中挖掘频繁项集:通过递归方式从FP树中提取频繁项集

2. Apriori算法 和 FP-Growth算法对比

对比项Apriori算法FP-Growth算法
核心思想基于候选生成-测试(逐层搜索)基于FP树压缩存储,模式增长(无候选项集)
扫描次数多次扫描数据库(每轮候选项集生成)仅扫描2次(1次统计频次,1次建树)
存储方式保留原始事务数据或候选项集FP树压缩存储,减少内存占用
效率低效(频繁生成候选项集,多次I/O)高效(避免候选项集,减少计算和存储开销)
适用场景小规模数据集大规模数据集(更快的运行速度)
主要缺点1. 候选项集爆炸问题
2. 多次扫描数据库
1. FP树构建可能占用较大内存
2. 实现较复杂

二、数据集

1、数据集处理

本小节使用防火墙的拦截日志来做挖掘,位于KnowledgeGraph/sample7.txt文件中,如下所示

对于数据集处理则是使用逗号分隔,具体代码如下所示

transactions=[]

with open("../data/KnowledgeGraph/sample7.txt") as f:
    for line in f:
        line=line.strip('\n')
        ip,ua,target=line.split(',')
        print("Add (%s %s %s)" % (ip,ua,target))
        transactions.append([ip,ua,target])

print(transactions)

运行结果如下所示

Add (ip=ip1 ua=ua1 target=url1)
Add (ip=ip2 ua=ua1 target=url1)
Add (ip=ip3 ua=ua1 target=url1)
Add (ip=ip1 ua=ua1 target=url2)
Add (ip=ip2 ua=ua1 target=url2)
Add (ip=ip3 ua=ua1 target=url2)
Add (ip=ip4 ua=ua2 target=url2)
Add (ip=ip5 ua=ua3 target=url2)
Add (ip=ip5 ua=ua6 target=url6)
Add (ip=ip6 ua=ua3 target=url4)
Add (ip=ip7 ua=ua4 target=url4)
Add (ip=ip8 ua=ua5 target=url5)
[['ip=ip1', 'ua=ua1', 'target=url1'], ['ip=ip2', 'ua=ua1', 'target=url1'], ['ip=ip3', 'ua=ua1', 'target=url1'], ['ip=ip1', 'ua=ua1', 'target=url2'], ['ip=ip2', 'ua=ua1', 'target=url2'], ['ip=ip3', 'ua=ua1', 'target=url2'], ['ip=ip4', 'ua=ua2', 'target=url2'], ['ip=ip5', 'ua=ua3', 'target=url2'], ['ip=ip5', 'ua=ua6', 'target=url6'], ['ip=ip6', 'ua=ua3', 'target=url4'], ['ip=ip7', 'ua=ua4', 'target=url4'], ['ip=ip8', 'ua=ua5', 'target=url5']]

2、使用FP-growth算法挖掘僵尸主机

本小节将条件设置为支持度=3,而置信度=0.9,满足这样条件我们就认为它是僵尸主机。

patterns = pyfpgrowth.find_frequent_patterns(transactions, 3)
rules = pyfpgrowth.generate_association_rules(patterns, 0.9)

3、运行结果

经过FP-growth挖掘,满足条件的结果为

{('target=url1',): (('ua=ua1',), 1.0)}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值