misc

文件类型识别

File命令

应用场景: 文件后缀名不可见,通过识别文件头判断文件类型,修改后缀名即可正常打开。

命令: file unkonw

示例:

查看文件头

应用场景: Windows下,查看文件头信息判断文件类型

常见类型的文件头:

使用Winhex查看文件头信息:

文件头残缺/错误

发生现象: 文件无法打开。利用file命令查看后显示为 data。

解决方法: windows下使用winhex或010Editor 修复文件头。

例如:

correct

修复后

correct

文件完整性检测

md5sum命令 – Linux

命令: md5sum checkfile

md5sum

certutil命令 – Windows

命令: certutil --hashfile checkfile md5

certutil

文件分离

Binwalk工具 – Linux

简介: Binwalk是Linux下分析和分离文件的工具。[其他功能: 过滤、比较、字符串分析]

分析文件命令: binwalk analyse.png

analyse

分离文件命令: binwalk -e analyse.png

bsplit

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

fanalyse1

fanalse2

dd命令 – Linux

简介: 当使用分离工具无法实现目的时,可以采用dd命令进行手工分离。

分离命令: dd if=source of=destination bs=1 count=100 skip=100

danalyse1

参数解释:

bs— 块的大小

skip— 跳过N个块开始分离

count— 拷贝N个块(块大小由bs指定)

Winhex工具 – Windows

简介: 将需要分离的部分选中复制,粘贴到新建文件,保存为相对应的格式即可。

操作: wanalyse

wanalyse2

PS: 如果不知道该保存为什么格式,可以进行文件类型识别。

010Editor工具 – Windows

文件合并

cat命令 – Linux

格式: cat file1 file2 file3 > combine 或可以使用通配符 cat file* > combine

cat

cat2

copy命令 – Windows

格式: copy -B file1 + file2 + file3 combine

copy

参数:

-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: 打开图片。能够查看各个位平面。进行一些运算。

示例:

stegdetect

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

zsteg

Wbstego4

简介: 文件隐写。支持的文件格式: bmp、txt、htm、pdf。常见用于PDF的信息隐藏。

操作步骤:

  • 选择加密或者解密
  • 选择目标文件
  • 输入密钥,为空直接跳过
  • 保存文件

举例:

根据向导操作

wbstego4open

wbstego4

在本地目录生成wbstego4key

使用Winhex或notepad++打开

wbstego4key2

python脚本

暂过。网上脚本不好用。

CRC检验码出错

TweakPNG

简介: PNG图像查看工具,自动计算正确的CRC,允许查看和修改PNG图像的元信息存储(更改图片长宽)。

应用场景: CRC检验码出错。文件头正常,图片无法打开(使用Linux打开图片会提示CRC错误)。TweakPNG

举例:

使用TweakPNG打开弹出警告窗口。

tweakpng2

使用Winhex或者010Editor进行修正。定位到cbd6df8a修改为c758d77d。

tweakpng3

tweakpng4

修改后可以正常打开

tweakpng5

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文件。

例子:

stegdetect1

PS: 遇到一个密码破解不出来的。 密码可以暴力破解。

  1. stegbreak -r rules.ini -f password.txt -t p hide.jpg
  2. 参数解释: -r 指定规则 -f 指定密码字典 -t 指定加密算法

以后再遇到再来更新__

OutGuess–Linux

简介: 使用outgues算法进行图片隐写。

应用场景: 通过 stegdetect 分析到图片使用 OutGuess 加密。

使用方法:

outguess -r hide.jpeg key.txt

例子:

outguess

这图用stegdetect没有分析出是outguess加密,通过题目可以猜测是outguess

图片地址:http://ctf5.shiyanbar.com/misc/angrybird.jpg

使用OutGuess解密可以得到flag

outguess1

outguess2

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 // 查看上一步输出文件

举例:

bftools1

在Windows的DOS命令下:

bftools.exe decode braincopter 解密图片 -out 输出文件

bftools.exe run 输出文件

bftools2

SilentEye

简介: 能够将文字或者文件隐藏在图片中。使用AES 128、AES 256加密数据。LSB隐写(支持的格式 jpeg bmp wave)。

使用方法:

  • 打开目标文件,选择解密
  • 将Decode File保存
  • 若有密钥 则点击encrypted data 输入密钥并确认,再解密。

例子:

slienteye

silenteye1

FIrework作图软件

应用场景: 以16进制查看文件时发现 firework标识。

firework

应用: 使用firework工具打开之后查看对应图层。

firework2

Winhex/010Editor/notepad++

应用场景: flag以16进制形式写入文件中。

应用: 以16进制形式打开文件搜索关键字(key\flag等)

二维码处理

CRQ二维码扫描工具

简介: 扫描二维码的工具。

使用:

  • 当某个定位角缺漏或者被覆盖,也可以自动识别,若失败则需要使用作图工具手动恢复定位角。
  • 定位角中间为白色,则需要使用作图工具进行反色处理。

压缩文件

RAR文件格式

简介:RAR分别由标记块(第一块)、压缩文件头(第二块)、文件头(不固定)、结尾块(不固定)组成。

标记块

rartype

  • HEAD_CRC: 占用2B ,固定为 0x6152

  • HEAD_TYPE: 占用1B ,标记块为 0x72

  • HEAD_FLAGS: 占用2B,固定为 0x1A21

  • HEAD_SIZE: 占用2B,块大小。

  • 总共7B,为固定序列。

压缩文件头

rartype1

  • HEAD_CRC: 占用2B,压缩包的CRC。

  • HEAD_TYPE: 占用1B,压缩文件头为 0x73

  • HEAD_FLAGS: 占用2B,位标记,加密时置为 0x0080。(打开压缩包需要输入密匙)。

  • HEAD_SIZE: 占用2B,压缩文件头大小(包括压缩文件注释)

  • RESERVED1、RESERVED2: 占用6B,保留位。

文件头

rartype2

  • HEAD_CRC: 占用2B,文件头块的CRC。

  • HEAD_TYPE: 占用1B,文件头为 0x74。

  • HEAD_FLAGS: 占用2B,位标记

  • HEAD_SIZE: 占用2B 文件头大小(包括文件名和注释)

  • OTHER: 占用9B。

  • FILE_CRC: 占用4B,文件的CRC。

  • OTHER: 其余的压缩文件属性。

结尾块

rartype3

ZIP伪加密

导读: 一个Zip文件由三部分组成: 压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志 。

主要注意

  • 504B0304 — ZIP文件头标识

  • 504B0102 — 目录文件文件头标识。从50开始往后数9B即为密码标志位。

  • 504B0506 — 目录结束标识

  • 更详细

原理: Zip压缩通过标识位记录压缩是否加密。修改标识位可解决伪加密效果。末位奇数为加密,偶数为未加密。

例子:rar1

rar2

此处修改为 00 00 即可。随意的偶数都行。

rar3

rar4

密码已经不见了,说明这是伪加密。

暴力破解

应用场景: 当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和压缩方法是否一致。

winrar

使用ARCHPR.exe进行明文攻击

winrar1

总结:

  • ARCHPR

    只保留加密文件中的一个文件。其余的先删除。(做好备份)

  • ARCHPR1

    使用的压缩软件或压缩算法和加密的压缩包所使用的软件不同。解决: 更换其他压缩软件。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

简介: 能够将数据汇聚或还原数据

wireshark1

Wireshark数据提取

wireshark2

wireshark3

WIFI握手包破解

  1. aircrack-ng xxx.cap 检查cap包是否存在握手包
  2. arcrack-ng xxx.cap -w password.txt //载入字典爆破

USB键盘流量分析

简介: 键盘数据包长度为8个字节。对应一张映射表。

usb

操作方法:

  1. 使用tshark分离出usb.capdata的数据(即Leftover Capture Data)

    tshark -r usb.pcapng -T fields -e usb.capdata > key.txt

  2. 使用Python脚本解码(网抄)

    usb1

USB鼠标流量分析

简介: 鼠标数据包长度为4个字节。第一个字节代表按键 0x01左键 0x02右键。第二个字节左右偏移,正右移,负左移。第三个字节上下偏移。

操作方法:

  1. 使用tshark分离出USB鼠标的leftover capture data(用长度4B过滤)

  2. 使用Python脚本解码(网抄)

    usbmouse

    usbmouse1

  1. 使用 gnuplot 工具作坐标图
    1. gnuplot // 进入进程
    2. plot "site.txt" // 开始绘画
  2. usbmouse2

PS: 这题比较坑,第一字节按键左右键都要绘画出来,而且图是反的。

https数据包分析

简介: HTTPS经过TLS协议加密,需要导入key才能看到明文HTTP流量。

tls

tls1

参数解释:

  • IP address: 服务器IP
  • Port: 服务器端口
  • Protocol: 被加密的上层协议
  • Key File: Key 文件
  • Password: 证书的加密密钥(有的需要)

操作方法: 导入key解密后即可看到HTTP数据包。或者追踪TLS流。

tls2

PS: key导入的另外一种情形 配置环境变量

本文标题:misc

文章作者:Tanker

发布时间:2019年10月18日 - 19:20

最后更新:2019年11月03日 - 09:48

原始链接:https://www5059109.github.io/2019/10/18/misc/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%