取证的学习

Volatility命令语法

1.判断镜像信息,获取操作系统类型

Volatility -f xxx.vmem imageinfo

在查到操作系统后如果不确定可以使用以下命令查看

volatility - f xxx.vmem --profile= [ 操作系统 ] volshell

2.知道操作系统类型后,用--profile指定

volatility -f ?.img --profile=...

3.查看当前显示的notepad文本

volatility -f file.raw --profile=WinXPSP2x86 notepad

4.查看当前运行的进程

volatility -f file.raw --profile=WinXPSP2x86 psscan/pslist

5.扫描所有的文件列表(常常结合grep)

volatility -f file.raw --profile=WinXPSP2x86 filescan

6.根据offset提取出文件

volatility -f file.raw --profile=WinXPSP2x86 dumpfiles -D . -Q 0x.....

7.扫描 Windows 的服务

volatility -f file.raw --profile=WinXPSP2x86 svcscan

8.查看网络连接

volatility -f file.raw --profile=WinXPSP2x86 connscan

9.查看cmd命令历史

volatility -f memory --profile=Win7SP1x64 cmdscan

volatility 使用:

volatility -f <文件名> ---profile=<配置文件> <插件> [插件参数]

通过volatility --info获取工具所支持的profile,Address Spaces,Scanner Checks,Plugins

常用插件:

imageinfo:显示目标镜像的摘要信息,知道镜像的操作系统后,就可以在 --profile 中带上对应的操作系统

pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以

psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程

pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程

mendump:提取出指定进程,常用foremost 来分离里面的文件

filescan:扫描所有的文件列表

hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容

svcscan:扫描 Windows 的服务

connscan:查看网络连接

内存取证的大概思路

首先确定镜像是何种操作系统的,命令imageinfo即可获取镜像信息。

需要获取的是计算机在这一时刻运行了哪些进程

Volatility的分析进程的命令,如pstree、pesscan、pslist......

filescan命令可以对打开的文件进行扫描。

命令dumpfile和memdump命令将相关数据导出,然后对导出的数据进行二进制分析。

熟悉Volatility工具的常用命令,结合其他类型的知识(图片隐写、压缩包分析等)对提取出的文件进行分析问题

例题:护网杯2018-MISC-easydump

来源:原题资源:https://pan.baidu.com/s/1z73M2MRr6W6AfM57lomF-w

提取码:1tf5

.img文件,也是一种内存镜像,我们用volatility

然后就是列出进程pslist

最显眼的还是这个notepad.exe了

然后dump下来2580.dmp,binwalk查看,信息太多,直接foremost分离文件,里面发现有用的就是两个压缩包,解压是img文件。

但是这个文件同样使用volatility去跑,确没有信息,所以判断这个不是内存镜像文件。

先strings看一下

将img文件挂载在linux系统中

mount -o loop message.img /root/Desktop/m0re

挂载后,可以切换到该目录进行查看信息

复制代码
cd m0re/
ls -all		

.Trash-0/file下看到一个.message.swp

转存一下

复制代码
cat .message.swp > m0re.txt
strings m0re.txt

hint.txt文件里面都是坐标,猜测是要画图

百度到的画图的python脚本

from PIL import Image

with open('hint.txt','r') as f:

points = f.readlines()

pic=Image.new('RGB',(600,600),'black')

pix=pic.load()

for i in points:

i=i.strip().split(' ')

pix[int(i[0]),int(i[1])]=(255,255,255)

pic.save('out.png','png')

得到二维码

识别后得到

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

百度发现是维吉尼亚密码,密钥是aeolus

但是我们从前面得到了字符串,拿来试试

维吉尼亚密码在线解密

维吉尼亚密码在线加密解密 - 千千秀字

维吉尼亚密码有点类似凯撒密码,都是通过位移量来确定。

相关推荐
taxunjishu24 分钟前
ProfiNet 转 Ethernet/IP基于西门子 S7 - 1500 与罗克韦尔 PLC 的汽车零部件加工线协同案例
运维·人工智能·物联网·自动化·区块链
用户516816614584132 分钟前
[VMware 无法检测此光盘中映像中的操作系统] VMware创建虚拟机无法检测操作系统iso镜像文件
linux·前端
MacroZheng33 分钟前
斩获 7.8K star!一款堪称开源监控新标杆的项目,牛皮!
java·linux·后端
YC运维1 小时前
Ansible模块
java·服务器·前端
博语小屋1 小时前
程序(进程)地址空间(1)
linux
yunyi1 小时前
使用acme.sh来实现自动化申请和续订TLS证书
linux·nginx·docker
包达叔1 小时前
docker国内镜像源
运维·docker·容器
未来可期LJ2 小时前
【Linux 小实战】自定义 Shell 的编写
linux·服务器
wanhengidc2 小时前
云手机的未来发展怎么样?
运维·安全·游戏·智能手机
_君落羽_2 小时前
Linux操作系统——TCP服务端并发模型
linux·服务器·c++