MISC工具的用法和分类

大纲

文件操作与隐写

文件类型识别

文件分离操作

文件合并操作

文件内容隐写

图片隐写术

1.细微的颜色差别

2.GIF图多帧隐藏

[3. Exif信息隐藏](#3. Exif信息隐藏)

[4. 图片修复](#4. 图片修复)

5.最低有效位LSB隐写

[6. 图片加密](#6. 图片加密)

压缩文件处理

流量取证技术

流量包文件分析

无线流量包跑密码

USB流量分析

文件操作与隐写

文件类型识别

file命令

当文件没有后缀名或者有后缀名而无法正常打开,根据文件头类型识别出文件类型

用法:file myfile

winhex程序

通过winhex程序可以查看文件头的类型,以十六进制的格式显示。

文件头残缺

通常文件无法打开有两种情况,一种是文件头部缺失,另一种是文件头部字段错误。可以用winhex或010editor来打开文件并添加文件头。

文件分离操作

Binwalk工具

Binwalk是linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离。如果分离成功会在目标文件的目录。

用法:

分析文件:binwalk filename

分离文件:binwalk -e filename

foremost

如果binwalk无法正确分离出文件,可以使用foremost。成功执行后,会在目标文件的目录下生成我们设置的目录,目录会按照文件类型分离出文件。

用法: foremost 文件名 -o 输出目录名

dd

当文件自动分离出错或者因为其他的原因无法自动分离时,可以使用dd实现文件的手动分离。

用法: dd if=源文件 of=目标文件 bs=读写块的大小 skip=从输出文件开头跳过多少个块后开始复制

010editor

除了使用dd外,还可以使用010editor实现文件的手动分离,将目标文件拖入010editor,找到要分离的那部分,点击复制即可。

文件合并操作

1.linux下的文件合并

首先通过cat合并几个文件。

格式: cat 合并的文件1 合并的文件2 ...>输出的文件

用MD5sum检测文件的完整性

md5sum 文件名

2.windows下的文件合并

首先使用copy 命令合并文件

格式: copy /B 合并的文件1 合并的文件2 输出的文件名

然后使用certuil -hashfile来进行完整性检测

格式:certuil -hashfile 文件名 md5

文件内容隐写

文件内容隐写就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或文件的结尾部分,分析时通常重点观察文件的开头和结尾,如果在文件中间部分,通常搜索关键字KEY或flag来查找隐藏内容。

图片隐写术

1.细微的颜色差别

Stegsolve

当两张jpg图片外观,大小,像素都基本相同时,可以考虑进行结合分析,即将两个文件的像素RGB值进行XOR,ADD,SUB等操作,看能否都到有用的信息,StegSlove可以方便的进行这些操作。

格式:打开第一张图片,点击analyse->Image combiner 在弹出窗口点击左右按钮选择处理方式,点击save 保存有价值的结果。(这里注意,不同的图片在前面结果也不同)

2.GIF图多帧隐藏

2.1颜色通道隐藏

2.2不同帧图信息隐藏

Firework

使用winhex打开文件时会看到文件头部包含firework的标识,通过firework可以找到隐藏图片(类似于PS)。

2.4不同帧对比隐写

3. Exif信息隐藏

可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机照片设定的,可以记录数码照片的属性信息和拍摄数据。

exiftools

和直接在windos下查看exif信息差不多,linux下可以用exiftools来直接输出照片的exif文件信息。

格式:exiftools filename.jpg

4. 图片修复

4.1图片头修复

4.2图片尾修复

4.3 CRC校验修复

TweakPNG

TweakPNG是一款简单易用的PNG图像浏览工具,它允许查看和修改一些PNG图像文件的元信息存储。当文件头正常却无法打开文件,利用TweakPNG修改CRC。

4.4长,宽,高修复

有时候文件的CRC没有错误,但是图片的高度或者宽度发生了错误,需要通过CRC计算出正确的高度或者宽度。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: moddemod
# datetime: 2020/1/3 下午10:37
# ide: PyCharm

import zlib
import struct

filename = 'mod.png'
with open(filename, 'rb') as f:
all_b = f.read()
data_f = all_b[:12]
# data = all_b[12:29]
# print(data)
data_r = all_b[29:]
data_idch = all_b[12:17]
data_l = all_b[25:29]
# width = all_b[17:21]
# height = all_b[21:25]
# print(width, height)
crc32key = int(all_b[29:33].hex(), 16)
data = ''
for w in range(184570, 184577):
for h in range(22790, 22793):
width = struct.pack('>i', w)
height = struct.pack('>i', h)
data = data_idch + width + height + data_l
print(data)
# print(len(data))
if zlib.crc32(data) == crc32key:
print(w, h)
with open('r.png', 'wb') as f1:
f1.write(data_f + data + data_r)
break

4.5 二维码补全

1.使用二维码扫,扫描工具CQR.exe 打开图片,找到内容字段,

2.如果二维码某个定位角被覆盖了,该工具有时候也可以自动识别,如果识别失败,需要使用PS或者画图工具将另外几个角的定位符移动到相应的位置,补全二维码。

3.如果某个二维码的定位点中间是白色,可能被反色了,使用画图工具把颜色反色过来再扫描即可。

5.最低有效位LSB隐写

LSB替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低比特位,原来的7个高位平面与代替秘密信息的最低平面组合成含隐藏信息的新图形。

1.像素三原色(RGB)

2.通过修改像素中最低位的1bit来达到隐藏的效果

3.工具:stegslove ,Zsteg,wbstego4,python脚本

Stegsolve

打开文件>>Analyse>>Data Extract 调整bit plance Bit Order ,Bit Plane Order

zsteg工具

detect stegano data in PNG&BMP,当我们需要更改文件类型的时候可以通过自带的画图工具来修改文件类型。

格式:zsteg filename

wbstego4

解密通过lsb加密的工具,主要针对BMP/PDF格式的加密,

6. 图片加密

6.1 Stegdetect

Stegdetect工具

stegdetect程序主要用于分析JPEG文件。因此用Stegdetect可以检测到通过jsteg ,JPHide,OutGuess,Invisible Secrets,F5,appendX和Camouflag这些隐写工具隐藏的信息。

格式:

stegdetect xxx.jpg

stegdetect -s 敏感度 xxx.jpg

6.2 outguess

outguess一般用于解密文件信息。

该工具的使用需编译使用: ./configure && make&&make install

格式:outguess -r 要解密的文件名 输出文件名

6.3 jphide

Jphide是基于最低有效位LSB的JPEG格式图像隐写算法。

stegdetect 提示jphide加密时,可以使用jphs工具进行解密,打开jphswin。exe 使用open jpeg打开图片,点击seek,输入密码和确认密码,在弹出的文件框中要保存的解密文件位置即可,结果保存为txt文件。

6.4 F5

F5一般用于解密文件信息。

进入F5-steganogrephy_F5目录,将图片文件拷贝到该目录下,从CMD进入该目录

格式:java Exrtact 要解密的文件名 -p 密码

6.5 bftools

bftoosl用于解密图片信息

格式:

Bftools.exe decode braincopter 要解密的图片名称 -o 输出文件名

Bftools.exe run 上一步输出的文件

压缩文件处理

压缩文件分析

1.伪加密

如果压缩文件是加密的,或文件头正常但解压缩错误,首先尝试文件是否为伪加密。ZIP文件是否加密四通过标识符来显示的,在每个文件的文件目录字段有一位专门标识了文件是否加密,将其设置为00表示该文件未加密,如果解压出错说明文件为真加密。

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

(24条消息) zip伪加密原理及操作_「已注销」的博客-CSDN博客_zip伪加密

2.暴力破解

通常我们可以使用ARCHPR.exe 工具来破解zip文件。

1,攻击类型选择暴力破解,在范围位置根据提示选择暴力破解范围选项设置暴力破解包含类型。

2.明文攻击,有一个明文文件,压缩后CRC值与加密压缩包中的文件一致。明文文件的压缩算法需要和加密压缩文件的压缩算法一致。

3.RAR文件格式

有时候给出的RAR文件的头部各个字块会故意给错导致无法识别。

文件块的第三个字节为块类型,也叫头类型。

头类型是0x74表示的是文件头块

头类型为0x72表示的是标记块

头类型为0x73表示的是压缩文件头块

头类型为0x75表示的是注释头

(24条消息) RAR文件格式学习(了解)_萌萌哒的baola的博客-CSDN博客_rar文件头

流量取证技术

流量包文件分析

通常比赛中会提供一个包含流量数据的pcap文件,有时候也会需要选手们先进性修复或者重构传输文件后,再进行分析。

  • 总的把握
    • 协议分级
    • 端点统计
  • 过滤筛选
    • 过滤语法
    • Host ,Protocol ,contains,特征值
  • 发现异常
    • 特殊字符串
    • 协议某字段
    • flag位于服务器中
  • 数据提取
    • 字符提取
    • 文件提取

总的来说比赛中的流量分析可以概括为一下三个方向:

  • 数据包修复
  • 协议分析
  • 数据提取
wireshark过滤器

利用wireshark本身强大的报文过滤器,帮助我们筛选出想要的报文。

常用的过滤命令

  1. 过滤IP ,如源IP或者目标IP

    1
    ip.src eq x.x.x.x or ip.dst eq x.x.x.x or ip.addr eq x.x.x.x 
  2. 过滤端口

    1
    2
    3
    4
    tcp.port eq 80 or udp.port eq 80
    tcp.dstport == 80
    tcp.srcport == 80
    tcp.port >= 1 and tcp.port <= 80
  3. 过滤协议

    1
    tcp/udp/arp/icmp/http/ftp/dns/ip.....
  4. 过滤MAC

    1
    eth.dst == A0:00:00:04:c5:84 
  5. 包长度过滤

    1
    2
    3
    4
    udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
    tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
    ip.len == 94 除了以太网头固定长度14,其他都算是ip.len,即从ip本身到最候
    frame.len == 119 整个数据包的长度,从eth开始带最后。
  6. http模式过滤

    1
    2
    3
    http contains "GET"
    http contains "POST"
    http.request.method == "POST"
wireshark协议分级

分析整个数据包不同协议所占总协议的比重。

格式: 统计-> 协议分级

wireshark协议分析

根据数据包特征进行筛选

比如查看数据包的时候,有的数据包有某种特征,比如http(80)。就可以筛选出这种特征出来。

格式:右键->作为过滤器应用->选中

wireshark流汇聚

在关注的http数据包或者tcp数据包中选择流汇聚,可以将http流或者tcp流汇聚还原成数据,在弹出的框中可以看到数据的内容。

常见的HTTP流关键内容

  1. HTML中直接包含重要信息。
  2. 上传或下载文件内容,通常包含文件名,hash值等关键信息,常用POST请求上传。
  3. 一句话木马。POST请求,内容包含eval,内容使用base64加密。
wireshark数据提取
  1. 使用wireshark可以自动提取通过http传输的文件内容。

格式:文件-> 导出对象-> HTTP

在打开的对象列表中找到有价值的文件,如压缩文件,文本文件,音频文件,图片等,点击save进行保存。

  1. wireshark可以手动提取文件内容

点击想要的数据包,选定media type位置

格式: 右键-> 导出分组字节流 或者 点击菜单栏 文件-> 导出分组字节流,快捷方式Ctrl+H在弹出的框中将文件保存成二进制文件。

无线流量包跑密码

无线流量包协议分析发现只有wireless LAN协议,很有可能是wap或者wep加密的无线数据包。

aircrack-ng 工具进行wifi密码破解

  1. 用aircrack-ng 检查cap包:格式: aircrack-ng xxx.cap
  2. 用aircrack-ng进行握手包破解:格式: aircrack-ng xxx.cap -w pass.txt

USB流量分析

USB流量也是流量分析题的考查点,一般考察的流量涉及键盘击键,鼠标移动与点击,存储设备的明文传输通信,USB无线网卡网络传输内容等。

USB协议的数据部分在Leftover Capture Data域中。

格式: 右键leftover capture data ->应用为列

可以将该域的值在主面板上显示,键盘数据包长度为8个字节,击键信息集中在第三个字节,每次key stroke都会产生一个keyboard event usb packet。

USB键盘流量抓取分析

使用wireshark提供的命令行工具tshark,可以将leftover capture data数据单独复制出来

格式: tshark -r usb1.pacp -T fileds -e usb.capdata >usbdata.txt

格式:王一航脚本

USB鼠标流量抓取分析

鼠标流量与键盘流量不同,鼠标移动时表现为连续性,与键盘的离散性不一样,但实际

鼠标产生的数据是离散的。所以同样可以把数据抓取出来,构成二维坐标画出轨迹。

鼠标数据包的数据长度为4个字节,第一个字节代表按键,当取0x00时,代表没有按键;为0x01时,代表按左键,为0x02时,代表当前按键为右键。

第二个字节代表左右偏移;当值为正时,代表右移多少像素。当值为负时,代表左移多少像素。同理第三个代表上下偏移。

格式::王一航脚本。

HTTPS流量包文件分析

HTTPS流量是经过TLS协议加密过的,需要导入KEY才能看到原始的HTTP流量。

格式:编辑-> 首选项-> protpcols-> SSL-> Edit RSA keys list