SEMA:一款基于符号执行的恶意软件分析工具
2024-9-29 17:46:46 Author: www.freebuf.com(查看原文) 阅读量:4 收藏

关于SEMA

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

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

工具架构

SEMA的工作原理如下:

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

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

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

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

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

工具要求

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_toolchain

python3 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-app

docker rmi sema-scdg

docker 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:【GitHub传送门

参考资料

https://angr.io/

https://bazaar.abuse.ch/

https://docs.docker.com/engine/install/ubuntu/


文章来源: https://www.freebuf.com/sectool/412060.html
如有侵权请联系:admin#unsafe.sh