第一周: 隐写术 1.信息附加 2.EXIF 3.LSB 4.盲水印 5.伪加密
第二周任务:流量取证 wireshark 和 tshark 的使用,流量分析;压缩包加密
建议在做题的过程中学习,可以做一做ctfshow的萌新杂项,杂项入门
MISC,中文即杂项,包括隐写,数据还原,脑洞、社会工程、压缩包解密、流量分析取证、与信息安全相关的大数据等。
竞赛过程中解MISC时会涉及到各种脑洞,各种花式技巧,主要考察选手的快速理解、学习能力以及日常知识积累的广度、深度。
Miscellaneous简称MISC,意思是杂项,混杂的意思。
杂项大致有几种类型:
1.隐写
2.压缩包处理
3.Miscellaneous简称MISC,意思是杂项,混杂的意思。
杂项大致有几种类型:
1.隐写
2.压缩包处理
3.流量分析
4.攻击取证
5.其它
4.攻击取证
5.其它
“隐写”,我们可以分成两部分理解,“隐”将目标真实信息隐藏在选定的伪装载体后面,“写”则是真实信息隐藏在伪装载体后面的技术。
隐写术包括图片、音频、视频等文件隐写,在处理这类问题时,应优先确认该文件的实际类型,可参考下图,查看其文件头信息。
国内外研究共识
隐写技术的英文在很多技术期刊上用的是“Technical Steganography”,这也是为什么很多隐写工具的名称都以Steg开头的原因
Gary C. Kessler在《Advances in
stego_medium = hidden_message carrier stego_key
stego_medium:隐写的最终媒介
hidden_message:需要隐藏的信息
carrier:载体
stego_key:密钥
常见的图片隐写例如在图片中附加字符串,或者在图片中嵌入其他图片、压缩包等文件的方式
首先我们看一下直接在图片中附加字符串,典型的题目例如BUGKU中的“这是一张单纯的图片”
使用Winhex可以看到图片后加了一串字符串
之后通过Unicode—ascii解码即可
除了可以使用Winhex以外,使用strings也非常好用
打印文件中的可打印字符串,常用来在二进制文件中查找字符串,经常与grep配合使用
参数:
strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ file ]
-a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
-f –print-file-name:在显示字符串前先显示文件名
-n –bytes=[number]:找到并且输出所有NUL终止符序列
-:设置显示的最少的字符数,默认是4个字符
-t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
-o :类似--radix=o
文件都有不同的存储格式,例如PNG的文件头为:
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A
正常的图片,头部的格式是固定的
一个有效的 PNG 图像必须包含一个 IHDR块、一个或多个IDAT块和一个 IEND块
IHDR包括:
Width: 4 bytes
Height: 4 bytes
Bit depth: 1 byte
Color type: 1 byte
Filter method: 1 byte
Interlace method: 1 byte
IDAT图像数据:
从图像布局中描述的图像扫描线开始;此原始数据的布局和总大小由IHDR的字段决定
根据IHDR块指定的过滤方法过滤图像数据
使用IHDR块 指定的压缩方法压缩过滤后的数据
BUGKU中的“隐写”题目是通过更改图片的高显示真是信息
在查看PNG文件格式时,IHDR后面的八个字节就是宽高的值
IHDR指图像头部块,包含图片的宽度、高度、位的深度和颜色类型
图片式隐写是在图片中隐藏了zip、其他图片或文件,一般肉眼看图片的大小可以发现,检测的方法是用binwalk
binwalk中的参数
-e, --extract 自动提取已知的文件类型
-D, --dd=<
-M, --matryoshka 递归扫描提取的文件
-d, --depth= 限制matyoshka递归深度(默认值:8级深度)
-C, --directory= 解压文件/文件夹到自定义目录(默认:当前工作目录)
-j, --size= 限制每个提取文件的大小
-n, --count= 限制提取文件的数量
-r, --rm 解压后删除刻录的文件
-z, --carve 从文件中提取数据,但不要执行提取实用程序
-V, --subdirs 提取到由偏移量命名的子目录中
图片类隐型经常会将一部分数据隐藏在一张图片中,判断思路可以,Jpg格式的文件在16进制中的表示是以 ff d9 两个字节结尾,可以通过判断末尾来判断是否为真正的图片文件,有时也可以通过文件的大小稍加判断
可以直接看到图片中隐藏着其他文件
图片中隐藏另一张图片可以使用经典的隐写工具Stegsolve
IDAT块
-因为IDAT块可能有多个,此处也可能通过IDAT块处出现隐写
有个可以使用的工具——pngcheck
pngcheck验证 PNG、JNG 和 MNG 文件的完整性(通过检查内部 32 位 CRC,也就是校验和,并解压缩图像数据);它可以选择以人类可读的形式转储图像中几乎所有的块级信息。例如,它可用于打印有关图像的基本统计信息(尺寸、位深度等);在其调色板中列出颜色和透明度信息(假设它有一个);或提取嵌入的文本注释。这是一个具有批处理功能的命令行程序。
LSB隐写就是修改了像数中的最低的1bit,png图片是一种无损压缩的位图片形格式,png图片中的图像像数一般是由RGB三原色(红绿蓝)组成,每一种颜色占用8位,取值范围为0x00~0xFF,即有256种颜色,一共包含了256的3次方的颜色,即16777216种颜色
Stegsolve
(60条消息) CTF_StegSolve使用方法_小常吃不下了的博客-CSDN博客_stegsolve
文件头就是是位于文件开头的一段承担一定任务的数据。
(60条消息) 常见文件文件头和隐写术总结 CTF中Misc必备_思源湖的鱼的博客-CSDN博客_txt文件头
文件类型
文件头
文件尾
JPEG(jpg)
FF D8 FF E1
FF D9
PNG(png)
89504E47
AE 42 60 82
GIF(gif)
47494638
00 3B
TIFF(tif)
49492A00
Windows Bitmap(bmp)
424DC001
ZIP Archive(rar)
504B0304
RAR Archive(rar)
52617221
Adobe Photoshop(psd)
38425053
Rich Text Format(rtf)
7B5C727466
XML(xml)
3C3F786D6C
HTML(html)
68746D6C3E
Adobe Acrobat(pdf)
255044462D312E
Wave(wav)
57415645
pcap(pcap)
4D3C2B1A
文件格式
? ?头标识 50 4B 03 04
? ?版本号,头标识后面四位
? ?加密情况,版本号后面两位,00为未加密,其余通常为加密
(60条消息) PNG文件头格式解析_ADreamClusive的博客-CSDN博客_png头
binwalk -e /root/Desktop/misc14.jpg --run-as=root
dd if=misc14.jpg of=1.jpeg skip=2103 bs=1
有时候一个文件可能隐藏有许多个文件,这时候得用工具进行分离
(65条消息) CTF_StegSolve使用方法_小常吃不下了的博客-CSDN博客_stegsolve
TweeakPNG是一款PNG图像浏览工具,它允许查看和修改一些PNG图像文件的原信息存储。
如果文件头是正常的,但却无法打开,可以使用TweakPNG修改CRC。出现校验信息错误时,可以根据错误的CRC去十六进制中搜索,然后改成正确的CRC。(CRC上一行之后的 8个字节,前四个为宽度,后四个为高度(十六进制下的第二行前八位))
有时不是CRC的错误,而是图片的宽高错误,需要通过CRC计算出正确的高度或宽度。可以通过脚本进行计算。
1.查看lsb数据
2.检测
3.提取该通道图片
(64条消息) ARCHPR(压缩密码暴力破解软件)_本性男孩的博客-CSDN博客_archpr
压缩密码暴力破解软件
(65条消息) 图像隐写工具---steghide_Hydra.的博客-CSDN博客_steghide
可交换图像文件格式常被简称为Exif(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。Exif 可以被附加在 JPEG、TIFF、RIFF 等文件之中,为其增加有关数码相机拍摄信息的内容和缩略图或图像处理软件的一些版本信息
Exif
Exijf按照PEG的规格在PEG中插入一些图像/数字相机的信息数据以及缩略图像可以通过与PEG兼容的互联网浏览器/图片浏览器/图像处理等一些软件来查看Exift格式的图像文件就跟浏览通常的PEG图像文件一样,图片右键属性,查看exif或 查看详细信息,在相关选项卡中查找flag信息。
一种常见的方式是利用最低有效位(Least Significant Bit,LSB)来进行隐写。“原理就是图片中的像数一般是由三种颜色组成,即三原色,由这三种原色可以组成其他各种颜色,例如在PNG图片的储存中,每个颜色会有8bit,LSB隐写就是修改了像数中的最低的1bit,在人眼看来是看不出来区别的,也把信息隐藏起来了。”
LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正
LSB,最低有效位,英文是Least Significant Bit
容量大、嵌入速度快、对载体图像质量影响小
在PNG和BMP上可以实现
原理
图片中的像素一般是由三种颜色组成,即三原色(红绿蓝),由这三种原色可以组成其他各种颜色
在png图片的存储中,每个颜色占有8bit,即有256种颜色,一共包含256的三次方颜色,即16777216种颜色
人类的眼睛可以区分约1,000万种不同的颜色,剩下无法区分的颜色就有6777216
LSB隐写就是修改了像素中的最低位,把一些信息隐藏起来
LSB替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低比特位,原来的的7个高位平面与替代秘密信息的最低位平面组合成含隐藏信息的新图形。
1.像素三原色(RGB)
2.通过修改像素中最低位的1bit来达到隐藏的效果
3.工具: stegsolve、 zsteg、 wbstego4、 python脚本
应用场景:
版权识别。数字水印可以提供所有权证据。
用户识别或指纹。合法用户的身份嵌入水印,用于识别非法复制。
保证图像不被篡改。如果水印设计成,对图像任何修改将破坏水印。
自动监视。
主要的知识点在于傅里叶变换把原图变为频谱图,再叠加水印,将含水印的频谱图进行傅里叶逆变换得到含水印的图像。那么思考傅里叶变换如何将原图变为频谱图,再将频谱图变为图像呢?下面对傅里叶变换进行分析。
zip伪加密
zip伪加密就是通过修改zip压缩包特定的字节,进而在打开文件时压缩包被识别为使用了密码加密,从而达到伪装加密效果。
zip文件结构
一个ZIP文件由三大部分组成:
压缩源文件数据区
压缩源文件目录区
压缩源文件目录结束标志
数据区主要记录了压缩前后文件的元数据以及存放压缩后的文件,记录格式如下:文件头 文件数据 数据描述符
a、文件头结构
b、文件数据
文件数据紧跟在文件头之后,一般是压缩后的文件数据或压缩方式选择不压缩时候,用来存储未压缩文件数据。
c、数据描述符
数据描述符紧跟在文件数据的最后一个字节之后,当且仅当无法在 ZIP 文件中查找时才使用此描述符。
压缩源文件目录区是由一系列压缩源文件目录记录所组成,一条压缩文件目录记录对应数据区中的一个压缩文件记录,压缩源文件目录记录由以下部分构成:
压缩源文件目录结束标志作用是用来定位压缩源文件目录区的开始位置,同时记录压缩包的注释内容。
在做CTF的misc题目时经常会碰到需要密码的zip文件,打开这种需要密码的方法无非就这三种:
? (1)根据提示或其他文件解出密码
? (2)暴力破解
? (3)伪加密修改
? 在这里我们讲一下第三个伪加密的原理和修改方法。
1.压缩源文件数据区:
? 50 4B 03 04:这是头文件标记 (0x04034b50)
? 14 00:解压文件所需 pkware 版本
? 00 00:全局方式位标记(判断有无加密)
? 08 00:压缩方式
? 5A 7E:最后修改文件时间
? F7 46:最后修改文件日期
2.压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记 (0x02014b50)
1F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(判断是否为伪加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
3.压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度
识别一个zip文件是否加密主要是看压缩源文件数据的全局方式位标记和压缩源文件目录区的全局方式位标记,关键操作在其中的全局方式标记的第一字节数字的奇偶上,其它的不管为何值,都不影响它的加密属性。通常全局方式位标记为2 bytes长度,第一字节数字为偶数表示无加密,例如:00,02,04等;为奇数表示有加密,例如01,03,09等。
注意:
全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性,即:
第二个数字为奇数时 –>加密
第二个数字为偶数时 –>未加密
1.无加密:
压缩源文件数据区的全局方式位标记应当为00 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为00 00 (50 4B 01 02 14 00 后)
2.伪加密:
压缩源文件数据区的全局方式位标记应当为 00 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为 09 00 (50 4B 01 02 14 00 后)
3.真加密:
压缩源文件数据区的全局方式位标记应当为09 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为09 00 (50 4B 01 02 14 00 后)
? 确定是伪加密后就需要将其修改为无加密,方法很简单,就是将压缩源文件目录区的全局方式位标记从09 00改为00 00。
(1)用binwalk-e 无视伪加密
(2)在macOS和kali系统中,可以直接打开伪加密zip文件
(3)检测伪加密的工具ZipCenOp.jar
(4)有时用WinRAR的修复功能
(60条消息) 使用工具【ZipCenOp.jar】自动修复zip伪加密文件_小常吃不下了的博客-CSDN博客_zipcenop怎么用
在ctf中,通常会有一些pcapng或者pcap文件后缀的数据包,不同数据包有不同的协议,常见的有HTTP,TCP协议,当然CTF中考察的协议有很多,我们需要从这类文件中进行分析,获取数据然后最终找到我们的答案flag
做这类题目的前提是我们需要了解协议和工具的用法
HTTP是应用层协议,定义的是传输数据的内容的规范,TCP是传输层,HTTP是要基于TCP连接基础上的。简单的说
TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输,HTTP是用来收发数据,即实际应用上来的
在大家耳熟能详的TCP/IP协议中,会采用三次握手建立一个连接
我们点击HTTP的包,点击最下面即可看到应用层,即HTTP协议的请求信息。
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
因为他的可视化操作以及出色的分析能力,这款软件非常受欢迎,因此可以称他为流量分析的王者
官方下载地址:
https://
wireshark的基本使用分为数据包筛选、数据包搜索、数据包还原、数据包提取四个部分
数据包筛选
Wireshark的数据包筛选功能是wireshark的核心功能,比如需要筛选出特定的协议如HTTP, Telnet等,也可能需要筛选出ip地址,端口等,多条规则可以使用&&,||连接
常用的过滤命令
6.http模式过滤
contain非常好用 类似于一个搜索功能
通常打开一个流量包,先筛选一下有没有HTTP,如果没有第二件事就是去看它大致有哪些协议,看一下它有没有包含flg、key、提示内容。。。。
数据包搜索
在wireshark界面按ctrl f或者点击图标
数据包还原
在wireshark中,存在一个追踪流的功能,可以将HTTP或TCP流量集合在一起并还原成原始数据,具体操作方法如下:选中想要还原的流量包,右键选中,选择追踪流-TCP流/UPD流/SSL流/HTTP流
数据提取
wireshark支持提取通过HTTP传输(上传/下载)的文件内容,方法如下:
选中HTTP文件传输流量包,在分组详情中找到data或者LIne-based text data:text/html层,鼠标右键点击-选中 导出分组字节流
鼠标右键点击-选中 显示分组字节
对本地存储的.pcap文件进行解析。这时候就会使用到tshark命令行工具,可以通过命令提取自己想要的数据,可以重定向到文件,也可以结合上层语言比如Java,来调用命令行,实现对数据的处理!
属性隐藏
看二进制
ZIP伪加密
暴力遍历
明文攻击
CRC32碰撞
进制转换隐藏信息
图片中隐藏压缩包
1、属性隐藏
很简单
就是在属性的注释里有密码
2、看二进制
用winhex打开
搜索字符pass 、 key 等
查看是否有含有压缩包密码
3、ZIP伪加密
一个ZIP文件由三个部分组成:
压缩源文件数据区
压缩源文件目录区
压缩源文件目录结束标志。
zip伪加密:
在文件头的加密标志位做修改
打开文件时识被别为加密压缩包
具体如下:
压缩源文件数据区
50 4B 03 04 是头文件的标志 (0x04034b50)
00 00 全局方式标记(判断有无加密的重要标志)
压缩文件目录区
50 4B 01 02 目录中文件头标志(0x02014b50)
00 00 全局方式标记(有无加密的重要标志,更改这里就可以进行伪加密了,改为 09 00 打开就会提示有密码了)
压缩源文件目录结束标志
50 4B 05 06 目录结束标记
辨别真假加密:
无加密
压缩源文件数据区的全局加密应当为 00 00
且压缩源文件目录区的全局方式标记应当为00 00
假加密
压缩源文件数据区的全局加密应当为 00 00
且压缩文件目录区的全局方式标记应当为 09 00
真加密
压缩源文件数据区的全局加密应当为 09 00
且压缩源文件目录区的全局方式应当为 09 00
破解方法
winrar修复功能
winhex打开修改标志位4、暴力遍历
暴力[遍历]
Windows下用的是ARCHPR
除了纯暴力
还有掩码、字典等功能
明文攻击
已知zip中的一个文件(文件大小要大于12Byte)或者已经通过其他手段知道zip加密文件中的某些内容时
因为同一个zip压缩包里的所有文件都是使用同一个加密密钥来加密的
所以可以用已知文件来找加密密钥
用ARCHPR或者AZPR进行明文攻击
过程
flag.txt是加密压缩包里的flag.txt的明文,一般是对比CRC是否一样
将flag.txt压缩成.zip文件
在软件中填入相应的路径即可开始进行明文攻击
CRC32碰撞
CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值
在产生CRC32时,源数据块的每一位都参与了运算
因此即使数据块中只有一位发生改变也会得到不同的CRC32值
利用这个原理如果文件字节长度比较短的话,可以尝试CRC32爆破
碰撞脚本
在 Python 2.x 的版本中,binascii.crc32 所计算出來的 CRC 值域为[-2^31, 2^31-1] 之间的有符号整数,为了要与一般CRC 结果作比对,需要将其转为无符号整数,所以加上& 0xffffffff来进行转换
在 Python 3.x 的版本中,其计算结果为 [0, 2^32-1] 间的无符号整数,因此不需额外加上& 0xffffffff
进制转换隐藏信息
当发现开头是PK的时候
说明是ZIP文件
进行进制转换
再用winhex保存为zip
图片中隐藏压缩包
以jpg格式的图片为例
一个完整的 JPG 文件由 开头,结尾
图片浏览器会忽略 以后的内容
因此可以在 JPG 文件中加入其他文件
用kali的binwalk指令
然后用foremost分离即可