MISC知识整合

MISC知识整合

最近在准备省赛打算全面整理复习一下MISC知识点,MISC包含几个大向:编码转换,隐写术,压缩包分析,流量分析,各种取证

1、图片隐写

附加式隐写–字符串:大多数情况下信息会被隐藏在末尾,这样不会对图片本身的显示产生影响。当然也不排除将隐藏的信息放在其他地方,这时候我们可以通过搜索文本的方式来寻找。我们可以通过快捷键 ctrl+f 调出 010editor 的查找功能,一般情况下我们会去查找一些关键字,比如 flag、ctf、key 等等。

或者用strings查找

1
strings  a.png  |  grep  "flag{}"

image-20251107124832231

附加式隐写–图种:图片文件和其他文件结合起来的文件

使用binwalk\foremost进行识别和还原

image-20251107130318066

image-20251107172803019

附加式隐写-EXIF隐写

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

通过打开属性即可查看exif信息

image-20251107172839760

图片宽高隐写

一张图片我们可以通过修改其宽高的方式来隐藏信息。但是修改宽度会导致图片变形,所以多数情况下是修改高度。

一般情况下我们只需将高度的值修改的尽量大些就可以看到隐藏的信息了。

02-bmp图片宽高

LSB隐写

图片中的像素一般是由三原色(红绿蓝)组成,三原色可以再组成其他各种颜色。在 png 图片中,每个颜色占有 8 bit,即 256 种颜色,那么就可以组合成 16777216 种颜色。比如 RGB 值为 (0,255,0) 的颜色为绿色,那么我们将其中的 255 改成 254,仅凭肉眼的话其实是看不出颜色的变化的。如果一个 png 图片我们将它里面的每一个 RGB 值都做一点变动,对于整个图片来说变化也是微乎其微的了。LSB 隐写就是修改 RGB 颜色分量的最低二进制位,颜色依旧看不出有什么变化,从而达到隐藏信息的目的。

一般对于 LSB 隐写我们常用的有两个工具,一个是 stegsolve,多见于 Windows 系统,另外一个是 zsteg,多见于 Linux 系统。

image-20251107125604095

盲水印提取

盲水印就是把我们的水印隐藏在图片中,但是隐藏前后的图片在视觉上没有任何区别。在 CTF 中比较常见的盲水印工具是 BlindWaterMark,在还原时需要提供两张看起来一样的图片

2、压缩包分析

伪加密—zip伪加密放进linux直接解压,–rar伪加密修改标志位

暴力破解,一般选择纯数字,如果存在提示那可以采用字典破解方式

也可以采用掩码攻击的方式,如已知 7 位密码中的第 3 位为 a,第 6 位为 b ,那么可以构造 ??a??b? 进行掩码攻击。

明文攻击

3、流量分析

1、TLS流量分析

对于TLS流量,我们只需要导入sslkey.log文件进行流量解密

image-20251107144926151

2、鼠标流量

以下是鼠标流量特征

image-20251107145052712

我们只需要先将usb数据提取出来,通过以下命令

1
tshark –r mouse.pcapng –T fields –e usb.capdata > usbdata.txt

再利用工具直接借助 Github 项目 UsbMiceDataHacker。

1
python UsbMiceDataHacker.py mouse.pcapng LEFT 

3、键盘流量分析

以下是键盘流量特征

image-20251107145515538

我们可以运行以下命令提取所以键盘数据

1
tshark -r atta.NISACTF_2022flag.pcap -T fields -e usb.capdata > usbdata.txt

然后编写脚本转换为可读字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding:utf-8 -*-
mappings = {0x04:"A", 0x05:"B", 0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0a:"G", 0x0b:"H", 0x0c:"I", 0x0d:"J", 0x0e:"K", 0x0f:"L", 0x10:"M", 0x11:"N", 0x12:"O", 0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U", 0x19:"V", 0x1a:"W", 0x1b:"X", 0x1c:"Y", 0x1d:"Z",0x1e:"1", 0x1f:"2", 0x20:"3", 0x21:"4", 0x22:"5", 0x23:"6",0x24:"7",0x25:"8",0x26:"9",0x27:"0",0x28:"<RET>",0x29:"<ESC>",0x2a:"<DEL>", 0x2b:"\t",0x2c:"<SPACE>",0x2d:"-",0x2e:"=",0x2f:"[",0x30:"]",0x31:"\\",0x32:"<NON>",0x33:";",0x34:"'",0x35:"`",0x36:",",0x37:".",0x38:"/",0x39:"<CAP>",0x3a:"<F1>",0x3b:"<F2>", 0x3c:"<F3>",0x3d:"<F4>",0x3e:"<F5>",0x3f:"<F6>",0x40:"<F7>",0x41:"<F8>",0x42:"<F9>",0x43:"<F10>",0x44:"<F11>",0x45:"<F12>"}
result = ''
with open('usbdata.txt', 'r') as f:
for line in f.readlines():
line = line.strip()
if len(line) == 16:
s = int(line[4:6], 16)
elif len(line) == 24:
s = int(line[6:8], 16)
else:
continue
if s != 0 and s in mappings:
result += mappings[s]
print(result)

也可借助 Github 项目 UsbKeyboardDataHacker。

4、取证分析

磁盘取证对已经删除的文件进行恢复,可以用DiskGenius

屏幕截图 2025-07-25 170414

内存取证

CTF 中的内存取证题,往往会提供一个完整的内存镜像,一般来说内存镜像文件都较大,1G 大小以上的文件比比皆是。最常用的取证工具之一是 volatility

使用 volatility -h 命令查看详细的使用方法。以下列出几种较为常见参数选项意义。

插件命令 说明
clipboard 提取 windows 剪切板的内容
cmdscan 查看历史命令
envars 查看环境变量
filescan 扫描文件
hashdump 从内存中提取哈希密码(LM/NTLM)
imageinfo 查看镜像的基本信息
mimikatz 提取明文密码
netscan 查看网络连接状态
notepad 查看展示的记事本内容
editbox 查看编辑内容
pstree 将进程显示为树状列表
screenshot 获取系统在此刻的截图

获取系统信息

1
python vol.py -f "Windows 7-dde00fa9.vmem" windows.info

屏幕截图 2025-07-28 112658

搜索相关文件并提取

1
2
$env:PYTHONIOENCODING = "utf-8"
python vol.py -f "Windows 7-dde00fa9.vmem" windows.filescan | Select-String "My_Wifi"

image-20250728171922516

1
2
python vol.py -f "Windows 7-dde00fa9.vmem" windows.dumpfiles --physaddr 0x3fdc38c8
Rename-Item "file.0x3fdc38c8.dmp" "My_Wifi.zip"

从内存镜像中提取网络接口信息:

1
2
python vol.py -f "Windows 7-dde00fa9.vmem" windows.filescan | Out-File -FilePath filescan.txt -Encoding utf8
Select-String -Path filescan.txt "Interfaces" > interfaces_files.txt

image-20250728172547439