企业网站开发的背景和意义敦煌网站做外贸怎样
2026/3/25 16:39:23 网站建设 项目流程
企业网站开发的背景和意义,敦煌网站做外贸怎样,wordpress固定链接500,新闻发布文章目录 0 前言1 项目运行效果2 设计原理3 背景4 恶意软件加密流量介绍4.1 恶意软件分类4.2 恶意软件加密通信方式 5 加密HTTPS流量解析5.1 Https简介 6 流量解析6.1 流量解析日志生成6.2 流量解析日志中的数据关联6.3 流量解析的证书日志 7 机器学习特征分类7.1 构建4元组7.2…文章目录0 前言1 项目运行效果2 设计原理3 背景4 恶意软件加密流量介绍4.1 恶意软件分类4.2 恶意软件加密通信方式5 加密HTTPS流量解析5.1 Https简介6 流量解析6.1 流量解析日志生成6.2 流量解析日志中的数据关联6.3 流量解析的证书日志7 机器学习特征分类7.1 构建4元组7.2 特征提取7.2.1 连接特征7.2.2 SSL特征5.2.3 证书特征8 分类及预测效果9 构建实时系统10 关键代码11 最后0 前言这两年开始毕业设计和毕业答辩的要求和难度不断提升传统的毕设题目缺少创新和亮点往往达不到毕业答辩的要求这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。为了大家能够顺利以及最少的精力通过毕设学长分享优质毕业设计项目提供大家参考学习今天要分享的是毕业设计 深度学习异常流量检测系统算法论文学长这里给一个题目综合评分(每项满分5分)难度系数3分工作量3分创新点4分 项目分享:见文末!1 项目运行效果视频效果毕业设计 深度学习异常流量检测系统2 设计原理下面构建一个简单的demo简要的说明项目原理实际工程要更为复杂但原理相似。3 背景近年来随着HTTPS的全面普及为了确保通信安全和隐私越来越多的网络流量开始采用HTTPS加密截止今日超过65%的网络流量已使用https加密。HTTPS的的推出主要是为了应对各种窃听和中间人攻击以在不安全的网络上建立唯一安全的信道并加入数据包加密和服务器证书验证。但是随着所有互联网中加密网络流量的增加恶意软件也开始使用HTTPS来保护自己的通信。这种情况对安全分析人员构成了挑战因为流量是加密的而且大多数情况下看起来像正常的流量。 检测企业内部HTTPS流量的一种常见的解决方案是安装HTTPS拦截代理。 这些硬件服务器可以通过在其计算机中安装特殊证书来打开和检查员工的HTTPS流量。 HTTPS拦截器位于客户端和服务器之间其中加密流量被解密扫描恶意软件后再次加密并发送到目标IP。 此方法允许使用经典检测方法来检测未加密的恶意软件流量。 使用拦截器的问题在于它昂贵计算要求高同时造成网络性能下降而且它不尊重HTTPS的原始想法即拥有私密和安全的通信。学长将为大家介绍一种在不解密流量的情况可以高精度地检测恶意软件HTTPS流量的技术。4 恶意软件加密流量介绍4.1 恶意软件分类目前使用加密通信的恶意软件家族超过200种使用加密通信的恶意软件占比超过40%使用加密通信的恶意软件几乎覆盖了所有常见类型如特洛伊木马、勒索软件、感染式、蠕虫病毒、下载器等其中特洛伊木马和下载器类的恶意软件家族占比较高。4.2 恶意软件加密通信方式恶意软件产生的加密流量根据用途可以分为以下六类CC直连、检测主机联网环境、母体正常通信、白站隐蔽中转、蠕虫传播通信、其它。CC直连 – 恶意软件在受害主机执行后通过TLS等加密协议连接CC攻击者控制端这是最常见的直连通讯方式。检测主机联网环境 – 部分恶意软件在连接CC服务器之前会通过直接访问互联网网站的方式来检测主机联网情况这些操作也会产生TLS加密流量。通过统计发现使用查询IP类的站点最多约占39%使用访问搜索引擎站点约占30%其它类型站点约占31%。母体程序正常通信 – 感染式病毒是将恶意代码嵌入在可执行文件中恶意代码在运行母体程序时被触发。母体被感染后产生的流量有母体应用本身联网流量和恶意软件产生的流量两类。由于可被感染的母体程序类别较多其加密通信流量与恶意样本本身特性基本无关本文就不做详细阐述。白站隐蔽中转 – 白站是指相对于CC服务器可信度较高的站点。攻击者将控制命令或攻击载荷隐藏在白站中恶意软件运行后通过SSL协议访问白站获取相关恶意代码或信息。通过统计发现最常利用的白站包括Amazonaws、Github、Twitter等。蠕虫传播通信 – 蠕虫具有自我复制、自我传播的功能一般利用漏洞、电子邮件等途径进行传播。监测显示近几年活跃的邮件蠕虫已经开始采用TLS协议发送邮件传播如Dridex家族就含基于TLS协议的邮件蠕虫模块。其他通信 – 除以上几类、还有一些如广告软件、漏洞利用等产生的恶意加密流量。5 加密HTTPS流量解析5.1 Https简介HTTPS协议也称为SSL上的HTTP安全或超文本传输协议是以安全为目标的 HTTP 通道通过传输加密和身份认证保证了传输过程的安全性 。 如果没有加密任何设法查看客户端和服务器之间的数据包的人都可以读取通信。Http在通讯的过程中以明文的形式进行传输采用wireshark抓包的效果如下:Https所有的请求信息都采用了TLS加密采用wireshark抓包的效果如下:6 流量解析6.1 流量解析日志生成使用流量包深度解析方式提取HTTPS流量中的足够信息日志包括连接通信日志、SSL协议日志、证书日志三部分。从3个日志中可以获得以下信息1连接记录每一行聚合一组数据包并描述两个端点之间的连接。连接记录包含IP地址、端口、协议、连接状态、数据包数量、标签等信息。2SSL记录它们描述了SSL/TLS握手和加密连接建立过程。有SSL/TLS版本、使用的密码、服务器名称、证书路径、主题、证书发行者等等。3证书记录在日志中的每一行都是一个证书记录描述证书信息如证书序列号、常用名称、时间有效性、主题、签名算法、以位为单位的密钥长度等。6.2 流量解析日志中的数据关联流量包深度解析后生成日志数据任何日志中的每一行都有唯一的键用于链接其他日志中的行。– 通过连接日志记录中的唯一键可以和SSL协议日志中的唯一键进行2个记录的关联。– 通过协议日志中一列使用逗号拼接成的id键值可以在证书日志中找到每个id对应的证书记录。6.3 流量解析的证书日志7 机器学习特征分类基于构建4元组进行特征提取通过来自连接日志、SSL协议日志、证书日志中的数据创建连接4元组并提取特征用于机器学习模型训练。7.1 构建4元组根据连接日志中的id、SSL协议日志中的id进行连接再根据得到的conn_ssl.log中的证书路径取第一个key和证书日志中的id进行再次关联在得到的关联结果中根据连接4元组(源IP、目标IP、目标端口和协议)相同的数据进行group聚合操作然后对于得到的每个连接4元组根据聚合结果进行特征提取。7.2 特征提取对于每个连接4元组我们提取了37个特征大部分是基于我们对该领域的专业知识和对我们的恶意软件数据的彻底分析而创建的。对于这些特征我们将它们分为3组连接特征、SSL特征、证书特征。– 连接特征是来自连接记录的特征描述与证书和加密无关的通信流的常见行为。– SSL特征是来自SSL记录的特征描述了SSL握手和加密通信的信息。– 证书特征是来自证书记录的特性描述了web服务人员在SSL握手期间提供给我们的证书的信息。每个特性都是某个浮点值如果由于缺少信息而无法计算该特征则值为-1。7.2.1 连接特征连接特征共包含12个部分举例如下1聚合和连接记录的数量。每个连接4元组包含的SSL聚合和连接记录数量和。2持续时间均值。每个连接4元组的连接参数duration的均值。3持续时间标准差。每个连接4元组的连接参数duration的标准差。4超出标准差范围的持续时间占比。每个连接4元组的所有持续时间值中有多少百分比超出了范围。这个范围有两个极限上限是均值标准偏差下限是均值-标准偏差。5总发送包大小。每个连接4元组的所有连接记录发送的有效负载字节数。7.2.2 SSL特征SSL特征共包含10个部分举例如下1连接记录中ssl连接的占比。连接4元组中非ssl连接和ssl连接的个数比值。2TLS与SSL的比值。连接4元组中tls版本分布占比。3SNI占比。连接4元组中server_name不为空的比例。4SNI is IP。连接4元组中server_name为ip地址的比例。5.2.3 证书特征证书特征共包含15个部分举例如下1公钥均值。连接4元组中全部证书exponent的均值。2证书有效期的平均值。连接4元组中全部证书的有效天数的均值。3证书有效期的标准差。连接4元组中全部证书的有效天数的标准差。4捕获期间证书周期的有效性。连接4元组的全部证书中没有过期的占比。8 分类及预测效果数据集选择对于负样本使用https://www.stratosphereips.org/datasets-malware 网站下公开的恶意软件捕获结果集目前已有349个恶意样本集。同时使用一批最新的恶意软件10w个通过沙箱捕获恶意软件产生的流量。对于正样本一部分使用日常办公网中正常流量同时使用爬虫爬取alexa中访问最多的top10000网站采集产生的流量作为另一部分数据集。经过数据清洗和过滤后最终得到正样本46949条负样本45121条。使用多种机器学习模型进行训练选择其中效果较好的模型随机森林模型和XGBOOST准确率如下最后为了便于测试模型效果使用Flask开发了一个web在线检测页面可以上传pcap进行检测恶意流量收集20个最新的恶意软件进行测试最后检出20个。9 构建实时系统技术选型选择Spark因为每日流量数据很大如果采用使用Spark Streaming在线实时检测会特别消耗机器性能所以采用离线检测方式流量深度包解析后的数据存储到Hive中定时从Hive中读取数据加载模型进行检测。10 关键代码Deep Log分类识别方法importtorchimportmathimporttorch.optimasoptimimportpandasaspdfromtorchimportnnfromsklearn.metricsimportaccuracy_score,f1_score,recall_score,precision_scorefromcollectionsimportdefaultdictclassDeepLog(nn.Module):def__init__(self,num_labels,hidden_size100,num_directions2,topk9,devicecpu):super(DeepLog,self).__init__()self.hidden_sizehidden_size self.num_directionsnum_directions self.topktopk self.deviceself.set_device(device)self.rnnnn.LSTM(input_size1,hidden_sizeself.hidden_size,batch_firstTrue,bidirectional(self.num_directions2))self.criterionnn.CrossEntropyLoss()self.prediction_layernn.Linear(self.hidden_size*self.num_directions,num_labels1)defforward(self,input_dict):yinput_dict[window_y].long().view(-1).to(self.device)self.batch_sizey.size()[0]xinput_dict[x].view(self.batch_size,-1,1).to(self.device)outputs,hiddenself.rnn(x.float(),self.init_hidden())logitsself.prediction_layer(outputs[:,-1,:])y_predlogits.softmax(dim-1)lossself.criterion(logits,y)return_dict{loss:loss,y_pred:y_pred}returnreturn_dictdefset_device(self,gpu-1):ifgpu!-1andtorch.cuda.is_available():devicetorch.device(cuda: str(gpu))else:devicetorch.device(cpu)returndevicedefinit_hidden(self):h0torch.zeros(self.num_directions,self.batch_size,self.hidden_size).to(self.device)c0torch.zeros(self.num_directions,self.batch_size,self.hidden_size).to(self.device)return(h0,c0)deffit(self,train_loader,epoches10):self.to(self.device)modelself.train()optimizeroptim.Adam(model.parameters())forepochinrange(epoches):batch_cnt0epoch_loss0forbatch_inputintrain_loader:lossmodel.forward(batch_input)[loss]loss.backward()optimizer.step()optimizer.zero_grad()epoch_lossloss.item()batch_cnt1epoch_lossepoch_loss/batch_cntprint(Epoch {}/{}, training loss: {:.5f}.format(epoch1,epoches,epoch_loss))defevaluate(self,test_loader):self.eval()# set to evaluation modewithtorch.no_grad():y_pred[]store_dictdefaultdict(list)forbatch_inputintest_loader:return_dictself.forward(batch_input)y_predreturn_dict[y_pred]store_dict[SessionId].extend(batch_input[SessionId].data.cpu().numpy().reshape(-1))store_dict[y].extend(batch_input[y].data.cpu().numpy().reshape(-1))store_dict[window_y].extend(batch_input[window_y].data.cpu().numpy().reshape(-1))window_prob,window_predtorch.max(y_pred,1)store_dict[window_pred].extend(window_pred.data.cpu().numpy().reshape(-1))store_dict[window_prob].extend(window_prob.data.cpu().numpy().reshape(-1))top_indicetorch.topk(y_pred,self.topk)[1]# b x topkstore_dict[topk_indice].extend(top_indice.data.cpu().numpy())window_predstore_dict[window_pred]window_ystore_dict[window_y]store_dfpd.DataFrame(store_dict)store_df[anomaly]store_df.apply(lambdax:x[window_y]notinx[topk_indice],axis1).astype(int)store_df.drop([window_pred,window_y],axis1)store_dfstore_df.groupby(SessionId,as_indexFalse).sum()store_df[anomaly](store_df[anomaly]0).astype(int)store_df[y](store_df[y]0).astype(int)y_predstore_df[anomaly]y_truestore_df[y]metrics{window_acc:accuracy_score(window_y,window_pred),session_acc:accuracy_score(y_true,y_pred),f1:f1_score(y_true,y_pred),recall:recall_score(y_true,y_pred),precision:precision_score(y_true,y_pred)}print([(k,round(v,5))fork,vinmetrics.items()])returnmetrics决策树分类方法importnumpyasnpfromsklearnimporttreefrom..utilsimportmetricsclassDecisionTree(object):def__init__(self,criteriongini,max_depthNone,max_featuresNone,class_weightNone): The Invariants Mining model for anomaly detection Arguments --------- See DecisionTreeClassifier API: https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html Attributes ---------- classifier: object, the classifier for anomaly detection self.classifiertree.DecisionTreeClassifier(criterioncriterion,max_depthmax_depth,max_featuresmax_features,class_weightclass_weight)deffit(self,X,y): Arguments --------- X: ndarray, the event count matrix of shape num_instances-by-num_events print( Model summary )self.classifier.fit(X,y)defpredict(self,X): Predict anomalies with mined invariants Arguments --------- X: the input event count matrix Returns ------- y_pred: ndarray, the predicted label vector of shape (num_instances,) y_predself.classifier.predict(X)returny_preddefevaluate(self,X,y_true):print( Evaluation summary )y_predself.predict(X)precision,recall,f1metrics(y_pred,y_true)print(Precision: {:.3f}, recall: {:.3f}, F1-measure: {:.3f}\n.format(precision,recall,f1))returnprecision,recall,f1篇幅有限更多详细设计见设计论文11 最后项目包含内容一万五千字 完整详细设计论文 项目分享:见文末!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询