专栏首页七夜安全博客linux命令反混淆-忙里偷闲

linux命令反混淆-忙里偷闲

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还有一些瑕疵,在处理管道的时候,还是有点小问题。

本文分享自微信公众号 - 七夜安全博客(qiye_safe)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 教你学木马攻防 | 隧道木马 | 第一课

    今天开始讲讲木马攻防,感觉这些内容大家应该会更感兴趣一些,就从隧道木马说起。为什么会有隧道木马这一说呢?这是根据通信协议进行分类的。讲隧道木马之前,先讲讲端口映...

    七夜安全博客
  • “跳一跳”游戏外挂原理详析(手动版)

    七夜安全博客
  • 反弹shell-逃逸基于execve的命令监控(上)

    本篇聊一聊 新的主题:《反弹shell-逃逸基于execve的命令监控》,打算写一个专题,预估可以写三篇,内容确实有点多,也是最近研究了一些有意思的东西,想给大...

    七夜安全博客
  • 最大学术出版商妥协!与挪威46所机构签协议,90%出版物免费阅读

    这家每年接收数十万前沿科技论文,旗下拥有《柳叶刀》《细胞》等高影响力期刊的出版商,与挪威大学签署了首份开放获取(Open Access,OA)国家协议,科研人员...

    量子位
  • Python操作OpenOffice

    OpenOffice是一个免费的、开源的办公套装,集成了允许开发者用不同语言进行开发的API。Python-UNO让你可以在Python环境下使用OpenOff...

    小小科
  • 零知识证明学习资源汇总

    Github 地址:https://github.com/sec-bit/learning-zkp/blob/master/zkp-resource-list....

    爬虫
  • PHP连接MYSQL数据库

    执行SQL语句 使用 mysql_query() 函数。此函数用于向 MySQL 连接发送查询或命令 例子 在下面的例子中,我们创建了一个名为 "my_db" ...

    叫我可儿呀
  • 专访NIPS主席:如何保证论⽂评审的公平性?| 人物志

    作为人工智能领域顶会 NIPS(Conference and Workshop on Neural Information Processing Systems...

    AI科技大本营
  • Dubbo网络通讯篇概述

    从本节开始将深入学习Dubbo网络通讯的底层实现细节,在深入学习Dubbo网络模型时,首先应从整体上了解Dubbo的网络通讯模型、线程模型是怎样的?下图是Dub...

    丁威
  • Netty中粘包/拆包处理

    为突出 Netty 的粘包/拆包问题,这里通过例子进行重现问题,以下为突出问题的主要代码:

    黄泽杰

扫码关注云+社区

领取腾讯云代金券