kayl22/ObfuscateAlchemy
GitHub: kayl22/ObfuscateAlchemy
一款整合 payload 加密(XOR/RC4)与多种格式混淆(IPv4/IPv6/MAC/UUID)的恶意软件开发辅助工具。
Stars: 1 | Forks: 0
# Alchemy
| Specify the technique to employ for payload obfuscation
)> -e / --encrypt | Specify the encryption algorithm to employ prior to obfuscation
)> -k / --key | Encryption key used to encrypt the payload prior to obfuscation
======= Valid Algorithms:
|> xor | xor payload before obfuscating it
|> rc4 | rc4 encrypt payload before obfuscating it
======= Valid Techniques:
|> ipv4 | Obfuscate payload in the form of IPv4s, 4 payload bytes each.
|> ipv6 | Obfuscate payload in the form of IPv6s, 16 payload bytes each.
|> mac | Obfuscate payload in the form of MAC addresses, 6 payload bytes each
|> uuid | Obfuscate payload in the form of UUID strings, 16 payload bytes each
================== USAGE:
# 将 raw payload 传递给 c unsigned char array
./alchemy -i [/file/path/to/file.bin] > ./payload.h
# 仅混淆 raw payload
./alchemy -t [technique] -i [/file/path/to/file.bin] > ./payload.h
# 仅加密 payload
./alchemy -e [algorithm] -k [key] -i [/file/path/to/file.bin] > ./payload.h
# 先加密 payload 然后将其混淆
./alchemy -e [algorithm] -k [key] -t [technique] -i [/file/path/to/file.bin] > ./payload.h
```
如上所述,我们可以简单地使用 `-i/--input` 标志指定包含原始 payload 的输入文件,然后使用 `-t/--technique` 标志指定混淆技术。此外,如果我们想在混淆之前添加一层加密,可以使用 `-e/--encrypt` 标志来指定我们要使用的加密算法,并使用 `-k/--key` 标志提供自定义的加密密钥。
```
# Ex. 将 raw payload 混淆为 ipv6 array
./alchemy -t ipv6 -i ./mypayload.bin > obfuscated_payload.h
# Ex. 使用 "C00LCA75" key 对 payload 进行 Xor-encrypt,然后将其混淆为 ipv4 array
./alchemy -e xor -k "C00LCA75" -t ipv4 -i ./mypayload.bin > obfuscated_payload.h
```
这会将所有生成的带有 "ipvX" 地址的 C 指针数组存储到 `obfuscated_payload.h` C 头文件中,这样我们随后就可以轻松地将其包含在我们的项目中。
这是执行上述加密+混淆命令后 `obfuscated_payload.h` 的内容。
`./alchemy -e xor -k "C00LCA75" -t ipv4 -i ./mypayload.bin > obfuscated_payload.h`
**输出:**
```
const char *Ipv4Array[155] = {
"42.94.67.56", "34.45.91.15", "99.83.88.41",
};
const size_t Ipv4ArrayLen = (sizeof(Ipv4Array) / sizeof(Ipv4Array[0]));
const char key[8] = {'C', '0', '0', 'L', 'C', 'A', '7', '5'};
const size_t key_len = 8;
```
## 解混淆
Alchemy 涵盖了整个混淆过程,但涉及到解混淆时,你需要在你的项目中手动实现,这就是为什么会有一个 `deobfuscate` 目录,其中包含用于使用 Windows API 轻松解混淆每个生成的指针数组的库,因此对于你的 Windows maldev 项目,你可以包含这些库,以便快速实现整个解混淆过程。
## 解密
至于解密,你也有一个 `./decrypt` 目录,其中包含用于轻松解密已解混淆 payload 的库。
## 版本
- v1.0:发布。
- 混淆技术:ipv4、ipv6、mac 和 uuid
- v1.1:加密更新 (O_o)
- 加密技术:xor
- 其他:展示升级 :)
- v1.2:RC4 更新
- 加密技术:rc4
- 其他:修复了几个 bug / "技术问题"
## 最终想法
这个项目是在 `Maldev Academy` 的 payload 混淆模块之后创建的。我决定创建这个项目,以便能够轻松地混淆我的 payload(尽管像 `HellShell` 这样的工具已经存在 :b)。尽管如此,我打算进行未来的更新,并随着我 maldev 之旅的继续,添加更多混淆技术,同时进入“加密领域”,并在某个时候添加一些加密算法,提供随机生成密钥或手动提供自定义密钥的选项。
标签:DNS 反向解析, 中高交互蜜罐, 免杀技术, 客户端加密, 恶意软件开发, 数据加密, 暴力破解检测, 端点可见性, 载荷混淆