Ctf之Misc
文件操作
1. 可以使用file+文件名的方式 查看真实文件类型
File是通过文件的文件头来判断文件类型,当file判断不出文件类型时,建议使用winhex来查看文件尾去判断文件类型。当确定文件类型时,再在文件头中补上对应的文件头。
2.放进winhex可查看文件头判断文件类型
3.当文件头损坏时,可根据文件尾进行进行文件类型判断
1. 文件分离
Binwalk
Binwalk工具可以快速分辨文件是否由多个文件合并而成,并将文件进行分离
(1) 文件分析binwalk 文件名
(2) 文件分离binwalk -e 文件名
Foremost
当binwalk无法分离出文件时,可以使用foremost
(1) foremost 文件头 -o 输出目录名
dd
当文件自动分离出错或者因为其他原因无法自动分离时,可以使用dd实现文件手动分离
(1)dd if=源文件名 bs=1 skip=开始分离位置 of=输出文件名
举例:dd if=misc.jpg bs=1 skip=68019 of=target.zip
参数说明
If=file 输入文件名 (binwalk中可以获知文件格式)
Of=file 输出文件名
Bs=bytes 设置读写块的大小 (binwalk中可以得到对应bs值)
Skip=blocks 从输入文件开头跳过blocks个块 后开始再复制
2. 文件合并
linux:cat 合并的文件 >输出的文件
例如:cat file1 file2 file3 >file
windows:copy /B 合并的文件> 输出的文件
copy /B file1+file2+file3 file
3. 文件内容隐写
Hex隐写
- 以hex形式存放在文件中,此时以winhex(notepad++)打开文件,寻找对应flag值
- 或者以strings 文件名的形式,输出可打印字符
图片
JPEG|Exif
Jpeg有一个特殊的地方:具备exif文件描述信息
在windows中可直接查看文件属性,其他系统可使用exiftool
Steghigh
Setghigh是一个可以将文件隐藏到图片或者音频中的工具
(1) 隐藏文件 steghide embed -cf 图片文件载体 -ef 待隐藏文件 [-p 密码]
(2) 提取文件 steghide extract -sf 图片文件载体 [-p 密码]
举例:
Outguess
(1) 隐藏文件 outguess -k 密钥 -d 隐藏文件 原始图片 加密后的图片
(2) 提取文件 outguess -k 密钥 -r 加密后的图片 输出文件名
Png
Png|图片高度
经常会去改图片高度或者宽度是的一张图片显示不完整从而达到隐藏信息的目的
第二行0-3字节代表图片宽度,第二行4-7字节代表图片高度
Png|LSB
PNG图片中的图像像素一般是由RGB三原色(红绿蓝)组成,每一种颜色占据8位。Lsb隐写就是修改了像素中的最低的1bit,而人类的眼睛不会注意到这前后的变化,每个像素可以携带3比特的信息
Stegsolve
通过下方的按钮可以观察每个通道的信息
通过查看对应RGB(红绿蓝)通道,来判断隐藏信息
使用analyse中的Data Extract模块来进行
修改对应rgb值再重新导入
Cloacked-pixel
Cloacker-pixel是实现LSB图像隐写和基本检测的工具
工具下载:https://github.com/livz/cloacker-pixel
加密:lsb.py hide <img_file> <payload_file> <password>
解密:lsb.py extract<stego_file> <out_file> <password>
Png|盲水印
当出现两张看起来一模一样的图片,可以用盲水印解密工具试一下
工具下:https://github.com/chishaxie/BindWaterMark
合成盲水印:python bwmforpy3.py encode 原图 信息文件 盲水印图片
提取盲水印:python bwmforpy3.py decode原图 盲水印图片 信息文件
GIF
GIF|空间
由于gif的动态特性,由一帧帧的图片构成,所以每一帧的图片,多帧图片间的结合,都成了隐藏信息一种载体
通过stegsolve工具一帧一帧的分析。加载gif图片 Analyse-frame browser
GIF|时间
文件每一帧的时间间隔也可以作为信息隐藏的载体
Imagemagick:linux安装 sudo apt install imagemagick
压缩包
Zip
Zip|通过进制转换隐藏信息
Zip|图种
将压缩包隐藏在一张图片中
解法:
1.binwalk -e foremost 分离
2.直接将图片后缀改成.zip
Zip|伪加密
解法:
Zip|暴力破解
Zip|掩码破解
Zip|明文攻击
明文攻击是一种较为高效的攻击手段,大致原理是当你不知道一个zip的密码,但是你有zip中的一个已知文件〈文件大小要大于12Byte)时,因为同一个zip压缩包里的所有文件都是使用同一个加密密钥来加密的,所以可以用已知文件来找加密密钥,利用密钥来解锁其他加密文件
例子:已知明文.zip中存在的文件test.txt,因此将test.txt压缩(不用加密),这里需要判断明文压缩后的CRC32是否与加密文件中的一致,若不一致可以换一个压缩软件
Zip|CRC碰撞
CRC32:CRC本身是“冗余校验码"的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值。在产生CRC32时,源数据块的每一位都参与了运算,因此即使数据块中只有一位发生改变也会得到不同的CRC32值,利用这个原理我们可以直接爆破出加密文件的内容。
举例:已知一个压缩包,解压密码很复杂,无法爆破。我们打开看看,知道里面压缩的flag.txt文件内容为4个字节,CRC32为9BE3EOA3,尝试用CRC32碰撞一下
解法:使用脚本来进行爆破
用ARCHPR爆破工具攻击类型选择明文,加载加密文件和我们压缩的明文文件
Rar
Rar|暴力破解
从题目相关提示中猜解密码的长度以及字符范围等
还是使用archpr工具来进行暴力破解
Rar|伪加密
RAR文件由于有头部校验,使用伪加密时打开文件会出现报错,使用winhex修改标志位后如报错消失且正常解压缩,说明是伪加密。使用winhex打开RAR文件,找到第24个字节,该字节尾数为4表示加密,0表示无加密,将尾数改为0即可破解伪加密。
解法:将对应的x4改为x0即可破解伪加密
音频
Mp3
Mp3|隐写
Mp3stego
工具下载:https://www. petitcolas.net/steganography/mp3stego/
加密:encode -E hidden_text.txt -P pass svega.wav svega_stego.mp3
解密:decode -X -P pass svega_stego.mp3
波形
波形中隐藏摩斯密码,较长的蓝色即为 “-“,较短的即为 ”.“
Morse2ascii
Morse2ascii是一个PCM解码wac文件莫斯密码工具
安装:apt-get install morse2ascii
解密:运行命令:morse2ascii music.wav
音频
音频|波形
波形谱转化为01字符串
将单声道波形提取出来,接近1的变成1 ,接近-1的变成0,得到二进制,并转化为ascii
音频|频谱
音频中的频谱隐写是将字符串隐藏在频谱中,此类音频通常会有一个较明显的特征,听起来是一段杂音或者比较刺耳
声音
LSB
二维码
拼接
反向
残缺
二进制
文档
Word
Word|隐藏字符
Word|隐藏文件
Pdf|隐藏文字
取证分析
内存取证
volatility
volatility 是一款内存取证和分析工具,可以对raw、wmem、img、dmp等内存镜像文件进行分析,并提取内存中的文件。
工具下载: https://www.volatilityfoundation.org/releasesvolatility使用:
volatility -f <文件名> --profile=<配置文件><插件>[插件参数]