数据隐藏技术解密
破解多媒体、操作系统、移动设备和网络协议中的隐秘数据
概述
决心每天花点时间,一个星期看完整本书。起初,有自己亲身验证课本中所涉及所有实例,由于时间原因,加之我认为课本中涉及到的工具都是会过时的,只有思想以及方法技术是可以较长时间指导人们工作的,就来思想和技术都有可能会被替代,但在某种意义上说其可以在较长一段时间内产生异响。人的精力和时间都是有限的,因此对本书我选择通读全文,中间基本不加实践,主要是体会其思想和技术要点。
看书过程中给了我这样一个感觉,基本上全书都在讨论工具的使用,这有时候让我感觉有点枯燥乏味,但回头看看,技术不就是这样么,孰能生巧。同时也倍感压力,这样的性质就注定了我们无法偷懒,若哪天你跟不上了,那么你将会被新的技术淘汰掉,不过我认为其思想和经验还是可以在很长一段时间内指导工作的。
接下来主要对本书进行一个总结,也就算是我看完了吧。本书难度不是很大,原理也较为浅显易懂,主要是工具使用的实践。通读全书,从浅层面上了解了"数据隐藏"是什么,以及一般的手段。也算是科普了相关的知识。
全书总共12章。由密写术的发展史引入,其中给出了隐写术的概念,并且对隐写术和密码学做了简要的评析、比较、区分。第2章给出4则简单练习,不涉及原理分析,应该主要是给读者一个视觉上的认识。第3章对隐写术做了较为全面的介绍。4到9章分别介绍了多种数据隐藏方法与媒介,内容主要包括:多媒体中的数据隐藏、Android移动设备中的数据隐藏、苹果IOS系统中数据隐藏、PC操作系统中的数据隐藏、虚拟机中的数据隐藏、网络协议中的数据隐藏。第10章介绍了取证与反取证的基础知识。第11章讨论了取证调查的步骤以及缓解策略。第12是展望未来,主要讨论了隐写术在未来的一个发展轨迹。
-
密写术的发展
p1大卫l卡恩的《破解者》(The Codebreaker)一书可以说是迄今为止对秘密通信记载最全面的历史书籍。
密码学:
替换密码:凯撒密码、加密无线电消息和摩斯电码、维吉尼亚密码。
移位密码:斯巴达密码棒
区别:替换,保留明文排序而替换了原有明文信息;移位密码,仅仅是打乱了次序。
隐写术语密码学的区分:
希腊单词:crypt 和 stegnos
英文单词:covered和 hidden
隐写术中信息是不可见的,所以叫隐蔽(covered)或隐藏书写(invisible writing)。
问自己一个问题:消息是杂乱的还是不可见的?杂乱——密码学,不可见——隐写术。
隐写术:
卡尔达诺栅格码、隐形墨水、缩影术、打印机跟踪点、水印。
-
数据隐藏简单联系4则
- Word中的数据隐藏:利用字体中的"Hide Text",默认情况下打印时会打印出来。识别:"Inspect Document"
- 图像元数据:图像中会带有很多个人信息,比如GPS定位,使用Google的Picasa可以定位主一张图片的位置。很多工具可查看和修改图像中的元数据,尤其是JPEG,进而可以对图像进行分析,或向其中隐藏数据。
- 移动设备数据隐藏:Android市场的"Hide it Pro"工具,可以用他来隐藏多媒体文件。
- 文件压缩工具数据隐藏。
很多文档、图像、多媒体文档等在生成时会加入一些个人信息,若不加处理就在网上进行传播,很可能会泄露个人隐私,因此应该提高安全警惕。
真正的隐写术:使用复杂算法将信息隐藏到数据载体中。
-
隐写术
在数字隐写术中,人们通常会使用某种程序将消息或文件嵌入到一个载体文件中,然后把这个载体文件直接传给接收者或者发布到网站上供接收者下载。接收者获取载体文件后,再用同样的程序把隐藏的消息或文件恢复。有些隐藏程序会使用密码来保护隐藏消息,还有些程序隐藏程序用密码保护隐藏消息,有些还加入了密码隐藏保护。
数字信息的隐藏方法有很多,主要分为两大类:
- 插入:通过插入方法隐藏消息会插入一些额外内容,但不改变原始数据,除了被隐藏的消息外,还有文件制作工具的标识,这个标记记录了隐写程序处理隐藏载荷的地点。这种方法通常会利用文件格式中的空白部分。
- 替换:通过替换方法隐藏数据通常会改变消息中对的字节或者交换字节顺序。它不会在载体文件中增加任何新的内容,而是通过修改字节或者调整字节位置让人们看不到或者听不到文件内容。例如LSB(Least Significant Bit,最低有效位)替换方法,就是使用隐写程序修改文件中每个字节的最低有效位(1变为0,0变为1)。
插入方法:
- 追加插入法:在文件末尾追加插入额外的内容,这是最为简单的方式,并且不会破坏文件。例如,JPEG文件,正常情况下文件尾有一个标记"0xFF 0Xd9"的文件结束符(EOI),在EOI后加入额外的数据,而显示时不会显示EOI之后的数据,这样就可以达到隐藏数据的目的。
- 前置插入法:任何文件可以插入批注内容的文件都可以被插入数据,而丝毫不影响视觉效果。例如,可以在JPEG的应用程序标识符0xFF 0xE0 和帧起始符0xFF 0xC0之间插入和修改的数据。
修改方法:
最常用的隐写修改方法是修改文中一个或者多个字节的最低有效位,基本上就是把0改成1,或者把1改成0。这样修改后生成的图像就有渲染效果,把这些比特位重组还原后才可以看到原始的隐藏消息,而人们仅靠视觉或听觉是不可能发现这些改动的。
例如,LSB(最低有效位)修改法:利用24位调色板。调色板中有红、绿、蓝三原色组成,一个原色由8位二进制位表示,即265个色调,三原色混合可以指定24位图像中的每个像素点,如题3.5。而这个是我们修改每个字节分组的最低位,图片在显示时的区别,肉眼是无法辨别的,进而可以达到隐藏数据的目的。如图3.6和3.7,修改后的每八个字节组的最后一位可以构成一个字节,表示一个ASCII码,这是隐藏的数据。类似的原理还可应用在协议通信隐藏数据、文档信息隐藏等地方。
隐写分析:
数字隐写分析就是通过隐写技术或软件对隐藏的数据进行检测和取证的过程,可能的话,还会提取出被隐藏的载荷。如果被隐藏的载荷是加过密的,那么隐写分析就要对其进行破解。
值得注意的是,使用工具进行隐藏的载体文件都会留下一些与软件有关的特征,我们可以将这些特征提取出来并构成特征库,进而可以成文检测隐写信息的一个突破口。
这里主要会采用以下两个手段:
- 异常分析:异常分析会用到检测相似文件的对比技术,如果没有文件可以用于对照,还会采用一些分析技术来发现文件的其他异常特征。
- 隐写分析工具:这些工具具有相同的工作原理:首先检测文件的某些信息,根据判断其中包含隐藏内容的,就标记为可疑文件。然后,将可疑文件寄存起来以便后续进行深度分析;第二步分析环节可以是半自动半手工的,大多数先进的工具都允许人工查看数据进而分析发现异常特征。
免费软件:StegSpy,Stegdetect。
-
多媒体中的数据隐藏
简单音频文件嵌入技术(不可感知的方法)——LSB:
Harry Nyquist 博士早日的研究成果是最常用的音频数字化方法的理论依据。20世纪20年代Harry Nyquist 博士在贝尔实验室(Bell Lab)工作,他认为音频文件数字化根本没有必要抓取整个模拟波形,只需要对模拟信号进行取样并保存一些样本,然后用这些样本来重建原始的音频信号。
工具:MSU Stego、TCStego
-
Android移动设备中的数据隐藏
3款软件为代表:
- ImgHid and Reveal:可以把一张图片嵌入到另一张图片中,主要针对JPEG。处理后的图像尺寸显著变小、隐藏图片的大小也改变了。使用的技术原理:数据追加法,在FF D9 后追加,工具对追加的数据添加了相同的起止符,这样的标记也暴露了隐藏信息所采用的工具本身。
- My Secret:可以用来创建或读取秘密图像,只能在图像中隐藏文本。结束符"FF D9"是正常的,但是嵌入数据后的图像末尾的结束符却不同,而且其中多余的数据大小和之前被隐藏的紧急广播通知消息的大小是一样的。
- StegDroid:可以创建短文本信息、共享,并将其嵌入到音频片段中发送出去。采用"回声隐写(echo steganography)",顾名思义,就是嵌入一些回声,比如录音时,那些遇到墙、窗户、桌子、电脑显示器、键盘等被反射回来的声音,这些回声通常会被我们的听觉系统和大脑忽略掉。根据2009年Jenkins和Martina的实验,用回声隐写方法嵌入数据,在大多情况下都是无法感知到阈值的。此外,回声隐写还有几个优于其他压缩式音频因此技术的特点:1、除了让人无法感知之外,还能抵抗隐写检测和堵塞;2、不会像MP3压缩方法那样导致数据丢失;3、效率虽然比LSB低,但它比其他的压缩数据隐藏的效率高的多。
-
苹果系统中的数据隐藏
- Spy Pix:Spy Pix可以把一张照片嵌入到另一张照片中,还可以选择嵌入后的质量等级。数据隐藏操作会同时降低载体和被隐藏图像(有效载荷)的质量,但都不容易被检测到。工作原理很简单,就是将两张图片叠加,把隐藏图像的最高有效位隐藏到载体图像的最低有效位。根据你选择的被隐藏图像的保留位数,隐藏后的图像质量不同,保留的越多,质量就越差。
- StegoSec:支持从相册中选择已有的照片或直接拍摄照片,在JPEG文件中嵌入了隐藏信息。文本信息被嵌入EXIF JPEG文件头部。
- InvisiLetter:即可进行数据嵌入或从图像中提取隐藏图像。与前面分析过的工具略有不同,因为嵌入手写信息后,最终生成的图像是PNG格式的。对比照片发现,嵌入的数据越多,图像的色调就越低,这表明数据是直接嵌入到图像的RGB值中的。
-
PC操作系统中的数据隐藏
暗鼠行动应用了很多技术,但主要是用包含恶意代码的钓鱼邮件攻击Windows系统。
- 攻击者发送电子邮件给目标组织中的指定人员(钓鱼)
- 电子邮件中含有看似合法的Excel通信附件。
- 用户下载Excel附件,打开Excel文件时,在毫不知情的情况下,木马被释放并保存到用户的计算机上。
- 木马访问一个看似正常的网站,获取最新的CnC(command-and-control,命令和控制)信息。
- 木马并不是从网站中直接获取CnC信息,而是下载图像文件,这个图像文件中含有用隐写技术嵌入的命令。
- 木马解析这些命令后得到当前CnC服务器的相关信息(IP地址和端口号等)。
- 木马通过解析到的IP地址和端口主动连接CnC服务器,这样攻击者就可以通过远程shell来控制这台被感染的计算机。
Windows中的数据隐藏:
- 交换数据流(Alternate Data Steams,ADS):是windows中一个简单有效的隐藏载体文件渠道。对于普通检查人员来说,查看当前目录内容时,除了一些正常文件外看不到任何特殊信息。除非使用非常规方法检查,否则无法发现交换数据流中隐藏的文件。需要特别注意的是,默认情况下,大多数防病毒软件在检查病毒、木马和其他恶意代码时,并不会扫描Windows的交换数据流,因为这样会使扫描速度比平均降低90%。
- dos命令:
>notepad mike.txt
>dir
>notepad mike.txt:mikehidden.txt
>dir
>notepad mike.txt:mikehidden2.txt // 同一文件可创建的交换数据流不止一个
>dir
- 隐蔽交换数据流:隐蔽交换数据流还有一个更隐蔽的方式,就是将交换数据流绑定到一个保留设备名中,这样就算使用工具(比如LDS或streams.exe)也无法检测到交换数据流。Windows中有很多这样的保留设备名,MSDN中还特别列了出来:CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8和LPT9。
- dos命令:
> echo mike > mike.txt
> echo mike > COM1.txt
> mkdir COM1
>dir
> echo mike > \\?\c:\sandbox\NUL //将"\\?\"选项和保留设备名组合在一起创建一个名为NUL的文件。
>dir
>more NUL // 这里将会提示 Cannot access file \\.\NUL
但熟悉该技术的人还是可以通过在命令中加入"\\?\"来读取到文件内容
>more \\?\c:\sandbox\NUL
使用cmd.exe绑定到CON文件中,以创建隐蔽交换数据流:
>type cmd.exe > \\?\c:\sandbox\CON:hiddencmd.exe
>wmic process call create
- 卷影技术:
Linux中的数据隐藏
- Linux文件欺骗:在Linux中隐藏文件和目录的初级方法。在文件名前加上" . "符号即可在目录中隐藏该文件。尽在执行" ls "命令的时候看不见,用" ls –al " 查看,就原形毕露了。
- 扩展文件系统中的数据隐藏:每个文件或目录都由一个索引节点代表,索引节点中包含的信息由:文件类型、访问权限、文件所有者、时间戳、文件大小和数据块指针。在扩展文件系统中,删除文件时,文件系统知识取消了文件名与索引节点间的关联,并不会删除文件文件的数据,除非文件系统需要为新文件分配空间而把删除的文件数据覆写。
- TrueCrypt:用于建立和维护空中加密的卷(数据存储设备)。空中加密:在不需要任何人工干预的情况下,数据可以在保存前自动加密,并在加载后自动解密,如果没有正确的密码(注册文件)或者加密密钥,我们是无法读取(解密)存储在加密卷中的数据的。TrueCrypt可以创建"隐藏"卷,功能比较强大。
-
虚拟机中的数据隐藏
- MojoPac可以在U盘上建立虚拟机环境,把U盘插入到其他计算机后,其中的虚拟环境仍能正常运行,这样你就可以带着自己专有的windows xp 环境,在不同计算机之间随意使用。
- 要隐藏数据较大时,人们一般会选择多媒体文档为媒介。虚拟机的体积很大,也可以隐藏大量数据。但是,与静态多媒体文件不同,虚拟机在使用过程中,大小总是动态变化的。这样就可以躲过数据有效工具(主要目的是识别对文件的非法修改)的检查了。总之,要想在虚拟机中隐藏数据,我们必须先了解虚拟机的组织结构。利用VMware文件可以进行信息隐藏。
-
网络协议中的数据隐藏
- 根据握手过程,可以将:序列号 = ASCII码 * K,K为常数,这样就可以隐藏ASCII码,在接收端,若知道K,则可以恢复ASCII码,从而获取隐藏信息。
VoIP中的数据隐藏:IP语音(voice over internet protocol,VoIP)。应用广、产生大量的小数据包、丰富的数据包类型、编码器和编码方法,为数据隐藏提供了良好的条件。隐藏的步骤:(1)将秘密消息分割成的小数据块嵌入到RTP有效载荷的报文头中。因为多数RTP有效负荷类型都有内置的报文头,其中包含了有效载荷的配置信息。因此,可以在其中嵌入少量字节。(2)将秘密消息转换成比特流,然后用每位依次替换RTP有效负荷数据编码中的最低有效位。
下面三幅图讲明原理。其中RTP延迟包修改法是故意让包不可达。
IP层数据隐藏,TTL字段:网络路由十分智能,大多数报文从源地址到达目的地址通常只需经过几跳。虽然尚无针对典型IP报文路由跳数的确切统计数据,但据作者所知,美国本土的网络流量中平均报文跳数为8~15,比TTL允许的最大值255小得多,因此除非目标不可达,否则在报文到达目的地前几乎不可能耗尽生存时间(TTL)。所以我们可以用TTL值的前两位来隐藏数据,而不会影响报文传输。
-
取证与反取证
反取证——隐藏痕迹:(1)通过对比隐藏数据的图片和原载体文件是可以发现不同的,因此强烈建议嵌入操作完成后将原始载体文件删除。还要在进行数据隐藏操作的计算机上清除数据隐藏程序的痕迹。别忘了清理垃圾箱和松散空间。最好选择定制的数码照片而不是普通照片作为载体,因为普通照片可能会从网上搜索到原始载体进行对比。(2)数据隐藏密码:1)不要使用操作系统的密码,在网页浏览器中存储的密码或网络设备使用的密码。2)密码应包含大小写字母、数字和特殊字符的组合。3)如果要把密码保存在某个地方,最好使用Bruce Scheier 的 PasswordSafe(http://passwordsafe.sourceforge.net/)。(3)隐藏痕迹,在windows中可以使用cleanmgr工具来清理系统,使其不会残留数据隐藏软件的任何痕迹。
取证:
检查可以系统中是否包含数据隐藏软件的方法很多,主要包括:
- 检测仍然存在于可以计算机中的数据隐藏软件。
- 网站页面缓存,查找可能提供数据隐藏软件下载的网页。
- 图像缓存,查找使用并可能下载数据隐藏软件的线索。
- 残留的人工痕迹,表明系统可能安装或运行过数据隐藏软件。
- 注册表
- 软件卸载后残留文件
- "Thumb"文件(图像缩略图缓存文件)
一般都使用现成的工具进行。
-
缓解策略