根据这个视频
他使用 msfpayload 和 msfencode 为 cmd 命令生成 shellcode。
msfpayload windows/exec cmd=calc.exe R | msfencode -e x86/alpha_mixed -t c -v
但是现在,metasploit 团队将 msfpayload 和 msfencode 更改为 msfvenom,所以我将上面的代码转换为 msfvenom:
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -e x86/alpha_mixed -f c
shellcode 已生成,但在 cmd 上执行命令后计算器未启动。我的 msfvenom 代码有什么问题吗? 感谢您的阅读。
更新: 在视频中,他使用了一段简短的 shellcode。他在描述中公开了 shellcode,但没有展示如何生成它。我按照他的指示得到了一个很长的shellcode。 当我使用他的短 shellcode 时,它可以工作,但同样的情况不会发生在我的长 shellcode 上。
问题是在 msfvenom 中使用
-f c
会导致 shellcode 作为输出,无法直接在命令行中执行。 shellcode 将需要一个包装程序,将 shellcode 放入内存并执行它。然后需要将该程序编译为可执行文件。
用 c: 编写的示例包装函数
#include <stdio.h>
unsigned char code[] = "\xYourShellCode";
int main(int argc, char **argv) {
int foo_value = 0;
int (*foo)() = (int(*)())code;
foo_value = foo();
printf("%d\n", foo_value);
}
如果您只想将可执行文件作为输出,您可以尝试以下操作:
(弹出 x64 窗口的计算)
msfvenom --platform windows --arch x64 -p windows/x64/exec CMD=calc.exe -b '\x00\x0A\x0D' -f exe -o a.exe
这对我有用:
msfvenom -p windows/exec cmd=notepad.exe -f c -e x86/alpha_mixed