文件类型识别
File命令
应用场景: 文件后缀名不可见,通过识别文件头判断文件类型,修改后缀名即可正常打开。
命令: file unkonw
示例:
查看文件头
应用场景: Windows下,查看文件头信息判断文件类型
常见类型的文件头:
使用Winhex查看文件头信息:
文件头残缺/错误
发生现象: 文件无法打开。利用file命令查看后显示为 data。
解决方法: windows下使用winhex或010Editor 修复文件头。
例如:
修复后
文件完整性检测
md5sum命令 – Linux
命令: md5sum checkfile
certutil命令 – Windows
命令: certutil --hashfile checkfile md5
文件分离
Binwalk工具 – Linux
简介: Binwalk是Linux下分析和分离文件的工具。[其他功能: 过滤、比较、字符串分析]
分析文件命令: binwalk analyse.png
分离文件命令: binwalk -e analyse.png
PS: 这里的分离有问题。使用binwalk无法正常分离出两文件。使用下面介绍的foremost工具和dd命令可以完美分离。
Formost工具 – Linux
简介: Foremost是Linux下分离多重文件的神器。默认支持19种文件类型(jpg,gif,png,bmp,avi,exe,mpg,mp4,wav,riff,wmv,mov,pdf,ole,doc,zip,rar,html,cpp等)
分离命令: foremost analyse.png -o save_dir
dd命令 – Linux
简介: 当使用分离工具无法实现目的时,可以采用dd命令进行手工分离。
分离命令: dd if=source of=destination bs=1 count=100 skip=100
参数解释:
bs— 块的大小
skip— 跳过N个块开始分离
count— 拷贝N个块(块大小由bs指定)
Winhex工具 – Windows
简介: 将需要分离的部分选中复制,粘贴到新建文件,保存为相对应的格式即可。
操作:
PS: 如果不知道该保存为什么格式,可以进行文件类型识别。
010Editor工具 – Windows
文件合并
cat命令 – Linux
格式: cat file1 file2 file3 > combine 或可以使用通配符 cat file* > combine
copy命令 – Windows
格式: copy -B file1 + file2 + file3 combine
参数:
-B : 表示二进制文件
-A : 表示ASCII文件
文件隐写
LSB隐写–最低有效位
简介: 一个图片像素可以携带3字节,即R,G,B。每一种颜色有八位。由于改动某些位人眼无法分辨,则产生了LSB隐写技术。将每一种颜色的最低位用来隐藏信息。
前提: PNG、BMP、WAV等无损压缩格式。
利用工具: Stegsolve、zsteg、wbstego4、python脚本
Stegsolve
简介: 用于图片隐写分析的神器。
功能介绍:
①File Fromat : 文件类型查看
②Data Extract : 数据提取。例如 LSB隐写 等将数据藏在
③stereogram solver: 能够将图片分层后位移。
④Frame Browser: 帧浏览器。能够将动图一帧一帧查看。
⑤Image Combiner: 图片合成器。将两张图片放在一起一系列运算。一般将相似图片结合分析可得出flag。
⑥open: 打开图片。能够查看各个位平面。进行一些运算。
示例:
Zsteg
简介: 能够检测bmp和png图像中通过 LSB隐藏的信息。
安装:
apt-get install gem
gem sources -a https://gems.ruby-china.com/ -r https://rubygems.org/
// 将国外源换为国内
gem sources -u
// 更新缓存
使用方法:
zsteg hide.png
Wbstego4
简介: 文件隐写。支持的文件格式: bmp、txt、htm、pdf。常见用于PDF的信息隐藏。
操作步骤:
- 选择加密或者解密
- 选择目标文件
- 输入密钥,为空直接跳过
- 保存文件
举例:
根据向导操作
在本地目录生成
使用Winhex或notepad++打开
python脚本
暂过。网上脚本不好用。
CRC检验码出错
TweakPNG
简介: PNG图像查看工具,自动计算正确的CRC,允许查看和修改PNG图像的元信息存储(更改图片长宽)。
应用场景: CRC检验码出错。文件头正常,图片无法打开(使用Linux打开图片会提示CRC错误)。
举例:
使用TweakPNG打开弹出警告窗口。
使用Winhex或者010Editor进行修正。定位到cbd6df8a修改为c758d77d。
修改后可以正常打开
PS: 还没有解完,图片长宽不正确,图片没有完全显示。可以使用python计算图片原始长宽。(没脚本源码)
图片加密解密
Stegdetect工具–Linux
简介: 探测分析jpeg图片格式的加密方式。可以检测到 Jsteg、JPhide、OutGuess、Invisible Secrect、F5、appendX 和 Camouflage 等工具的加密。
使用方法:
stegdetect -s 10.0 hide.jpg
stegdetect hide.jpg
JPHide图片隐写–Windows
简介: 基于 LSB 的jpeg格式图像的隐写算法。需要密钥。
应用场景: 通过stegdetect分析到图片使用JPHide隐写。
使用方法:
- 打开Jphswin,打开图片,点击seek
- 输入密钥并确认密码(必须)
- 保存成txt文件。
例子:
PS: 遇到一个密码破解不出来的。 密码可以暴力破解。
stegbreak -r rules.ini -f password.txt -t p hide.jpg
- 参数解释: -r 指定规则 -f 指定密码字典 -t 指定加密算法
以后再遇到再来更新__
OutGuess–Linux
简介: 使用outgues算法进行图片隐写。
应用场景: 通过 stegdetect 分析到图片使用 OutGuess 加密。
使用方法:
outguess -r hide.jpeg key.txt
例子:
这图用stegdetect没有分析出是outguess加密,通过题目可以猜测是outguess
图片地址:http://ctf5.shiyanbar.com/misc/angrybird.jpg
使用OutGuess解密可以得到flag
F5
简介: 使用F5算法
应用场景: 通过Stegdetect 分析到图片使用 F5 算法
使用方法:
java Extract hide.jpg -p key
// 默认保存为当前目录下的 output.txt
举例:
遇到再来。
bftools
简介: 使用Brainfuck编写的程序。能够对各种程序加密解密(原理懵逼),使用brainloller 和 braincopter 代码进行编码/解码
使用方法:
bftools.exe decode braincopter source.png -output key.png
bftools.exe run
// 查看上一步输出文件
举例:
在Windows的DOS命令下:
bftools.exe decode braincopter 解密图片 -out 输出文件
bftools.exe run 输出文件
SilentEye
简介: 能够将文字或者文件隐藏在图片中。使用AES 128、AES 256加密数据。LSB隐写(支持的格式 jpeg bmp wave)。
使用方法:
- 打开目标文件,选择解密
- 将Decode File保存
- 若有密钥 则点击encrypted data 输入密钥并确认,再解密。
例子:
FIrework作图软件
应用场景: 以16进制查看文件时发现 firework标识。
应用: 使用firework工具打开之后查看对应图层。
Winhex/010Editor/notepad++
应用场景: flag以16进制形式写入文件中。
应用: 以16进制形式打开文件搜索关键字(key\flag等)
二维码处理
CRQ二维码扫描工具
简介: 扫描二维码的工具。
使用:
- 当某个定位角缺漏或者被覆盖,也可以自动识别,若失败则需要使用作图工具手动恢复定位角。
- 定位角中间为白色,则需要使用作图工具进行反色处理。
压缩文件
RAR文件格式
简介:RAR分别由标记块(第一块)、压缩文件头(第二块)、文件头(不固定)、结尾块(不固定)组成。
标记块
HEAD_CRC: 占用2B ,固定为 0x6152
HEAD_TYPE: 占用1B ,标记块为 0x72
HEAD_FLAGS: 占用2B,固定为 0x1A21
HEAD_SIZE: 占用2B,块大小。
总共7B,为固定序列。
压缩文件头
HEAD_CRC: 占用2B,压缩包的CRC。
HEAD_TYPE: 占用1B,压缩文件头为 0x73
HEAD_FLAGS: 占用2B,位标记,加密时置为 0x0080。(打开压缩包需要输入密匙)。
HEAD_SIZE: 占用2B,压缩文件头大小(包括压缩文件注释)
RESERVED1、RESERVED2: 占用6B,保留位。
文件头
HEAD_CRC: 占用2B,文件头块的CRC。
HEAD_TYPE: 占用1B,文件头为 0x74。
HEAD_FLAGS: 占用2B,位标记
HEAD_SIZE: 占用2B 文件头大小(包括文件名和注释)
OTHER: 占用9B。
FILE_CRC: 占用4B,文件的CRC。
OTHER: 其余的压缩文件属性。
结尾块
ZIP伪加密
导读: 一个Zip文件由三部分组成: 压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志 。
主要注意
504B0304 — ZIP文件头标识
504B0102 — 目录文件文件头标识。从50开始往后数9B即为密码标志位。
504B0506 — 目录结束标识
原理: Zip压缩通过标识位记录压缩是否加密。修改标识位可解决伪加密效果。末位奇数为加密,偶数为未加密。
例子:
此处修改为 00 00 即可。随意的偶数都行。
密码已经不见了,说明这是伪加密。
暴力破解
应用场景: 当rar为真加密时,使用 ARCHPR.exe 或其他暴力破解工具破解压缩文件密码。支持压缩类型( ZIP \ RAR \ ACE\ ARJ)
PS: 尽量收集信息,准备好字典,拼人品的时候到了。
明文攻击
原理: zip压缩文件设定的密码被转换成3个4B的key。攻击者将已知明文文件(将无密码的文件压缩)与加密压缩包对比,提取出两文件的不同值则为key。
前提:
- ZIP压缩包中有未加密文件
- 压缩后的CRC值与加密压缩的CRC值一致
- 压缩算法一致
操作方法: 使用ARCHPR.exe 进行明文攻击。
例子:
使用WinRAR解压缩后发现flag.zip(密文文件)和logo.png(明文文件)
将logo.png使用WinRAR进行无加密压缩。验证CRC和压缩方法是否一致。
使用ARCHPR.exe进行明文攻击
总结:
-
只保留加密文件中的一个文件。其余的先删除。(做好备份)
-
使用的压缩软件或压缩算法和加密的压缩包所使用的软件不同。解决: 更换其他压缩软件。WinRAR、7Z、2345好压。
第三次使用WinRAR进行明文攻击的时候,就算压缩文件里面有两个文件也没有报错。
取证分析
Wireshark过滤器
常用过滤命令:
- 过滤IP
ip.src eq x.x.x.x or ip.dst eq x.x.x.x
ip addr eq x.x.x.x
- 过滤端口
tcp.port eq xx or udp.port eq xx
tcp.dstport eq xx
tcp.srcport eq xx
tcp.port >= 1 and tcp.port <=80
- 过滤协议
tcp/udp/arp/icmp/http/ftp/dns/ip..
- 过滤MAC
eth.dst eq xx:xx:xx:xx:xx:xx
eth.src eq xx:xx:xx:xx:xx:xx
- 过滤包长
udp.length eq xx //UDP固定8位+数据包长度
tcp.len >= xx // 数据包长度 不包括TCP自身
ip.len eq xx // ip数据包 从以太网固定长度14后开始计算
frame.len eq xx // 整个数据包长度
- 过滤HTTP模式
http.request.method eq "GET"
http.request.uri eq "/xx/xxx.xx"
http.contains "GET"
http contains "HTTP/1."
http.request.method eq "GET" and http contains "User-Agent:"
Wireshark流汇聚
简介: 能够将数据汇聚或还原数据
Wireshark数据提取
WIFI握手包破解
- aircrack-ng xxx.cap 检查cap包是否存在握手包
- arcrack-ng xxx.cap -w password.txt //载入字典爆破
USB键盘流量分析
简介: 键盘数据包长度为8个字节。对应一张映射表。
操作方法:
使用tshark分离出usb.capdata的数据(即Leftover Capture Data)
tshark -r usb.pcapng -T fields -e usb.capdata > key.txt
使用Python脚本解码(网抄)
USB鼠标流量分析
简介: 鼠标数据包长度为4个字节。第一个字节代表按键 0x01左键 0x02右键。第二个字节左右偏移,正右移,负左移。第三个字节上下偏移。
操作方法:
使用tshark分离出USB鼠标的leftover capture data(用长度4B过滤)
使用Python脚本解码(网抄)
- 使用 gnuplot 工具作坐标图
gnuplot
// 进入进程plot "site.txt"
// 开始绘画
PS: 这题比较坑,第一字节按键左右键都要绘画出来,而且图是反的。
https数据包分析
简介: HTTPS经过TLS协议加密,需要导入key才能看到明文HTTP流量。
参数解释:
- IP address: 服务器IP
- Port: 服务器端口
- Protocol: 被加密的上层协议
- Key File: Key 文件
- Password: 证书的加密密钥(有的需要)
操作方法: 导入key解密后即可看到HTTP数据包。或者追踪TLS流。
PS: key导入的另外一种情形 配置环境变量