freeBuf
主站

分类

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

特色

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

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

如何使用EntropyReducer降低Payload的熵并进行混淆处理
2023-06-14 17:48:38
所属地 广西


关于EntropyReducer

EntropyReducer是一款针对Payload隐蔽性增强的安全工具,在该工具的帮助下,广大研究人员能够有效地降低Payload的熵,并对Payload代码使用串行链表进行混淆处理。

工作机制

EntropyReducer的算法由BUFF_SIZENULL_BYTES的值决定,下图显示的是当BUFF_SIZE被设置为4且NULL_BYTES被设置为2时,EntropyReducer组织和处理Payload代码的流程方式:

工具下载

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

git clone https://github.com/Maldev-Academy/EntropyReducer.git

接下来,将项目代码导入至Visual Studio并进行代码编译即可。

工具使用

EntropyReducer可以直接通过命令行来读取原始的Payload文件,并将混淆处理后的版本以相同文件名(带.ER前缀)的形式写入到输出目录中。

经过混淆处理后的最终版本Payload大小取决于BUFF_SIZE和NULL_BYTES的值,计算方式如下:

FinalSize = ((OriginalSize + BUFF_SIZE - OriginalSize % BUFF_SIZE ) / BUFF_SIZE) * (BUFF_SIZE + NULL_BYTES + sizeof(INT))

在自己的项目中使用EntropyReducer

我们可以直接将EntropyReducer.cEntropyReducer.h文件导入至自己的项目中,并调用相关的混淆/反混淆函数即可。

具体使用方法请参考项目提供的PoC/main.c文件。

工具输出样例

在下面的例子中,BUFF_SIZE被设置为了3,NULL_BYTES的值被设置为了1。

原始Payload的第一个数据块如下(FC 48 83):

相同的Payload代码块,但位于不同的偏移量:

工具处理效果

Megasploit生成的x64 calc Shellcode的熵为5.883:

相同的文件使用AES加密后的熵为7.110:

RC4算法处理相同文件后的熵结果为7.210:

使用EntropyReducer处理相同文件后的熵为4.093:

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

EntropyReducer:【GitHub传送门

参考资料

https://maldevacademy.com/

https://www.geeksforgeeks.org/merge-sort-for-linked-list/

https://stackoverflow.com/a/9854707/15354012

https://qr.ae/prZ6Lx

https://github.com/Leyxargon/c-linked-list

# payload # 混淆 # 混淆技术 # 代码混淆 # 高熵数据
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录