freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

python_mmdt:从2到3,mmdt_hash的在线使用(四)
2022-01-21 17:01:11
所属地 四川省

概述

python_mmdt:一种基于敏感哈希生成特征向量的python库(一)我们介绍了一种叫mmdt_hash(敏感哈希)生成方法,并对其中的概念做了基本介绍。

python_mmdt:从0到1--实现简单恶意代码分类器(二)我们介绍了基于mmdt_hash的一种简单恶意代码分类器应用。

python_mmdt:从1到2--实现基于KNN的机器学习恶意代码分类器(三)我们介绍基于mmdt_hash的机器学习恶意代码分类器应用。

本篇,我们介绍如何使用mmdt_hash实现在线恶意文件检测

项目地址

github代码地址:python_mmdt

pypi包地址:python_mmdt

安装方法

Linux

使用pip进行安装,安装命令:pip install python_mmdt

Windows

建议使用.whl发行包进行安装,发行包下载地址:

github: 0.3.1版本 - download

pypi: 0.3.1版本 - download

安装命令:pip install python_mmdt-0.3.1-cp38-cp38-win_amd64.whl

MacOS

安装cmake,安装命令:brew install cmake

使用pip安装,安装命令:pip install python_mmdt

使用方式

1. 命令行快捷使用

pip install python_mmdt命令安装成功之后,系统会添加mmdt-scan-online命令,使用mmdt-scan-online可快速实现在线扫描,如下所示:

# 第一次执行会提交任务,并返回任务状态
[root@VM-0-8-centos ~]# mmdt-scan-online 2f04b8eb993ca4a3d98607824a10acfb
{
    "sha1": "a5ad744088e2739dc8b6a0622432106158d0abd8",
    "md5": "2f04b8eb993ca4a3d98607824a10acfb",
    "file_name": "2f04b8eb993ca4a3d98607824a10acfb",
    "message": "查询任务已添加至查询队列,当前队列中还有0个任务",
    "status": 20001,
    "data": {}
}

# 第二次执行会获取任务结果,返回10个最相似文件的标签及其sha1
[root@VM-0-8-centos ~]# mmdt-scan-online 2f04b8eb993ca4a3d98607824a10acfb
{
    "sha1": "a5ad744088e2739dc8b6a0622432106158d0abd8",
    "md5": "2f04b8eb993ca4a3d98607824a10acfb",
    "file_name": "2f04b8eb993ca4a3d98607824a10acfb",
    "message": "success",
    "status": 20000,
    "data": {
        "label": "APT28",
        "labels": [
            {
                "label": "APT28",
                "ratio": "20.00%"
            },
            {
                "label": "virlock",
                "ratio": "50.00%"
            },
            {
                "label": "coinminer",
                "ratio": "30.00%"
            }
        ],
        "similars": [
            {
                "hash": "a5ad744088e2739dc8b6a0622432106158d0abd8",
                "label": "APT28",
                "sim": 1.0
            },
            {
                "hash": "9001f4cfe62367a282efc08b072a13a5e2e403db",
                "label": "APT28",
                "sim": 0.9896245046624919
            },
            {
                "hash": "0d3d452a7e8d7d328bfe9862cbcee33ad1ce4cf4",
                "label": "virlock",
                "sim": 0.8511449567066024
            },
            ...
        ]
    }
}

2. 开发使用

pip install python_mmdt命令安装成功以后,可参考mmdt-scan-online命令行工具源码使用python_mmdt库,实现在线扫描:

# -*- coding: utf-8 -*-
import sys
import json
import requests
from python_mmdt.mmdt.common import gen_md5, gen_sha1
from python_mmdt.mmdt.mmdt import MMDT
def mmdt_scan_online():
    # 构造mmdt对象
    mmdt = MMDT()
    # 命令行参数
    file_name = sys.argv[1]
    # 计算文件md5、sha1、mmdt
    file_md5 = gen_md5(file_name)
    file_sha1 = gen_sha1(file_name)
    file_mmdt = mmdt.mmdt_hash(file_name)
    data = {
        "md5": file_md5,
        "sha1": file_sha1,
        "file_name": file_name,
        "mmdt": file_mmdt,
        "data": {}
    }
    # 提交数据,获取结果
    r = requests.post(url='http://146.56.242.184/mmdt/scan', json=data)
    r_data = r.json()
    print(json.dumps(r_data, indent=4, ensure_ascii=False))
def main():
    mmdt_scan_online()
if __name__ == '__main__':
    main()

特别的说明

  1. 本工具不收集任何文件,不用担心文件泄露,仅会上传必须的基本信息,包括5个字段:

    • 文件md5:必须

    • 文件sha1:必须

    • 文件名称file_name:必须

    • 文件敏感哈希mmdt:必须

    • 扩展字段data:可选,后续可用于控制后台进行检测时的参数

  2. 上传信息与结果获取使用同一个web api接口:/mmdt/scan

    • 若上传文件哈希不在缓存中,则提交至任务队列,后台进行检测,检测完成后将结果写入缓存

    • 若上传文件哈希在缓存中,则直接返回检测结果

  3. 返回结果字段说明:

    • 若上传文件哈希不在缓存中,则返回任务状态信息,主要包括当前任务在队列中的排号及任务状态(详情查看message字段)

    • 若上传文件哈希在缓存中,则返回检测结果,检测结果在data字段,lable字段为最相似样本的标签,labels字段为最相似10个样本的标签统计,similars字段为最相似10个样本的信息,包括文件哈希文件标签文件相似度这3个字段

  4. 后台使用KNN机器学习算法,实现mmdt哈希的相似匹配

  5. 当前后端收集的恶意文件mmdt哈希文件大小在23M左右

  6. 匹配效果好的文件类型为二进制文件,如PEELFpdfrtf

  7. 匹配效果差的文件类型为压缩包文件,如apkdocxziprar等,后续需要调整为解包检测

示例截图

提交任务

image

获取结果

image

# web服务 # 机器学习 # KNN # 敏感哈希 # 相似度
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录