使用Stardust框架编写Shellcode

简介

Stardust项目地址:https://github.com/Cracked5pider/Stardust/tree/main

Stardust是一款用于编写Shellcode的框架,使用MinGW G++进行编译且依赖Linux环境,因此推荐使用VSCode来作为代码编辑器并搭配WSL的KaliLinux作为远程Linux系统。这样的好处是,当生成shellcode的二进制文件时,可以立马调用scripts目录的loader.exe来测试shellcode能否正常运行

image-20240222145611348

框架使用

Stardust项目的src目录用于存放源码文件,include目录存放头文件,而我们主要是在src目录的Main.c编写shellcode

在Main.c中,若要定义一个函数时,需要在其开头加上关键字FUNC

image-20240222151528451

当需要调用Windows Api时,你先要在Common.h声明API函数和其所在Dll的名称,这里以MessageBoxW为例

image-20240222155031277

以下是使用Windows API的代码格式:

代码编写完成后在linux终端输入make命令进行编译

image-20240222160257966

随后会在项目的bin目录生成raw文件(shellcode)

image-20240222160340422

将raw文件移至script目录,在windows终端使用loader.x64.exe来加载shellcode,以此测试是否成功

image-20240222160606895

使用案例

编写CS Stager的上线shellcode

如下代码演示了如何编写CS Stager类型的shellcode,首先需要一个存放有stagerless类型的shellcode的url。其实从这段代码可以看出,在Main函数对win32api进行声明后就不用在其他函数再进行声明了,但是其他函数若要调用win32api,则需在其函数体内加上关键字STARDUST_INSTANCE

最后更新于