专栏名称: FreeBuf
国内关注度最高的全球互联网安全新媒体
目录
相关文章推荐
广州司法行政  ·  海珠区成立文商旅融合圈商事调解中心 ... ·  18 小时前  
广州司法行政  ·  海珠区成立文商旅融合圈商事调解中心 ... ·  18 小时前  
海峡都市报  ·  世间将再无松下电视 ·  昨天  
海峡都市报  ·  世间将再无松下电视 ·  昨天  
重庆市场监管  ·  该报年报了!祝新的一年生意兴隆! ·  昨天  
51好读  ›  专栏  ›  FreeBuf

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

FreeBuf  · 公众号  · 互联网安全  · 2024-10-02 09:30

正文


关于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_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-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

https://github.com/csvl/SEMA


FreeBuf粉丝交流群招新啦!
在这里,拓宽网安边界
甲方安全建设干货;
乙方最新技术理念;
全球最新的网络安全资讯;
群内不定期开启各种抽奖活动;
FreeBuf盲盒、大象公仔......
扫码添加小蜜蜂微信回复「加群」,申请加入群聊

https://an gr.io/
https://bazaar.abuse.ch/
https://docs.docker.com/engine/install/ubuntu/






请到「今天看啥」查看全文