shellocode实践

Shellcode

Shellcode泛指在exploited进程中执行的恶意代码。

基本特征如下:

  1. 位置无关代码:Shellcode必须能够在内存的任何位置正确执行,不依赖固定内存地址

  2. 不含空字节:空字节(\x00)通常会被认为是字符串终止符,导致代码截断

  3. 紧凑高效:通常需要在有限的空间内完成复杂功能

  4. 直接系统调用:绕过高级API,直接与操作系统内核交互

弹窗显示信息具体实现步骤

安装 metasploit 框架并配置环境变量

关闭Windows系统防护

利用metaspolit框架的payload生成工具msfvenom生成弹窗程序的shellcode

1
msfvenom -p windows/x64/messagebox TEXT="Student ID: xxx Name: xxx" TITLE="Student Info" -f c -b '\x00' -a x64

编写c语言程序执行shellcode

1
2
3
4
5
6
7
8
9
10
#include <windows.h>

unsigned char shellcode[] = {}; //这里输入生成的shellcode
int main() {
LPVOID exec = VirtualAlloc(0, sizeof(shellcode), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, shellcode, sizeof(shellcode));
((void(*)())exec)();
VirtualFree(exec, 0, MEM_RELEASE);
return 0;
};

运行后实现弹窗效果

参考书籍

1
https://www.exploit-db.com/docs/english/13019-shell-code-for-beginners.pdf
1
https://wizardforcel.gitbooks.io/q-buffer-overflow-tutorial/content/index.html

实践收获

了解Shellcode概念及实现

了解并使用metasploit 框架