前言:比赛看了取证类的主题,但因为不知道,很尴尬。 因为没有完成比赛的问题,没有任何想法,所以看了师傅们的wp之后再再现。 然后在CTF平台上寻找取证类的主题,试着学习了一下。
了解知识取证方法进行取证
-获取文件元数据、创建时间线、命令历史记录、分析日志文件、哈希摘要和导出内存信息
使用未感染的清洁程序执行取证
u盘/网络存储中收集的数据取证
-关闭电源后,创建硬盘镜像、分析镜像(MBR、GPT、LVM )取证工具。 我现在正在学习如何使用kali的部分取证工具。
内存dump工具
内存文件接近或稍大,为raw格式。 使用取证工具volatility :
分析内存文件
volatility imageinfo -f xp.raw#文件信息,profilevolatilityhivelist-fxp.raw-- profile=winx PSP 3x 86 # 数据库文件volatility-fxp.raw-- profile=win XP SP3 x86 hive dump按虚拟机内存地址显示注册表内容volatility-fxp.raw-- profile account_ser Names'#用户帐户volatility-fxp.raw-- profile=win XP SP3 x86 printkey-k ' softwareMicrosoft wwer currentversiont Winlogin'#上次登录的用户volatility-fxp.raw-- profile=win XP SP3 x86 user assist #正在运行的程序,运行了多少次,或不附带volatility
可以立即安装apt-get安装卷。 百度也可以找到很多教程。 不说详细情况。
然后用几个问题来测试一下吧。
福克斯来自BUUCTF的主题。
下载后是512MB的raw文件,直接用工具分析
这有三个。 一般是第一个。 换言之,第一步必须首先检测该文件是在什么系统上生成的,然后的命令操作需要profile,必须指定OS。 所以这很重要。
在小故事中使用道具时遇到了这种情况,
错误信息: no suggestion (instantiatedwithnoprofile ) )。
这其实和工具没有关系。 为什么这么说,是因为打开的文件不是符合规则的文件。 也就是说,该文件不是原始文件,因此没有suggest。 昨天我一直觉得是我的工具问题,所以赶了半天,其实打开的文件不是volatility能分析的文件。
OK,插曲就要结束了。
继续解决问题……
查看进程
volatility-fmem.raw-- profile=win7SP1 x 86 _ 23418 pslist
请注意这四个过程
Dumpit.exe内存镜像提取工具。
TrueCrypt.exe磁盘加密工具。
Notepad.exe windows附带的记事本。
Mspaint.exe windows附带绘画工具。
查看用户主目录中的文件,可以看到有用户保存的图像文件
volatility-fmem.raw-- profile=win7SP1 x86 files can|grep-vtemporary|grep-v.dll|grep-e ' png|zif
我发现图片里有张没有标题的照片
可以对这个图像进行dump
volatility-fmem.raw---profile=win7SP1 x86 dumpfiles-q0x 0000001 ef b29 f8--- dump-dir=./在当前工作目录中查看此文件我在桌面上。
查看桌面文件
volatility-fmem.raw-- profile=win7SP1 x86 files can|grep ' desktop '
该软件在桌面上运行,还有LETHALBE3A-20190916-135515.raw文件。 此文件由dumpit生成,位于dump下
但是,桌面上什么都没有意味着该文件还没有内容。 这意味着原始数据不存在,因为在取证过程中dumpit仍在运行。
然后,请尝试用dump进行dumpit的内存镜像。
volatility-fmem.raw-- profile=win7SP1 x86 mem dump-p 3380-d./
然后分析3380.d
mp文件。foremost分离得到一个包含flag.txt的一个文件。
找了好久发现在压缩包里
密码就是之前的那个无标题的图片内容。
1YxfCQ6goYBD6Q
未知题目
题目来源——https://www.freebuf.com/news/145262.html
同样的姿势,先查看操作系统的信息。使用imageinfo
发现是WinXPSP2x86
题目说在桌面写着什么,可能是记事本,不过不确定,可以pslist列一下。
看一遍,记事本才有可能写东西,所以直接列出notepad的内容
发现有一串编码。
符合base16编码的规则。所以进行解密得到第一个flag。
flag{W3lec0me_7o_For3n5ics}
第二个问题,sqddb的密码,
hashdump可以将内存中的NTML提取出来:
找个在线网站进行破解1e581aafa474dfadfdf83fc31e4fd4ea
破解得到flag{19950101}
果然一般都是生日当密码。
第三个
传送文件就需要连接外机,刚看到有nc,所以他一定是用nc来传输文件的,这样一来就有目标了。使用connscan插件查看
可以看到本地机器是192.168.57.21的1045端口去连接了远程的192.168.57.14的2333端口,进程号是120,知道进程号就可以使用psscan(进程池扫描插件)来获取信息。
看到了确实是nc,而且还有cmd,则说明是在cmd的命令行下使用的nc连接的外机。使用cmdscan插件来查看命令历史记录。
看到使用了命令
传输的文件是P@ssW0rd_is_y0ur_bir7hd4y.zip
可以使用memdump插件(转储进程的可寻址内存数据插件)导出使用nc发送的相关数据:
桌面生成一个120.dmp
跟上一题一样,foremost分离文件
有六个zip文件,挨个打开看看,输入密码19950101得到flag
到此,内存取证入门。下次再详细地学习活取证和死取证
参考博客
http://www.bubuko.com/infodetail-3418258.html
内存取证三项CTF赛题详解