SEMA:一款基于符号执行的恶意软件分析工具

admin 2024年10月3日15:42:43评论34 views字数 2294阅读7分38秒阅读模式

SEMA:一款基于符号执行的恶意软件分析工具

关于SEMA

SEMA是一款基于符号执行的恶意软件分析工具,该工具可以帮助广大研究人员轻松执行恶意软件分析任务。

SEMA:一款基于符号执行的恶意软件分析工具

SEMA 基于 angr,而angr则一种用于提取 API 调用的符号执行引擎。SEMA扩展了 ANGR,使用基于系统调用依赖关系图 (SCDG) 创建代表性签名的策略,这些 SCDG 可用于机器学习模块进行分类/检测。

工具架构

SEMA的工作原理如下:

1、收集来自不同恶意软件家族的标记二进制文件集合,并将其用作工具链的输入。

2、Angr是一个符号执行框架,用于以符号方式执行二进制文件并提取执行痕迹。为此,开发了不同的启发式方法来优化符号执行。

3、使用 Angr 提取与一个二进制文件相对应的多个执行跟踪(即使用的 API 调用及其参数),并使用多个图启发式方法收集在一起以构建 SCDG。

4、然后将这些得到的 SCDG 用作图形挖掘的输入,以提取同一家族的 SCDG 之间的公共图并创建签名。

5、最后,当需要对新样本进行分类时,将构建其 SCDG,并使用简单的相似性度量将其与已知家族的 SCDG 进行比较。

SEMA:一款基于符号执行的恶意软件分析工具

工具要求

1、Python 3.8

2、Docker >=26.1.3 , docker buildx, Docker Compose >=v2.27.0

3、radare2

4、libvirt-dev, libgraphviz-dev, wheel

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/csvl/SEMA.git

然后切换到项目目录中,使用下列命令构建和安装SEMA:

cd SEMA# Full installation (ubuntu)make build-toolchain;

Pypi安装

pip install sema_toolchainpython3 sema_scdg/application/SemaSCDG.py sema_scdg/application/configs/config.ini
工具使用

使用 Web 应用程序

首先启动容器:

make run-toolchain

这将启动 SCDG、分类器和 Web 应用服务。如果您只想使用 SCDG 或分类器,请参阅下面的具体部分。

等待容器启动,然后在浏览器上访问 127.0.0.1:5000。

要退出工具链,只需按 Ctrl+C,然后使用

make stop-toolchain

停止所有docker容器。

如果要删除所有图像:

docker rmi sema-web-appdocker rmi sema-scdgdocker rmi sema-classifier

仅使用 SemaSCDG

要仅使用 SemaSCDG,首先使用如下卷运行 SCDG 容器:

docker run --rm --name="sema-scdg" -v ${PWD}/OutputFolder:/sema-scdg/application/database/SCDG -v ${PWD}/ConfigFolder:/sema-scdg/application/configs -v ${PWD}/InputFolder:/sema-scdg/application/database/Binaries -p 5001:5001 -it sema-scdg bash

在此命令中:

第一卷对应于放置结果的输出文件夹。

第二个卷对应的文件夹包含将传递给docker的配置文件。

第三个匹配包含要传递给容器的二进制文件的文件夹。

以已经提供的文件为例,位于 sema_toolchain 文件夹内,运行:

docker run --rm --name="sema-scdg" -v ${PWD}/database/SCDG:/sema-scdg/application/database/SCDG -v ${PWD}/sema_scdg/application/configs:/sema-scdg/application/configs -v ${PWD}/database/Binaries:/sema-scdg/application/database/Binaries  -p 5001:5001 -it sema-scdg bash

如果你希望在容器运行时修改代码,请使用

docker run --rm --name="sema-scdg" -v ${PWD}/database:/sema-scdg/application/database -v ${PWD}/sema_scdg/application:/sema-scdg/application -p 5001:5001 -it sema-scdg bash

要运行实验,请在容器内运行:

python3 SemaSCDG.py configs/config.ini

或者如果你想使用 pypy3:

pypy3 SemaSCDG.py configs/config.ini

配置文件

参数放在配置文件中:configs/config.ini。您可以随意修改它或创建新的配置文件来运行不同的实验。

默认情况下, SCDG 的输出会被放入database/SCDG/runs/。如果您不使用卷,并且想要将一些运行从容器保存到主机,请使用:

make save-scdg-runs ARGS=PATH
许可证协议

本项目的开发与发布遵循BSD-2-Clause开源许可协议。

项目地址

SEMA

https://github.com/csvl/SEMA

原文始发于微信公众号(FreeBuf):SEMA:一款基于符号执行的恶意软件分析工具

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月3日15:42:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SEMA:一款基于符号执行的恶意软件分析工具https://cn-sec.com/archives/3228445.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息