Misc隐写术
Misc图片隐写
附加式的图片隐写
解题方法主要有:
- Strings
- binwalk
- Winhex或010 Editor
基于文件结构的图片隐写
解题方法:
- 010Editor(高度被修改)
- CRC Calculator
当使用010 Editor修改高度的时候,很有可能导致CRC值检验报错,这时候要用CRC Calculator 来重新计算CRC值
现在有很多工具可以检测png图片的CRC32是否错误并返回正确的CRC32值
pngcheck
工具
基于LSB原理的图片隐写
LSB隐写(只有文件类型为PNG和BMP的无损压缩文件才可以用LSB隐写)
需要用到stegsolve工具和jave的运行环境。
而LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化,(人类的眼睛只能识别一部分颜色的变化)
分析是否有可能是LSB隐写,我们开始点击下面的按钮,切换到不同通道,我们逐渐对比不同通道我们所看到的图片是怎么样子的。
我们发现在Red plane0
和Greee plane 0
以及B略 plane 0出现了相同的异常情况,我们这里基本可以断定就是LSB
隐写了
方法:
- 利用
Stegsolve
的Data Extract功能提取出最小位的RGB
。 - 利用python脚本来提取最小位的
RGB
from PIL import Image
im = Image.open("extracted.bmp")
pix = im.load()
width, height = im.size
extracted_bits = []
for y in range(height):
for x in range(width):
r, g, b = pix[(x,y)]
extracted_bits.append(r & 1)
extracted_bits.append(g & 1)
extracted_bits.append(b & 1)
extracted_byte_bits = [extracted_bits[i:i+8] for i in range(0, len(extracted_bits), 8)]
with open("extracted2.bmp", "wb") as out:
for byte_bits in extracted_byte_bits:
byte_str = ''.join(str(x) for x in byte_bits)
byte = chr(int(byte_str, 2))
out.write(byte)
我是在kali
系统下得到的文件。拿到文件后关注文件头。这里提取得到的文件头为424D
,是bmp
文件文件。修改后缀为bmp
即可拿到图片。
steghide
隐藏信息
steghide.exe info 文件名
steghide.exe extract -sf 文件名
outguess
图片隐写
需要key(例题:BJD 2th 圣火昭昭
)
outguess -k "gemlove" -r sheng_huo_zhao_zhao.jpg hidden.txt
对于某些极难分离和还原数据的图片
可以尝试使用foremost
来分离出其中的文件。
foremost 文件名 -T
基于DCT
域的JPG
图片隐写
stegdetect使用指南:
Stegdetect的主要选项如下:
-q 仅显示可能包含隐藏内容的图像。
-n 启用检查JPEG文件头功能,以降低误报率。如果启用,所有带有批注区域的文件将被视为没有被嵌入信息。如果JPEG文件的JFIF标识符中的版本号不是1.1,则禁用OutGuess检测。
-s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
-d 打印带行号的调试信息。
-t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
j 检测图像中的信息是否是用jsteg嵌入的。
o 检测图像中的信息是否是用outguess嵌入的。
p 检测图像中的信息是否是用jphide嵌入的。
i 检测图像中的信息是否是用invisible secrets嵌入的。
-V 显示软件版本号。
如果检测结果显示该文件可能包含隐藏信息,那么Stegdetect会在检测结果后面使用1~3颗星来标识 隐藏信息存在的可能性大小,3颗星表示隐藏信息存在的可能性最大。
在使用时注意要提高检测算法的敏感度,该值默认值为1!!!!!!
例句:stegdetect -tjopi -s 10 encode.jpg
在知道了相应的加密方法后再用相应的解密工具解析就可以了!!
jphide
加密
解密时我们需要一个pass,因此我们需要使用stegbreak
来爆破密码或者直接设置为空口令。
更于2020.9.28
数字水印隐写
盲水印隐写
这种隐写方式的特征十分明显:两张相同的图片。
可以先通过stegsolve来比较两张图片,若没有发现再使用盲水印脚本分离。
合成盲水印图
python bwm.py encode hui.png wm.png hui_with_wm.png
解码(python2和python3的解码结果可能会不同 )
python bwmforpy3.py decode 0.png 1.png 2.png --oldseed
python bwmforpy3.py decode 0.png 1.png 2.png
图片容差隐写
参考:
https://xz.aliyun.com/t/1833
https://xz.aliyun.com/t/1836
https://xz.aliyun.com/t/1844
https://xz.aliyun.com/t/1875
wireshark流量分析学习
- 流量包修复
- 在线网站修复
- web扫描分析
- sql盲注流量
- web扫描器流量(扫描器特征)
- 后台目录爆破分析
- 筛选后台url特征
- 后台账号爆破
- 筛选出POST请求或者账号关键字
-
Webshell上传
- usb流量包分析
- 键盘流量
- Flag藏于usb流量中,通过USB协议数据中的键盘键码转换成键位
- 鼠标流量
- Flag藏于usb流量中,通过USB协议数据中的鼠标移动轨迹转换成Flag。
- 键盘流量
- 其他流量包分析
http.request.method=="POST" && http contains == "关键字"
sql盲注流量包分析
首先需要导出所有的http对象放到一个文件夹中。
利用ls -l data > data.txt
来把文件名等内容放到data.txt
中
然后利用脚本对文件的长度进行过滤筛选出成功注入的文件名。
传入图片流量分析
对于传入图片的流量,如果图片的16进制组是以参数的方式传输的,那么我们可以通过如下方式来恢复图片。
找到传输图片的16进制组参数
将需要的值复制下来
FFD8..........................
创建一个新文件并存入值
点击OK
即可将16进制码传入。修改后缀即可查看原图片了。
流量包中有zip提示
可以使用foremost 工具来还原zip
9.23日更新
学习到一种新的方法
导出分组字节流后存为zip格式即可打开。
数据提取
记学习find the flag的一道流量分析题
(9.24更)
- 首先下载到的是一个损坏的cap文件,到在线修复网站上可以直接修复。
- 下载修复完的文件并打开后开始找flag
- 发现异常——tcp流29开始只有where is the flag的提示
- 从第29个流量开始看抓到的数据,发现“lf”"ga"倒叙输出的flag格式
- 最后拿到flag
本文学习参考:https://www.freebuf.com/sectool/201830.html
内存取证
extundelete恢复文件
extundelete可以用于恢复删除的文件。
Linux系统的mount挂载镜像,然后利用extundelete
extundelete attachment.img --restore-all
就能发现了恢复的文件了。
volatility
volatility -f <文件名> --profile=<配置文件> <插件> [插件参数]
volatility -f mem.vmem imageinfo 利用imageinfo插件来猜测dump文件的profile值
volatility -f mem.vmem --profile=WinXPSP2x86 volshell 利用profile 可以进入shell命令
volatility -f mem.vmem --profile=WinXPSP2x86 pslist 列举进程
volatility -f mem.vmem --profile=WinXPSP2x86 psscan
volatility -f mem.vmem --profile=WinXPSP2x86 hivelist 列举缓存在内存的注册表
volatility -f mem.vmem --profile=WinXPSP2x86 hivedump -o 注册表的 virtual 地址(0xe....)
volatility -f mem.vmem --profile=WinXPSP2x86 printkey -K "SAM\Domains\Account\Users\Names"
volatility -f mem.vmem --profile=WinXPSP2x86 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" 列出账号登陆的时间,找最后一个登录的账号
volatility -f mem.vmem --profile=WinXPSP2x86 userassist
volatility -f mem.vmem --profile=WinXPSP2x86 -p [PID] -D [dump 出的文件保存的目录]
二进制编辑器 hexeditor 将以上保存的 dmp 文件打开,并进行调查取证的工作 。
关键字"TrueCrypto"
python vol.py -f memory.img --profile=Win2003SP2x86 screenshot –dump-dir=ctf/
python vol.py -f memory.img --profile=Win2003SP2x86 memdump -p 3660 -D ctf/
python vol.py -f memory.img --profile=Win2003SP2x86 screenshot --dump-dir=ctf/
拿到屏幕截图
python vol.py -f memory.img --profile=Win2003SP2x86 filescan|grep flag
python vol.py -f memory.img --profile=Win2003SP2x86 dumpfiles -Q 0x000000000484f900 -D ctf/
python vol.py -f memory.img --profile=Win2003SP2x86 windows
python vol.py -f memory.img --profile=Win2003SP2x86 memdump -p 1992 -D ctf/
volatility -f mem.vmem --profile=WinXPSP2x86 memdump -p 1464 -D ctf/ 把进程保存到dmp下
得到dmp文件后,利用Elcomsoft Forensic Disk Decryptor来破解
pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
mendump:提取出指定进程,常用foremost 来分离里面的文件
filescan:扫描所有的文件列表
hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容
查看后利用john破解
svcscan:扫描 Windows 的服务
connscan:查看网络连接
netscan 网络连接
iehistory 浏览记录
userassist插件 获取注册表上的证据:
prefetchparser插件 预取文件
shimcache插件 跟踪应用程序的最近修改时间,文件完整路径和执行标志
shell命令
dt("重要的内核")
dt("_PEB")
strings
你还可以使用 strings 这个工具将它的字符串打印出来。
strings 1736.dmp > 1736.txt
strings 1608.dmp > 1736.txt | grep shellcode
可以可以看到这些进程地址
看看系统里的窗口列表 python vol.py -f memory.img --profile=Win2003SP2x86 windows
输出到1.txt
中后查看flag.png查到了这个进程 explorer.exe
,把这个进程dump
出来
winhex veracrypt
对某些fat
文件可以进行加载,可能需要密码(猜)。
某些文件有二层加密,不同的密码有不同的文件。
winhex可以打开一些隐藏的盘,可以在文本中搜索需要的字符串。