利用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. IIS7.5 错误代码0x8007007e HTTP 错误 500.19 - Internal Server Error

    今天在win2008+IIS7.5的环境中部署WCF服务后,一直出现无法打开的页面.具体错误信息如下: HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面 ...

  2. node.js基本概念简单解释

    1:什么是回调函数? 2:什么是同步异步 3:什么是I/O 4:什么是单线程/多线程 5:什么是阻塞/非阻塞 6:什么是事件 7:什么是事件驱动 8:什么是事件驱动的回调 9:什么是事件循环 解释: ...

  3. 【BZOJ】1830: [AHOI2008]Y型项链

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1830 直接枚举目标串是什么,目标串一定是三个字符串的某一个前缀(注意可能为空),然后判断一 ...

  4. go 内嵌对象类型

    demo1 // Sample program to show how to embed a type into another type and // the relationship betwee ...

  5. Spring boot 整合JSP开发步骤

    1. 新建Springboot项目,war <dependency> <groupId>org.springframework.boot</groupId> < ...

  6. AjaxHandler

    概要 AjaxHandler组件是在ASP.NET MVC Web应用程序中实现ajax功能的一系列扩展方法,该组件的最初的实现方法借鉴了网上流行的部分源代码, ,经过博主不断完善和改进后推出的比较成 ...

  7. swfupload上传图片

    项目结构 以及插件需要的文件如图所示 前端代码: <!DOCTYPE html> <html> <head> <title>SWFUpload</ ...

  8. maven 打包不同环境

    支持不同环境打包 1 pom添加如下配置: 1)添加指定打包id 区分各个环境 <profiles> <profile> <id>dev</id> &l ...

  9. VC_窗口exe_printf信息

    1. #include <io.h> #include <fcntl.h> #include <stdio.h> 2. void InitConsoleWindow ...

  10. java.io.FileNotFoundException异常,一是“拒绝访问”,二是“系统找不到指定路径”

    关于java.io.FileNotFoundException异常 因为这个异常抛出俩种情况:一是“拒绝访问”,二是“系统找不到指定路径” 这里只讲明什么时候抛拒绝访问,什么时候抛找不到指定路径. 原 ...