freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

SEMA:一款基于符号执行的恶意软件分析工具
Alpha_h4ck 2024-09-29 17:46:46 139816
所属地 广西

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

# 恶意软件分析 # 符号执行 # 恶意软件检测
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1023 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录