机器学习&恶意代码静态检测
分析工具
readelf
elfparser
ninja
GDB
IDAPro
Strings
python库:pyelftools、lief
方法概述
| 数据/特征 | 算法模型 | 优点 | 缺点 |
|---|---|---|---|
| 二进制文件 | byte-ngram [7]、malConv [8] | 不需要解析格式 | 序列超长,malconv卷积复杂度高 |
| 二进制文件 | 图像处理[1] | 不需要解析格式 | 文件大小不同,图像大小不一致;加壳的数据分布会被打乱 |
| 二进制文件 | 字节(熵)直方图[2] | 不需要解析格式 | |
| 字符串信息 | nlp | 获取信息方便 | 缺少很多信息;数据格式乱 |
| ELF结构信息 | ML [3] [6] | 格式解析复杂;特征工程多 | |
| 反汇编asm | 源码分析、opcode [4,5] | 贴近人读信息 | 需要反汇编 |
| 反汇编asm | FCG | 利用程序执行逻辑 | 需要反汇编;有难度 |
| 怎么从原始elf样本中提取特征?下面的方法 |
二进制灰度图

参考[1]
然后将不同大小的图片归一化,作为后续算法模型的输入
字节(熵)直方图
统计0-255字节的直方图;
使用1024字节长度,步长256的滑动窗口,每个窗口生成1024个字节熵,实际是一个8*256大小的图,将其变为16*16的,在变为256维的向量 [2]。

字符串信息
使用strings命令扫描文件,结合ascii码之类
"__lseek64",
"__strndup",
"__gconv_modules_db",
", version ",
"expand_dynamic_string_token",
"pvalloc",
"_L_lock_4841",
"confstr",
"free_category",
"/etc/suid-debug",
"_IO_mem_sync",
"__pthread_rwlock_rdlock",
"__DTOR_LIST__",
"__strchrnul",
"__argz_stringify",
"pthread_cancel",
"__exit_funcs",
ELF结构信息

利用ELF文件的组成信息,[3]用了383个特征。
还有EMBER中提到的方法,例如导入导出表等[6]。
源码分析与OPcode
源码分析需要反汇编为汇编代码,使用大模型[4]

opcode使用,示例如下,图片来自[5]

FCG
DeepCG、Asm2vec
references:
【1】Malware Images: Visualization and Automatic Classification. https://vision.ece.ucsb.edu/sites/vision.ece.ucsb.edu/files/publications/nataraj_vizsec_2011_paper.pdf
【2】Deep Neural Network Based Malware Detection Using Two Dimensional Binary Program Features. https://www.cse.fau.edu/~xqzhu/courses/cap6619/deep.neural.network.based.malware.detection.pdf
【3】ELF-Miner: using structural knowledge and data mining methods to detect new (Linux) malicious executables. https://link.springer.com/content/pdf/10.1007/s10115-011-0393-5.pdf
【4】PalmTree: Learning an Assembly Language Model for Instruction Embedding. https://dl.acm.org/doi/pdf/10.1145/3460120.3484587
【5】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
【6】EMBER: An Open Dataset for Training Static PE Malware Machine Learning Models. https://arxiv.org/pdf/1804.04637.pdf. https://github.com/elastic/ember.
【7】An Investigation of Byte N-Gram Features for Malware Classification. http://www.edwardraff.com/publications/investigation_byte_ngrams.pdf
【8】MalConv: Malware Detection by Eating a Whole EXE. https://aaai.org/ocs/index.php/WS/AAAIW18/paper/viewFile/16422/15577
机器学习&恶意代码静态检测的更多相关文章
- 机器学习&恶意代码动态检测
目录 写在前面 1 基于API调用的统计特征 2 API序列特征 3 API调用图 4 基于行为的特征 references: 写在前面 对恶意程序动态检测方法做了概述, 关于方法1和2可以参考阿里云 ...
- JAVA代码静态检测之PMD
今天再次想启动Java代码静态检测工具的利用问题,主要再次尝试用了PMD,发现不少代码编码规范问题和好的代码建议,并学到不少自己之前没有注意到的Java方便的基础知识,感觉很不错,把相关明白的好的规则 ...
- 机器学习&恶意代码检测简介
Malware detection 目录 可执行文件简介 检测方法概述 资源及参考文献 可执行文件简介 ELF(Executable Linkable Format) linux下的可执行文件格式,按 ...
- 2018-2019-2 20165205《网络对抗技术》Exp4 恶意代码分析
2018-2019-2 20165205<网络对抗技术>Exp4 恶意代码分析 实验要求 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中 ...
- 20145304 Exp4 恶意代码分析
20145304 Exp4 恶意代码分析 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控 ...
- 恶意代码检测工具 -- Mathematics Malware Detected Tools
Mathematics Malware Detected Tools 重要:由于缺少测试数据,部分结论可能不正确.更多更准确的结论,还需要进行大量实验. 概述 mmdt(Mathematics Mal ...
- 网站图片挂马检测及PHP与python的图片文件恶意代码检测对比
前言 周一一早网管收到来自阿里云的一堆警告,发现我们维护的一个网站下有数十个被挂马的文件.网管直接关了vsftpd,然后把警告导出邮件给我们. 取出部分大致如下: 服务器IP/名称 木马文件路径 更新 ...
- Java静态检测工具/Java代码规范和质量检查简单介绍(转)
静态检查: 静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码检查代码检查包括代码走查.桌面检查.代码审查等,主要检查代码 ...
- 利用ML&AI判定未知恶意程序——里面提到ssl恶意加密流检测使用N个payload CNN + 字节分布包长等特征综合判定
利用ML&AI判定未知恶意程序 导语:0x01.前言 在上一篇ML&AI如何在云态势感知产品中落地中介绍了,为什么我们要预测未知恶意程序,传统的安全产品已经无法满足现有的安全态势.那么 ...
随机推荐
- mobile app 与server通信的四种方式
Have you ever wondered how the information gets into the application installed in your mobile device ...
- Table.FillDown填充Table.Fill…(Power Query 之 M 语言)
数据源: 任意列中包含空单元格 目标: 将空单元格填充为其上或其下单元格中的内容 操作过程: 选取指定列>[转换]>[填充]>[向下] 选取指定列>[转换]>[填充]&g ...
- Go 的 golang.org/x/ 系列包和标准库包有什么区别?
在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如: golang.org/x/net/html 和 net/html, golang.org/x/crypto 和 crypto. 那 ...
- JS代码日期格式化
function dateConvert(format,value) { var date = new Date(value); var o = { "M+" : date.get ...
- nim_duilib(8)之combo
introduction 更多控件用法,请参考 here 和 源码. 本文的代码基于这里 combo的更多用法,请参考源码中combo.h提供的函数,文末添加其提供的公有函数 xml文件添加代码 基于 ...
- 【LeetCode】217. Contains Duplicate 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典统计词频 使用set 排序 日期 [LeetCo ...
- 【LeetCode】994. Rotting Oranges 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS 日期 题目地址:https://leetco ...
- codeforces B. Island Puzzle
B. Island Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- 计算机视觉1->opencv4学习指南1 | 环境配置与例程
opencv虽然很有名,但是自己一直没怎么玩过,暑假的时候使用深度相机做项目,但负责的不是代码模块,也只是配好了环境,没有继续了解图像处理.最近电子实习老师有教这个东西,但是身边不少同学遇到了麻烦,所 ...
- Log4j 2.17.0 再曝漏洞,但不要惊慌!
最新消息!根据Log4j官网发布,2.17.0版本还存在漏洞! 上图来自Log4j2官网:https://logging.apache.org/log4j/2.x/ 漏洞编号:CVE-2021-448 ...