首页 > 系统相关 >内存取证volatility工具命令详解

内存取证volatility工具命令详解

时间:2023-12-02 15:56:44浏览次数:34  
标签:profile worldskills3 Win7SP1x64 -- vmem 详解 内存 volatility

一、环境安装

1.kali下安装Volatility2

注意:一般Volatility2比Volatility3好用 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python2 get-pip.py python2 -m pip install Crypto python2 -m pip install pycryptodome python2 -m pip install pytz python2 -m pip install Pillow  #PIL图形处理库 apt-get install pcregrep python2-dev #插件安装依赖库 python2 -m pip install distorm3  #反编译库 python2 -m pip install openpyxl  #读写excel文件 python2 -m pip install ujson #JSON解析 python2 -m pip  uninstall  yara  #恶意软件分类工具 python2 -m pip install  pycrypto  #加密工具集 python2 -m pip install construct  #mimikatz依赖库   # 在 https://github.com/virustotal/yara/releases 下载 YARA 压缩包 tar -zxf yara-4.4.0.tar.gz cd yara-4.4.0 sudo apt-get install automake libtool make gcc pkg-config sudo apt-get install flex bison libssl-dev ./bootstrap.sh ./configure make sudo make install sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf' sudo ldconfig yara  -h   git  https://github.com/volatilityfoundation/volatility.git cd   volatility python2 setup.py install  

2.windows下安装

https://www.volatilityfoundation.org/releases  

二、常用命令使用

1. 查看内存镜像系统信息 volatility.exe   -f  worldskills3.vmem    imageinfo 2.查看当前内存镜像注册表中用户名 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   printkey   -K  "SAM\Domains\Account\Users\Names" 3.使用hashdump命令获取sam hash值 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  hashdump 4.使用lasdump命令查看密码明文 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64    lsadump 5.查看网络连接状态信息 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   netscan
同时也可以查看到当前系统中存在挖矿进程,获取指向的矿池地址 6.查看当前系统主机名
主机名通过注册表查询,需先用hivelist(也可以查看内存镜像中的虚拟地址)查询 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  hivelist
查看键名

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   -o   0xfffff8a000024010   printkey

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   -o   0xfffff8a000024010   printkey  -K  "ControlSet001" volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   -o   0xfffff8a000024010   printkey  -K    "ControlSet001\Control " volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   -o   0xfffff8a000024010   printkey  -K "ControlSet001\Control\ComputerName" volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   -o   0xfffff8a000024010   printkey  -K "ControlSet001\Control\ComputerName\ComputerName"

也可以直接通过 hivedump查询相应的键名, 但是查询非常费时间

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  hivedump -o 0xfffff8a000024010 > system.txt 7.获取当前系统IE浏览器存储的信息 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  iehistory   8.查询系统服务名称 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   svcscan 9.从内存文件中找到异常程序植入到系统的开机自启痕迹 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  shimcache 10.查看父进程与子进程 注意:在进程中PPID比PID大,那就可能这个进程有异常程序 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  pstree
11.查看程序版本信息 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  verinfo   12.通过 pslist命令查询进程 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  pslist 注意:可列举出系统进程,但它不能检测到隐藏或者解链的进程
也能进一步查到子进程的信息
volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   pslist -p 2588

13.查看隐藏或解链的进程 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  psscan 或者
volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   psxview
注意:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程 14.显示cmd历史命令记录 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   cmdscan
或者 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64 consoles  #能看到指令的输入和输出   15.查看进程命令行参数 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  cmdline
16.扫描内存系统中的所有文件列表 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  filescan 在linux系统中可使用filescan命令参数配合gerp命令进行搜索关键字 python2 vol.py    -f  worldskills3.vmem     --profile=Win7SP1x64      filescan |grep "flag" python2 vol.py    -f  worldskills3.vmem     --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif' 搜索图片或者text python2 vol.py    -f  worldskills3.vmem     --profile=Win7SP1x64         filescan |grep -E 'txt' python2 vol.py    -f  worldskills3.vmem     --profile=Win7SP1x64         filescan |grep -E 'jpg' 导出flag.txt文件 python2 vol.py    -f  worldskills3.vmem     --profile=Win7SP1x64     dumpfiles -Q  0x000000007f1b6c10  -D ./ dump 出来的进程文件,建议使用 foremost 来分离里面的文件
17.查看文件内容(需要 filescan配合命令查询)

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   dumpfiles -Q 0xxxxxxxx -D ./

注意:需要指定偏移量 -Q 和输出目录 -D,dumpfiles:导出某一文件,指定虚拟地址

18.查看当前展示的notepad内容(win7不支持该命令)

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  notepad 19.显示有关编辑控件(曾经编辑过的内容)的信息

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  editbox

   20.提取进程内容(需要pslist命令配合查询使用)

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   memdump -p 2588   --dump-dir=./

注意:memdump:提取出指定进程,常用foremost 来分离里面的文件  ,需要指定进程-p [pid] 和输出目录 -D

提取出来的直接用strings是无法查看,需要添加-e参数

strings -e l 2626.dmp | grep flag

 

21.屏幕截图

python2 vol.py    -f  worldskills3.vmem     --profile=Win7SP1x64  screenshot --dump-dir=./

注意:需要安装PIL库,建议linux下运行

22.查看运行程序相关记录,比如最后一次更新时间,运行过的次数等

提取出内存中记录的,当时正在运行的程序有哪些,运行过多少次,最后一次运行的时间等信息

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  userassist

23.最大程度上将内存中的信息提取出来

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  timeliner

注意:将所有操作系统事件以时间线的方式展开

24.查看剪贴板信息

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   clipboard

25.显示关于计算机及其操作系统的详细配置信息(需要安装插件)

volatility -f 1.vmem --profile=Win7SP1x64 systeminfo26.查看访问时间

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  mftparser

27.查看环境变量

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64    envars 

volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   envars | grep "Password"

28.列出某一进程加载的所有dll文件 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64 dlllist  volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   dlllist -p 2588 29.获取最后登录系统的账户 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64   printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"30.显示进程权限 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  privs31.导出注册表 volatility.exe   -f  worldskills3.vmem     --profile=Win7SP1x64  dumpregistry --dump-dir=./ 32.获取明文密码,直接爆破出用户密码(linxu) python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x64  mimikatz 33.查看SID python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x64  getsids  34.获取TrueCrypt密码信息 python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x64  truecryptpassphrase 35.获取TrueCrypt秘钥信息 python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x64   truecryptmaster  36.解析MFT记录、导出MFT记录 python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x64   mftparser python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x64   mftparser  --output-file=mftverbose.txt -D  ./ 37.寻找可能注入到各种进程中的恶意软件 python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x6   malfind 38.usb连接信息 python2 vol.py   -f  worldskills3.vmem     --profile=Win7SP1x64    usbstor

三、插件安装

下载地址: https://github.com/ruokeqx/tool-for-CTF/tree/master/volatility_plugins https://github.com/superponible/volatility-plugins 下载之后,将 .py 插件放进volatility 的 plugins 文件夹目录下(/volatility-master/volatility/plugins)
  • lastpass.py Chrome 记录的登录密码
  • usbstor.py 扫描注册表查找插入系统的 USB 设备
  • chromehistory.py 谷歌浏览器历史记录
  • firefoxhistory.py 火狐浏览器历史记录
  • system_info.py  systeminfo
  • sqlite_help.py 上面两个插件的必须文

四、CTF中内存取证题目类型

 

类型1:隐藏图片
1.查看可疑进程(pslist)
2 导出进程文件
3.使用查看文件内容,确认文件类型(file *.dmp)
4.一般图片文件使用foremost 分离 ( foremost *.dmg)
5.如果分离出来是镜像文件.img损坏(testdisk *.img进行修复)

类型2:剪切板
1.搜索关于flag的文件(filescan | grep flag)
2.搜索IE浏览器历史记录,查看访问了什么网站(iehistory | grep 'https://')
3.查看编辑器中有什么,和文档有关的取证(editbox或者notepad)
4.查看剪切板复制中有什么记录,mspaint对应进程的内容(memdump -p PID值 --dump-dir=./)

类型3:TrueCrypt加密
1.导出TrueCrypt对应进程的内容(memdump -p PID值 --dump-dir=./)
2.使用Elcomsoft Forensic Disk Decryptor对导出的进程进行还原内容
3.用VeraCrypt挂载查看还原的内容

类型4:传输压缩包
1.查看使用过得命令(cmdscan)
2.搜索关键字(filescan | grep 'P@ss')
4.dump出压缩包内存文件(dumpfiles -Q 0x0000000002c61318 -D ./)

类型5:用户密码
1.hashdump导出密码hash值
2.使用jone或者在线工具对其进行NTML值破解
https://crackstation.net/
3.或者使用mimikatz插件进行明文读取用户的密码

类型6:IE浏览器中保存的文件
1.获取IE浏览器历史记录(iehistoy)
2.过滤IE浏览器中的关键字(iehistory | grep jpg或者hint)
3.dump出对应的jpg和hint内存文件(dumpfiles -Q 0x0000000002c61318 -D ./)

类型7:查看主机名和IP
1.主机名(systeminfo插件或者注册表查找对应的键名)
2.ip(netscan)

类型8:剪切板内容
1.获取剪切板内容(clipboard插件)

类型9:隐藏了flag
1.搜索flag.txt文件(filescan | grep flag)
2.导出flag.txt内存文件(dumpfiles -Q 0x0000000002c61318 -D ./)

类型10:隐藏的加密的AES
1.查看可疑程序进程(查看ppid和pid值对比以及时间不一样可判断出可疑进程也还可以用chatget来判断)
2.查找曾经使用过的命令(cmdscan)
3.分别导出子进程和父进程的内存内容分析(memdump -p PID值 --dump-dir=./)
4.找到KEY和IE值,是AES加密

类型11:encryto加密
1.查看可疑进程(pslist)
2.查看历史命令,.查看到加密的历史文件(cmdscan)
3.导出加密的历史可疑文件(dumpfiles -Q 0x000000003e435890 --dump-dir=./**)
4.使用encryto进行解密

类型12:匿名用户登录
1.查看可疑进程,这里是注册表的进程有可疑(pslist)
2.dump出注册表的进程内容(memdump -p 804 --dump-dir=./)
3.查看DUMP出注册表内存关键字sam (strings -e l -d 804.dmp|grep "SAM" ),发现有可疑的用户名
4.检索注册表中的该用户 printkey -K "SAM\Domains\Account\Users\00000493"
5.hashdum出对应账号的用户名的密码(hashdump|grep "FHREhpe")


类型13:rootkiet.exe木马
1.查看可疑进程(pslist)
一般rootkit恶意程序与svchost进行捆绑并注入到svchost.exe中,需要进入安全电脑模式才能清理
2.-查找进程注入引用的文件(-p 880 handles -t file)
3进程在运行过程中被注入的DLL文件(ldrmodules -p 880 | grep -i false)
4.个注入的dll文件的内存地址(malfind -p 880)
dlldump -p 880 --base=0x980000 --dump-dir=.

 

volatility命令练习的内存镜像: 链接: https://pan.baidu.com/s/1LXSJ_RL9yotb8IKbzIQZ3g 提取码: syny        参考文章: https://blog.csdn.net/m0_68012373/article/details/129038773  

标签:profile,worldskills3,Win7SP1x64,--,vmem,详解,内存,volatility
From: https://www.cnblogs.com/backlion/p/17871701.html

相关文章

  • 微服务调用方式详解
    在微服务架构中,需要调用很多服务才能完成一项功能。服务之间如何互相调用就变成微服务架构中的一个关键问题。服务调用有两种方式,一种是RPC(RemoteProcedureCall)方式,另一种是事件驱动(Event-driven)方式,也就是发消息方式。消息方式是松耦合方式,比紧耦合的RPC方式要优越,但RPC方式如......
  • Java流Stream使用详解(中)
    一、Stream流的中间方法名称说明Stream<T> filter(Predicate<?superT> predicate)过滤Stream<T> limit(longmaxSize)获取前几个元素Stream<T> skip(longn)跳过前几个元素Stream<T> distinct()元素去重,依赖(hashCode和equals方法)static<T> Stream<T> concat(Stream......
  • OOM了?物理内存不够了?试试这个方法来提升内存容量,不花钱的
    通过增加虚拟内存来提高内存使用本文解决的实际问题:当我们物理内存小的时候,会出现OOM,然后服务自动死掉的情况。因为物理内存大小是固定的,有没有其他好的办法来解决呢?这里我们可以适当调整Linux的虚拟内存来协作。问题描述:最近遇到一个情况,物理内存不够,导致项目一两天就自动死掉了。......
  • PieCloudDB Database 自研内存管理器 ASanAlloc:为产品质量保驾护航
    内存管理是计算机科学中至关重要的一部分,它涉及到操作系统、硬件和软件应用之间的动态交互。有效的内存管理可以确保系统的稳定性和安全性,提高系统运行效率,帮助我们最大限度地利用有效的内存资源,合理分配和回收内存,预防各类内存错误。在计算机科学的早期,内存管理是由程序员手动完成......
  • Java之API详解之Biginteger类的详解
     6BigInteger类6.1引入平时在存储整数的时候,Java中默认是int类型,int类型有取值范围:-2147483648~2147483647。如果数字过大,我们可以使用long类型,但是如果long类型也表示不下怎么办呢?就需要用到BigInteger,可以理解为:大的整数。有多大呢?理论上最大到42亿的21亿次方基本上在内存撑......
  • 后台管理系统浏览器内存占用过高,怎么排查?
    高内存占用可能是多种因素导致的,以下是一些可能的排查步骤:检查浏览器扩展和插件:不必要的扩展和插件可能会消耗大量内存。禁用或删除不需要的扩展,并观察内存使用情况是否有所改善。关闭多余的标签和页面:打开过多的标签和页面会增加内存负担。关闭不需要的标签和页面,尤其是那些包含大......
  • INFINI Labs 产品更新 | 修复 Easysearch 跨集群复制索引同步问题,Gateway 内存异常增
    INFINILabs产品又更新啦~,本次更新主要对Easysearch、Gateway、Console、Agent等产品功能进行优化和相关Bug修复,解决了内存异常增长等问题,以下是详细说明。INFINIEasysearchv1.6.2INFINIEasysearch是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的ApacheLucene......
  • Java集合框架详解
    Java集合框架是什么?Java中的集合框架指的是一组接口、类和算法,用于存储和操作一组对象。这些对象可以是基本类型、自定义类型或其他Java对象集合框架提供了更加高效、灵活和功能丰富的数据结构,而不限于数组或其他简单的数据结构。通过使用Java的集合框架,可以大大提高代码的可......
  • Java设计模式-策略模式详解
    1.策略模式基本了解策略模式(StrategyPattern)是一种行为型设计模式,它定义了一组可以相互替换的算法,使得客户端可以根据不同的需求选择不同的算法,将对象和行为分开。在策略模式中,我们创建了一个策略接口,该接口定义了所有必需的方法。然后,我们创建了实现了该策略接口的具体策略......
  • 【STM32F103】HC-SR04超声波测距模块详解(附工程文件)
    前言:使用的硬件:STM32F103C8T6,HC-SR04,ST-Link(其他烧录器也可以),0.96寸OLED屏幕(非必须,仅供显示测距结果,可以使用串口助手代替),若干杜邦线。涉及操作stm32的GPIO口,外部中断,定时器,本文中不会详细解释,仅提供代码思路。HC-SR04:HC-SR04超声波测距模块提供2cm~400cm的测距功能,精度达3mm。......