有关于取证的笔记——包含详细例题解析

取证

  • 前言
  • 一、取证工具介绍
    • 1.1 Volatility
      • 1.1.1、镜像信息
      • 1.1.2、扫描内存中的文件带条件过滤
      • 1.1.3、进程查看
      • 1.1.4、dump对应文件
      • 1.1.5、根据pid 来dump运行文件的
      • 1.1.6、内存中查看系统用户名、密码
      • 1.1.7、获取密码哈希
      • 1.1.9、提取内存中保留的cmd命令使用情况
      • 1.1.10、获取sid号涉及用户
      • 1.1.11、查看用户名密码信息
    • 1.2 Autopsy
      • 1.2.1 使用流程
    • 1.3 MAGNET AXIOM
      • 1.3.1 使用流程
    • 1.4 Extundelete
      • 1.4.1 常用命令
    • 1.5 Tshark
      • 1.5.1.从.pcap文件中提取如wireshark表格中显示的USB摘要信息,并将结果输出到一个文件中
      • 1.5.2.对pcap的封包协议作详细解析并输出协议细节
      • 1.5.3.对pcap的封包协议作详细解析增加对TCP头checksum对错的判断
      • 1.5.4.承上,如需将IP头解析为DiffServ
      • **帮助界面命令**
    • 1.6 Mimikatz
      • 1.6.1使用指南
    • 1.7 其余脚本总结
  • 二、真题复现
    • 2.1.2018护网杯取证
    • 2.2 EXT3文件泄露
    • 2.3 简单的取证1
    • 2.4 something_in_image
    • 2.5 Advertising for Marriage
  • 总结


前言

`提示:掌握基础很关键


一、取证工具介绍

1.1 Volatility

记住走流程的关键命令:

1.1.1、镜像信息

volatility -f [内存文件名] imageinfo 特别关注Suggested Profile(s)的第镜像信息版本类型

1.1.2、扫描内存中的文件带条件过滤

volatility -f [内存文件名] --profile=(系统版本) filescan | grep “flag” 单个条件
volatility -f [内存文件名] --profile=(系统版本) filescan | grep -E “jpg|png|jpeg|bmp|gif” 多个条件

1.1.3、进程查看

volatility -f [内存文件名] --profile=(系统版本) pslist 查看进程

volatility -f [内存文件名] --profile=(系统版本) pstree 查看进程列表(树形)

1.1.4、dump对应文件

volatility -f [内存文件名] --profile=(系统版本) dumpfiles -Q 0xxxxxx --dump-dir=./

1.1.5、根据pid 来dump运行文件的

volatility -f [内存文件名] --profile=(系统版本) memdump -p 123 -D ./

volatility -f [内存文件名] --profile=(系统版本) procdump -p 1234 -D ./

1.1.6、内存中查看系统用户名、密码

volatility -f [内存文件名] --profile=(系统版本) printkey -K “SAM\Domains\Account\Users\Names”
volatility -f [内存文件名] --profile=(系统版本) printkey -K “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”

1.1.7、获取密码哈希

volatility -f [内存文件名] --profile=(系统版本) hivelist

获取密码哈希:
1.获取system 的 virtual 地址,SAM 的 virtual 地址:
volatility -f mem.raw --profile=WinXPSP2x86 hivelist

2.hashdump:
volatility -f mem.raw --profile=WinXPSP2x86 hashdump -y 0xe1018358 -s 0xe16acb60

有关于取证的笔记——包含详细例题解析_第1张图片

1.1.9、提取内存中保留的cmd命令使用情况

volatility -f [内存文件名] --profile=(系统版本) cmdline

1.1.10、获取sid号涉及用户

volatility -f [内存文件名] --profile=(系统版本) getsids

1.1.11、查看用户名密码信息

volatility -f (内存文件名) --profile=(系统版本) hashdump

其他命令介绍:

功能 命令行及参数
进程列表(psx视图) volatility -f (内存文件名) –profile=(系统版本) psxview
网络通讯连接 volatility -f (内存文件名) –profile=(系统版本) netscan
加载的动态链接库 volatility -f (内存文件名) –profile=(系统版本) dlllist
屏幕截图 volatility -f 1(内存文件名) --profile=(系统版本) screenshot --dump-dir=./
查看SSDT表 volatility -f (内存文件名) –profile=(系统版本) ssdt
查看UserAssist痕迹 volatility -f (内存文件名) –profile=(系统版本) userassist
notepad插件 volatility -f [内存文件名] --profile=(系统版本) notepad 查看当前展示的 notepad 文本
解析MFT记录 volatility -f (内存文件名) –profile=(系统版本) mftparser
查看最后关机时间 volatility -f (内存文件名) –profile=(系统版本) shutdowntime
查看浏览器历史记录 volatility -f (内存文件名) --profile=(系统版本) iehistory
查看服务列表 volatility -f (内存文件名) –profile=(系统版本) svcscan
查看ShellBags volatility -f (内存文件名) –profile=(系统版本) shellbags
导出MFT记录,恢复文件 volatility -f (内存文件名) –profile=(系统版本) mftparser –output-file=mftverbose.txt -D mftoutput
提取注册表数据 volatility -f (内存文件名) –profile=(系统版本) dumpregistry
查看IE历史记录 volatility -f (内存文件名) –profile=(系统版本) iehistory
查看ShimCache痕迹 volatility -f (内存文件名) –profile=(系统版本) shimcache
查看Windows帐户hash volatility -f (内存文件名) –profile=(系统版本) hashdump
获取TrueCrypt密钥 volatility -f (内存文件名) –profile=(系统版本) truecryptmaster
获取TrueCrypt密码 volatility -f (内存文件名) –profile=(系统版本) truecryptpassphras

1.2 Autopsy

详细的中文版用户手册 :https://www.wangan.com/docs/1658
外网视频指导:https://www.youtube.com/watch?v=fEqx0MeCCHg

也是图形化界面,但是个人感觉功能稍逊于‘MAGNET AXIOM’

1.2.1 使用流程

首先创建New Case,填写好项目的名称与保存地址,然后next的设置任意填写即可,点击finish完成创建

有关于取证的笔记——包含详细例题解析_第2张图片
有关于取证的笔记——包含详细例题解析_第3张图片
有关于取证的笔记——包含详细例题解析_第4张图片

跳转出新项目的设置,第一步便对新项目命名,然后关键的一步选中调查文件的类型,有磁盘镜像,VM虚拟机文件、本地磁盘,以及各类文件或已调查的结果。
这里以攻防世界里的一道题为例,选择了第一个镜像文件的选项。
有关于取证的笔记——包含详细例题解析_第5张图片
有关于取证的笔记——包含详细例题解析_第6张图片
选择好镜像文件的路径其余的默认即可,点击Next后也是默认扫描选项即可,默认勾选点击Next,等待最后的扫描完成即可进行取证
有关于取证的笔记——包含详细例题解析_第7张图片
有关于取证的笔记——包含详细例题解析_第8张图片
有关于取证的笔记——包含详细例题解析_第9张图片

1.3 MAGNET AXIOM

1.3.1 使用流程

这个应用全程图形化界面,取证流程相对于Volatility简单的多,这里拿一个内存文件举例。首先打开Magnet AXIOM新建案件然后填写好案件编号类型设置路径便可以点击下一步了,选中证据来源然后选中系统,进行加载证据,选择取证的种类,大多数是内存也有可能是镜像,我们这里对内存文件进行取证,点击内存后选择内存文件即可等待进行下一步。

有关于取证的笔记——包含详细例题解析_第10张图片有关于取证的笔记——包含详细例题解析_第11张图片
有关于取证的笔记——包含详细例题解析_第12张图片
有关于取证的笔记——包含详细例题解析_第13张图片
有关于取证的笔记——包含详细例题解析_第14张图片

有关于取证的笔记——包含详细例题解析_第15张图片
请添加图片描述
选择推荐的镜像配置文件然后点击下一页,后面的便是按着默认的来(如果没有特殊扫描要求,一般是按着默认的全局扫描)在等待扫描的过程中会弹出另外一个分析窗口,

有关于取证的笔记——包含详细例题解析_第16张图片
有关于取证的笔记——包含详细例题解析_第17张图片
在此可点击右上角的蓝色字体”查看所有使用痕迹类别" 进行进一步的详细分析,大致的基础使用方法便是这样

有关于取证的笔记——包含详细例题解析_第18张图片
有关于取证的笔记——包含详细例题解析_第19张图片

1.4 Extundelete

该软件在kali中默认装好的,没装的也可以直接apt-get install extundelete安装

1.4.1 常用命令

命令 功能
–inode ino 显示节点“ino”的信息。通常查看 --inode 2
–block blk 显示数据块“blk”的信息。
-restore-inode ino[,ino,…] 恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。
–restore-file ‘path’ 恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。
–restore-files ‘path’ 将恢复文件“路径”中列出的文件。每个文件名的格式应该与选项相同 -restore-file,每行应该有一个。
–restore-directory ‘path’ 将恢复目录’path’。 'path’是相对于文件系统的根目录的恢复目录在输出目录中创建为“path”。
–restore-all 恢复命令参数,表示将尝试恢复所有目录和文件。
–log filename 将所有消息记录到文件夹中。
-b blocknumber 表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。
-o directory 将恢复的文件放置到指定的目录中.恢复后的文件创建在一个目录中默认为’RECOVERED_FILES/'。

1.5 Tshark

1.5.1.从.pcap文件中提取如wireshark表格中显示的USB摘要信息,并将结果输出到一个文件中

tshark -r usb.pcapng -T fields -e usb.capdata > out.txt

其中-T是指设置解码结果输出的格式,-T fields选项已经指定,所以需要用-e用来指定输出哪些字段;

1.5.2.对pcap的封包协议作详细解析并输出协议细节

tshark -r test.pcap -V

如要将解析结果输出到文本文件中则为:tshark -r udp.pcap -V -T pdml,输出格式有多种,具体参见tshark.html对参数 -T的说明

1.5.3.对pcap的封包协议作详细解析增加对TCP头checksum对错的判断

tshark -r test.pcap -V -o tcp.check_checksum:TRUE

为TRUE即checksum对错要作判断,为FALSE为不判断同理,对UDP checksum的判断则为:tshark -r udp.pcap -V -o udp.check_checksum:TRUE

1.5.4.承上,如需将IP头解析为DiffServ

tshark -r test.pcap -V -o ip.decode_tos_as_diffserv:TRUE

——————————————————————————————————

帮助界面命令

捕获接口:
  -i: -i  指定捕获接口,默认是第一个非本地循环接口;
  -f: -f  设置抓包过滤表达式,遵循libpcap过滤语法,这个实在抓包的过程中过滤,如果是分析本地文件则用不到。
  -s: -s  设置快照长度,用来读取完整的数据包,因为网络中传输有65535的限制,值0代表快照长度65535,默认也是这个值;
  -p: 以非混合模式工作,即只关心和本机有关的流量。
  -B: -B  设置缓冲区的大小,只对windows生效,默认是2M;
  -y: -y 设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB等;
  -D: 打印接口的列表并退出;
  -L 列出本机支持的数据链路层协议,供-y参数使用。
 
捕获停止选项:
  -c: -c  捕获n个包之后结束,默认捕获无限个;
  -a: -a  ... duration:NUM,在num秒之后停止捕获;
                   filesize:NUM,在numKB之后停止捕获;
                    files:NUM,在捕获num个文件之后停止捕获;
捕获输出选项:
  -b  ... ring buffer的文件名由-w参数决定,-b参数采用test:value的形式书写;
                 duration:NUM - 在NUM秒之后切换到下一个文件;
                 filesize:NUM - 在NUM KB之后切换到下一个文件;
                 files:NUM - 形成环形缓冲,在NUM文件达到之后;
 
RPCAP选项:
  remote packet capture protocol,远程抓包协议进行抓包;
  -A:  -A :,使用RPCAP密码进行认证;
 
输入文件:
  -r: -r  设置读取本地文件
 
处理选项:
  -2: 执行两次分析
  -R: -R ,包的读取过滤器,可以在wireshark的filter语法上查看;在wireshark的视图->过滤器视图,在这一栏点击表达式,就会列出来对所有协议的支持。
  -Y: -Y ,使用读取过滤器的语法,在单次分析中可以代替-R选项;
  -n: 禁止所有地址名字解析(默认为允许所有)
  -N: 启用某一层的地址名字解析。“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n和-N参数同时存在,-n将被忽略。如果-n和-N参数都不写,则默认打开所有地址名字解析。
  -d: 将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”;tshark -d. 可以列出所有支持的有效选择器。
  
输出选项:
  -w: -w  设置raw数据的输出文件。这个参数不设置,tshark将会把解码结果输出到stdout,“-w -”表示把raw输出到stdout。如果要把解码结果输出到文件,使用重定向“>”而不要-w参数。
  -F: -F ,设置输出的文件格式,默认是.pcapng,使用tshark -F可列出所有支持的输出文件类型。
  -V: 增加细节输出;
  -O: -O ,只显示此选项指定的协议的详细信息。
  -P: 即使将解码结果写入文件中,也打印包的概要信息;
  -S: -S  行分割符
  -x: 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据。
  -T: -T pdml|ps|text|fields|psml,设置解码结果输出的格式,包括text,ps,psml和pdml,默认为text
  -e: 如果-T fields选项指定,-e用来指定输出哪些字段;
  -E: -E =如果-T fields选项指定,使用-E来设置一些属性,比如
    header=y|n
    separator=/t|/s|
    occurrence=f|l|a
    aggregator=,|/s|
  -t: -t a|ad|d|dd|e|r|u|ud 设置解码结果的时间格式。“ad”表示带日期的绝对时间,“a”表示不带日期的绝对时间,“r”表示从第一个包到现在的相对时间,“d”表示两个相邻包之间的增量时间(delta)。
  -u: s|hms 格式化输出秒;
  -l: 在输出每个包之后flush标准输出
  -q: 结合-z选项进行使用,来进行统计分析;
  -X: : 扩展项,lua_script、read_format,具体参见 man pages;
  -z:统计选项,具体的参考文档;tshark -z help,可以列出,-z选项支持的统计方式。
  
其他选项:
  -h: 显示命令行帮助;
  -v: 显示tshark 的版本信息;

1.6 Mimikatz

1.6.1使用指南

学习视频指南:

https://www.youtube.com/watch?v=AZirvtZNIEw&t=11s

项目地址:

https://github.com/gentilkiwi/mimikatz/

Mimikatz最新版打包下载地址:

https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20210810

运行mimikatz时可以cd到某文件夹下,一般进入配置文件config文件中

初始步骤(不管后面怎么操作必须先给予权限):

privilege::debug

有关于取证的笔记——包含详细例题解析_第20张图片
sekurlsa::logonpasswords

有关于取证的笔记——包含详细例题解析_第21张图片
常用关键功能:

lsadump::sam

图中出现了administrator的syskey哈希值,我们将其放到cmd5中或其他平台破解即可,因为这个密码是本人在虚拟机中设置的较为复杂所以破解不出来
有关于取证的笔记——包含详细例题解析_第22张图片

lsadump::sam /sam:SAM /system:SYSTEM 查看这个文件夹里面所有的用户名和密码

lsadump::sam /sam:SAM /system:SYSTEM

1.7 其余脚本总结

鼠标点击流量复原脚本(根据实际情况更改):

nums = []
keys = open("F:/Python3/out.txt",'r')
f = open("F:/Python3/keykey.txt",'w')
posx = 0
posy = 0
for line in keys:
    # print(len(line))
    if len(line) != 24:
        continue
    x=int(line[12:14],16)
    y=int(line[15:17],16)
    if x > 127 :
        x -= 256
    if y > 127 :
        y -= 256
    posx += x
    posy += y
    btn_flag = int(line[0:2],16)  # 1 for left , 2 for right , 0 for nothing
    if btn_flag == 0 : # 1 代表左键
        f.write(str(posx))
        f.write(' ')
        f.write(str(posy))
        f.write('\n')

f.close()

键盘流量复原脚本:

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:"\n", 0x2a:"[DEL]",  0X2B:"    ", 0x2C:" ",  0x2D:"-", 0x2E:"=", 0x2F:"[",  0x30:"]",  0x31:"\\", 0x32:"~", 0x33:";",  0x34:"'", 0x36:",",  0x37:"." }
nums = []
keys = open('F:/Python3.0Work/CTF/键盘流量/out.txt')
for line in keys:
    if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':
         continue
    nums.append(int(line[6:8],16))
keys.close()
output = ""
for n in nums:
    if n == 0 :
        continue
    if n in mappings:
        output += mappings[n]
print ('output :\n' + output)

二、真题复现

2.1.2018护网杯取证

考察知识点:volatilty的使用

使⽤volatilty进⾏分析(我这使用的是windows版本的,如果使用的是kali2018会默认安装的,直接volatility接参数就可以

.\volatility_2.6_win64_standalone.exe -f easy_dump.img imageinfo

有关于取证的笔记——包含详细例题解析_第23张图片
在Syggested Profile后方第一个Win7SP1x64大概率的版本号,指定并用pslist命令方法查看进程

.\volatility_2.6_win64_standalone.exe -f easy_dump.img --profile=Win7SP1x64 pslist

其中一个名为DumpIt.exe的程序我们使⽤memdump命令方法将其dump出来。

.\volatility_2.6_win64_standalone.exe -f easy_dump.img --profile=Win7SP1x64 memdump -p 1724 -D ./
有关于取证的笔记——包含详细例题解析_第24张图片
使⽤foremost进⾏分析,发现有个压缩包,解压后获得⼀个message.img

有关于取证的笔记——包含详细例题解析_第25张图片
file命令检测⼀下,发现是ext2⽂件系统数据。

有关于取证的笔记——包含详细例题解析_第26张图片
使⽤DiskGenius打开message.img。在磁盘⽬录中找到⼀个hint.txt,并且在files目录中找到⼀个vim的swp⽂件,
有关于取证的笔记——包含详细例题解析_第27张图片
有关于取证的笔记——包含详细例题解析_第28张图片
保存.message.swp文件在linux中使⽤ vim -r 命令恢复,得到⼀段字符串

yispyweise!dmsx_tthv_arr_didvi

有关于取证的笔记——包含详细例题解析_第29张图片
保存并打开hite.txt发现很像坐标点,利用python代码的PIL库将其构造出来

有关于取证的笔记——包含详细例题解析_第30张图片

from PIL import Image

file = open('F:/Python3.0Work/CTF/坐标代码/hint.txt','r')
data = file.read()
pic = Image.new('RGB',(300,300))
data = data.split('\n')
#print(data)
for i in data[0:-1]:
	#print(i)
	a = i.split(' ')
	print(a[0])
	x = int(a[0])
	y = int(a[1])
	pic.putpixel([x,y],(255, 255, 255))
pic.show()
pic.save('result.png')

跑出来是一个二维码图片:
有关于取证的笔记——包含详细例题解析_第31张图片

扫描得到的结果是:

Here is the vigenere key: aeolus, but i deleted the encrypted message。

维吉尼亚密码,前面恢复的是密文"yispyweise!dmsx_tthv_arr_didvi"而现在得到了密钥"aeolus"解码即可

有关于取证的笔记——包含详细例题解析_第32张图片

得到结果:yeeeeeeeet!just_find_and_solve

2.2 EXT3文件泄露

考察知识点:extundelete的使用

2.2.1 首先我们获取到一个文件名为HZ,利用file对其分析发现是一个ext3文件,我们可以将这个文件挂载到本系统中利用extundelete进行恢复

有关于取证的笔记——包含详细例题解析_第33张图片

2.2.2 先创建一个文件夹,然后使用挂载命令,查看挂载情况

mkdir 1998
mount HZ /1998
df

有关于取证的笔记——包含详细例题解析_第34张图片
2.2.3 使用extundelete中的查询模块,查询根路径下的文件

extundelete /dev/loop0 --inode 2

有关于取证的笔记——包含详细例题解析_第35张图片2.2.4 我们在下方发现重要的文件“[email protected]" ,后方发现他被删除了,那我们恢复他

extundelete /dev/loop0 --restore-file [email protected]

有关于取证的笔记——包含详细例题解析_第36张图片2.2.5 恢复后会在该目录自动生成一个名为RECOVERED_FILES的文件夹,我们切换到该目录中,因为文件隐藏,利用ls -a打开,如果直接去cat会发现有乱码,这里因为文件是swp结尾的,是一个非常规退出时产生的文件,我们可以通过

vim -r [email protected]

然后回车查看即可

有关于取证的笔记——包含详细例题解析_第37张图片
很显然其实cat也看到了这一串flag,只是为了更完美
有关于取证的笔记——包含详细例题解析_第38张图片

2.3 简单的取证1

考察知识点:Mimikatz的使用

首先拿到题目我们将其解压
有关于取证的笔记——包含详细例题解析_第39张图片

有关于取证的笔记——包含详细例题解析_第40张图片

运行mimikatz.exe并给予权限

.\mimikatz.exe
privilege::debug

有关于取证的笔记——包含详细例题解析_第41张图片
切换到目标文件夹下,获取所有用户的hash值,找到对应用户对其进行破解

cd C:\Users\Administrator1\Desktop\config
lsadump::sam /sam:SAM /system:SYSTEM

有关于取证的笔记——包含详细例题解析_第42张图片通过对数据用户的逐一破解,发现administrator-QQAAzz这个用户的hash值经过md5解码后是密码
有关于取证的笔记——包含详细例题解析_第43张图片有关于取证的笔记——包含详细例题解析_第44张图片
最后的结果便是:administrator-QQAAzz_forensics


2.4 something_in_image

考察知识点:extundelete的使用,及挂载硬盘命令

首先我们拿到这个无后缀的文件先可以放在kali中利用file命令查看其格式
该题文件为ext3扩展文件系统,可挂载的一种文件
请添加图片描述
接着我们创建一个文件夹,将其挂载到文件夹,然后再利用extundelete对其根目录查看情况

mkdir 1998
mount badimages /1998
df

有关于取证的笔记——包含详细例题解析_第45张图片
对指定目录进行查询

extundelete /dev/loop0 --inode 2
请添加图片描述
有关于取证的笔记——包含详细例题解析_第46张图片

发现Flag.txt文件,接着我们将其恢复,输入以下命令,成功后便会在该目录下生成RECOVERED_FILES文件夹其中包含Flag.txt,打开便有

extundelete /dev/loop0 --restore-file /Flag.txt

有关于取证的笔记——包含详细例题解析_第47张图片
有关于取证的笔记——包含详细例题解析_第48张图片

2.5 Advertising for Marriage

考察知识点:volatility的使用、GIMP的使用

⾸先使⽤⼯具volatility分析

.\volatility_2.6_win64_standalone.exe imageinfo -f AM.raw
有关于取证的笔记——包含详细例题解析_第49张图片
查询中得到系统大概率为WinXPSP2x86
查询其进程情况

.\volatility_2.6_win64_standalone.exe -f AM.raw --profile=WinXPSP2x86 psscan

有关于取证的笔记——包含详细例题解析_第50张图片
发现有⼀个画图进程,提取⼀下,因为他肯定是一张图片,但是宽高不敢确定,最花时间的步骤就在这里了

.\volatility_2.6_win64_standalone.exe -f AM.raw --profile=WinXPSP2x86 memdump -p 332 -D ./

有关于取证的笔记——包含详细例题解析_第51张图片
将332.dmp文件后缀更改成data这样GIMP才能打开图像,使⽤GIMP打开,各种调整⾼度 发现575 640 635,拉取到下方,得到⼀个图,有四个字母PJCX但是感觉图片被颠倒了

有关于取证的笔记——包含详细例题解析_第52张图片
将图片竖直翻转后发现图片中的字符串为b1cx,不知道这有什么用再去进程中看看还有没有什么线索
有关于取证的笔记——包含详细例题解析_第53张图片
发现notepad进程,将notepad提取查看

.\volatility_2.6_win64_standalone.exe -f AM.raw --profile=WinXPSP2x86 notepad

有关于取证的笔记——包含详细例题解析_第54张图片
看见下方有个提示:hint:???needmoneyandgirlfirend,大胆猜测之前那四位便是这里的前四位,有概率是上面的PJCX转换成小写pjcxneedmoneyandgirlfirend,但也有可能是b1cxneedmoneyandgirlfirend

到此为止也就发现了一串密钥,现在再去看看磁盘中是否存在其他线索,针对性的查寻图片、text文档、doc等,这边使用window的volatility会出现一些报错现象也不是很好解决,这边就转到kali2018自带的volatility工具中,使用grep命令进行过滤查询

volatility -f AM.raw filescan
–profile=WinXPSP2x86 | grep -E “jpg|png|bmp”

发现在⼀个名为vegetable.png的图片,将其提取

volatility -f AM.raw --profile=WinXPSP2x86 dumpfiles -
Q 0x000000000249ae78 -n --dump-dir=./
请添加图片描述
提取后利用foremost对其分离,但是图片是损坏的打不开,这时候需要使⽤crc32校验爆破的脚本查询该图片正确的长宽
有关于取证的笔记——包含详细例题解析_第55张图片
有关于取证的笔记——包含详细例题解析_第56张图片

import zlib
import struct

# 同时爆破宽度和高度
filename = 'C:/Users/1998/Desktop/122.png'
with open(filename, 'rb') as f:
    all_b = f.read()
    crc32key = int(all_b[29:33].hex(), 16)
    data = bytearray(all_b[12:29])
    n = 4095
    for w in range(n):
        width = bytearray(struct.pack('>i', w))
        for h in range(n):
            height = bytearray(struct.pack('>i', h))
            for x in range(4):
                data[x+4] = width[x]
                data[x+8] = height[x]
            crc32result = zlib.crc32(data)
            if crc32result == crc32key:
                print("宽为:", end = '')
                print(width, end = ' ')
                print(int.from_bytes(width, byteorder='big'))
                print("高为:", end = '')
                print(height, end = ' ')
                print(int.from_bytes(height, byteorder='big'))
                #后面用十进制转十六进制

正确宽为:00 00 01 1F 正确高为:00 00 00 D3
有关于取证的笔记——包含详细例题解析_第57张图片
发现完整的图片:
有关于取证的笔记——包含详细例题解析_第58张图片
stegsolve查看猜测其低通道是存在LSB隐写的,
使用LSB解密脚本:lsb脚本项目地址:https://github.com/livz/cloacked-pixel
注意:这边脚本使用的是python2,安装了crypto库,需要将python2文件夹中lib中的crypto的首位改成大写变成Crypto

这边的密钥尝试上方猜测的两个,发现b1cxneedmoneyandgirlfirend是真实密钥,得到文件2.txt

python lsb.py extract 1.png 2.txt b1cxneedmoneyandgirlfirend

有关于取证的笔记——包含详细例题解析_第59张图片
得到⼀个base64编码的数据,通过解码可得

VmlyZ2luaWEgY2lwaGVydGV4dDpnbnh0bXdnN3IxNDE3cHNlZGJzNjI1ODdoMA==

有关于取证的笔记——包含详细例题解析_第60张图片

Virginia ciphertext:gnxtmwg7r1417psedbs62587h0

维吉尼亚密码解密,
密文:gnxtmwg7r1417psedbs62587h0
密钥:bcxneedmoneyandgirlfirend
(因为密钥只能是由字母组成,而不是b1cxneedmoneyandgirlfirend )

得到结果:

flagisd7f1417bfafbf62587e0

总结

提示:练习题目最重要

你可能感兴趣的:(取证,安全)