数据隐藏技术

简介: 0x00 前言 数据隐藏已经渗透到了生活中的方方面面,之前一直对数据隐藏很有兴趣,但是乌云上关于数据隐藏的文章偏少,看了隐写术总结之后,我又去找了一些关于数据隐藏的资料,这里来与大家分享和总结下其他一些比较常见的隐藏手段,如果有写错的地方请直接指出,谢谢。

0x00 前言

数据隐藏已经渗透到了生活中的方方面面,之前一直对数据隐藏很有兴趣,但是乌云上关于数据隐藏的文章偏少,看了隐写术总结之后,我又去找了一些关于数据隐藏的资料,这里来与大家分享和总结下其他一些比较常见的隐藏手段,如果有写错的地方请直接指出,谢谢。

0x01 vmdk隐写

vmdk文件大家应该都比较熟悉了,它本质上是物理硬盘的虚拟版,所以也会存在跟物理硬盘的分区和扇区中类似的填充区域,我们可以利用这些填充区域来把我们需要隐藏的数据隐藏到里面去,这样可以避免隐藏的文件增加了vmdk文件的大小(如直接附加到文件后端),也可以避免由于vmdk文件大小的改变所带来的可能导致的虚拟机错误。而且vmdk文件一般比较大,适合用于隐藏大文件。

这里采用Dsfok-tools来对数据进行隐藏,通常这个工具是用来编辑vmdk文件中的描述符。从这里可以下载到该软件。套件里包含了dsfi工具可以对vmdk文件进行嵌入。 我们首先来看下需要隐藏的文件和它的大小

按照下载页面的提示输入命令

嵌入完成后该vmdk文件依然是可以继续使用,而且虚拟机并不会报错。再来对嵌入的文件进行提取。

这里要提醒的是,如果长期运行该虚拟机,隐藏在里面的数据是很有可能被覆盖掉,但是如果仅仅是作为数据隐藏的载体,除了需要提取的那个人外谁又在意这个问题呢,或许别人还巴不得这样。

0x02 交换数据流

Windows NTFS文件系统的交换数据流(ADS)也可以用于数据隐藏,对很多人来讲或者已经很熟悉了,这里也来做个小小的总结给不了解的同学开个头吧。

交换数据流的诞生源于Windows系统与苹果的HFS系统的交互需求,NTFS使用交换数据流来存储文件相关元数据等等。

创建交换数据流是很简单的

并输入This is hidden file

dir当前目录是找不到刚才编辑的那个文件的,只有一个0字节的visiable.txt

要用记事本打开打开刚才那个文件直接输入相同的命令就行了

在web安全中有时候还用得上ADS,如:pkav之当php懈垢windows通用上传缺陷

当时在网上看资料的时候发现其实有不少人理解错了该漏洞的含义,原因就是不清楚ADS

对于 IIS6.0+PHP、IIS7.5+asp、IIS7.5+php 环境下,如果某目录通过 HTTP Basic 来认证,假设其目录下有 index.php 文件,我们可以通过构造如下方式来绕过认证直接访问其目录下的文件。

/admin::$INDEX_ALLOCATION/index.php
/admin:$i30:$INDEX_ALLOCATION/index.asp

ADS结合保留设备名来进行绑定,如:CON、NUL、COM1等等,这样在一些情况下可以避开某些软件对交换数据流的检测。

使用这些保留设备名作为目录名或文件名的时候会被系统提示错误,但我们可以使用\\?\来取消字符串的解析(通常这种方法用于Windows API编程),这样就可以创建以保留设备名为名的文件或目录

如:绑定cmd.exe到NUL文件

用wmic来运行即可

关于ADS在web安全中的利用的资料:

http://pan.baidu.com/s/1dDo9iQP 提取码:1bft

xfocus上关于ADS的文摘:

http://www.xfocus.net/articles/200212/466.html

0x03 TCP中的数据隐藏

我们都知道TCP的典型3次握手

我们可以利用该过程对数据进行隐藏发送,如:

1.发送方和接受方规定一个常数X
2.发送方把要发送的每个字符的ASCII值*X并放在SYN字段中进行发送
3.接受方把接受到的SYN值除以常数X获得该字符的ASCII值

这种方法存在明显的局限性,就是每次只能传送1到2个字节,但是如果是用在隐藏发送短密钥或者短消息之类的不妨也是个好的方法。

0x04 可执行文件中隐藏

相比于jpeg文件来说,可执行文件能隐藏数据的空间非常小,jpge图像每17个字节就可以隐藏1个字节,而对于可执行文件则是每150个字节才可以隐藏1个字节。对于可执行文件的数据隐藏可以使用Hydan,不过不得不说这个软件有点老,而且有时候还可能引入运行时错误。

0x05 在TTL字段中隐藏

IP报文在路由间穿梭的时候每经过一个路由,TTL就会减1,当TTL为0的时候,该报文就会被丢弃。TTL所占的位数是8位,也就是0-255的范围,但是在大多数情况下通常只需要经过很小的跳数就能完成报文的转发,远远比上限255小得多,所以我们可以用TTL值的前两位来进行传输隐藏数据。

如:须传送H字符,只需把H字符换成二进制,每两位为一组,每次填充到TTL字段的开头两位并把剩下的6位设置为1(xx111111),这样发4个IP报文即可传送1个字节。

0x06 后记

数据隐藏的范围实在是太大,除了用来在传输中隐藏数据外,还可以用于作为一种防护手段,给文档等提供标识等。希望大家能在乌云更多地交流关于数据隐藏方面的知识,相信你也会发现研究数据隐藏的乐趣的。

相关文章
|
4月前
|
前端开发 JavaScript
巧妙解决显示和隐藏的代码
css使用方法 1.用opacity:0和visibility: hidden; 2.配合hover 3.原先opacity(透明度为0)hover设置为1,即从隐藏到显示,visibility同
34 0
|
7月前
LayoutControl隐藏LayoutControlItem
LayoutControl隐藏LayoutControlItem
|
9月前
|
数据可视化 vr&ar 计算机视觉
使用标记增强技术将虚拟内容呈现到现实场景中
使用基于标记的增强现实将虚拟内容呈现到场景中。
120 0
|
11月前
|
数据采集 Web App开发 资源调度
最完美方案!模拟浏览器如何正确隐藏特征
最完美方案!模拟浏览器如何正确隐藏特征
574 0
|
11月前
|
存储 人工智能 弹性计算
大模型之外,阿里云对未来的真正布局是什么?
大模型之外,阿里云对未来的真正布局是什么?
338 0
html+css实战165-隐藏效果
html+css实战165-隐藏效果
104 0
|
小程序 前端开发 PHP
小程序怎么做查看更多的显示和隐藏
小程序怎么做查看更多的显示和隐藏
225 0
|
C# 编译器
C#隐藏方法
不能删除基类的任何成员,但可以用与基类成员相同的成员来屏蔽基类成员 屏蔽数据成员:派生类中声明名称和类型相同的成员 屏蔽函数成员:在派生类中声明新的带有函数签名的成员 让编译器知道:添加new关键字,否则会警告pet petpu.
621 0
|
程序员 C++
IE6 VS IE7 ——显示大量控件时的表现
     我们由一个OA项目,b/s结构的,给客户安装之后运行后还算顺利。有一天,客户打来电说是要增加一个功能,能够批量的录入数据,有一个n行12列的表格,要往里面录入数据,但是不想一条一条的录入,想要一次录入多条的数据,然后一次性的提交保存。
831 0
动态隐藏行
动态隐藏行
799 0