
Web安全之机器学习入门
mooyuan天天
这个作者很懒,什么都没留下…
展开
-
《Web安全之机器学习入门》笔记:第十三章 13.5 知识图谱 hello word
本节讲解知识图谱(Knowledge Graph)示例应用,主要是挖掘数据的潜在联系与价值,被称为知识域可视化或知识领域映射地图。它是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系import networkx as nximport matplotlib.pyplot as pltdef helloWord(): G = nx.Graph() G.add_node("u1") G.原创 2022-02-04 08:17:26 · 1541 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十二章 12.4 隐式马尔可夫算法识别XSS攻击(二)
本小节原创 2022-02-03 19:54:45 · 983 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十二章 12.3 隐式马尔可夫算法识别XSS攻击(一)
本小节通过使用隐式马尔可夫来识别XSS攻击,示例隐式马尔可夫在网络安全中的使用。1、参数建模2、数据处理与特征提取3、训练模型4、模型验证5、完整代码原创 2022-02-03 19:53:20 · 1042 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十三章 13.3 有向图识别WebShell
本小节示例有向图识别WebShell。一、WebShellWebShell有很多访问特征,其中与有向图有关的是(1)入度和出度均为0(2)入度和出度均为1且自己指向自己附上我对这段话的理解:一个网页文件的入度衡量的是访客是否从其他页面跳转到该页面,同理,一个网页文件的出度衡量的是访客是否会从该页面跳转到其他页面。正常网站页面会互相链接,因此会有一定的出入度,而Webshell通常与其他网站页面没有超链接,也就是一个孤立的页面,通常出入度为0。这一点通常可以在请求头中有无refer字段判断原创 2022-02-15 21:29:12 · 1796 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十三章 13.2 有向图 hello world
本小节示例neo4j的应用。一、安装noe4j二、导入库并连接数据库from neo4j import GraphDatabase, basic_authdriver = GraphDatabase.driver("bolt://localhost", auth=basic_auth("neo4j", "Directeddirected_graph"))session = driver.session()三、导入关系数据微博关注关系如图所示:代码如下# Inse原创 2022-02-15 21:04:19 · 1614 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十三章 13.4 有向图识别僵尸网络
本小节通过有向图识别僵尸网络来示例网络安全领域的应用。一、僵尸网络上图为黑产控制僵尸网络发起攻击的示意图,通常来说黑产会对整个僵尸网络的僵尸主机发布相同的控制指令,所以通过统计一段时间内攻击源的ip地址以及被攻击者域名之间的关联关系,可以初步判断出哪些IP地址可能被同一黑产团体控制。本小节中,僵尸网络的有向图处理如下所示:二、数据集文件位置:filename="../data/etl-ip-domain-train.txt"脱敏函数with open(file原创 2022-02-04 08:18:35 · 730 阅读 · 1 评论 -
《Web安全之机器学习入门》笔记:第十三章 13.7 知识图谱在威胁情报领域的应用
一、挖掘后门文件的潜在联系def show4(): G = nx.Graph() with open("../data/KnowledgeGraph/sample5.txt") as f: for line in f: line=line.strip('\n') mail,domain,ip=line.split(',') G.add_edge(mail, domain) G原创 2022-02-04 08:24:18 · 414 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十三章 13.6 知识图谱在风控领域的应用
一、疑似账号被盗def show1(): with open("../data/KnowledgeGraph/sample1.txt") as f: G = nx.Graph() for line in f: line=line.strip('\n') uid,ip,tel,activesyncid=line.split(',') G.add_edge(uid, ip)原创 2022-02-04 08:23:11 · 1201 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十二章 12.5 隐式马尔可夫算法识别DGA域名
在9.4节通过SVM算法识别DGA域名中,其中使用了HMM特征。本小节详细讲解隐式马尔可夫法识别DGA域名。1、白名单def load_alexa(filename): domain_list=[] csv_reader = csv.reader(open(filename)) for row in csv_reader: domain=row[1] if len(domain) >= MIN_LEN: doma原创 2022-02-04 08:21:51 · 423 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十七章 17.4 CNN识别垃圾邮件
本小节通过实例讲述CNN识别垃圾邮件的方法。1、数据集将load_one_file函数中open的参数增加encoding='utf-8',如下所示:def load_one_file(filename): x="" with open(filename, encoding='utf-8') as f: print(filename) for line in f: line=line.strip('\n')原创 2022-02-03 18:34:04 · 1245 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十七章 17.3 CNN识别恶意评论
本小节通过CNN识别恶意评论,可以对比之前16.3章节做效果对比。1、数据集数据集按照6:4的比例生成训练集和测试集,源码如下def load_one_file(filename): x="" with open(filename) as f: for line in f: x+=line return xdef load_files(rootdir,label): list = os.listdir(roo.原创 2022-02-02 14:44:14 · 358 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十七章 17.2 卷积神经网络CNN识别验证码
本小节通过tflearn库的CNN算法来识别验证码,由于本书多篇章节讲解MNIST图集的识别算法,故而本节主要重点关注在CNN的使用方法。1、数据集特征化X, Y, testX, testY = mnist.load_data(one_hot=True)X = X.reshape([-1, 28, 28, 1])testX = testX.reshape([-1, 28, 28, 1])X, mean = du.featurewise_zero_center(X)testX = .原创 2022-02-02 17:00:03 · 202 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十六章 16.7 识别异常操作
本小节通过RNN识别异常操作。1、数据集def load_user_cmd_new(filename): cmd_list=[] dist=[] with open(filename) as f: i=0 x=[] for line in f: line=line.strip('\n') x.append(line) dist.append(li.原创 2022-02-02 14:15:14 · 215 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十六章 16.6 生成常用密码
人们在设置密码时候,总是倾向于好记的密码,于是常见的密码有一定的关联性。我们可以尝试让RNN学习常见的密码,摸索其中的规律,然后自动生成密码。本小节示例RNN生成常用密码。1、数据集使用WVS自带的密码字典作为训练集。约定密码长度不超过10,逐行读取密码文件中的每行密码,并将其序列化。path = "../data/wvs-pass.txt"maxlen = 10file_lines = open(path, "r", encoding='utf-8').read()X, Y.原创 2022-02-02 15:53:46 · 240 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十六章 16.5 识别WebShell
本小节基于ADFA_LD数据集通过RNN识别WebShell来示例RNN如何应用在网络安全中。1、白样本数据集处理def load_one_flle(filename): global max_sys_call x=[] with open(filename) as f: line=f.readline() line=line.strip('\n') line=line.split(' ') for v i原创 2022-02-02 13:27:29 · 413 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十六章 16.4 生成城市名称
RNN具有记忆性,经过训练可以学习到时间序列数据的潜在规律,并可以结余这种规律随机生成新的序列。本例通过将美国现有城市录入RNN,RNN学到城市名称的潜在规律后,随机生成新的城市名称。下图为全美棒球联盟的队徽,几乎每个城市都有自己的棒球队,并且会以城市的名称命名棒球队。1、数据清洗与特征化数据集文件位于../data/US_Cities.txt中数据处理代码逻辑如下path = "../data/US_Cities.txt"maxlen = 20...原创 2022-02-02 13:14:20 · 728 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十六章 16.3 恶意评论识别(二)
本小节使用NB和RNN两种方法识别恶意评论。1、数据集获取(1)正面影评数据集的位置:../data/movie-review-data/review_polarity/txt_sentoken/pos/x1,y1=load_files("../data/movie-review-data/review_polarity/txt_sentoken/pos/",0)(2)负面影评数据集的位置:../data/movie-review-data/review_polarity.原创 2022-02-02 12:14:57 · 805 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十六章 16.3 恶意评论识别(一)
本小节通过RNN识别恶意评论。1、数据集获取本小节通过Movie Review Data数据集(共1000条正面评论、1000条负面评论)来识别恶意评论。# IMDB Dataset loadingtrain, test, _ = imdb.load_data(path='imdb.pkl', n_words=10000, valid_portion=0.1)trainX, trainY = traintestX, te原创 2022-02-02 11:55:47 · 430 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十五章 16.2 循环神经网络RNN识别验证码
本小节通过tflearn库的RNN算法来识别验证码,对比了DNN与RNN两种算法的准确率。1、数据集使用MNIST图集,加载方法如下X, Y, testX, testY = mnist.load_data(one_hot=True)2、DNN训练数据集def do_DNN(X, Y, testX, testY): # Building deep neural network input_layer = tflearn.input_data(shape=[No.原创 2022-02-02 11:29:13 · 878 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十五章 15.7与15.8 TensorFlow识别垃圾邮件
本小节通过识别垃圾邮件,讲解tensorflow通过神经网络DNN在网络安全方向的应用,同时还对比了NB算法的垃圾邮件识别效果。1、数据集与特征化本小节使用SpamBase这个入门级垃圾邮件数据集进行训练和测试,这里要强调SpamBase数据不是原始的邮件内容,而是已经特征化的数据。共有58个属性,对应的特征是统计的关键字以及特殊符号的词频,其中最后一个是垃圾邮件的标志位。如下图所示,特征结构举例如下:对应代码如下所示def load_SpamBase(filename): .原创 2022-02-02 10:34:08 · 1129 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十二章 12.2 隐式马尔可夫 hello world
本小节,通过一个实例讲述马尔可夫的基本使用方法。1、导入相关库文件import numpy as npimport matplotlib.pyplot as pltfrom hmmlearn import hmm2、训练模型startprob = np.array([0.6, 0.3, 0.1, 0.0])# The transition matrix, note that there are no transitions possible# between component原创 2022-02-04 08:20:53 · 222 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十五章 15.6 TensorFlow DNN识别验证码(三)
本小节通过DNN识别验证码(MNIST数据集)1、DNN原理示意图2.定义DNN这里配置隐藏层共3层,使用relu函数n_hidden_1 = 300n_hidden_2 = 200n_hidden_3 = 100n_input = 784n_classes = 10x = tf.placeholder("float",[None,784])y = tf.placeholder("float",[None,n_classes])def multilayer_perc原创 2022-02-03 18:36:52 · 631 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十五章 15.5 TensorFlow多层感知机识别验证码(二)
本小节相对于15.4节,使用多层感知机来进行处理验证码。一、多层感知机处理流程图如下所示二、参数定义由于使用多层感知机,故而参数需定义为W1,b1, W2,b2,这里隐藏层配置为300个神经网络节点。in_units=784h1_units=300W1=tf.Variable(tf.truncated_normal([in_units,h1_units],stddev=0.1))b1=tf.Variable(tf.zeros([h1_units]))W2=tf.Variab原创 2022-02-03 18:36:21 · 709 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十五章 15.4 TensorFlow识别验证码(一)
本小节目标是通过实例展示如何使用tensorflow识别验证码(MNIST图像)。1、数据集def load_data(): with gzip.open('../data/MNIST/mnist.pkl.gz') as fp: training_data, valid_data, test_data = pickle.load(fp) return training_data, valid_data, test_datatraining_data, valid原创 2022-02-03 18:35:18 · 581 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十四章 14.4 神经网络算法检测JAVA溢出攻击
本小节是示例如何通过神经网络检测Java溢出攻击,工作原理如下1、数据集本小节基于ADFA-LD数据集,处理源码如下def load_one_flle(filename): x=[] with open(filename) as f: line=f.readline() line=line.strip('\n') return linedef load_adfa_training_files(rootdir): x=.原创 2022-02-03 19:02:34 · 559 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十四章 14.2 神经网络 hello world
本小节只是神经网络用法一个示例,作者的配套源码并没有包含此部分源码,用来展示神经网络的使用方法。1、完整代码如下所示,隐藏层共有2层,对应的神经元分别是5个和2个:from sklearn.neural_network import MLPClassifierX = [[0., 0.], [1., 1.]]y = [0, 1]clf = MLPClassifier(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5, 2), ran原创 2022-02-03 19:01:21 · 230 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十四章 14.3 神经网络 识别验证码
本小节是通过示例如何通过神经网络识别验证码(mnist数据集)。1、数据集MNIST实际上是计算机视觉入门数据集,如下图14-6所示:代码如下所示,将60000个样本作为训练集,剩下的作为测试样本,为了将数据标准化,将其data除以255,保证范围在0-1之间mnist = fetch_mldata("MNIST original")# rescale the data, use the traditional train/test splitX, y = mnist.data /原创 2022-02-03 19:02:05 · 505 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十一章 11.6 Fp-growth算法挖掘僵尸主机
本小节通过Fp-growth算法挖掘僵尸网络的主机。目前互联网中有大量僵尸主机进行探测扫描行为,这些僵尸主机为了避免被安全设备检测到,通常会频繁更换IP地址,故而很难仅仅只通过ip地址就确定僵尸主机。本小节通过使用FP-growth算法,分析防火墙的拦截日志,挖掘出浏览器的user-agent字段和被攻击的目标url之间的关联关系,来初步确定潜在的僵尸主机。1、数据集本小节使用防火墙的拦截日志来做挖掘,位于KnowledgeGraph/sample7.txt文件中,如下所示对于数据集原创 2022-02-01 20:49:09 · 323 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十一章 11.3 Apriori算法挖掘XSS相关参数
通常情况下Apriori算法主要用于推荐系统,在网络安全中如何使用呢?本小节通过挖掘XSS相关参数,来我家潜在的关联关系。1.数据集 本小节通过xssed网站的样例以及WAF拦截日志提取的XSS攻击日志作为样本,位于data/xss-2000.txt中,具体如下 机器是没有办法将其识别为日志的,需要逐行读取数据,并将其向量化。比较简单的做法就是按照一定的分隔符切割为单词向量,代码如下所示 myDat=[] with open("...原创 2022-02-01 20:20:04 · 606 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十一章 11.5 Fp-growth算法 hello world
FP-growth算法基于Apriori构建,但是采取高级的数据结构减少扫描次数,它只需要对数据库进行两次扫描,而Apriori算法对于每个潜在的频繁项集都会扫描数据集判定给定模式是否频繁,因此Fp-growth算法速度比起Apriori算法要快很多。Fp-growth算法挖掘频繁项集的基本过程如下:(1)构建FP树(2)从FP树中挖掘频繁项集FP-growth算法将数据存储在一种称为FP树的紧凑数据结构中,FP代表频繁模式。图11-5给出一个FP树的例子...原创 2022-02-01 19:49:55 · 1815 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十一章 11.2 Apriori算法 hello world
本小节示例Apriori算法的基本使用方法,apriori算法主要应用在推荐系统,用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。1.源码修改作者配套的源码是基于python2的,在python3环境运行有问题,报错如下C:\ProgramData\Anaconda3\python.exe C:/Users/liujiannan/PycharmProjects/pythonProject/Web安全之机器学习入门/co...原创 2022-02-01 12:33:30 · 876 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十章 10.5 DBSCAN hello world
本小节通过生成的聚类数据集,使用DBSCAN方法进行分类,并将其可视化。数据集的生成 centers = [[1, 1], [-1, -1], [1, -1]] X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4, random_state=0) X = StandardScaler().fit_transform原创 2022-02-01 11:48:34 · 210 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第十章 10.3 K-Means算法检测DGA域名
DGA域名指僵尸网络通过算法生成的随机性较高的域名,此类域名往往被攻击者用于构建自己的恶意软件基础设施,用于绕过安全产品的黑名单,从而规避安全设备的拦截以建立C2链接或DNS通道传输。1.数据集: 本小节使用alexa前1000域名(679个样本:label标记为0)作为白样本,使用dga-cryptolocker(1000个样本:label标记为1)和dga-tovar-goz(1000个样本:label标记为2)做为黑样本.def load_alexa(filename):...原创 2022-02-01 11:25:03 · 1015 阅读 · 1 评论 -
《Web安全之机器学习入门》笔记:第十章 10.2 K-Means hello world
本小节通过生成的聚类数据集,使用K-means方法进行分类,并将其可视化。1.数据集 本小节通过make_blobs产生数据集,该函数是 sklearn.datasets中的一个函数,主要是产生聚类数据集,代码如下 n_samples = 1500 random_state = 170 X, y = make_blobs(n_samples=n_samples, random_state=random_state)n_sa...原创 2022-02-01 01:34:56 · 244 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第九章 9.4 支持向量机算法SVM 检测DGA域名
DGA(Domain Generation Algorithm)域名生成算法是一种利用随机字符等算法来生成C&C域名,从而逃避安全设备域名黑名单检测的技术手段。1.黑样本def load_dga(filename): domain_list=[] #xsxqeadsbgvpdke.co.uk,Domain used by Cryptolocker - Flashback DGA for 13 Apr 2017,2017-04-13, # http://osint..原创 2022-02-01 00:33:01 · 1110 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第九章 9.3 支持向量机算法SVM 检测XSS攻击
本小节是通过网上搜集的数据使用svm算法识别XSS攻击。一、支持向量机支持向量机SVM(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。二、数据集构造黑白样本,黑样本20w,白样本20wetl('../data/xss-200000.txt',x,1)etl('../data/good-xss-200000.txt',...原创 2022-02-01 00:35:10 · 888 阅读 · 1 评论 -
《Web安全之机器学习入门》笔记:第九章 9.2 支持向量机SVM hello world
本小结是通过随机创建40个点,构造超平面,使用svm处理1.数据集处理随机创40个点,前20个标记为10,后20个标记为1X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]Y = [0] * 20 + [1] * 20打印数据集X与Y[[-0.23594765 -1.59984279] [-1.02126202 0.2408932 ] [-0.13244201 -2.97727原创 2022-02-01 00:34:36 · 413 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第八章 8.4 逻辑回归算法识别mnist验证码
本小节是通过使用逻辑回归算法对mnist数据集的数字识别,效果只能说勉强凑合,不过比7.8节的nb算法好一些。 1.源码修改 作者的代码会报错以及报警 (1)报错Traceback (most recent call last): File "C:/Users/liujiannan/PycharmProjects/pythonProject/Web安全之机器学习入门/code/8-3.py", line 15, in <m...原创 2022-01-31 13:50:28 · 295 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第八章 8.3 逻辑回归算法检测Java溢出攻击
本小结是基于ADFA-LD数据集使用逻辑回归算法检测JAVA溢出攻击。 1.数据集原创 2022-01-31 12:49:50 · 880 阅读 · 0 评论 -
《Web安全之机器学习入门》笔记:第八章 8.2 逻辑回归hello world
这一小节主要内容是用鸢尾花数据集来作为实验数据集讲解逻辑回归的基本用法1.源码修改书中配套源码为8-1.py,源码报警C:\ProgramData\Anaconda3\python.exe C:/Users/liujiannan/PycharmProjects/pythonProject/Web安全之机器学习入门/code/8-1.pyNoneC:\ProgramData\Anaconda3\lib\site-packages\sklearn\linear_model\logistic..原创 2022-01-31 12:15:50 · 557 阅读 · 0 评论