zip(伪)加密、图片隐写
杂项题:需要密码的zip文件,
(1) 根据提示或其他文件解出密码
(2) 暴力破解
(3) 伪加密修改
(4) 明文攻击
原理
压缩源文件数据区:
50 4B 03 04:头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(判断有无加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
压缩文件目录区:
50 4B 01 02:目录中文件头标记(0x02014b50)
1F 00:压缩使用的 pkware 版本
14 00:解压所需 pkware 版本
00 00:全局方式位标记(判断伪加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度
加密
判断是否加密:
全局方式位标记的四个数字仅第二个数字影响加密属性, 第二个数字为奇数时加密,为偶数时未加密
无加密:
压缩源文件数据区的全局方式位标记:00 00(50 4B 03 04 14 00后)
且压缩源文件目录区的全局方式位标记:00 00(50 4B 01 02 14 00后)

08 00中8为偶数,故未加密
伪加密:
数据区:00 00(50 4B 03 04 14 00后)
目录区:09 00(50 4B 01 02 14 00 后)

前面未加密,后面为奇数加密,故为伪加密
真加密:
数据区: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的修复功能
可能有的真加密实际为伪加密
(1)binwalk -e 无视伪加密:
在kali中使用自带的binwalk,运行后会生成文件夹,内含zip和txt文件
(2)在kali中直接打开
(3)用zipcenOp.jar工具
Binwalk工具:
分析隐藏文件:binwalk + 文件名
分离隐藏文件:binwalk -e + 文件名
还可查看文件隐写
binwalk firmware.bin // 基础操作
binwalk -e firmware.bin // 自动提取
sudo binwalk -u // 升级binwalk
若binwalk -e因权限问题运行失败,可添加--run-as=root:
binwalk -e [文件] --run-as=root
图片分析工具
010editor
Stegsolve:图片分析工具,支持通道分离/LSB提取

修改图片高度
Png:
第二行前四对为宽度,接着四对为图片高度
将目标高度的十进制转为十六进制修改即可
Jpg:
FF C0:jpg文件控制尺寸的十六进制表示

高:0647(十进制1607)
宽:0500(十进制1280)
高度十六进制最高可设为5048(无需逐次尝试)
Stegdetect:>数字图像隐写分析工具,主要检测JPEG图像的隐秘信息嵌入
q – 仅显示可能包含隐藏内容的图像
n – 启用JPEG文件头检查,降低误报率(带批注区域的文件视为无嵌入信息)
若JPEG的JFIF版本号非1.1,禁用OutGuess检测
s – 修改检测敏感度(默认1,值越大可疑文件含敏感信息可能性越高)
d – 打印带行号的调试信息
i – 检测图像信息是否用invisible secrets嵌入
Pdf文件:

隐写工具zsteg: 检测png和bmp图片的隐写数据,查看lsb数据
zsteg xxx.bmp –msb
zsteg xxx.bmp
zsteg xxx.png
zsteg -a (文件名)
检测zlib:
-b的位数从1开始
zsteg zlib.bmp -b 1 -o xy -v
提取该通道图片
zsteg -e b8,a,lsb,xy 文件.png -> out.png
Foremost: 解析图片隐写、分离文件、还原删除文件
-V - 显示版权信息并退出
-t - 指定文件类型 (-t jpeg,pdf …)
-d - 打开间接块检测 (针对UNIX文件系统)
-i - 指定输入文件 (默认为标准输入)
-a - 写入所有文件头部,不执行错误检测(损坏文件)
-w - 向磁盘写入审计文件,不写入检测到的文件
-o - 设置输出目录 (默认为输出)
-c - 设置配置文件 (默认为 foremost.conf)
-q - 启用快速模式,在512字节边界搜索
-Q - 启用安静模式,禁用输出消息
-v - 详细模式,向屏幕记录所有消息
使用命令: foremost -i 目标文件名 -o 输出文件夹(需提前创建)
RAR压缩包修复:
缺少RAR4标头,插入52 61 72 21 1A 07 00
缺少RAR5标头,插入52 61 72 21 1A 07 01 00

文件头修复:
文件头损坏可能是
HEAD_TYPE
被修改导致
RAR4:压缩多个文件时,间隔
HEAD_CRC(2位) HEAD_TYPE
RAR5:每个文件间隔
HEAD_CRC(4位) HEAD_SIZE HEAD_TYPE
正常情况下
HEAD_TYPE
取值为
0x74(RAR4)
或0x02(RAR5)
修复文件头损坏:将
HEAD_TYPE
修改为正确值即可
Rar4: HEAD_TYPE = 0x74 - FILE_HEAD(文件头)
Rar5: 0x02 - 文件头
示例:普通压缩包

将7A
改为74
,即可正常解压出png文件(rar中,74
表示后面是文件)
明文攻击
工具:Archpr
压缩包加密算法为zipcrypto
过程:准备与加密压缩包内某文件同格式的未加密文件, 用相同算法压缩,使其与加密包有可比对内容, 在archpr中以明文操作即可出结果
示例:bugku:神秘的文件

END
编辑人:黄珊珊