内存取证是什么?
内存镜像就是本机的内存,把它存储在介质里面。
什么时候需要:比武,bitlocker密钥分析,微信密钥,恶意软件分析。
制作内存镜像:FTK(mem格式),弘连刀锋现场快区,Dumplit
分析内存镜像:volaitlity,有2,3两个版本,美亚,弘连小工具,axiom
制作时间注意,一个是utc时间,一个是本地时间。
分享一下我自己的命令
快速一把唆:
首先写 volatility.exe -f
把内存拖入+imageinfo
之后要把imageinfo删掉
--profile +主机名+命令
常见命令
1:cmdscan 列出历史cmd命令
2:filescan 扫描文件,可以在命令最后加> 1.cvs,然后导入到Excel里面,用ctrl+f搜索也可以windowsFINDSTR
3:pslist 列举进程,从而得到PID ,PID意思是进程ID,和PPID ,PPId意思是父进程ID,和启动时间
pstree和其作用相似,也是识别子父进程的
4:psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
5:connections命令列出活跃的连接和端口,以及本地和远程的ip、PID、端口等
6:hivelist 列举注册表信息,也可以看到很多东西的地址
7:iehistory获取浏览器浏览历史
8:cmdline查看cmd命令使用详情
9:svcscan查看开启的windows服务
svcscan | findstr 什么东西(但是找到了第一个就会停止)
10:dlllist,可以看到每个进程(程序)运行所需要的所有动态链接库
11:printkey -K “SAM\Domains\Account\Users\Names”可以列出SAM表的用户
12:printkey -K “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”获取最后登录系统的用户
13:userassist获取内存中正运行的程序
14:timeliner列举时间线
15:volatility.exe -f 内存镜像.dd --profile=WinXPSP2x86 hashdump -y (注册表 system 的 virtual 地址 )-s(SAM 的 virtual 地址)
该命令能从内存中获得密码hash
但同样我们需要先知道SAM和system的地址
sam表和system表的地址可以根据前面hivelist列出
16:netscan网络链接状况,ip地址
17:modules内核驱动modscan和driverscan可以用来看隐藏的东西
18:getsids查看SID
19:hashdump爆密码
20:dlllist -p进程号 完整路径 显示插件 和调用什么东西
21:mftparser |findstr xlsx可以查找指定文件,感觉比filescan指定性强
同时也可以查看文件访问情况,mftparser看到所有文件访问情况
22:shellbags可以查看文件访问情况,并且能给出地址,之后可以搜
23:mftparser查看文件被访问的相关信息
24:dumpregistry --dump-dir=D:\临时\ 命令的意思导出注册表,然后放到这个目录下。
25:procdump 可视化界面,可以找到内存原来运行过的进程相关信息,比如运行过软件的版本号。
26:-p 端口号 handles -t file 找到某端口调用文件 -p是指定进程 -t是显示的结果类型 file就是显示文件
27: ldrmodules -p 880 检测未链接的动态链接DLL
27:malfind -p 880 malfind:用于寻找可能注入到各种进程中的恶意软件.malfind 是查找隐藏和注入代码的插件命令
28:cmdline #列出所有命令行下运行的程序
29:joblinks #检索计划任务
接下来是vilotility3的学习,好像是win10系统2支持不了,3基于python环境,操作不一样一点。
如果是在windows里面运行
1:在python38里面打开,cmd(注意,一定是要python38文件夹里面)
2 :直接上代码
python.exe volatility3\vol.py -f D:\新建文件夹\memdump.mem windows.info(我要放里面的镜像)
3:然后后面要加上windows.info
针对如下信息,我做一个解释
NTBulidLab展现的是系统版本号,后面网上可以找到,搜索。
systemtime系统时间
1:info改成cmdline
2:pstree进程列表
3:dlllist动态进程库
4:hashdump爆密
5:registry.hivelist查询注册表相关信息
6:netscan.NetScan网络链接
7;svcscan服务器运行状态
8:envars查看环境状态
9:dumpfiles进程缓存文件
下面是我搜集的部分命令,可用于linux和mac,当然linux也可
常用命令:
layerwriter:列出内存镜像platform信息
linux.bash:从内存中恢复bash命令历史记录
linux.check_afinfo:验证网络协议的操作功能指针
linux.check_syscall:检查系统调用表中的挂钩
linux.elfs:列出所有进程的所有内存映射ELF文件
linux.lsmod:列出加载的内核模块
linux.lsof:列出所有进程的所有内存映射
linux.malfind:列出可能包含注入代码的进程内存范围
linux.proc:列出所有进程的所有内存映射
linux.pslist:列出linux内存映像中存在的进程
linux.pstree:列出进程树
mac.bash:从内存中恢复bash命令历史记录
mac.check_syscall:检查系统调用表中的挂钩
mac.check_sysctl:检查sysctl处理程序的挂钩
mac.check_trap_table:检查trap表中的挂钩
mac.ifconfig:列出网卡信息
mac.lsmod:列出加载的内核模块
mac.lsof:列出所有进程的所有内存映射
mac.malfind:列出可能包含注入代码的进程内存范围
mac.netstat:列出所有进程的所有网络连接
mac.psaux:恢复程序命令行参数
mac.pslist:列出linux内存映像中存在的进程
mac.pstree:列出进程树
mac.tasks:列出Mac内存映像中存在的进程
windows.info:显示正在分析的内存样本的OS和内核详细信息
windows.callbacks:列出内核回调和通知例程
windows.cmdline:列出进程命令行参数
windows.dlldump:将进程内存范围DLL转储
windows.dlllist:列出Windows内存映像中已加载的dll模块
windows.driverirp:在Windows内存映像中列出驱动程序的IRP
windows.driverscan:扫描Windows内存映像中存在的驱动程序
windows.filescan:扫描Windows内存映像中存在的文件对象
windows.handles:列出进程打开的句柄
windows.malfind:列出可能包含注入代码的进程内存范围
windows.moddump:转储内核模块
windows.modscan:扫描Windows内存映像中存在的模块
windows.mutantscan:扫描Windows内存映像中存在的互斥锁
windows.pslist:列出Windows内存映像中存在的进程
windows.psscan:扫描Windows内存映像中存在的进程
windows.pstree:列出进程树
windows.procdump:转储处理可执行映像
windows.registry.certificates:列出注册表中存储的证书
windows.registry.hivelist:列出内存映像中存在的注册表配置单元
windows.registry.hivescan:扫描Windows内存映像中存在的注册表配置单元
windows.registry.printkey:在配置单元或特定键值下列出注册表项
windows.registry.userassist:打印用户助手注册表项和信息
windows.ssdt:列出系统调用表
windows.strings:读取字符串命令的输出,并指示每个字符串属于哪个进程
windows.svcscan:扫描Windows服务
windows.symlinkscan:扫描Windows内存映像中存在的链接