CTF成长之路丨Windows取证常用工具介绍
2023-9-15 07:12:6 Author: 网络安全与取证研究(查看原文) 阅读量:39 收藏

《Windows取证常用工具介绍》是i春秋论坛签约作家「kawhi」表哥分享的技术文章,公众号旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。

kawhi

五年安全行业从业经验,星盟安全团队核心成员。目前从事红队攻防研究,擅长渗透测试和CTF比赛。曾获得:
第十四届全国大学生信息安全竞赛创新实践能力赛决赛三等奖
首届河南“鹤城杯”挑战赛决赛二等奖
第二届“羊城杯”网络安全大赛企业组二等奖

该文章首发在i春秋论坛,欢迎各位师傅完成专业爱好者认证,可第一时间获取最新技术资讯和实战技能分享

(识别二维码,快速完成认证)

随着网络安全威胁日益突出,网络攻击事件的取证分析变得愈发重要。尤其是近几年,取证已成为CTF杂项中的重要考点,网鼎杯、强网杯等国家级赛事中均出现了相关考题。
作者出于浓厚的兴趣,计划撰写取证的系列文章。本文主要是介绍Windows取证相关的常用工具,并结合网鼎杯、强网杯、祥云杯等重量级赛事的历年真题,详细解析工具取证过程。
本篇文章可以帮助CTFer更好地了解和运用取证工具,提高取证分析的能力无论是对Windows取证感兴趣的小伙伴,还是CTF爱好者,欢迎大家来围观。(本文篇幅较长,阅读时间大约20分钟。

磁盘取证

制作磁盘镜像

FTK Imager是电子数据取证必备的工具软件,它可以用来制作磁盘镜像,选择文件->创建磁盘镜像。

这里的物理驱动器选择的是整块硬盘,逻辑驱动器是选择其中一个分区,如C,D,E盘,然后选择好源驱动器:

Raw(dd)是指不压缩的原始镜像格式,做出来的镜像会和原始镜像一样大,E01则是压缩格式,接下来的证据项信息可以不填,然后选择镜像保存的位置和镜像文件名即可。

这里要注意的是默认镜像分片大小为1500MB,填写0则不分片。

然后在镜像校验设置把下面三个都勾选上,点击开始即可。

NTFS磁盘文件

NTFS(New Technology File System)是微软随Windows系统开发的一种文件格式,专门为网络和磁盘配额、文件加密等管理安全特性设计,NTFS包含若干用于定义和组织文件系统的文件,其中比较重要的元文件名有:

1.$MFT:描述卷上的所有文件,包括文件名、时间戳、流名称和数据流所在的簇的编号列表、索引、安全标识符,以及文件属性。

2.$LogFile:日志文件,包含文件系统更改的事务日志,以保护元数据的稳定性。

可以使用工具:NTFS Log Tracker 对其进行分析,如2021强网杯的EzTime把$MFT,$LogFile导入之后可以看到相关信息:

BitLocker磁盘加密

BitLocker驱动器加密通过加密Windows操作系统卷上存储的所有数据可以更好地保护计算机中的数据,Bitlocker的解锁方式主要有三种:TPM、PIN、恢复密钥:

1.TPM是在主板上的硬件芯片,可以存储各种证书密钥,不是所有电脑都有。

2.PIN是自己设置的一个解锁密码。

3.恢复密钥是一个最短48位的数字,可以被制作成密钥文件存储于U盘作为解密工具。

在题目中一般需要通过从内存中提取出恢复密钥,再解密磁盘提取出信息,比如[2021 强网杯]CipherMan,一开始是给了虚拟磁盘文件Secret和一个内存文件memory,首先通过分析内存文件memory获取到BitLocker的恢复密钥如下:

BitLocker : 221628-533357-667392-449185-516428-718443-190674-375100

用DiskGenius软件来进行BitLocker的解密,选择磁盘->打开虚拟磁盘文件,选择Secret文件:

填写恢复密码即可

成功解密

磁盘挂载和仿真

在Windows操作系统中,挂载是指给磁盘分区(包括被虚拟磁盘分区)分配一个盘符,仿真就是指通过这个挂载的盘符仿真出一个操作系统来,一般挂载仿真有两种方法,一种是用火眼取证软件可以一键仿真,另外一种是先把磁盘镜像挂载,再用vmware虚拟机进行仿真。但是前者软件获取难度较大,所以一般使用后面的方法。

挂载一般使用AccessData FTKImager进行挂载,这里使用祥云杯的层层取证作为演示:

点击文件->镜像加载,然后将Forensic_image文件进行导入,加载方法选择可写,然后点击转载即可。

挂载完成之后可以看到多出了一个盘。

挂载完成之后即可进行仿真,打开VMware Workstation在菜单中选择文件,选择新建虚拟机,接下来就是和平时创建虚拟机的步骤差不多,具体如下图:

这里要注意的是第9步的设备选择要和挂载的映射镜像相同,这里是PhysicalDrive1,然后启动虚拟机即可仿真成功。

内存取证

内存获取工具介绍

Dumpit

对Windows主机来说,可以使用Dumplt工具去dump内存中的信息,Dumpit是一款Windows内存镜像取证工具。利用它我们可以轻松地将一个系统的完整内存镜像下来,并用于后续的调查取证工作。

双击DumpIt.exe可执行程序,并在提示问题后面输入y,等待几分钟时间即可在当前目录下生成主机物理内存的副本,该副本文件是以*.raw为后缀的镜像文件,我们取证的对象就是这个内存镜像。

等待运行结束即可看到相同与内存大小的镜像文件。

FTK Imager

还可以使用FTK Imager来进行内存的抓取:

内存分析工具介绍

Volatility

Volatility是一款开源内存取证框架, 能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态,特点有:开源并通过Python编写,易于和基于python的主机防御框架集成,支持多平台:Windows,Mac,Linux全支持,可以通过插件来扩展Volatility的分析能力,因此易于扩展。

下载地址:https://www.volatilityfoundation.org/26

常见插件介绍

imageinfo:获取镜像信息

python vol.py -f 文件 imageinfo

可以在Suggested Profile处得到系统版本的信息,后续会调用对应版本的profile进行取证。

  • hashdump和mimikatz:获取用户密码

python vol.py -f 文件 --profile=版本 hashdump/mimikatz

mimikatz插件相较于hashdump会好用一些,但是其并不是Volatility默认的插件,需要把插件的Python文件放到volatility-master\volatility\plugins即可

  • pslist和psscan和pstree:查看进程信息

python vol.py -f 文件 --profile=版本 pslist/psscan/pstree

一般内存取证的第二步会使用pslist插件列出所有当前正在运行的进程,psscan会启发式搜索内存中的EPROCESS结构,因此会列出一些隐藏的进程,pstree则是以树的形式列出进程。

  • memdump和procdump:提取进程
python vol.py -f 文件 --profile=版本 memdump/procdump -p [PID] -D [dump 出的文件保存的目录]

memdump可以将进程在内存中的所有页存入一个文件中,procdump则可以获取进程的可执行文件,例如提取PID为820的DumpIt.exe进程。

接下来是查看可疑的进程,如notepad.exe(记事本),mspaint.exe(画图)有可能隐藏信息在里面,可以使用插件notepad查看或者导出进程进行查看,比如对820.dmp进程筛选关键字flag。

strings -e l ./820.dmp | grep flag

看到cmd.exe进程则可以使用cmdscan和cmdline插件查看获取cmd输入的内容,看到chrome.exe/firefox.exe/iexplorer.exe则考虑浏览器取证,可以使用iehistory插件查看浏览器浏览历史,看到keepass.exe/truecrypt.exe则是加密容器等。

  • filescan和dumpfiles和userassist

filescan会扫描内存中所有文件,并且可以使用grep命令进行筛选,比如要筛选txt后缀的文件。

python vol.py -f 文件 --profile=版本 filescan | grep 'txt'

dumpfiles则可以把内存中的文件导出

python vol.py -f 文件 --profile=版本 dumpfiles -Q 文件地址 --dump-dir=导出地址

还可以用userassist查找出包含系统或桌面执行文件的信息,如名称、路径、执行次数、最后一次执行时间等。

其他一些插件

  • clipboard:查看剪切板中的数据,editbox:查看记事本内容
python vol.py -f 文件 --profile=版本 clipboard/editbox
  • screenshot:获取屏幕截图

python vol.py -f 文件 --profile=版本 screenshot --dump-dir=导出地址
  • netscan:查看网络连接情况

python vol.py -f 文件 --profile=系统版本 netscan

注册表系列

hivelist:列出内存中的注册表信息
python vol.py -f 文件 --profile=版本 hivelist

hivedump:导出注册表

python vol.py -f 文件 --profile=版本 hivedump -o 注册表virtual地址

一般查找出注册表后还可以配合hashdump查找密码

python vol.py -f 文件 --profile=版本 hashdump -y (system的virtual地址) -s (SAM的virtual地址)

printkey:打印注册表项及其子项和值,常用到的有以下两个:

获取SAM表中的用户

python vol.py -f 文件 --profile=版本 printkey -K "SAM\Domains\Account\Users\Names"

获取最后登录系统的账户

python vol.py -f 文件 --profile=版本 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

dumpregistry:提取内存中的注册表文件

python vol.py -f 文件 --profile=版本 dumpregistry -D 导出地址

对于导出来的注册表文件,我们可以用WRR软件或者Registry Explorer对其进行分析,下图是WRR:

取证大师

取证大师是一款提供给基层执法人员使用的电子数据取证分析软件,我们可以通过这款软件来将通话录音、照片、录像等电子文件保存下来,作为取证时进行使用,作为一款国产的综合类取证工具,在CTF取证中也是十分好用的。

首先点击新建案例,添加镜像文件之后下一步就可以自动取证了。

在取证完成之后即可显示取证的结果,并且在证据文件处可以对文件进行搜索,比如搜索txt后缀结尾文件:

Magnet AXIOM

Magnet AXIOM是一款功能强大的一体化数字调查取证解决方案,可以快速的从各种智能手机、云服务、计算机、IoT设备和第三方图像等资源中恢复数据,并以最直观最容易接受的方式来将这些证据呈现出来,类似于国内的取证大师,在安装完成后有Magnet AXIOM process 和Magnet AXIOM Examine两个软件。

先打开Magnet AXIOM process选择案件详情选择取证文件保存的位置->证据来源->计算机-> Windows ->加载证据->镜像,然后等待分析证据,在分析完成后Magnet AXIOM Examine会弹出并呈现出分析结果。

加解密工具介绍

Passware Kit Forensic

Passware Kit Enterprise是国外的一款功能强大的万能密码恢复工具合集,在该合集中包含了各种密码恢复功能,在取证中常用来寻找密码,如果有内存文件,可以直接点击Memory Analysis。

选择Windows的速度会快一些,然后点击next即可。

以祥云杯的层层取证为例,这样很快就跑出来密码,这个功能差不多相当于mimikatz。

Passware Kit还可以用来解密BitLocker,选择Browser for file进行导入镜像文件。

其中Disk partition 磁盘分区选择Bitlocker Volume,physical memory image file物理内存镜像文件选择memdump.mem,然后点击DECRYPTA即可。

点击decryt即可完成解密

KeePass

KeePass是一款免费的开源密码管理器,KeePass将密码存储为一个数据库,而这个数据库由一个主密码或密码文件锁住,也就是说我们只需要记住一个主密码,或使用一个密码文件,就可以解开这个数据库。

一般来说KeePass的数据库格式是用kdbx后缀结尾的,通常从内存中提取到KeePass的密钥对其进行解密,比如网鼎杯的密码柜题,先用KeePass打开kdbx后缀的文件,然后使用内存中提取的密钥6s4mxkhvge解密即可看到密钥的信息,右键点击Edit Entry即可查看详情:

导出文件可点击Tools->Options->Advanced,勾选Extra-safe file transactions,然后右键Save Attached Files(s) To即可支持导出文件。

EFDD

Elcomsoft Forensic Disk Decryptor是一款非常实用的磁盘密码解密与恢复工具,用于访问加密卷,程序提供了所有可用方法,可以访问存储在加密的PGP、TrueCrypt、eraCrypt等等磁盘和卷中的信息。

这里以网鼎杯的密码柜为例解开BitLocker的密钥,首先点击Extract keys,选择内存文件memeories.vmem,会解密出一个key,然后点下一步保存为1.evk,点击Decrypt or mount disk选择挂载好的磁盘,再导入1.evk即可。

最后可以解密出密钥,EDFF还可以对TrueCrypt进行破解,如V&N比赛中的一道内存取证,就是先把TrueCrypt.exe进程Dump出来的文件,然后对磁盘文件进行解密。

VeraCrypt

VeraCrypt是一款免费开源跨平台的实时磁盘文件加密工具,支持硬盘、U盘、移动硬盘等所有磁盘的分区加密,也可以加密整个硬盘,允许用户可自行选择喜欢的加密算法,并且能直接创建新的加密分区,软件还有便携版,允许我们在U盘等直接使用。

硬盘的加密VeraCrypt是通过创建虚拟盘的方式来创建加密空间的,我们可以先创建一个文本文档,如veracrypt.txt,然后点击创建加密卷。

第五步设置的空间加密卷越大,则配置的时间越长,如果要存储4G以上的文件,加密卷格式要选择NTFS,输入密码然后点击格式化即可成功创建加密空间。

然后选择刚刚创建好的veracrypt.txt,选择一个盘符输入密码后进行挂载。

这样加密空间就成功访问,注意创建的veracrypt.txt不要删除,否则加密空间的文件会一起被移除,因为其有挂载功能,所以CTF中解题过程中有时也用veracrypt对卷进行挂载。

综上是我根据自己的实战经验,为大家汇总的Windows取证相关的常用工具,希望可以为对Windows取证感兴趣的朋友或者是CTF选手提供一个指导。

说在最后

很多新入门CTF的小伙伴总问我有没有比赛技巧、如何快速提升技能、如何在比赛中获得好的成绩......

在这里,我有一些建议分享给大家

1.理论知识要与实践相结合。大家要多尝试使用CTF实验环境或者实际场景进行实战练习,从中积累经验和技巧。

2.及时跟踪行业的最新动态,关注专业博客、论坛和社交媒体,了解最新的前沿技术和趋势。从我个人来说,推荐大家来i春秋论坛,第一次投稿至今已有3年,i春秋论坛汇集了众多技术高超的作家,他们的文章让我受益匪浅,我可以从中学习到许多有深度的知识。

同时,还有幸结识了村长、彪哥这样的朋友,与他们的交流分享更是让我获益良多,这个经历让我深感幸运和满足。所以我也会尽绵薄之力,把自己所学、所悟分享给小伙伴,大家一起探讨,共同进步。

最后,文章内容如有异议,欢迎各位大佬批评指正。


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg3NTU3NTY0Nw==&mid=2247487945&idx=1&sn=55b6b6d87b56a83c84bee4192e90411b&chksm=cf3e31f9f849b8ef49c960d7147ad1f7ea3843e65bd41ab0e3a2e1094d0d75ef7bfde2257e65&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh