机器学习&恶意代码检测简介
Malware detection
可执行文件简介
ELF(Executable Linkable Format)
linux下的可执行文件格式,按照ELF格式编写的文件包括:.so、.a等
PE(Portable Executable)
windows下的可执行文件格式,按照PE格式编写的文件包括: .dll、.lib、.exe等
参考文献【3】中对ELF的各个字段作了详细介绍

Linux和Windows可执行文件分类:
| ELF文件类型 | 说明 | 实例 |
|---|---|---|
| 可重定位文件(Relocatable File) | 包含了代码与数据,可以用来连接成可执行文件或共享目标文件,如目标文件与静态链接库 | Linux的.o与.a,Windows的.obj与.lib |
| 共享目标文件(Shared Object File) | 包含了代码和数据,主要有两种用途,一是与目标文件或其它共享目标文件链接成新的共享目标文件,二是与可执行文件结合,作为进程映像的一部分来运行 | Linux的.a,Windows的.dll |
| 可执行文件(Executable File) | 包含了可直接执行的程序 | Linux下无后缀的ELF可执行文件,Windows的.exe文件 |
| 核心转储文件(Core Dump File) | 当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件 | Linux下的core dump |
检测方法概述
可以初步分为两类 [4,5]:
静态检测:不需要执行程序(如直接使用反汇编后的代码)
滑动窗口字节或熵统计、PE头IAT特征、可打印字符、PE元信息等
动态检测:在沙箱执行程序
API调用序列、系统调用序列、api图 [6]
静态检测方法:
- 基于OPcode、二进制代码,使用NLP方法
- 基于二进制代码,生成灰度图,使用图像方法
- 字节直方图或字节熵直方图
- 反汇编为汇编语言,使用NLP方法
- 反汇编后得到API调用序列,根据API调用序列使用NLP方法或图论
- 直接根据源恶意程序中的可打印字符串或者图片
动态检测方法:
- 在沙箱运行,得到动态执行数据(进程详情),根据API调用序列使用NLP方法或图论
优缺点:
静态不需要运行,快速、安全;对加密、混淆程序检测不适用
动态需要执行,不太安全,但可以应对加密、混淆程序检测
公开数据集:
EMBER[15]
SoReL-20M[16]
资源及参考文献
【1】PE/ELF/Mach-O之比较. https://www.jianshu.com/p/21850560caf0
【2】认识目标文件的格式——a.out COFF PE ELF
【3】ELF文件格式学习总结. https://www.cnblogs.com/sayhellowen/p/802b5b0ad648e1a343dcd0f85513065f.html
【4】基于机器学习的恶意代码检测技术详解. https://blog.csdn.net/Eastmount/article/details/120421043
【5】Survey of Machine Learning Techniquesfor Malware Analysis. 2019
【6】graph2vec: Learning Distributed Representations of Graphs
【7】Malware Images: Visualization and Automatic Classification. https://vision.ece.ucsb.edu/sites/default/files/publications/nataraj_vizsec_2011_paper.pdf
【8】在线分析工具的重新评测. https://www.52pojie.cn/thread-871410-1-1.html
【9】阿里云恶意程序检测https://tianchi.aliyun.com/competition/entrance/231694/information
【10】https://xz.aliyun.com/t/3106, https://xz.aliyun.com/t/3704
【11】Handling webshell attacks: A systematic mapping and survey. 2021
【12】Detecting unknown malicious code by applying classification techniques on OpCode patterns. https://security-informatics.springeropen.com/track/pdf/10.1186/2190-8532-1-1.pdf
【13】DataCon2020 恶意代码分析.https://zhuanlan.zhihu.com/p/187535672
【14】恶意代码分类. http://blog.moonsea.ac.cn/Malware-Classification. http://drops.xmd5.com/static/drops/tips-8151.html. http://blog.moonsea.ac.cn/Malcode-ngram-opcode
【15】EMBER: An Open Dataset for Training Static PE Malware Machine Learning Models. https://arxiv.org/pdf/1804.04637.pdf
【16】SOREL-20M: A LARGE SCALE BENCHMARK DATASET FOR MALICIOUS PE DETECTION. https://arxiv.org/pdf/2012.07634.pdf
【17】Novel Feature Extraction, Selection and Fusion forEffective Malware Family Classification. 2016
github
https://github.com/malicialab/avclass
https://github.com/elastic/ember
https://github.com/sophos-ai/SoReL-20M
android malware
DL-Droid: Deep learning based android malware detection using real devices
DREBIN: Effective and Explainable Detection of Android Malware in Your Pocket
API
MalDAE: Detecting and explaining malware based on correlation and fusion of static and dynamic characteristics
MAAR: Robust features to detect malicious activity based on API calls, their arguments and return values
API GRAPH
Dynamic Android Malware Classification Using Graph-Based Representations
behaviour
Behavior-based anomaly detection on big data https://ro.ecu.edu.au/cgi/viewcontent.cgi?article=1182&context=ism
AMAL: High-fidelity, behavior-based automated malware analysis and classification https://www.sciencedirect.com/science/article/pii/S0167404815000425#bib37
DTB-IDS: an intrusion detection system based on decision tree using behavior analysis for preventing APT attacks https://link.springer.com/content/pdf/10.1007/s11227-015-1604-8.pdf
Transformer
Bert恶意软件. https://www.cnblogs.com/bitterz/p/14000826.html. https://github.com/bitterzzZZ/Bert-malware-classification
Malware Detection on Highly Imbalanced Data through Sequence Modeling
MALBERT: USING TRANSFORMERS FOR CYBERSECURITY AND MALICIOUS SOFTWARE DETECTION. https://arxiv.org/pdf/2103.03806.pdf
PalmTree: Learning an Assembly Language Model for Instruction Embedding. CCS 2021
机器学习&恶意代码检测简介的更多相关文章
- 恶意代码检测工具 -- Mathematics Malware Detected Tools
Mathematics Malware Detected Tools 重要:由于缺少测试数据,部分结论可能不正确.更多更准确的结论,还需要进行大量实验. 概述 mmdt(Mathematics Mal ...
- 机器学习&恶意代码动态检测
目录 写在前面 1 基于API调用的统计特征 2 API序列特征 3 API调用图 4 基于行为的特征 references: 写在前面 对恶意程序动态检测方法做了概述, 关于方法1和2可以参考阿里云 ...
- 网站图片挂马检测及PHP与python的图片文件恶意代码检测对比
前言 周一一早网管收到来自阿里云的一堆警告,发现我们维护的一个网站下有数十个被挂马的文件.网管直接关了vsftpd,然后把警告导出邮件给我们. 取出部分大致如下: 服务器IP/名称 木马文件路径 更新 ...
- 机器学习&恶意代码静态检测
目录 分析工具 方法概述 二进制灰度图 字节(熵)直方图 字符串信息 ELF结构信息 源码分析与OPcode FCG references: 分析工具 readelf elfparser ninja ...
- 基于深度学习的安卓恶意应用检测----------android manfest.xml + run time opcode, use 深度置信网络(DBN)
基于深度学习的安卓恶意应用检测 from:http://www.xml-data.org/JSJYY/2017-6-1650.htm 苏志达, 祝跃飞, 刘龙 摘要: 针对传统安卓恶意程序检测 ...
- 【CISP笔记】安全漏洞与恶意代码(2)
恶意代码自我保护 进程保护 进程守护 超级权限 检测对抗 反动态调试 反静态调试 恶意代码检测技术 特征码扫描 沙箱技术 行为检测 恶意代码分析技术 静态分析 需要实际执行恶意代码,它通过对其二进制文 ...
- 基于PU-Learning的恶意URL检测——半监督学习的思路来进行正例和无标记样本学习
PU learning问题描述 给定一个正例文档集合P和一个无标注文档集U(混合文档集),在无标注文档集中同时含有正例文档和反例文档.通过使用P和U建立一个分类器能够辨别U或测试集中的正例文档 [即想 ...
- Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究
转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...
- 【阿里聚安全·安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone
本周的七个关键词: 外星恶意代码 丨 任意解锁iPhone 丨 安卓9.0 丨 黑客攻击医疗设备 丨 仙女座僵尸网络 丨 苹果联合创始人被骗比特币 丨JavaScript -1- [恶意代码] ...
随机推荐
- 工作簿合并(Excel代码集团)
同一文件夹内N个工作簿 ,每个工作簿里N个工作表,最终合并到一个工作表里的代码. 假设每个表格结构相同,第一行为标题,第二行为表头,表头内容固定,行数不固定,列固定14,工作表数量不固定,工作簿数量不 ...
- Tornadofx学习笔记(4)——IconTextFx开源库,整合5000+个字体图标
JavaFx中其实也可以直接使用字体图标iconfont的,只需要加载ttf字体文件,之后设置unicode即可,具体可以看我给出的代码 既然JavaFx可以,那么以JavaFx为基础的Tornado ...
- 自己实现一个Electron跨进程消息组件
我们知道开发Electron应用,难免要涉及到跨进程通信,以前Electron内置了remote模块,极大的简化了跨进程通信的开发工作,但这也带来了很多问题,具体的细节请参与我之前写的文章: http ...
- 误入 GitHub 游戏区,意外地收获颇丰
这天中午,我和往常一样就着美食视频吃完午饭,然后起身泡了一杯"高沫". 我闻着茶香享受着午后的阳光,慵懒地坐在工位上习惯性的打开 GitHub 游荡,酝酿着睡意. 误打误撞,我来到 ...
- CF208A Dubstep 题解
Content 有一个字符串被变换了.其中在这个字符串的前面加了 \(\geqslant 0\) 个 WUB,每个单词(由空格间隔)之间加了 \(\geqslant 1\) 个 WUB,在这个字符串的 ...
- Java的垃圾回收机制:强制回收System.gc() Runtime.getTime().gc()
垃圾回收 当引用类型的实体,如对象.数组等不再被任何变量引用的时候.这块占用的内存就成为了垃圾.JVM会根据自己的策略决定是回收内存 注意: 垃圾回收只回收内存中的对象,无法回收物理资源(数据库连接, ...
- python-mysql-replication原理分析
源码地址:https://github.com/noplay/python-mysql-replication 文件解析: ├── binlogstream.py ├── bitmap.py ├── ...
- [云原生]Kubernetes - 集群搭建(第2章)
目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...
- 基于Spring MVC + Spring + MyBatis的【学生管理管理系统】
资源下载:https://download.csdn.net/download/weixin_44893902/45602690 练习点设计:模糊查询.删除.新增 一.语言和环境 实现语言:JAVA语 ...
- Android程序设计基础作业目录 (作业笔记)
Android程序设计基础 • [目录] 第1章 Android程序入门 >>> 1.2.4 安装并配置 Android Studio 开发工具和 Genymotion 模拟器. 1 ...