77百科网
当前位置: 首页 生活百科

跨站脚本攻击的原理(ZIP已知明文攻击深入利用)

时间:2023-08-16 作者: 小编 阅读量: 1 栏目名: 生活百科

ZIP的加密算法大致分为两种ZipCrypto和AES-256,各自又分Deflate和Store。传统的ZIP已知明文攻击利用,windows下可以使用AZPR,linux下可以使用pkcrack。而各类文件都有其自身固定的文件格式,结合这类格式,极大扩展了ZIP明文攻击的攻击面。历时近16分钟,成功得到秘钥,这不是压缩包的加密密码,而是ZIP内部的三段秘钥。

一、前言

你加密的压缩包比你想象中的还不安全!

哪怕对于信息安全人员来说,很多时候给压缩包加上一个密码就以为的是万事大吉了。但事实是,很多情况下,你的加密压缩包,远远没有你想象的安全。

二、内容概要

以往进行ZIP已知明文攻击,通常需要一个完整的明文文件。 而本文讨论的攻击方式只需要知道加密压缩包内容的12个字节,即可进行攻击破解降低了已知明文的攻击难度。同时,结合各类已知的文件格式,更扩宽了ZIP已知明文攻击的攻击面。

三、正文3.1 ZIP已知明文攻击的一般利用

以往出现在网络安全竞赛中的已知明文攻击考点,或者大部分网上的文章,都需要知道加密zip文件中的一个完整明文文件并且要求明文以相同的标准被压缩,这才有可能会攻击成功。

其实传统的已知明文攻击要成功需要三个条件,在此我将条件列出来:

完整的明文文件

明文文件需要被相同的压缩算法标准压缩(也可理解为被相同压缩工具压缩)

明文对应文件的加密算法需要是 ZipCrypto Store

第三点是我们实际应用中常常会被忽略的。因竞赛中遇到的题目,都是提前设置好的。

· AES256-Deflate/AES256-Store加密的文件不适用于明文攻击。

ZIP的加密算法大致分为两种ZipCrypto和AES-256,各自又分Deflate和Store。

ZipCrypto Deflate

ZipCrypto Store

AES-256 Deflate

AES-256 Store

ZipCrypto算是传统的zip加密方式。只有使用ZipCrypto Deflate /Store才可以使用 ZIP已知明文攻击进行破解。

传统的ZIP已知明文攻击利用,windows下可以使用AZPR,linux下可以使用pkcrack。

3.2 ZIP已知明文攻击的深入利用

本文要探讨的攻击方法并不需要知道压缩文件中完整的明文,只需在已知加密压缩包中的少部分明文字节时即可进行攻击破解。而各类文件都有其自身固定的文件格式,结合这类格式,极大扩展了ZIP明文攻击的攻击面。具体要求如下:

至少已知明文的12个字节及偏移,其中至少8字节需要连续。

明文对应的文件加密方式为ZipCrypto Store

该方法对于ZIP加密的算法有要求,明文对应的文件加密方式需要为ZipCrypto Store。经测试,Winrar(v5.80)、7zip(v19.00)默认状态下加密使用的就是AES256算法,直接排除。360压缩(v4.0.0.1220)、好压(v6.2)使用的是ZipCrypto,不固定使用Store或Deflate(如果要固定使用ZipCrypto Store算法加密,可以在压缩的时候指定压缩方式为“存储”)。

以下破解用到的压缩包,都是经360压缩或者好压加密打包的。

3.2.1 使用到的工具项目bkcrack:https://github.com/kimci86/bkcrack

bkcrack安装:apt install cmake -ycmake .make //在src下生成bkcrack文件cp bkcrack /usr/sbin/bkcrack //作为系统命令使用

bkcrack常用参数:

-c 提取的密文部分-p 提取的明文部分-x 压缩包内目标文件的偏移地址 部分已知明文值-C 加密压缩包-o offset -p参数指定的明文在压缩包内目标文件的偏移量

在此我们不是“造轮子”,而是“使用轮子”,偏向于实操,利用已有的手段工具去解决现有的问题。话不多说,上实操案例。

3.3 实操案例

案例中演示的压缩包等,都可在文末附件中下载。

3.3.1 加密文本破解文本类文件被加密成zip时,有很大的概率以ZipCrypto Store方式加密存储。创建加密zip:生成uuid,将字符串 “flag{16e371fa-0555-47fc-b343-74f6754f6c01}” 保存为flag.txt。然后用360压缩将文件添加为加密ZIP: flag_360.zip

攻击破解:采用8 4的方式提取部分已知明文来进行攻击测试,flag{16e371fa-0555-47fc-b343-74f6754f6c01}

我们利用以下这部分明文,来进行攻击破解:*lag{16e3********************74f6********

-------------------------------------------------------------------------------------------------------------------#准备已知明文echo -n "lag{16e3" > plain1.txt //连续的8明文echo -n "74f6" | xxd //额外明文的十六进制格式,37346636

#攻击bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636

#由于时间较长,为防止终端终端导致破解中断,可以加点小技巧bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > 1.log& //后台运行,结果存入1.log

//加上time参数方便计算爆破时间time bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > 1.log&

//查看爆破进度tail -f 1.log-------------------------------------------------------------------------------------------------------------------

注:· -p 指定的明文不需要转换,-x指定的明文需要转成十六进制· 提到的偏移都是指 “已知明文在加密前文件中的偏移”。

历时近16分钟,成功得到秘钥,这不是压缩包的加密密码,而是ZIP内部的三段秘钥。

b21e5df4 ab9a9430 8c336475

使用该秘钥进行解密:bkcrack -C flag_360.zip -c flag.txt -k b21e5df4 ab9a9430 8c336475 -d flag.txt

3.3.2 利用png图片文件头破解PNG文件头:

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52

满足,12个字节的要求。拿一张图片和一个flag.txt一起打包成加密ZIP压缩包:png4.zip

攻击破解:-------------------------------------------------------------------------------------------------------------------#准备已知明文echo 89504E470D0A1A0A0000000D49484452 | xxd -r -ps > png_header

#攻击time bkcrack -C png4.zip -c 2.png -p png_header -o 0 >1.log&tail -f 1.log-------------------------------------------------------------------------------------------------------------------耗时近7分钟破解出秘钥:e0be8d5d 70bb3140 7e983fff

利用秘钥解密文件:bkcrack -C png4.zip -c flag.txt -k e0be8d5d 70bb3140 7e983fff -d flag.txt

3.2.3 利用压缩包格式破解

将一个名为flag.txt的文件打包成ZIP压缩包后,你会发现文件名称会出现在压缩包文件头中,且偏移固定为30。且默认情况下,flag.zip也会作为该压缩包的名称。

所以,当一个加密压缩包中存在另一个ZIP压缩包时,且能够知道或猜测该压缩包内的文件名称时,可以尝试进行已知明文攻击。

将flag.zip与其他文件(选用一张图片)一起用好压打包成加密ZIP压缩包:test5.zip

已知的明文片段有:· “flag.txt” 8个字节,偏移30· ZIP本身文件头:50 4B 03 04 ,4字节

8 4,满足了破解的最低要求

攻击:------------------------------------------------------------------------------------------------------------echo -n "flag.txt" > plain1.txt //-n参数避免换行,不然文件中会出现换行符,导致攻击失效time bkcrack -C test5.zip -c flag.zip -p plain1.txt -o 30 -x 0 504B0304 >1.log&tail -f 1.log-------------------------------------------------------------------------------------------------------------

得到秘钥:

b21e5df4 ab9a9430 8c336475

利用秘钥解密:bkcrack -C test5.zip -c flag.zip -k b21e5df4 ab9a9430 8c336475 -d flag.zip

flag.zip可以直接成功解密。

但若想解密2.png,由于是ZipCrypto deflate加密的,所以解密后需要bkcrack/tool内的inflate.py脚本再次处理。----------------------------------------------------------------------------------------------------------------bkcrack -C test5.zip -c 2.png -k b21e5df4 ab9a9430 8c336475 -d 2.pngpython3 inflate.py < 2.png > 2_out.png----------------------------------------------------------------------------------------------------------------

3.2.4 EXE文件格式破解

EXE文件默认加密情况下,不太会以store方式被加密,但它文件格式中的的明文及其明显,长度足够。如果加密ZIP压缩包出现以store算法存储的EXE格式文件,很容易进行破解。大部分exe中都有这相同一段,且偏移固定为64:

生成一个加密EXE的ZIP压缩包进行测试:nc64.zip

攻击破解:--------------------------------------------------------------------------------------------------------------#准备明文echo -n "0E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000" | xxd -r -ps > mingwen

#攻击time bkcrack -C nc64.zip -c nc64.exe -p mingwen -o64 >1.log&

#查看进度tail -f 1.log---------------------------------------------------------------------------------------------------------

很快就解出了秘钥:

b21e5df4 ab9a9430 8c336475

解密:bkcrack -C nc64.zip -c nc64.exe -k b21e5df4 ab9a9430 8c336475 -d nc64.exe

3.2.5 流量包pcapng格式解密这个有例题: 钓鱼城杯-量子加密 具体格式介绍及解法参考官方的writeup,已打包在附件中

加密算法都是 Store

选用第二段文件头格式:00 00 4D 3C 2B 1A 01 00 00 00 FF FF FF FF FF FF FF FF

攻击:------------------------------------------------------------------------------------------------------echo -n "00004D3C2B1A01000000FFFFFFFFFFFFFFFF" | xxd -r -ps > pcap_plain1

time bkcrack -C 3.zip -c capture.pcapng -p pcap_plain1 -o 6----------------------------------------------------------------------------------------------------------

解密:bkcrack -C 3.zip -c capture.pcapng -k e33a580c c0c96a81 1246d892 -d out.pcapng

3.2.6 网站相关文件破解网站目录中充斥着大量类型的文件,哪怕被打包成加密ZIP,也很容易找到突破口。例如:robots.txt的文件开头内容通常是User-agent: * html文件开头通常是 <!DOCTYPE html>xml文件开头通常是<?xml version="1.0" encoding="UTF-8"?>

在此以web.xml为例,web.xml 是网络程序中的一个很重要的配置文件。常见xml文件头为:<?xml version="1.0" encoding="UTF-8"?>

网站目录肯定会涉及到多级目录,我们也同样进行模拟。在文件夹中创建一个二级目录“123”,并将一个web.xml放入该二级目录中,然后打包成加密ZIP。

攻击:----------------------------------------------------------------------------------------------------------echo -n '<?xml version="1.0" encoding="UTF-8"?>' > xml_plaintime bkcrack -C xml.zip -c 123/web.xml -p xml_plain -o 0 //注意相对路径----------------------------------------------------------------------------------------------------------攻击成功:

解密:bkcrack -C xml.zip -c 123/web.xml -k e0be8d5d 70bb3140 7e983fff -d web.xml

3.2.7 SVG文件格式破解xml格式的文件除了.xml以外,也包括.svg文件。SVG是一种基于XML的图像文件格式。

攻击:-------------------------------------------------------------------------------------------------------------//已知明文echo -n '<?xml version="1.0" ' > plain.txt

bkcrack -C secrets.zip -c spiral.svg -p plain.txt -o 0-----------------------------------------------------------------------------------------------------------攻击成功:

解密:------------------------------------------------------------------------------------------------------------//解密 Store算法 直接解密即可bkcrack -C secrets.zip -c spiral.svg -k c4038591 d5ff449d d3b0c696 -d spiral_deciphered.svg

//解密 deflate算法bkcrack -C secrets.zip -c advice.jpg -k c4038591 d5ff449d d3b0c696 -d advice.deflate

//该文件使用了deflate算法压缩的,解码出来的是Deflate的数据流,因此须将其解压缩。python3 inflate.py < advice.deflate > advice.jpg--------------------------------------------------------------------------------------------------------------

四、结尾4.1 结语

以上这些案例只是给打击做个示范,打开大家的思路,实际可用的场景有许多。例如一些CTF题目压缩包的非预期解,或者网络上资源的破解。

4.2 注意点

已知的明文长度越长,破解速度越快

图片、文本格式文件、压缩包是最容易以store算法被加密打包的

有时会出现攻击得到了秘钥,却无法解密正确文件的情况

存在rbkcrack项目,增加了部分支持

4.3 附件下载

链接:https:///s/1fuuHYFHSU2e0eIAjO7FLfw 提取码:t2y4

4.4 参考文章

https://www.aloxaf.com/2018/10/zip_crack/https://zhuanlan.zhihu.com/p/129855130


文章转自:FreeBuf.COM - 光通天下无患实验室 BlusKing

    推荐阅读
  • 捕蛇者说(翻译(译文介绍)

    捕蛇者说永州的野外出产一种奇特的蛇,它有着黑色的身体白色的花纹;如果这种蛇碰到草木,草木全都干枯而死;如果咬了人,没有能够抵挡伤毒的方法。然而捉到后晾干把它拿来做药引,可以用来治愈麻疯、手脚拳曲、脖肿、恶疮,去除死肉,杀死人体内的寄生虫。永州的人都争着去做捕蛇这件事。有个姓蒋的人家,享有这种好处已经三代了。

  • 我最爱的女人们是哪个台在播(我最爱的女人们什么台什么时间播出)

    综艺节目《我最爱的女人们》卫视版自2019年5月11日在东方卫视播出,而网络版是于2019年5月4日每周六晚22:30在优酷、芒果TV同步播出。这档节目是一档观察男人如何处理生命中最爱的两个女人之间的关系,也就是婆媳关系,以及构建幸福和谐家庭的节目。节目中主要的嘉宾有张晋和蔡少芬、杨烁和王黎雯、张伦硕和钟丽缇、袁成杰和陈芊芊这四对夫妻。

  • 鞋子后面磨脚有什么小方法吗(可以怎么改善呢)

    如果你的鞋子是因为过小而磨脚,建议用冰箱冷冻法。首先,准备两个塑料袋,最好是密封且不易漏水的那种。装好水后,将两个塑料袋完全密封起来,放进磨脚的鞋子里面。最后,把鞋子放进冰箱的冷冻层,大约一个晚上的样子,就可以取出来。当然,冰块也可以用其它东西代替,比如大小合适的土豆、废弃的报纸等,只要能撑大鞋子就可以。

  • 怎么不用胶水粘獠牙(不用胶水粘獠牙的方法)

    怎么不用胶水粘獠牙买一管印有“超强”或“持久黏着”的假牙稳固剂。这些宣传语表示粘好的假牙能维持很长的时间。你可以在保丽净、登泰克、雅克菱等品牌中选择一种。你可以去药房或网上购买假牙稳固剂。大多数假牙稳固剂的单价不会超过50块。用卫生纸把上牙和周围的牙龈擦干。用纸巾按压所有上齿和牙龈,吸干唾液。这样一来,假牙稳固剂就能更好附着在牙齿上。除了卫生纸,你也可以使用厨房纸巾或棉棒。

  • 干雪和湿雪的区别(干雪和湿雪有什么区别)

    干雪和湿雪的区别?干雪和湿雪的区别含义不同:湿雪是指雪花没有来得及完全融化就落到地面的一种天气现象;干雪是雪中的空隙被空气充满,液态水含量很少的雪。

  • 三国鼎立是什么意思(三国鼎立的意思是什么)

    赤壁之战时,曹操被孙刘联军击败,奠定了三国鼎立的雏型。222年刘备在夷陵之战失败,孙权获得荆州大部。223年刘备去世,诸葛亮辅佐刘备之子刘禅与孙权重新联盟。229年孙权称帝,定都建邺,国号“吴”,史称东吴,至此三国正式成立。此后的数十年内,蜀汉诸葛亮、姜维多次率军北伐曹魏,但始终未能改变三足鼎立的格局。263年,曹魏的司马昭发动魏灭蜀之战,蜀汉灭亡。公元280年,西晋灭东吴,统一中国,至此三国时期结束,进入晋朝时期。

  • 塞上风云记大结局(格日勒为父亲报仇了)

    塞上风云记大结局结局是格日勒终于为父亲报了血海深仇。此时张家口在中国是仅仅比上海稍差一点的大口埠,其进出口金额惊人。国内商家一千多家,外国洋行接近五十家,口商吕家为八大皇商之一。吕家家大业大,一系列的阴谋和血雨腥风在吕老爷子死后不断发生。渐渐年老的俊杰思乡情切,回来却没料到日本人打了进来。日本人让俊杰的老相识德王来劝说俊杰做汉奸。

  • 浴霸的辐射和光污染等严重问题(关于浴霸的辐射和光污染等严重问题介绍)

    浴霸的辐射和光污染等严重问题浴霸的安装位置,浴霸应装在浴室中心部。很多家庭将其安装在浴缸或淋浴位置上方、这样表面看起来冬天升温很快但却有安全隐患。因为红外线辐射灯升温快,离得太近容易灼伤人体。正确的方法应该将浴霸安装在浴室顶部的中心位置,或略靠近浴缸的位置,这样既安全又能使功能最大程度地发挥。浴霸安装与浴室空间大小,一般浴霸分为2个灯泡和4个灯泡的,购买时应根据自己的浴室空间大小。

  • 常用办公用品有哪些(有哪些常用办公用品)

    以下内容希望对你有帮助!常用办公用品有哪些书写用品:各种颜色的水性笔、铅笔、橡皮。文件档案管理类:有孔文件夹、无孔文件夹、报告夹、板夹、分类文件夹、挂劳夹、电脑夹、票据夹、档案盒。

热门推荐