小迪安全v2023学习笔记(一百四十五讲)—— Webshell篇&魔改冰蝎&打乱特征指纹&新增加密协议&过后门查杀&过流量识别

文章目录

免杀对抗------第一百四十五天

Webshell篇&魔改冰蝎&打乱特征指纹&新增加密协议&过后门查杀&过流量识别

Webshell工具 - 冰蝎Behinder

简介
  • 冰蝎是一款基于 Java 开发的动态加密通信型 Webshell 管理工具,它有如下特点:
    1. 通信加密:使用 AES 或 XOR 对称加密算法对通信数据进行加密,密钥协商阶段动态生成密钥,后续通信基于该密钥进行加解密
    2. 跨平台兼容:客户端基于 Java,支持 Windows、Linux、macOS 等主流操作系统
    3. 功能丰富:支持命令执行、虚拟终端、文件管理、SOCKS 代理、反弹 shell、数据库管理、自定义代码、Java 内存马注入等
  • 我们在实战中主要用到冰蝎3.0和冰蝎4.0,它们两款的主要差别在于通信加密的密钥协商环节:
    • 冰蝎3.0硬编码了密钥为rebeyond的MD5前16位,因此没有密钥协商阶段
    • 冰蝎4.0默认密钥位rebeyond的MD5前16位,但是允许攻击者自定义算法、加解密逻辑,会存在密钥协商阶段
  • 但不管是冰蝎的哪个版本,整体的流程都如下图所示,本地加密之后发送到目标主机,当通信的时候才解密进行通信,因此能够在一定程度上进行免杀:

流量特征
  • 当然,由于冰蝎比较出名,所以它默认版本的流量特征基本都被研究透了,所以我们要对他进行魔改,以此来绕过检测
  • 冰蝎的强弱特征如下:
冰蝎3.0
  • 强特征:
    1. 固定密钥 :默认连接密码 rebeyond → MD5 前 16 位 e45e329feb5d925b,写入 shell 且全程不变;拿到即可解密全部历史流量
    2. JSP shell 首次请求的 Content-Type 几乎必定是 application/octet-stream,正常上传/表单不会使用该值
    3. UA 高速轮换:内置 10+ 个 User-Agent,同一 IP 在相邻请求里来回切换,正常浏览器不会 3-5 秒换 UA
  • 弱特征:
    1. Accept 头倾向 text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2(Java HttpURLConnection 默认),合法但少见
    2. 命令执行类包体长度常落在 5720/5740 字节附近,且 Content-Length 偏大、无随机填充
    3. 全程长连接 Connection: keep-alive,只能算辅助行为
冰蝎4.0
  • 强特征:
    1. 本地 TCP 源端口从 49700 左右顺序递增,每次新会话 +1,可做时序关联
    2. 请求/响应体带固定字节头(现版本硬编码):
      请求 dFAXQV1LORcHRQtLRlwMAhwFTAg/M
      响应 TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
      不管选什么加密算法都会出现
    3. 默认 shell 仍保留 3.0 同款密钥 e45e329feb5d925b
  • 弱特征:
    1. Accept: application/json, text/javascript, */*; q=0.01
    2. Content-Type: application/x-www-form-urlencoded 与 3.0 相同,合法但偏少见
    3. User-Agent同样 10 选一、长连接、大 Content-Length

魔改冰蝎 - JAR反编译打包构建

  • 我们本节课主要是针对冰蝎进行魔改操作,那么需要拿到它的源码,它是由Java开发的,那我们就反编译拿到源码

  • 这里可以用自带的反编译工具,也可以使用网上的项目或者在线网站:

    1. java-decompiler.jar:Java自带反编译工具
    2. crfhttps://github.com/leibnitz27/cfr/releases
    3. procyonhttps://github.com/mstrobel/procyon/releases
    4. 在线反编译网站:https://www.decompiler.com/
  • 我们就用在线网站就好了,直接上传冰蝎4.0的jar包上去,然后等待他反编译成功下载下来:

  • 打开IDEA创建新项目,选择Intellij构建系统,并将JDK版本改为1.8,因为大多数工具都是Java8开发的:

  • 我们将反编译之后的文件夹放进去,然后新建一个lib目录,放入原版的冰蝎jar包:

  • 然后利用该jar包构建项目模块:

  • 选择工件,点击加号添加主类:

  • 配置完成之后,接下来我们就可以魔改冰蝎了,找到需要修改的代码,比如这里我们修改UI界面的显示名称为我们自己

  • 先搜索特征,比如"t00ls、By rebeyond",尽量搜英文,因为这个编译可能中文会被Unicode编码,这里我们在这个文件中找到了上面的关键字:

  • 然后我们尝试修改,比如将这个作者改为我们自己,我们先将这个文件夹复制到src目录,在src目录中修改代码:

  • 修改完成之后,我们可以把无关的其他文件删除,当然也可以保留(如果有报错,只要不是我们修改的文件就把报错的文件删掉) ,然后点击构建:

  • 构建完成之后就会在out目录放一个jar包,运行这个jar包就是我们魔改的冰蝎:

  • 可以看到我们确实修改成功了,这里如果运行失败的,将原本的data.db文件复制到同一目录下即可:

魔改冰蝎 - 防识别-打乱特征指纹

  • 上面讲到冰蝎的弱特征包括它请求头里的Accept、UA、Content-Type字段,而这些基本都被流量检测设备标记了,所以我们需要更改上面的内容,来绕过检测

  • 我们根据这些关键词去找对应的代码,那还是找到上面的这个文件这里:

  • 能够看到正好是我们说的弱特征的两个点,10个UA头,固定的Accept字段,那我们就可以尝试修改为其他的UA头和Accept字段:

  • 然后构建打包,重新连接看看我们的UA和Accept字段是否修改:

  • 当然,冰蝎其实也提供了自定义请求头的功能,可以在添加时自定义修改:

  • 所以这个只是更改默认的这些字段,我们魔改更多的还是为了下面的加密协议

魔改冰蝎 - 防查杀-新增加密/传输协议

修改加密方式
  • 传输协议可以理解为流量的加密方式,冰蝎内置了部分传输协议,但是这些可能基本都被流量检测设备给标记了:

  • 比如我们随便选一个传输协议,然后通过这个发送数据包可以看到流量就变了:

  • 可以看到这里流量就变成了我们选择的加密方式进行传输,但是这些可能早就被标记了,所以我们需要新的算法去进行传输

  • 当然,这里就只是演示简单的看个修改的过程和效果即可,比如我们添加rot13、unicode等编码方式去绕过

  • 有两种添加方式,一种是直接图形化添加,一种是魔改源码,我们也是两个都看一下,第一种直接点击传输协议,然后新建即可:

  • 比如这里我添加rot13,然后我们先在本地用Java代码实现加解密,直接让AI生成一份即可,然后点击保存,如果没有提示"一致性校验未通过"就说明我们的加解密是通的

  • 然后选择远程,可以添加其他语言的加解密代码,比如php、asp等,然后再用这些木马去进行连接,就会发现流量已经完全变了:

  • 当然如果这是这样添加,可能也没什么用,因为它生成的一句话木马本身还是无法实现免杀,所以最好的方式是修改源码

  • 我们根据特征找到 "net.rebeyond.behinder.resource" 包,下面的server目录存放的是木马模板,而transprotocol目录存放的就是传输协议配置:

  • 我们做免杀基本就从这两个地方入手,比如我们对shell.php做一个简单的免杀(目前代码都可以用AI生成):

  • 然后构建项目打包,然后随便生成一个木马看看效果:

  • 可以看到卡巴斯基并没有报毒,并且也能成功上线:

修改传输方式
  • 除了上面更改加密的方式,我们也可以更改传输的格式,比如用JSON、XML、multipart等格式进行传输

  • 当然它内置了JSON,所以我们可以新加一个XML格式传输:

  • 然后抓包看看效果:

相关推荐
xyx-3v9 小时前
RK3506G移植APM飞控的可行性
单片机·学习
IMPYLH9 小时前
Lua 的 Math(数学) 模块
开发语言·笔记·lua
EmmaXLZHONG9 小时前
Notes of Software Engineering Ninth Edition(软件工程第九版笔记)
笔记·软件工程
free-elcmacom9 小时前
机器学习高阶教程<6>推荐系统高阶修炼手册:混排、多任务与在线学习,解锁精准推荐新境界
人工智能·python·学习·算法·机器学习·机器人
断剑zou天涯9 小时前
【算法笔记】AC自动机
java·笔记·算法
崇山峻岭之间9 小时前
Matlab学习记录06
前端·学习·matlab
黑客思维者9 小时前
机器学习008:监督学习【回归算法】(逻辑回归)--AI世界的“是非判断题大师”
人工智能·学习·机器学习·逻辑回归
山土成旧客10 小时前
【Python学习打卡-Day24】从不可变元组到漫游文件系统:掌握数据结构与OS模块
数据结构·python·学习
小徐不会敲代码~10 小时前
Vue3 学习 4
前端·vue.js·学习
MarkHD10 小时前
智能体在车联网中的应用:第5天 车联网导论与体系认知:驶向智能出行的未来
学习