利用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. R的极客理想系列文章--转载

    http://blog.fens.me/series-r/ R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在 ...

  2. Codeforces Round #290 (Div. 2) E. Fox And Dinner 网络流建模

    E. Fox And Dinner time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  3. 在使用Java8并行流时的问题分析

    最近在使用Java8的并行流时遇到了坑,线上排查问题时花了较多时间,分享出来与大家一起学习与自查 // 此处为坑 List<Java8Demo> copy = Lists.newArray ...

  4. SqlServer中 将某个表的某个字段改个默认值

    ALTER TABLE [dbo].[表名] ADD CONSTRAINT [DF_表名_列名] DEFAULT ((默认值)) FOR [列名] ALTER TABLE QA_API ADD CON ...

  5. MVC数据列表展示【三】

    一.控制器向视图传递参数的两种形式:使用到的技术有EF,linq表达式,StringBuilder,相关技术都可以在我的博客园中找到详细的技术介绍. 1. 第一种是通过字符通过foreach循环拼接将 ...

  6. LRN(local response normalization--局部响应标准化)

    LRN全称为Local Response Normalization,即局部响应归一化层,LRN函数类似DROPOUT和数据增强作为relu激励之后防止数据过拟合而提出的一种处理方法.这个函数很少使用 ...

  7. echarts 拼图和折线图的封装 及常规处理

    1.html <div id="wrap"></div> 2.js ; (function ($) { $.fn.extend({ echartsPie: ...

  8. 对Maven项目进行强制更新

    选中项目 然后 选中Force Update of Snapshots/Releases,点击OK即可. 此时pom.xml就不会报错了.

  9. 如何跳过开机密码进入windows系统

    工具:安装好PE系统的u盘一个. 开机时按F12(每个电脑不同)进入PE系统,将c盘目录下的SAM文件拷入自己的u盘内.SAM文件的位置:  C:\WINDOWS\system32\config\SA ...

  10. English trip Spoken English & Word List(updating...)

    Word List 词汇 Square  英 [skweə]  美 [skwɛr]  adj. 平方的:正方形的:直角的:正直的. 使成方形:与…一致 vi. 一致:成方形 n. 平方:广场:正方形 ...