tehstoni/LexiCrypt
GitHub: tehstoni/LexiCrypt
基于词典替换密码的 shellcode 混淆编码工具,将机器码字节伪装为普通词汇并生成多语言可执行模板。
Stars: 140 | Forks: 24
# LexiCrypt
**LexiCrypt** 是一个 shellcode 混淆和编码工具,它将原始的 shellcode 字节转换成一个由词汇组成的“词典”,这些词汇源自 Windows system32 目录中的文件名、Linux 的 /usr/bin 目录,或者在运行时随机生成。随后,生成的编码输出可以嵌入到各种编程语言(例如 C++、Rust、C#、Go、VBScript/WScript)的代码模板中。这种方法有助于伪装 shellcode 并可能绕过简单的检测机制。
## 工作原理
1. **词典生成**:
LexiCrypt 会扫描一个目录(Windows 默认目录为:`C:\Windows\System32`,Linux 默认目录为:`/usr/bin/`)以收集大量唯一的文件名(不含扩展名)。从这些文件名中,它会选取并打乱 256 个独特的单词。每个唯一的单词映射到一个单字节(从 `0x00` 到 `0xFF`)。
它也能够通过 (`-w`) 参数导入自定义词典,并可以通过 `-r` 标志生成自己的随机词典。
2. **Shellcode 编码**:
给定一个原始的 shellcode 文件(例如,机器码的二进制数据块),LexiCrypt 会将每个字节替换为 256 词字典中对应的单词。例如,如果字节 `0x41` 对应单词 `"notepad"`,那么在编码输出中该字节就会被替换为 `"notepad"`。
3. **输出模板**:
编码完成后,LexiCrypt 会生成一个代码模板,其中包含编码后的单词和字典。根据选择的语言模板(例如 `cpp`、`rust`、`csharp`、`go`、`powershell`(P/Invoke)和 `powershell_alt`(反射)),它会生成一个可直接编译(或运行)的代码片段。
该代码片段(简单来说就是基础的 CreateThread 进程注入):
- 在运行时将基于单词的 shellcode 解码回字节数组。
- 分配可执行内存。
- 通过 `VirtualAlloc` 和 `CreateThread`(在 Windows 上)复制并执行解码后的 shellcode。
## 功能特性
- **多语言模板**:目前支持 C++、Rust、C#、Go 和 PowerShell 模板进行输出。
- **自动生成词典**:根据系统文件名动态生成包含 256 个单词的字典。
- **验证步骤**:自动验证编码后的 shellcode 是否能正确解码回原始字节。
- **规避技术**:通过将 shellcode 字节表示为单词,可能有助于避免直接的基于特征的检测。
## 环境要求
- **Rust 工具链**:
你需要 Rust 编译器和 Cargo。
- **Windows 环境**:
LexiCrypt 目前依赖于 Windows 特定的 API 和目录。
如果你决定编译 Go 输出文件,还需要安装 Go。
## 安装说明
1. **克隆仓库**:
```
git clone https://github.com//LexiCrypt.git
cd LexiCrypt
```
构建项目:
```
cargo build --release
```
这将在 target/release/lexiCrypt.exe 中生成一个可执行文件。
## 使用方法
基本命令行用法:
```
lexicrypt.exe -i path\to\input_shellcode.bin -o path\to\output_file.ext -t cpp
```
参数说明:
```
-i, --input : Path to the input shellcode file (raw binary).
-o, --output : Path to the output file (the generated template code).
-t, --template : The template format. Supported templates include:
cpp
rust
csharp
go
-r, --random: Enables random wordlist generation.
-w, --wordlist: Ingest a custom wordlist by the user. (must be at least 256 unique lines in length)
```
示例:
```
lexicrypt.exe -i shellcode.bin -o lexiloader.cpp -t cpp
```
此命令会读取 shellcode.bin,从 C:\Windows\System32 生成一个包含 256 个单词的字典,对 shellcode 进行编码,并生成一个包含编码单词和解码例程的 decoded_shellcode.cpp 文件。
输出与执行
运行 LexiCrypt 后,你将获得一个使用你所选语言模板编写的单一源代码文件。
例如,如果你选择了 cpp,你将得到一个 .cpp 文件。然后你可以编译它:
```
cl .\lexiloader.cpp /EHsc /Od /bigobj
.\lexiloader.exe
```
运行 lexiloader.exe 将会:
打印有关解码的信息。
分配内存,复制解码后的 shellcode。
创建一个线程来执行它。
对于 rust,你需要将以下依赖项添加到你的 Cargo.toml 中:
```
windows = "0.58.0"
```
可以在项目目录下运行以下命令来自动完成此操作:
```
cargo add windows
```
附注:我很不擅长更新这个东西。当你看到这段话时,它可能无法 100% 反映代码的实际情况。如果你有任何问题,请随时在 Discord 上联系我。
标签:AI合规, C++, CreateThread, DNS 反向解析, EDR绕过, Go, IPv6, PowerShell, Ruby工具, Rust, Shellcode加密, Shellcode混淆, SSH蜜罐, VirtualAlloc, 可视化界面, 多语言模板, 恶意代码生成, 数据擦除, 日志审计, 替换密码, 端点可见性, 系统二进制文件利用, 绕过检测, 网络安全, 网络流量审计, 词汇表编码, 进程注入, 通知系统, 隐私保护, 高交互蜜罐