NDSS
MINOS*: A Lightweight Real-Time Cryptojacking Detection System
链接https://www.ndss-symposium.org/wp-content/uploads/ndss2021_4C-4_24444_paper.pdf
总的来说,是因为挖矿类恶意软件因为POW等机制,需要通过相同的哈希算法来实现统一的POW方案,因此提取恶意软件的代码进行灰度图化后相似度很高,通过这种方法来识别恶意挖矿软件。
附:什么是POW和POS,二者区别联系
来自百度知道https://zhidao.baidu.com/question/1928266543411253787.html
区别是:
1、POW机制:工作量证明机制即对于工作量的证明,是生成要加入到区块链中的一笔新的交易信息(即新区块)时必须满足的要求。在基于工作量证明机制构建的区块链网络中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。
2、POS机制:权益证明要求证明人提供一定数量加密货币的所有权即可。权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工本身。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。
第一章
1.作者指出先存挖矿类恶意软件,劫持受害者的计算资源用于挖矿等用途
2.文中提到现存针对这种挖矿软件的常用方法,是针对miner、coin、Coinhive等常用关键字来做黑名单过滤,或是使用动态分析,通过提取内存和网络流量特征来识别这些恶意软件,但是这么做的缺点是开销较大,且依然存在误报
3.作者提出的方法是通过将Wasm(WebAssembly) 二进制文件转化为灰度图像,然后通过卷积神经网络来识别
第二章
1.文中介绍了Wasm, 这是一种低级的二进制指令格式,可以在Google Chrome 、 Mozilla Firefox 、 Microsoft Edge 和 Safari上运行。恶意软件作者用 C/C++ 编写代码来执行挖矿功能,使用 Emscripten 工具将其编译为 Wasm 模块。然后通过 JavaScript 函数调用Wasm 模块
2.文中给出了一段灰度图化的样例,WASM模块分为12个主要部分
第三章
第三章
1.文中提到现有检测挖矿程序的方法主要分为三类,基于浏览器的检测,基于主机的检测(针对在主机上作为恶意软件运行的独立恶意挖矿软件),以及基于网络的检测
2.文中指出现阶段挖矿软件的重心从JavaScript 转移到了WebAssembly,而之前的研究没有考虑到这种变化
3. 基于浏览器的挖矿检测,使用哈希和堆栈操作所花费的时间作为特征,或是记录特定指令的运行次数作为特征,使用cpu,内存变化及网络流量作为特征。
基于主机的挖矿检测,使用Windows PE文件的操作码序列和系统调用顺序作为特征,或是使用静态特征(即熵、header、section和 函数信息)和API调用相结合来识别
基于网络的检测,通过靠 Apache Spark Streaming 库和增量 ML 模型来识别挖矿流量
第四章
1.作者指出现阶段恶意挖矿软件会通过混淆字符串和函数名称来隐藏自己
2. 作者给出了一种识别流程,Wasm 二进制自动收集器将 Wasm 二进制文件下载到指定文件夹。 然后预处理器将二进制文件转换为灰度图像并将它们提供给 Wasm 分类器。 Wasm 分类器中预先训练的 CNN 将每个二进制文件的图像分类为恶意或良性。最后,通知程序接收分类结果并在结果表明存在恶意挖掘活动时提醒用户。
第五章
1.作者指出挖矿类恶意软件受到POW机制的限制,需要通过相同的哈希算法来实现统一的POW方案,作者通过灰度图化举例说明这些挖矿类恶意软件具有相似性,第一行是恶意挖矿软件,第二行是用于游戏或者其他的良性软件
2.分类器是CNN,样本包括150个良性WASM文件和150个恶意WASM文件,由 3 组卷积层组成,然后是最大池层,每个连续的卷积层(16、32 和 64)中的滤波器数量不断增加。每个卷积层使用的内核大小设置为(3,3),而每个最大池层的池大小设置为(2,2)
第六章
1.作者提到了具体灰度图化的方法,Wasm 模块二进制由一系列十六进制数字组成。这个十 六进制值向量可以修改并转换为灰度图像。为方便这样的转换,首先将 Wasm 二进制转换为 8 位无符号整 数向量 (uint8),然后重新整形为二维数组。然后将这个 重新整形的数组除以 255 以将每个整数表示为一个像素, 该像素的值范围为 0 到 255(0 为黑色,255 为白色),伪代码如下
第 15-16 行对创建的数 组进行整形,并将其转换为值范围从 0 到 255 的 8 位 无符号整数数组 (uint8)。数组中每个整数的值代表像素 的亮度,范围从黑色到白色(0 到 255)。在第 17-18 行,图像数组的大小被调整为 100 x 100 的常见大小, 并且像素值通过将数组除以 255 被归一化到 0 到 1 的 范围内。进行这种归一化是因为它更容易模型来处理具有 较小范围值的输入数组。第 19 行将数组重塑为 CNN 可 以接受的四维数组作为输入
2.使用 RMSprop 优化器,学习倍率0.0001,50个epcho。这个优化器在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度
3.数据集来源有VirusTotal,NoCoin(Chrome、Firefox 和 Opera 上可用的浏览器扩展,旨在使用黑名单阻止挖矿),MadeWithWasm(展示 使用 WebAssembly 的应用程序、项目和网站的网站)