misc

文件头尾

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
37
38
39
40
41
.zip的文件头:50 4B 03 04 14 00 08 00
.rar的文件头:52 61 72 21
.rar的文件尾:C4 3D 7B 00 40 07 00
.7z的文件头:37 7A BC AF 27 1C
.pyc的文件头:03 F3 0D 0A
.jpg的文件头:FF D8 FF E0 00 10 4A 46 49 46 00 01
.png的文件头:89 50 4e 47 0d 0a 1a 0a 文件尾:49 45 4E 44 AE 42 60 82
.gif的文件头:47 49 46 38 39 61(GIF89A)或 47 49 46 38 37 61(GIF87A)
.gif的文件尾:00 3B
.gz的文件头:1F 8B 08 00
.pyc的文件头:03 F3 0D 0A
.psd的文件头:38 42 50 53
TIFF (tif),文件头:49492A00
Windows [Bitmap](https://so.csdn.net/so/search?q=Bitmap&spm=1001.2101.3001.7020) (bmp),文件头:424D
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
MS Access (mdb),文件头:5374616E64617264204A
WordPerfect (wpd),文件头:FF575043
Postscript (eps.or.ps),文件头:252150532D41646F6265
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
Wave (wav),文件头:57415645
AVI (avi),文件头:41564920
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
MPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
MIDI (mid),文件头:4D546864
M4a,文件头:00000018667479704D3441
!!1.PNG文件的前16字节是已知的:89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52

图片

隐写一把梭

Release v1.0.1 beta · JamesHoi/PuzzleSolver · GitHubAperi’Solve (aperisolve.fr)

JPG

steghide:通过密码隐藏信息

1
steghide extract -sf test.jpg -p 123456

stegseek:配套上面工具,爆破密码

1
stegseek 文件 字典

Stegdetect:针对jpg隐写,支持outguess,jsteg,jphide,invisible

F5-steganography-master

1
2
3
4
5
#有密码的情况
java Extract beautiful.jpg -p passwd
#无密码的情况
java Extract beautiful.jpg
#解密出来的数据会放到F5文件夹下的output.txt中

outtguess

PNG

zsteg:图片lsb快速分析

1
2
3
zsteg -a 图片名

zsteg -e 通道 图片名

cloacked-pixel:可加密的lsb

1
2
3
python2 lsb.py analyse 路径
python2 lsb.py extract 路径 out 密码
(python lsb.py extract -i "路径" -o out.txt -p 密码)

盲水印

爆破宽高

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import binascii
import struct

crcbp = open("1.png", "rb").read() #打开图片
crc32frombp = int(crcbp[29:33].hex(),16) #读取图片中的CRC校验值
print(crc32frombp)

for i in range(4000): #宽度1-4000进行枚举
for j in range(4000): #高度1-4000进行枚举
data = crcbp[12:16] + \
struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
#print(crc32)
if(crc32 == crc32frombp): #计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
print(i, j)
print('hex:', hex(i), hex(j))
exit(0)

IDAT块隐写:010提取数据后解压

1
2
3
4
5
6
import zlib
import binascii
IDAT = "789C5D91011280400802BF04FFFF5C75294B5537738A21A27D1E49CFD17DB3937A92E7E603880A6D485100901FB0410153350DE83112EA2D51C54CE2E585B15A2FC78E8872F51C6FC1881882F93D372DEF78E665B0C36C529622A0A45588138833A170A2071DDCD18219DB8C0D465D8B6989719645ED9C11C36AE3ABDAEFCFC0ACF023E77C17C7897667".decode('hex')
result = binascii.hexlify(zlib.decompress(IDAT))
print (result.decode('hex'))
print (len(result.decode('hex')))

IDTAchunk:010或者tweakpng分析IDAT块,提取异常的加上文件头尾后爆破crc

GIF

1
identify -format "%s %T \n" flag.gif
1
2
3
4
5
6
montage flag*.png -tile x1 -geometry +0+0 flag.png     #合并图片
`.tile`:用于指定拼接的布局,格式为 `rowsxcolumns`。例如,`-tile 2x3` 表示将图像分成 23 列。

`-geometry`:用于指定每个图像块的大小和位置。例如,`-geometry +0+0` 表示没有间隙地拼接图像。

`-gaps`:在图像之间添加间隙,例如 `-gaps 10x10`。

BMP

脚本

1
2
3
4
5
6
分解GIF的命令:convert glance.gif flag.png
水平镜像翻转图片:convert -flop reverse.jpg reversed.jpg
垂直镜像翻转图片:convert -flip reverse.jpg reversed.jpg
合成图片的命令:montage flag*.png -tile x1 -geometry +0+0 flag.png
-tile是拼接时每行和每列的图片数,这里用x1,就是只一行
-geometry是首选每个图和边框尺寸,我们边框为0,图照原始尺寸即可
1
2
3
4
5
6
7
8
9
10
11
12
lsb脚本
from PIL import Image
width = 1532
height = 961
img=Image.open("41.png")
for i in range(width):
for j in range(height):
pi=img.getpixel((i,j))
if(pi[3] == 255):
print(1,end='')
else:
print(0,end='')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
傅里叶盲水印
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('/root/桌面/flag.jpg', 0) #直接读为灰度图像,不过此题已经是灰度图片了
f = np.fft.fft2(img) #做频率变换
fshift = np.fft.fftshift(f) #转移像素做幅度谱
s1 = np.log(np.abs(fshift))#取绝对值:将复数变化成实数取对数的目的为了将数据变化到0-255
plt.subplot(121)
plt.imshow(img, 'gray')
plt.title('original')
plt.subplot(122)
plt.imshow(s1,'gray')
plt.title('center')
plt.show()

文档

1
oletools:提取Microsoft office等文件的VBA宏代码
1
2
wbStego4open:PDF,TXT,HTM.BMP隐写
打开有NULL字符
1
snow隐写:属于空格隐写的一种,还有me隐写,可以用于图片的16进制文本
1
NtfsStreamsEditor2:txt文件检查
1
DeEgger Embedder:PDF/图片隐写

音频

慢扫描电视sstv:e2eSoft

NtfsStreamsEditor2

频谱图,波形图

DTMF提取:根据拨号音

http://www.dialabc.com/sound/detect/

wav

deepsound(可以deepsound2john爆破秘钥),slenteye,openpuff

业余无线电

image-20240912163032590

mp3

MP3Stego,slenteye

视频

1
2
3
4
AVI
│ ├── DeEggerSetup131.msi
│ ├── MP4 QuickTime
│ └── ffmpeg-latest-win32-static

mkvtool提取音频

分帧lsb隐写

分帧指定像素

压缩包

image-20240912160203960

1
2
3
文件已损坏:元数据区和目录区的文件名长度
如果压缩文件已损坏,则尝试用winrar打开,工具-修复压缩包
CRC校验错误:元数据区和目录区的压缩方法
1
2
3
4
5
6
7
8
9
10
伪加密
zip
压缩源文件数据区:7-8位表示有无加密

压缩源文件目录区:9-10位表示是否是伪加密

一般这俩地方都是09 00的,大概率就是伪加密了(直接把第二个PK后的09改了就行)

rar
第24个字节尾数为4表示加密,0表示无加密,将尾数改为0即可破解伪加密
1
2
3
明文攻击:针对如ZipCrypto等旧版的加密算法,分为全明文和部分明文攻击,部分明文攻击针对ZipCrypto Store算法
https://www.freebuf.com/articles/network/255145.html
部分明文需要8+412个已知字符,其中8个要求连续

image-20240912163712019

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
首先使用-C输入zip文件 
-c指定zip内部文件
然后-o 指定偏移量 -p 内部文件的指定明文
最后其他偏移量用-x指定

可以使用命令echo -n "明文" | xxd -r -ps > 1.txt写入明文文件

以png文件为例,png开头恒定为89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52

time brcrack -C 压缩包 -c 压缩包中的加密文件 -p 明文文件(已知加密文件的部分) -o 偏移量(也就是0) >1.log&tail -f 1.log

brcrack -C 压缩包 -c 获取的文件 -k 上一步得到的key -d 输出文件名

压缩包:文件名会出现在zip压缩包的文件头,偏移量为30,所以当一个压缩包内有另一个压缩包,可以根据内部压缩包名字进行攻击,由zip文件头4字节,内部压缩包名字≥8字节

brcrack -C 压缩包 -c 内部压缩包名字 -p 明文文件(内部压缩包中的压缩文件名,会被写入压缩包文件头中) -o 30 -x 0 504B0304
brcrack -C 压缩包 -c 内部压缩包名字 -k 秘钥 0d 输出文件名

image-20240912215228777

例如以上题目 zip里面有zip,-c指定内部压缩包,-p指定的文件内容是dasflow.pcap(会出现在内部压缩包文件头内)

image-20240910221343374

1
2
crc爆破:大量文件<=18字节,爆破出密码
https://blog.csdn.net/mochu7777777/article/details/110206427
1
2
3
密码不可见字符:python处理
base64加密后再base64解密得到bytes
libnum.n2s

加密手法

CTF-Misc Guide - ⚡Lunatic BLOG⚡ (goodlunatic.github.io)

HMAC_SHA

image-20240910225048302

Decabit 脉冲

也可以替换为01尝试

image-20240912125157608

DNA

image-20240912125245027

arnold猫脸变换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from PIL import Image

img = Image.open('catcat.png')
if img.mode == "P":
img = img.convert("RGB")
assert img.size[0] == img.size[1]
dim = width, height = img.size

st = 1
a = 114
b = 514
for _ in range(st):
with Image.new(img.mode, dim) as canvas:
for nx in range(img.size[0]):
for ny in range(img.size[0]):
y = (ny - nx * a) % width
x = (nx - y * b) % height
canvas.putpixel((y, x), img.getpixel((ny, nx)))
canvas.show()
canvas.save('flag.png')

image-20240913105106499

螺旋加密

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
def function(n):
matrix = [[0] * n for _ in range(n)]

number = 1
left, right, up, down = 0, n - 1, 0, n - 1
while left < right and up < down:
# 从左到右
for i in range(left, right):
matrix[up][i] = number
number += 1

# 从上到下
for i in range(up, down):
matrix[i][right] = number
number += 1

# 从右向左
for i in range(right, left, -1):
matrix[down][i] = number
number += 1

for i in range(down, up, -1):
matrix[i][left] = number
number += 1
left += 1
right -= 1
up += 1
down -= 1
# n 为奇数的时候,正方形中间会有个单独的空格需要单独填充
if n % 2 != 0:
matrix[n // 2][n // 2] = number
return matrix

SilentEyes:通用图片和音频加密

exiftools:exif数据查看

wbStego4open:PDF,TXT,HTM.BMP隐写
snow隐写:属于空格隐写的一种,还有me隐写,可以用于图片的16进制文本

https://www.darkside.com.au/snow

clienteye:行列不对齐的小灰块

DeEgger Embedder:PDF 图片隐写

stegpy:stegpy path -p pass

取证

内存

raw/mem/dmp/dump

可以使用strings获取系统版本

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# 识别操作系统的基本信息
vol.py mem.dump imageinfo
# 查看进程
vol.py -f OtterCTF.vmem --profile=Win7SP1x64 pslist
# 查看隐藏或者解链的进程
vol.py -f OtterCTF.vmem --profile=Win7SP1x64 pstree
# 通过memdump爆破出进程对应的信息
vol.py -f OtterCTF.vmem --profile=Win7SP1x64 memdump -p 3036 --dump-dir=./
# 扫描镜像中的服务
vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 svcscan
# 扫描进程缓存的文件
vol.py -f memory.raw --profile=Win7SP1x64 filescan
# 查找特定后缀的文件
vol.py -f example.raw --profile=Win7SP1x64 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc'
# 查找指定文件夹下的文件
volatility -f example.raw --profile=Win7SP1x64 filescan | grep TMP_User
# 使用dumpfiles爆破文件内容(有时可能会出现vol2提取不了但是vol3可以的情况,也可以使用 R-stdio 工具提取)
vol.py -f OtterCTF.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007e410890 --dump-dir=./
# 查看进程环境变量
vol.py -f memory.raw --profile=Win7SP1x64 envars
# 扫描进程命令行参数
vol.py -f memory.raw --profile=Win7SP1x64 cmdscan
vol.py -f memory.raw --profile=Win7SP1x64 cmdline
# 扫描动态库列表
# 可使用-p参数指定PID号
vol.py -f memory.img --profile=Win2003SP1x86 dlllist
vol.py -f memory.img --profile=Win2003SP1x86 ldrmodules
# 扫描系统中的恶意软件
vol.py -f memory.img --profile=Win2003SP1x86 malfind
# 查看当前镜像中的用户
vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
# 查看镜像中的用户名和密码(hash值)
vol.py -f OtterCTF.vmem --profile=Win7SP1x64 hashdump
# 使用mimikatz插件快速获取用户密码
vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.dump --profile=Win7SP1x64 mimikatz
# 扫描注册表数据
# 查看注册表配置单元
vol.py -f memory.raw --profile=Win7SP1x64 hivelist
# 查看注册表键值
vol.py -f OtterCTF.vmem --profile=Win7SP1x64 printkey
# 查看注册表键名
vol.py -f memory.raw --profile=Win7SP1x64 hivedump -o 0xfffff8a001cce010(注册表Volatility地址)
# 查看网络连接状态
vol.py -f memory.raw --profile=Win7SP1x64 connscan
vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 netscan
vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 connections
# 查看浏览器历史记录
vol.py -f 1.vmem --profile=Win7SP1x64 iehistory
# 显示有关编辑控件的信息
vol.py -f 1.vmem --profile=Win7SP1x64 editbox
# 查看当前展示的notepad的内容
vol.py -f 1.vmem --profile=Win7SP1x64 notepad
# 获取屏幕截图
vol.py -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./
# 查看剪贴板信息
vol.py -f 1.vmem --profile=Win7SP1x64 clipboard
# 查看剪贴板信详细内容
vol.py -f 1.vmem --profile=Win7SP1x64 clipboard -v
# 查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等
vol.py -f 1.vmem --profile=Win7SP1x64 userassist
# 最大程序提取信息
vol.py -f 1.vmem --profile=Win7SP1x64 timeliner
# 恢复被删除的文件
vol.py -f 1.vmem --profile=Win7SP1x64 mftparser
# 使用ndispktscan插件搜索内核的网络流量包信息
vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 ndispktscan
# 使用usbstor插件获取USB连接信息
vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 usbstor
# 使用VolDiff进行恶意软件检测
vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 voldiff
# 使用bitlocker插件获取Bitlocker的加密密钥
vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 bitlocker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查看命令
vol3.py -h
# 扫描镜像中的文件
vol3.py -f dacong.raw windows.filescan
# 查看桌面上的文件
vol3.py -f dacong.raw windows.filescan | grep Desktop
# 提取文件
vol3.py -f mem.raw windows.dumpfiles --virtaddr="0x0000e0007ad17f20"
# 扫描注册表(感觉这个功能vol2的更好)
vol3.py -f dacong.raw windows.registry.printkey
vol3.py -f dacong.raw windows.registry.hivelist
# 扫描命令行记录
vol3.py -f dacong.raw windows.cmdline
# 查看网络使用状态、端口占用状态
vol3.py -f dacong.raw windows.netscan
vol3.py -f dacong.raw windows.netstat
# 查看系统中的进程
vol3.py -f dacong.raw windows.pslist
vol3.py -f dacong.raw windows.pstree

image-20240912170316898

  1. VBoxTray.exe:类似vmtool
  2. ClipboardMonitor:剪切板监控软件
  3. mstsc.exe:远程桌面连接

磁盘

fat/VMDK/e01/ad1/vhd

veracrypt挂载,取证大师image-20240912170612405

  • 用户的powershell历史记录会保存在这个路径下 \Users\test\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
  • D盾扫网站目录
  • mysql数据从qp.xb恢复
  • 磁盘回复:extundelete
  • 浏览器凭证破解:firepwd
  • DPAPI破解
  • 加密卷:veracrypt truecrypt encfs
  • GPG/PGP:GPG/Kleopatra
  • cipher加密:Advanced efs data recovery

二维码

修复:QRazyBox,PS

反色处理

流量

1
2
3
4
5
6
7
8
9
tshark提取
# -r [输入的pcap文件路径]: 指定要分析的pcap文件。
# -Y "http.request.method == POST": 使用一个显示过滤器只显示POST请求。
# -T fields: 输出指定的字段数据。
# -e http.file_data: 输出HTTP负载的数据。

tshark -r 1.pcapng -Y "http" -T fields -e http.file_data | uniq > data.txt
可以使用 uniq 参数去除重复行

1
2
过滤
http。request

分类

  • USB
  • Webshell
  • NTLM
  • 工控
  • 蓝牙(OBEX)
  • 邮件(SMTP)
  • 无线流量
  • ICMP
  • VPN
  • ADS-B
  • 修复流量包

其他

邮件

eml-analyzer:提取邮件附件

image-20240910230252285

命令

var/cache/locate/locatedb locate命令数据库

tupper自指

数字转图片

ps临近缩小

1
2
scap文件-sysdig处理
apng文件(文件头acTL和fcTL)-apngdis_gui

misc
http://example.com/2024/09/16/misc/
作者
z2zQAQ
发布于
2024年9月16日
许可协议