最近由于一次校内比赛开始学习 CTF 的相关知识,很多常见的题型使用一些工具能更方便的解题,这里把之前遇到的一些工具与其使用以及一些经验整理一下~不过说起来暂时在 PWN 和 REVERSE 方面欠缺很多啊。不过可惜最近事情比较多 CTF 相关内容要暂且放一下了。
说起来很多工具都是 kali 自带的,比较建议装个 kali 虚拟机。
Misc
杂项,啥都有。
压缩包处理
爆破 John the Ripper
很经典的密码爆破工具,在多个平台都有其版本,可以直接在官网下载。
这边额外说下macOS下的安装,因为直接使用 Homebrew 安装的时候会出现环境变量设置不够深的问题。
macOS 安装方法 / 问题解决
首先直接上 Homebrew 大法,没有的可以搜下安装方法。john-jumbo 是其增强版
安装后可以使用 john 命令验证。 但是使用 zip2john 命令时,发现并没有找到命令。
google后,发现是因为Homebrew的环境变量只到bin目录下,但是zip2john在比较深的目录下,因此需要手工添加环境变量。
根据原文提示有些问题,因为查看 john 目录下 zip2john 是一替身,且无二级目录。而且也有其他类似命令需要配置到环境变量。因此直接添加上级目录到.zshrc 之类的文件即可。
如果你是 john 而非 john-jumbo 则找到对应目录添加就行。
使用方法上,对于 zip/rar 压缩包,使用
将他们转换为 hash 文件。然后使用 john file.hash
命令进行爆破。
如果题目有提示密码位数和类型,可以使用 mask 进行指定,以提高效率,例如 4 位纯数字:
ZIP 伪加密
大概原理就是修改文件头的加密段造成解压软体~~(诶为什么要叫软体,好机车哦)~~识别为加密,但是并没有密码,所以一直无法解压的效果。
1.现代解压软件拥有“修复”功能的,可以直接使用修复功能修复。
2.对于 zip 使用工具 ZipCenOp 。
用法很简单:
3.手动修改 hex [1]
以这个压缩包的 hex 为例:
第一个区域是压缩源文件数据区: 504B0304(头文件标记) 1400(解压所需版本) 0008(全局方式位标记)
第二个区域是压缩源文件目录区: 504B0102(文件头标记)1403(压缩版本) 1400(解压所需版本) 0008(全局方式位标记)
全局方式位标记的四个数字中只有第二个数字对其有影响。 第二个数字为奇数时 –>加密 第二个数字为偶数时 –>未加密
所以通常遇到两个全局方式位标记对不上情况的时候,可以考虑是伪加密,并将其修改回偶数。
许多资料都声称,只将压缩源文件目录区的全局方式位标记修改后就能实现伪加密的效果,并以前后不对应为原则来判断 [1],但是实际上当只修改后者时,有一些压缩软件是能够正常解压的。并且如果两者都修改或只修改前者,也可以实现伪加密的效果。
ZIP 已知明文攻击
可参考 https://blog.csdn.net/q851579181q/article/details/109767425
文件分析
在文件中藏文件
文件分析 / 提取 binwalk
https://github.com/ReFirmLabs/binwalk
很经典的工具,分析文件格式必备。
安装:
一些binwalk分析后,无法直接解出的,可以使用 dd
命令解出。 ( liniux 与 macOS 都自带,windows可以去网上搜索资料。)
数据提取 / 恢复 foremost
https://github.com/korczis/foremost
某些功能和 binwalk 类似,但是针对类型更广泛,主打“还原”,一些 binwalk 无法分离的文件比如 pcap 中的数据流、数字取证中的文件,他也可以提取。
安装方法:
GNU/Linux
Kali Linux 自带!
apt 安装
git 安装
macOS
图片分析/隐写
在图片中藏图片/数据。
图片图像隐写 stegsolve
https://github.com/Giotino/stegsolve
很经典的工具,可以解决单纯的图片通道隐写,LSB隐写,数据提取,图片结合等多种问题。
图片文件隐写 zsteg
https://github.com/zed-0xff/zsteg
很多binwalk无法提取的文件可以使用 zsteg 提取。并且会自动测试 LSB 等加密隐写。
命令也很简单,就是 zsteg 文件
即可。
安装需要有 ruby 环境。 然后 gem install zsteg
即可。
图片/音乐隐写 steghide
很老的一个隐写工具了。
steghide 可以在图片和音乐中隐写文件,并且可以设置密码,所以可以看到很多题目需要用到爆破。 所以对于 GNU / Linux ,你可以直接安装他的增强带破解功能版本 stegseek 。 对于其他系统,你可以使用:https://github.com/Va5c0/Steghide-Brute-Force-Tool 。
安装方法:
GNU/Linux
apt 安装
图片综合 ImageMagick
能做的事情太多了。
使用ImageMagick的创建,编辑,撰写,或转换位图图像。它可以读取和写入各种格式(超过200种)的图像,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG。使用ImageMagick可以调整图像大小,翻转,镜像,旋转,变形,剪切和变换图像,调整图像颜色,应用各种特殊效果或绘制文本,线条,多边形,椭圆和贝塞尔曲线。[2]
最近我用到的是拆分 gif 图像 和拼合功能。
安装方法:
GNU/Linux
macOS
Windows
流量分析
Wireshark 没啥好说
比较常用的:
1.统计-协议分级,查看主要协议(可右键作为筛选器)
2.右键,追踪流。
3.ctrl/command+f 分组字节流+字符串下 检索关键词
4.使用前面提到的 foremost / binwalk 进行分离文件。
暂时能力有限,就用到这些,以后再补充。
Crypto
各种加密~
进制转换/编码解码
我感觉这些工作在控制台做的话会少一些割裂感,其实还挺方便的直接 f12 就有环境。所以这部分觉得很可以用 js 来做一些工作。
base64 字符串互转
任意进制互转
ASCII 码文本互转
Hex/String 互转
Urlcode 编码
自动解密 Ciphey
https://github.com/Ciphey/Ciphey
使用自然语言处理和人工智能以及一些全自动解密/解码/破解工具。[3]
支持很多种解密方式,好处是可以自动化操作,适用于多重嵌套、懒得分析的单一文本。 具有语义的原文解密效果更好。
安装方法 github 的 中文翻译 已经很详细了。
最平凡的使用方法
很多解密情况不适用……
RSA 加密
RSA 加密的详细内容,我把他拆分到了 另一篇文章 里,因为写着写着有点偏离这一篇的主题了。
了解了 RSA 的基本原理,其实可以想到题目的出题方向,即给你某些参数,但是这些参数大概率不能直接获取到私钥 。所以你需要通过各种工具和算法把一些值求出来,这部分很容易涉及到一些数论的知识,因此需要有较好的数理基础,很明显——我没有。
RSA 加解密文件 openssl
使用 key 解密
使用私钥解密
从公钥查看 n e
RSA综合工具 RSAtool
使用 RSAtool 生成私钥
RSA 简单解密
给定 的情况下,可以直接求解。
RSA 共模攻击
适用情况:明文 、模数 相同,公钥指数 、密文 不同, [4]
RSA 质因数分解
给定一个 ,或一个公钥文件则使用 openssl
提取 。
若 本身不是很大,则可以对其进行质因数分解,一些网站(例如factordb)有已经储存的结果供我们使用。
分解出来 和 在直接使用扩展欧几里得算法求出私钥 或者用 rsatool
生成私钥,即可对加密结果进行求解。
栅栏加密
栅栏加密具体有两种,一种是竖直型,一种是 W 型。 但事实也并非如此。 很多平台栅栏加密,其实就是 W 型的。
栅栏密码到底是啥
我们先看下 “千千秀字”[5] 的说法(事实上,也是大多数网站的说法):
明文:栅栏密码加密规则示例 每组字数:5
按照字数先把明文分成: 栅栏密码加 密规则示例
先取每组第一个字:栅密 再取每组第二个字:栏规 ……
最后得到“栅密栏规密则码示加例”
我们再看一下维基百科的说法[6]:
例如我们使用三栏加密:“ WE ARE DISCOVERED. RUN AT ONCE. ” ,结果如下:
如果你熟悉栅栏加密,你会发现:诶?这不是“ W 型 ”栅栏加密吗?
然后我们查看很多在线工具,发现他们的加密结果也确实是这个 W 型 的。也就是,这个 所谓 W 型栅栏加密,很可能才是原版的栅栏加密。虽然说对于竖着排列的所谓栅栏密码有许多介绍,但是大多数解密工具,似乎也都是 W 型的。
那么第一种提到的所谓的栅栏密码到底是啥呢? 他很可能是:Route cipher(姑且翻译为:路由密码吧)的一个变种。或者其他什么。 这里我不对他做太多的考究了。
我简单搜索了一下,基本是06、07年时间节点出现的这种说法。
我们就参照都知道的说法吧,给出一个竖直型的加解密代码,看了下这种的工具确实比较少:
常用工具网站
网站 | 地址 | 说明 |
---|---|---|
CTF 在线工具 | http://www.hiencode.com/ | 支持很多加密形式的在线工具,界面干净 |
the x 工具箱 | https://the-x.cn/base64 | 推荐他的 base64 可以识别出二进制数据 |
CTF Wiki | https://ctf-wiki.org/ | CTF 相关的知识百科 |
在线扫码 | https://online-barcode-reader.inliteresearch.com/default.aspx | 无 |
factordb | http://www.factordb.com/index.php | 用于 RSA 分解质因数生成私钥 |
CyberChef | https://gchq.github.io/CyberChef | 分析/解密 |
SoJSON | https://www.sojson.com/encrypt_des.html | 解密 预设偏移量 |
quipqiup | https://quipqiup.com/ | 词频分析,自动解密 |
未完待续
参考文章
[1] zip伪加密原理及操作 https://blog.csdn.net/qq_26187985/article/details/83654197↩↩
[2] ImageMagick 中文网 http://www.imagemagick.com.cn/↩
[3] Ciphey 中文文档 https://github.com/Ciphey/Ciphey/blob/master/translations/zh/README.md↩
[4] 前端 CTF中的RSA(一) 共模攻击法 https://www.dazhuanlan.com/schoolboy/topics/1025798↩