Σ(゚∀゚ノ)ノ✓参见龙王

内存取证入门总结(Volatility取证)

一. 命令合集

 

1. WINDOWS系统

猜测镜像系统

volatility -f Memory.vmem imageinfo

调出shell窗口

volatility -f Memory.vmem --profile=Win81U1x86 volshell

shell的命令:

dt(“内核关键数据结构名称”)

如:

dt("_PEB")

列举进程

volatility -f Memory.vmem --profile=WinXPSP2x86 pslist

可以看到PID、PPID、启动的时间。

另一个相似的命令是pstree,与pslist差不多,但可以识别子进程以及父进程。

psscan命令可以显示出被隐藏的进程,比如一些隐藏自己的病毒。

最后还有dlllist,可以看到每个进程(程序),运行所需要的所有动态链接库。

将内存中的某个进程保存出来

以dmp格式保存

volatility -f Memory.vmem --profile=WinXPSP2x86 memdump -p [PID] -D [dump 出的文件保存的目录]

其中memdump可以换成procdump,就可以提取出进程

同时支持输入 --offset 地址 的方式来提取一些无法从pid提的进程

列举缓存在内存的注册表

volatility -f Memory.vmem --profile=Win81U1x86 hivelist

导出注册表
volatility -f Memory.vmem --profile=Win81U1x86 hivedump -o 注册表的 virtual 地址

列出SAM表中的用户

volatility -f Memory.vmem --profile=Win81U1x86 printkey -K “SAM\Domains\Account\Users\Names”

获取最后登录系统的用户

volatility -f Memory.vmem --profile=Win81U1x86 printkey -K “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”

获取内存中正运行的程序

volatility -f Memory.vmem --profile=Win81U1x86 userassist

列举时间线

volatility -f Memory.vmem --profile=Win81U1x86 timeliner

查看开启的windows服务

volatility.exe -f Memory.vmem --profile=WinXPSP2x86 svcscan

从内存中获取密码哈希

volatility.exe -f Memory.vmem --profile=WinXPSP2x86 hashdump -y (注册表 system 的 virtual 地址 )-s(SAM 的 virtual 地址)
该命令能从内存中获得密码hash
但同样我们需要先知道SAM和system的地址
sam表和system表的地址可以根据前面hivelist列出

扫描电脑中的文件

volatility.exe -f Memory.vmem --profile=WinXPSP2x86 filescan

导出列举的文件

volatility.exe -f Memory.vmem --profile=WinXPSP2x86 dumpfiles -Q 地址 –D 路径

提取 cmd 命令使用情况

volatility -f Memory.vmem --profile=WinXPSP2x86 cmdscan

如果需要看详细情况,输入cmdline

获取到当时的网络连接情况

volatility -f Memory.vmem --profile=WinXPSP2x86 netscan

(xp系统不支持netscan)

查看内核驱动

volatility -f Memory.vmem --profile=WinXPSP2x86 modules

隐藏的用modscan或者driverscan

获取 IE 浏览器的使用情况

volatility -f Memory.vmem --profile=WinXPSP2x86 iehistory

如果没有显示说明没有记录

查看屏幕截图

volatility -f Memory.vmem --profile=WinXPSP2x86 screenshot --dump-dir=路径

 

2. Linux系统

常用命令翻译

linux_apihooks             - 检查用户名apihooks
linux_arp                  - 打印ARP表
linux_aslr_shift           - 自动检测Linux aslr改变
linux_banner               - 打印Linux Banner信息
linux_bash                 - 从bash进程内存中恢复bash历史记录
linux_bash_env             - 恢复一个进程的动态环境变量
linux_bash_hash            - 从bash进程内存中恢复bash哈希表
linux_check_afinfo         - 验证网络协议的操作函数指针
linux_check_creds          - 检查是否有任何进程正在共享凭证结构
linux_check_evt_arm        - 检查异常向量表以查找系统调用表钩子
linux_check_fop            - 检查rootkit修改的文件操作结构
linux_check_idt            - 检查IDT是否被更改
linux_check_inline_kernel  - 检查内联内核挂钩
linux_check_modules        - 将模块列表与sysfs信息进行比较
linux_check_syscall        - 检查系统调用表是否已被更改
linux_check_tty            - 检查tty的钩子
linux_cpuinfo              - 打印有关每个活动处理器的信息
linux_dentry_cache         - 从dentry缓存收集文件
linux_dmesg                - 收集dmesg buffer
linux_dump_map             - 将选定的内存映射写入到磁盘
linux_dynamic_env          - 恢复进程的动态环境变量
linux_elfs                 - 在进程映射中找ELF二进制文件
linux_enumerate_files      - 列出文件系统缓存引用的文件
linux_find_file            - 列出并从内存中恢复文件
linux_getcwd               - 列出每个进程的当前工作目录
linux_hidden_modules       - Carves内存寻找隐藏的内核模块
linux_ifconfig             - 收集活动接口
linux_info_regs            - GDB中的“info寄存器”。它打印出所有的输出
linux_iomem                - 提供与/proc/iomem相似的输出
linux_kernel_opened_files  - 列出从内核中打开的文件
linux_keyboard_notifiers   - 解析键盘通知调用链
linux_ldrmodules           - 将proc映射的输出与libdl中的库列表进行比较
linux_library_list         - 将库加载到一个进程中
linux_librarydump          - 将进程内存中的共享库转储到磁盘
linux_list_raw             - 列出应用程序与混杂的套接字
linux_lsmod                - 收集加载内核模块
linux_lsof                 - 列出文件描述符及其路径
linux_malfind              - 查找可疑的过程映射
linux_memmap               - 转储用于linux任务的内存映射
linux_moddump              - 提取加载内核模块
linux_mount                - 收集挂载的fs/devices 
linux_mount_cache          - 收集从kmem_cache安装的fs/设备。
linux_netfilter            - 列出Netfilter钩子
linux_netscan              - 刻画网络连接结构
linux_netstat              - 列表打开的套接字
linux_pidhashtable         - 通过PID哈希表枚举进程
linux_pkt_queues           - 将每个进程的数据包队列写入磁盘
linux_plthook              - 扫描ELF二进制文件' PLT hooks
linux_proc_maps            - 收集进程内存映射
linux_proc_maps_rb         - 通过映射红黑树收集linux的进程映射
linux_procdump             - 将进程的可执行映像转储到磁盘
linux_process_hollow       - 检查是否有进程被挖空的迹象
linux_psaux                - 收集进程和完整的命令行和开始时间
linux_psenv                - 收集进程及其静态环境变量
linux_pslist               - 收集活动任务通过task_struct->task list
linux_pslist_cache         - 从kmem_cache中收集计划任务
linux_psscan               - 扫描进程的物理内存
linux_pstree               - 显示进程之间的父/子关系
linux_psxview              - 查找隐藏进程与各种各样的进程列表
linux_recover_filesystem   - 从内存中恢复整个缓存的文件系统
linux_route_cache          - 从内存中恢复路由缓存
linux_sk_buff_cache        - 从sk_buff kmem_cache中恢复数据包
linux_slabinfo             - 在一台正在运行的机器上模拟/proc/slabinfo。
linux_strings              - 将物理偏移量匹配到虚拟地址(可能需要一段时间,非常详细)
linux_threads              - 打印进程的线程
linux_tmpfs                - 从内存中恢复tmpfs文件系统。
linux_truecrypt_passphrase - 恢复缓存Truecrypt口令
linux_vma_cache            - 从vm_area_struct 缓存中收集VMAs
linux_volshell             - 内存映像中的shell 
linux_yarascan             - Linux内存映像中的一个shell

二. 使用实例

太湖杯2020

volatility 一把梭,filescan 搜 png 然后 dumpfiles 下载下来,得到flag

退出移动版