用户
搜索
  • TA的每日心情
    开心
    2018-9-11 11:32
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]经常看看I

    i春秋-核心白帽

    Rank: 4

    122

    主题

    151

    帖子

    1651

    魔法币
    收听
    0
    粉丝
    36
    注册时间
    2016-6-6
    发表于 2019-10-14 11:34:47 14191
    在Ctf中,各位大大们做腻了web,烦躁了pwd。今天小弟我给各位大大们带来几道余音绕梁三日不绝耳巴拉巴拉巴拉(超多话)的音频及视频杂项题的解题方法,来一扫各位大大们的烦闷心情。

    那么我先介绍一下音频相关的 CTF 题目主要使用的隐写策略,主要分为 MP3 隐写,LSB 隐写,波形隐写,频谱隐写等。


    本篇文章中使用到的几个工具 :

    ● Audacity,ocenaudio 音频编辑的工具软件
    ● Mp3stego 将需要加密的数据压缩加密隐藏在MP3文件中
    ● video to Picture 可以将视频的每帧提转换成图片
    ● QR Research ctf中常用的二维码识别软件
    ● mageMagick是一个免费的创建、编辑、合成图片的软件
    ● 以及一张摩斯密码对照表

    密码.webp.jpg

    那我们开始吧。

    01

    频谱隐写:音频中的频谱隐写是将字符串隐藏在频谱中,此类音频通常会有一个较明显的特征,听起来是一段杂音或者比较刺耳。比如这题Hear With Your Eyes。


    我们使用audacity打开。

    打开.webp.jpg


    点开三角形(或Shift+M)选择频谱图即可看到Flag。

    flag.webp.jpg

    02

    还有使用摩斯密码的比如这题Hellokitty,打开文件后可以明显看到两段音轨不一样。

    不一样.webp.jpg

    这段MP3正常播放一般是听不出来什么的但是Shift+M 选择分离立体声到单声道然后独奏播放第一栏的音轨,是不是超级熟悉。

    熟悉.webp.jpg

    我们将得到的摩斯码解码可以发现是串字符。

    字符.webp.jpg

    于是试试解MD5,得到flag值。

    值.webp.jpg


    03

    MP3 隐写主要是使用 Mp3Stego 工具进行隐写,使用方法如下:

    encode -E hidden_text.txt -P pass svega.wav svega_stego.mp3

    压缩svega.wav(mono,44.1 kHz,16位编码)并隐藏的text.txt。隐藏文本使用经过,穿过作为密码。这将产生名为svega_stego.mp3。

    decode -X -P pass svega_stego.mp3

    将svega_stego.mp3解压缩为svega_stego.mp3.pcm,并尝试提取隐藏信息。隐藏消息被解密、解压缩并保存到svega_stego.mp3.txt中。

    这题hong_Ksfw02v就是使用了mp3stego 。使用-X来解压。

    解压.webp.jpg

    解压完目录下出现一个hong_Ksfw02V.mp3.txt, 访问txt中的url发现是一个二维码,使用在线识别工具得到16进制字符串。

    16  1.webp.jpg

    16  2.webp.jpg

    16  3.webp.jpg

    txt中有提示是这是一个文件,于是使用xxd -r -p还原之后

    使用file命令查看,发现是一个python 2.7文件。

    文件.webp.jpg

    但是直接运行没有输出也没有报错emm ,将文件改成pyc丢到https://tool.lu/pyc/反编译一波。

    得到以下源码 直接调用flag函数即可得出flag值 zhi_fu_sai_ning。

    ning.webp.jpg


    04

    当然出题者的脑洞通常都很大,比如这题使用了流量+音频分析的套路来出题。

    打开traffic.pcapng文件后粗略的翻了翻发现有ftp的数据流,两个flag.zip ,一个c文件以及key.log。

    把它们都撸出来先。

    出来.webp.jpg

    右键->追踪流->TCP流 然后选择显示和保存数据为原始数据(key.log文件不用,直接另存为ascii即可)

    依次把几个文件从数据包中剥离出来。

    剥离.webp.jpg

    然而在解压flag.txt文件的时候却出乎意料的弹出了一个需要输入密码的小框框 ,当时哇的一下就哭了 。就直接祭出我的Gold finger,胡乱试了几个弱口令无果。我太…太…太南了。

    换个思路,经我四下摸索(Bai)探讨(Du)交流后得知zip文件居然还存在伪加密这种神奇的手法。

    那要怎么办呢,咳咳敲黑板画重点了啊。首先一个zip文件由压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标记三部分组成,而在压缩源文件目录区存在个00 00的全局方式位标记这就是有无加密,伪加密的关键所在。而对其起作用的是全局方式位标记的第二个0且当第二个0为奇数时为加密,为偶数时为不加密。

    那么我们怎么判断到底是真加密还是伪加密呢?

    ● 无加密:
    压缩源文件数据区的全局加密应当为00 00 (504B0304两个bytes之后) 且压缩源文件目录区的全局方式位标记应当为00 00(504B0304四个bytes之后)

    ● 假加密:
    压缩源文件数据区的全局加密应当为00 00 且压缩源文件目录区的全局方式位标记应当为09 00

    ● 真加密:
    压缩源文件数据区的全局加密应当为09 00 且压缩源文件目录区的全局方式位标记应当为09 00。

    真加密.webp.jpg

    看完以上内容我相信大家就能够粗略的了解其中大概的原理了,至于具体的细节就需要亲们自己去百度了呀。

    然后就是打开winhex 修改压缩源文件目录区的全局方式位标记09 00为00 00就可以顺利解压文件了。

    打开flag.txt之后 @#¥%*@#&
    打开.webp.jpg

    好吧按这种狗血剧情我猜另一个压缩包应该是真加密没跑了 。

    试了一下果不其然。

    果不.webp.jpg


    只能找其他线索了。

    通过各种寻找后发现某些浏览器支持将 TLS 会话中使用的对称密钥保存在外部文件中。也就是流量包中存在的key.log(NSS Key Log Format)文件,可供 Wireshark 加密使用。

    在Wireshark中选择编辑->首选项->Protocols->tls(旧本叫ssl)(Pre-Shared-Key)导入key.log。

    log.webp.jpg


    点击ok . 之后wireshark会自动重载数据包 然后会发现其中多出来了好多http流量 ,过了一样感觉挺有东西的。

    东西.webp.jpg


    于是使用文件->导出对象->HTTP 将最大这个包导出保存成zip 文件。

    zip.webp.jpg

    打开之后里面有个mp3文件 用ocenaudio打开 在其中最后一段存在key 值为AaaAaaaAAaaaAAaaaaaaAAAAAaaaaaaa!

    a 1.webp.jpg

    a2.webp.jpg

    最终解压之前需要密码的flag.zip得到以下key。

    key.webp.jpg

    05

    还有涉及到波形的题目,通常来说可以通过观察波形的的规律来解题。但是我年少无知啊~ 刚遇到这题时脑门都要做爆炸了,前后试了各种办法都莫得进展就在快放弃的时候,突然注意到波形图案的方向而且每隔八个波形之后就会有一小段是空着的。于是尝试把它们转成0 1。
    0.webp.jpg

    1.webp.jpg

    再把得到的二进制转成ACSII就可以得出隐藏的信息了。
    信息.webp.jpg

    又是一题解码题Audacity 打开之后可以看到频谱的有规律的(.)(_)感觉这是摩斯电码。
    莫斯.webp.jpg

    于是扔到脚本里面解一下 得到HLEICICTSTWOOCFEMCN1。
    n1.webp.jpg

    找不到这道题的题目了,但是网上的解题步骤还需要在解一次栅栏密码最后的flag应为下图。
    下图.webp.jpg

    06

    讲完了音频的隐写,再给大家送上一题whaleCTF的视频隐写题。

    当我播放这段视频时可以隐约看到一个黑色的二维码浮现在黄色文字上。大概是把二维码抠出来就能获取flag了。于是我就产生了这样一种想法,既然黄色文字是移动的而二维码是固定不动的那么重叠所有移动的文字画面是不是就能完整的显示出二维码呢?

    于是有了解题的大致思路。可以将分解视频的每一帧分解成为图片,最后在将这些图片覆盖合成,移动的文字可以重叠成背景,而没移动的二维码就可以显示出来了。
    显示.webp.jpg


    使用video to Picture 我这里将Frame Rate 设置为20(每秒20帧)。

    20.webp.jpg

    然后拖动进度条去掉前面字母跳动那一段大概开始时间在26:结束时间在1分零 6秒左右,点击Convert开始。

    开始.webp.jpg

    得到如下文件:
    如下.webp.jpg

    将生成的文件打包成rar 或者zip备用 ,我这边是打包成为了1.zip

    找台安装有ImageMagick的主机将图片进行覆盖合成 。
    mkdir tmp && unzip -d tmp 1.zip && cd tmp
    convert WARS???.jpg -background none -compose lighten -flatten output.jpg

    注意 WARS???.jpg 指的是图片的命名, 如果指定不同的frame将产生不同数量的图片。如果图片数量大于999则使用WARS????.jpg, 小于99则使用WARS??.jpg。其他数量同理。

    运行后得到output.jpg
    jpg.webp.jpg


    使用QR Research 识别后的到flag SECCON{TH3F0RC3AVVAK3N53P7}

    使用.webp.jpg





    漏斗社区二维码.jpg
    发表于 2019-10-15 13:16:12
    学习了。
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册