前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux命令反混淆-忙里偷闲

linux命令反混淆-忙里偷闲

作者头像
七夜安全博客
发布2018-12-06 16:23:20
3.1K0
发布2018-12-06 16:23:20
举报
文章被收录于专栏:七夜安全博客

linux命令反混淆

前言

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

支持我就点点文末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本身下手。。。

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

第二节

bash 调试功能

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

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

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

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

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

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

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

第三节

bash 调试功能改造

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七夜安全博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档