MISC 杂项
文件
查看文件类型
Windows下可以依靠识别文件头判断类型如果文件头残缺或错误,需要自己补充
分析和分离文件
如果binwalk 无法正确分离,可以尝试 foremost
如果文件自动分离出错或者无法自动分离,可以使用 dd 实现手动分离
- if 输入文件名,缺省为标准输入-
of 输出文件名,缺省为标准输出-
bs=bytes 同时设置读写块的大小,单位为 bytes-
skip=blocks 从输入文件开头跳过前 blocks 个块开始复制-
count=reserve_blocks 复制 reserve_blocks 个块
例如:
1.txt 1234567890abcdefg
dd if=1.txt of=4.txt bs=5 count=3 skip=1
4.txt 67890abcdefg
Windows 下可以使用 010editor 选中 - 右键 - Selection - Save Selection...
如果提供16进制数据,想获得文件,可以在 010editor 中 File - Import Hex... - Save As...
合并文件
Linux 下合并文件
md5 校验:Windows 下合并文件
md5 校验:文件内容隐写
在 010editor 中使用查找功能
图片隐写
Firework
文件头部包含 firework 标识(有时没有),通过 firework 可以找到隐藏图片
Exif
图片右键 - 属性 - 详细信息
Linux 下使用 exiftool
Stegsolve
当两张 jpg 图片外观、大小、像素基本相同,可以考虑结合分析,即两个文件的像素值进行 XOR、ADD、SUB 等操作,看能否得到有效的信息,Stegsolve 可以方便的进行这些操作
启动 Stegsolve:
Analyse - Image Comibiner 对图片做运算
LSB(最低有效位 Least Significant Bit)
LSB 替换隐写的基本思想是用嵌入的秘密信息取代载体图像的最低比特位,原来的七个高位平面与最低位平面组合成含隐藏信息的新图形,核心是修改像素的最后 1 bit,能使用的工具有 stegsolve、zsteg、wbstego4、python 脚本
使用 Stegsolve:Analyse - Data Extract 然后尝试参数
使用 Zsteg(仅限 Linux):
使用 wbstego4:
选择 Decode - 导入图片并选择格式 - 输入密码(没有直接跳过) - 选择输出文件地址可以检测 pdf 的最低有效位
TweakPNG
有时 CRC 错误,需要通过 TweakPNG 查看正确的 CRC,然后在 010editor 中搜索现在的 CRC 再修改
有时 CRC 没有错误,但是图片的高度或宽度错误,需要通过 CRC 计算出正确的高度或宽度
从 0010 开始 4 byte 存储宽,从 0014 开始 4 byte 存储高,从 001D 开始 4 byte 存储 CRC
这时可以使用脚本爆破正确的尺寸,然后在 010editor 中修改:
#codeing:utf-8
import binascii
import struct
file_name = input("src: ")
crc_exp = hex(int(input("CRC expected: "), 16))
img = open(file_name,'rb').read()
for i in range(1024):
for j in range(1024):
data = img[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + img[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
# print(hex(crc32))
if hex(crc32) == crc_exp:
print(i,j)
print("hex: ",hex(i),hex(j))
Bftools
Bftools 用于解密图片信息,在 Windows 的 cmd 下对加密过的图片文件解密
SilentEye
SilentEye 可以将文字或者文件隐藏到图片,Windows 下打开 SilentEye,对加密的图片进行解密
JPEG 图像加密
Stegdetect
针对 JPEG 文件,可以用 Stegdetect 工具探测加密方式,可以检测通过 JSteg、JPHide、OutGuess、Invisible Secrets、F5、appendX 和 Camouflage 等隐写工具隐藏的信息
JPhide
Stegdetect 提示 JPhide 加密时,可以用 JPHS 工具解密,打开图片,输入密码和确认密码,然后选择解密文件保存的位置即可
如果检测出是 JPhide 但是不知道密码,可以用 stegbreak,语法如下:
Outguess
outguess 在 Linux 下使用
没有密码可以省略F5
Steghide
Steghide 可以将信息隐藏到文件中,可以在 kali 中安装使用
压缩文件
伪加密
ZIP
zip 文件由三部分组成:压缩源文件数据区、压缩源文件目录区、压缩源文件目录结束标志
压缩源文件数据区:
- 50 4B 03 04 头文件标记
- 14 00 解压文件所需的 pkware 版本
- 00 00 全局方式位标记(有无加密),偶数无加密,奇数加密
压缩源文件目录区
- 50 4B 01 02 目录中文件文件头标记
- 3F 00 压缩用的 pkware 版本
- 14 00 解压所需的 pkware 版本
- 00 00 全局方式位标记(有无加密)
RAR
rar 文件由于有头部校验,伪加密打开文件会报错,使用 winhex 修改标志位如报错消失且正常解压缩,说明是伪加密。打开 rar 文件的第 24 个字节(0x00000017),该字节尾数为 4 表示加密,为 0 表示无加密
暴力破解
通常可以使用 ARCHPR.exe 来破解 zip 文件,可以暴力破解,如果已知其中文件的一部分内容(不小于12字节,可以是文件头)可以使用明文攻击(可以用 bkcrack),如果已知密码的格式可以使用掩码攻击
流量取证
WireShark 过滤器
过滤 IP
ip.src eq x.x.x.x or ip.dst eq x.x.x.x
ip.addr eq x.x.x.x
可以用 or 和 and 连接条件
过滤端口
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80 只显示 tcp 的目标端口为 80
tcp.srcport == 80 只显示 tcp 的源端口为 80
tcp.port >= 1 and tcp.port <= 80
过滤协议
tcp/udp/arp/icmp/http/ftp/dns/ip
过滤 MAC
eth.dst == A0:00:00:04:C5:84 过滤目标 MAC
包长度过滤
udp.length == 26 指 udp 本身固定长度 8 加上 udp 下面的数据包的总和
tcp.len >= 7 指 ip 数据包(tcp 下面的一块数据),不包括 tcp 本身
ip.len == 94 出了以太网头固定长度 14,其他都算 ip.len,即 ip 本身算到最后
frame.len == 119 整个数据包长度,从 eth 开始到最后
http 模式过滤
http.request.method == "GET"
http.request.method == "POST"
http.request.uri == "/img/logo.gif"
http contains "GET"
http contains "HTTP/1."
http.request.method == "GET" && http contains "User-Agent:"
http contains "flag"
http contains "key"
tcp contains "flag"
WireShark 文件分析
协议分级
主要是展示各种类型占比的统计结果根据数据包特征筛选
查看数据包的时候,有的数据包有某种特征,比如 http(80),就可以筛选这种特征
右键 -> 作为过滤器应用 -> 选中流汇聚
在关注的 http 数据包或 tcp 数据包中选择流汇聚,可以将 http 流或 tcp 流 汇聚或还原成数据,在弹出的窗口可以看到数据内容
右键 -> 追踪流 -> HTTP 流数据提取
wireshark 可以自动提取几种协议中的数据
文件 -> 导出对象 -> HTTP也可以手动提取文件内容
点击想要的数据包 -> 选定 Media Type 的位置 -> 右键 -> 导出分组字节流快捷键
Ctrl H
无线 WIFI 流量包
协议分析发现只有 IEEE 802.11 wireless LAN 协议,很可能是 WPA 或 WEP 加密的无线数据包
WIFI 密码破解
用 aircrack-ng 检查 cap 包
aircrack-ng wifi.cap
Encryption 代表加密方式,主要有 WEP/WPA/WPA2,强度依次递增
BSSID 显示路由器的 MAC 地址
ESSID 显示 WIFI 名,设置网络时可以选择不广播 ESSID,就不会在 WIFI 列表中显示
字典攻击
aircrack-ng wifi.cap -w dict.txt
掩码攻击
本身不支持掩码攻击,但是可以结合其他工具生成字典达到效果
通过 crunch 生成字典
crunch <min> <max> [options]
crunch 8 8 -t @@@%%%%%
@ 代表小写字母,% 代表数字
USB 流量包
键盘流量
wireshark 中把 HID Data 应用为列,共 8 个字节,第 3 个字节集中击键信息
HID 和键盘的对应关系可以在官方文档中找到
通过 GUI 提取 HID 数据:
文件 -> 导出分组解析结果 -> As CSV...
在导出 CSV 之前可以把其他列都取消勾选,只显示 HID 一列,这样方便在文本编辑器中复制内容,然后使用 python 脚本解析
通过 tshark 提取 HID 数据:
tshark -r a.pcapng -T fields -e usbhid.data > usbdata.txt
tshark -r a.pcapng -T fields -e usb.capdata > usbdata.txt
视情况而定
鼠标流量
鼠标数据包数据长度为 4 字节,第一个字节代表按键,0x00 无按键,0x01 左键,0x02 右键;第二个字节代表左右偏移,为正代表右移像素,为负代表左移像素;同理,第三个字节代表上下偏移
HTTPS 流量包
HTTPS 流量是经过 TLS 协议加密过的,需要导入 key 才能看到原始 HTTP 流量
Edit -> Preferences -> Protocols -> SSL -> Edit RSA keys list
编辑 -> 首选项 -> Protocols -> SSL -> Edit RSA keys list