linux命令反混淆-忙里偷闲

Posted 七夜安全博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令反混淆-忙里偷闲相关的知识,希望对你有一定的参考价值。


linux命令反混淆
前言


大家也都知道最近一直在做的是webshell的检测,为啥突然搞了一下linux命令反混淆呢?纯属忙里偷闲之举,主要听了几位大佬的关于linux恶意命令检测这方面的分享,真心佩服,就想搞一搞,站在大佬的肩膀上做一些苦力活,做一些小思考,多解决一些问题。。。记得点GG,文末有福利。。。


linux命令反混淆-忙里偷闲


支持我就点点文末GG,穷死了。。。



第一节

去伪存真

在对linux恶意命令检测的过程中,比较头疼的是命令的混淆,混淆的命令更容易绕过静态检测,其实和webshell一样的道理,变形多样化。咱们看一个例子:


cat $(echo /e)tc$(echo /pa*)wd


其实这是一个对 cat /etc/passwd 的混淆,利用shell的语法特性,可以构造多种多样的混淆,举一些 cat /etc/passwd 的变形,当然这些网上都有,尤其是国外的Twitter上。


cat /et$'c/pa\u0000/notexist/path'sswd


test=/ehhh/hmtc/pahhh/hmsswd;

cat ${test//hh??hm/};


大家可以思考一个这样的问题,为什么混淆的命令,bash (shell的一种) 依然可以运行呀,说明bash是知道真正要执行的命令,也就说无论怎么混淆,bash都是知道的。


那就可以从bash本身下手。。。


linux命令反混淆-忙里偷闲

支持我就点点文末GG,穷死了。。。


第二节

bash 调试功能

     经常使用shell的,大家都应该知道 sh -x 这个命令,sh其实是bash的软连接,本质上还是调用的bash。sh -x可以打印出shell脚本的运行过程,这样就可以看到真正的执行命令,


但是有一点不好,就是它真的会把命令执行起来。。。用它作为沙箱比较蛋疼,浪费了检测的时间,还有可能被反调试。


先看一下效果,咱们把  cat $(echo /e)tc$(echo /pa*)wd 保存成一个 shell文件,然后使用sh -x进行调试。


linux命令反混淆-忙里偷闲


大家看到了吗?前面带+号的就是执行的流程,以及最后真正执行的命令,混淆的命令在bash面前全部显示出来。如果大家使用sh -x作为沙箱的话,使用python脚本提取带+号的内容,即是还原的命令。。。


但是我感觉应该更进一步,努力一下,我提到了上面sh -x,作为沙箱的一些不太好的点,它真的会把命令执行,假如混淆的是ping命令,ping一个域名,需要较长时间,真的运行的话,这个沙箱的效率太低了。。。


对于这个功能,需要进行定制化的改造。。。不能让命令真的运行起来。。。


linux命令反混淆-忙里偷闲

支持我就点点文末GG,穷死了。。。



第三节

bash 调试功能改造

     现在常用的bash4.2的代码10万多行,对于bash的改造就是要好好看代码,bash是一个伟大的产品,值得一看(内心mmp)。。。


对于具体的改造,一两句话说不清楚,其实就是一句一句的跟踪代码,体力活总得有人干。等我把这个bash改造完成,再详细的说一下。经过初步的改造,编译成bash文件,外部命令已经无法运行,还是以cat /etc/passwd 为例,将他保存为test.sh文件。


cat $(echo /e)tc$(echo /pa*)wd


linux命令反混淆-忙里偷闲


这样沙箱的检测速度就会成倍的增长。。。


这个编译好的bash,我会在知识星球中分享


当然这个bash还有一些瑕疵,在处理管道的时候,还是有点小问题。



第四节

福利

等了7年了,IG终于代表LPL拿到了S系列的冠军,等的时间太长了,圆了我们的青春梦。为了庆祝,IG取得胜利,我之前写的《coolblog开发笔记》电子书,限时打一折,一块钱大甩卖。。。


linux命令反混淆-忙里偷闲



最后推荐一本书,新出的《加密与解密》第四版,凡是做过逆向的,都会知道看雪论坛,凡是去过看雪的,都知道加密与解密这本牛书。