利用ML&AI判定未知恶意程序

导语:0x01、前言 在上一篇ML&AI如何在云态势感知产品中落地中介绍了,为什么我们要预测未知恶意程序,传统的安全产品已经无法满足现有的安全态势。那么我们要使用新的技术手段武装我们的安全产品,通过大数据的手段更好的解决未知恶意程序

0x01、前言

在上一篇ML&AI如何在云态势感知产品中落地中介绍了,为什么我们要预测未知恶意程序,传统的安全产品已经无法满足现有的安全态势。那么我们要使用新的技术手段武装我们的安全产品,通过大数据的手段更好的解决未知恶意程序给我们带来的危害。

0x02、落地技术架构

一、如何检测

上篇文章讲了大致的落地方法,本文主要是给大家暴露更多的技术细节。

1、IDS Agent还原文件会计算一下MD5hash值与FIleHash缓存系统对比一下,如果有则直接报告为恶意软件,并且附上恶意软件家族分类,如果没有根据聚类算法分成不同的未知分类,不存储该文件,更新缓存,把发生的时间和次数记录一下,为下一步流行度统计使用。

2、如果没有这个文件,那么存储到对象存储(公有云IAAS组件,OSS)。存储完成后向下一个环节投递,发出kafka Topic消息给主程序。设计这个是因为在公有云环境下需要鉴定的文件是海量的,需要一套大数据流转系统缓存。

3、主程序使用多线程的方式启动多个处理单元。接收到kafka消息后,从消息中取出OSS的文件路径,然后下载文件到本地,然后调用动态沙箱的文件送检API接口传递到下一个环节。然后等待沙箱回调函数,有回调消息后,获取沙箱的report,然后把相关信息填充到kafka Topic中向下传递。当然中间可以加数据补齐的流程等。在这有两个分支

分支一:把APICall信息传递给SparkMlib库做动态文件二分类器判断。这里主要是使用GBDT、XGBOOST (具体使用哪个算法需要看准确率、召回率 、F1_score 最终的结果选定)

分支二:网络流量从沙箱镜像出来,然后向网络重放一下。通过异常流量检测引擎,这四个检测又是4个ML&AI判断模型。

恶意SSL流量检测

特征工程,有具体意义特征->CNN

·flowMetadata[上行字节数/下行字节数/上行报数/下行包数/持续时间]

·sequence of packet[长度序列/间隔时间序列]

·Byte distribution[字节分布概率]

·TLS header[TLS加密套件/TLS扩展/公钥长度]

前N个包payload 直接转化成图像CNN

合并两个检测结果判断恶意SSL流量

DNS异常域名检测

通过LSTM聚类的方法,找出高度关联的域名和独立点。孤立点设为可疑域名。

DGA域名检测

特征工程主要包含以下3点

·域名随机性(随机性和熵)

·域名长度较长

·n-gram(bigram(相邻双字) )

隐藏通讯信道检测

使用随机森林算法

4、主程序同时需要做静态文件检测,根据不同文件类型送入到不同的类型静态文件分类器。

针对PE/ELF文件处理流程

需要通过yara文件简单判断一下是否加壳&加密。

未加壳&加密经过静态反编译服务中,计算出汇编序列,然后送入到静态PE/ELF分类器判断。

针对其它类型文件,需要不同的ML学习模型判断。

比如说脚本文件powershell,调研一般都有不同的操作码。这都需要深耕细作。

还有比如说webshell检测,也需要对不同的webshell做不同的处理。php马是一个很典型的例子,还有菜刀等。

5、检测结果都发往决策中心。根据多类决策树判断。得出最终结果发往恶意文件家族分类器。

恶意文件家族分类一般使用两种多分类器方法。

机器学习算法推荐使用k-means

深度学习方法建议使用卷积神经网络CNN算法

最后建议再过一遍聚类,找出孤立点。

6、形成恶意文件家族和未知恶意分类。最终存储到ElasticSearch方便提供给前端用户展示。

二、如何训练

通过上述全栈机器学习和深度学习算法的描述,所有模型加起来15+。那么这么多模型如何训练,如何更新是本次换“芯”最重要的部分。

1、那么针对机器学习部分,我们需要保存所提交的样本,无论什么形式都通过流量的形式发送到kafka最终存储到HIVE重,然后导入到spark mlib中进行模型计算。当然,还有一些公网中加入的黑白样本,也是通过同样的形式进入到这个循环中。

2、那些针对深度学习的模型,需要我们建立深度计算GPU服务集群,设备需求规格:24核128G内存/流量50Gbps(20% https流量) NVidia GeForceGTX1080 GPU https:7000QPS计算文本和图像加起来需要8台物理服务器。恶意软件病毒家族分类看规模大约8台可以满足目前带宽情况下的文件还原速度(25万个样本/day)。

3、在有限的资源下,大约1周更新一次所有模型。

0x03、总结

通过以上描述,大家可以基本了解未知威胁检测的ML&AI的大致原理。剩下的就是如何代码实现其功能。当然算法调优也是一个漫长的过程。最终实现提升态势感知产品自动化程度,以及实现安全能力的智能化输出。

如若转载,请注明原文地址: http://www.4hou.com/technology/13181.html

利用ML&AI判定未知恶意程序——里面提到ssl恶意加密流检测使用N个payload CNN + 字节分布包长等特征综合判定的更多相关文章

  1. 如何利用AI识别未知——加入未知类(不太靠谱),检测待识别数据和已知样本数据的匹配程度(例如使用CNN降维,再用knn类似距离来实现),将问题转化为特征搜索问题而非决策问题,使用HTM算法(记忆+模式匹配预测就是智能),GAN异常检测,RBF

    https://www.researchgate.net/post/How_to_determine_unknown_class_using_neural_network 里面有讨论,说是用rbf神经 ...

  2. Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究

    转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...

  3. [转载]中情局数千份机密文档泄露:各种0day工具、恶意程序应有尽有

    转载:http://www.freebuf.com/news/128802.html 维基解密最近再度获取到了数千份文件——据说这些文件是来自CIA(中央情报局),文件细数了CIA所用的网络入侵工具及 ...

  4. 利用背景流量数据(contexual flow data) 识别TLS加密恶意流量

    识别出加密流量中潜藏的安全威胁具有很大挑战,现已存在一些检测方法利用数据流的元数据来进行检测,包括包长度和到达间隔时间等.来自思科的研究人员扩展现有的检测方法提出一种新的思路(称之为“dataomni ...

  5. rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用

    Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合:广义而言,Rootkit也可视为一项技术.   目录 1 rootkit是什么 2 rootkit的功能 root ...

  6. 从C#到Objective-C,循序渐进学习苹果开发(5)--利用XCode来进行IOS的程序开发

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.前面几篇随笔主要介绍C#和O ...

  7. Rootkit Hunter恶意程序查杀

    恶意程序,恶意代码检测 下载:https://pkgs.org/search/rkhunter 安装:rpm -ivh rkunter* Installed: #需要先安装  lsof.x86_64 ...

  8. 【转】利用MVC模式开发Java应用程序[组图]

    Java是一种面向对象的语言,是实现面向对象编程的强大工具.我们在实际编程中,应该运用并发挥其最大效能.但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大.中型程序,并不是一 ...

  9. 利用XCode来进行IOS的程序开发

    利用XCode来进行IOS的程序开发 本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换 ...

随机推荐

  1. springboot整合thymeleaf+tiles示例

    网上关于此框架的配置实在不多,因此想记录下来以防忘记 因为公司框架基于上述(公司采用gradle构建项目,楼主采用的是maven),所以楼主能少走些弯路: 1.创建springboot-maven项目 ...

  2. Spring-MVC依赖

    <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api& ...

  3. python win32api 如何用代码模拟点击网页confirm框的确定按钮

    mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser1.Document.DomDocument; doc.parentWindo ...

  4. go helloworld

    // Sample program to show how a bytes.Buffer can also be used // with the io.Copy function. package ...

  5. Ajax同步

    转载自:https://blog.csdn.net/xiegongmiao/article/details/78217386 AJAX中根据async的值不同分为同步(async = false)和异 ...

  6. Windows下tomcat启动一闪而过

    1.用记事本打开tomcat/bin/setclasspath.bat 2.添加两行代码,jdk和jre的根目录,相当于直接给出JAVA_HOME和JRE_HOME路径 set JRE_HOME=D: ...

  7. Codeforces 374C - Inna and Dima

    374C - Inna and Dima 思路:dfs+记忆化搜索 代码: #include<bits/stdc++.h> using namespace std; #define ll ...

  8. 动态规划-Race Car

    2018-10-26 21:06:54 问题描述: 问题求解: 方法一.BFS 首先将使用BFS进行解空间的遍历,也就是将本问题转化成了搜索问题,但是有两个地方需要注意: 1.状态保存的问题,每个位置 ...

  9. 子序列的按位或 Bitwise ORs of Subarrays

    2018-09-23 19:05:20 问题描述: 问题求解: 显然的是暴力的遍历所有的区间是不可取的,因为这样的时间复杂度为n^2级别的,对于规模在50000左右的输入会TLE. 然而,最后的解答也 ...

  10. Java访问ActiveMQ

    1.下载安装ActiveMQ 下载可以去官网下载:http://activemq.apache.org/download.html.我们这里使用windows测试,所以下载windows版本即可. 2 ...