文章目录
- 思维导图
- 计算机取证
- 数据固定
- FTK Image
- DumpIt
- 数据分析——磁盘镜像
- 仿真
- 软件自动仿真
- 手动仿真
- 仿真后的取证分析
- 基本信息及用户痕迹
- 1.名称、版本、build号、系统目录、位数、产品秘钥等
- 2.安装时间
- 3.最后一次关机时间
- 4.USB使用记录
- 5.WIFI信息
- 6.近期访问过的文档、程序
- 7.特定用户登录时启动(自启动)
- 8.powershell历史
- 9.系统时区
- 10.Windows Timeline
- 浏览器痕迹分析
- 1.火狐的默认配置文件夹
- 2.历史记录和下载记录
- 3.Cookie
- 4.搜索历史
- 5.最常访问的站点
- 6.扩展程序信息
- 其他浏览器
- 社交软件
- 1.QQ
- 2.微信(Wechat)
- 邮件
- 1.邮件头部
- 2.邮件正文
- 3.邮件附件
- 微屁恩软件
- 远程连接
- RDP
- ToDesk
- 加密容器
- 1.bitlocker
- 2.VC/TC
- 嵌套证据
- 数据恢复
- 内存镜像
- 工具
- volatility2
- volatility3
- 秘钥信息提取
- 计算机取证分析流程
思维导图
1.后续有修改只会在github博客修改,地址https://mumuzi.blog进入选择Forensic版块即可。
2.支持4c8g10m只要35/M的,1c1g20m香港9.9/M的DK盾服务器捏,地址dkdun.cn
计算机取证
主要是为取证比赛所写,因此有些部分是直接拿取证软件进行的讲解,文章的最后我会分享我平常做计算机取证的流程。
数据固定
FTK Image
FTK可以通过创建映像文件的方式,将数据固定在指定的文件夹中,并保存为如dd、E01、RAW等格式的镜像,其中E01支持压缩和分段存储。
DumpIt
DumpIt是一个内存转储的工具,内存是一种易失性存储介质,当关机或重启后,内存中的数据就会被清除。内存中包含许多关键数据可以恢复,例如:
活跃的进程和线程
加载的动态链接库(DLLs)
网络连接和会话信息
加密密钥
被加载但未保存到磁盘的文档
恶意软件的残留痕迹(rootkit、恶意软件等)
数据分析——磁盘镜像
仿真
仿真意味着将一个镜像加载到虚拟机(如vmware),以仿真原始计算机的运行状态,通过仿真可以从中了解与模拟操作,同时对于网站来说也可以通过仿真来还原原始网站,以便研究和确认各种操作活动。
对于平时的仿真,通常都是直接使用取证厂商的软件(例如美亚柏科的电子数据仿真取证系统、弘连的火眼仿真取证软件V4等)
软件自动仿真
以弘连为例,打开软件后添加镜像,选择该镜像(E01或dd等格式)后点击确定
弘连会尝试解出该用户的密码
同时需要注意的是,默认的高级设置如下
但需要注意的是,如果使用了重置用户密码,那么用户的秘钥、证书、密码管理等将会被清除或破坏,换句话来说,如果当前用户在chrome中保存了一对账号密码,在windows中使用了EFS对文件进行加密,在强制重置用户密码后,将会无法打开EFS文件以及在chrome中将不会显示已保存的密码。
手动仿真
上面讲述了如何使用取证厂商的软件来进行仿真,在没有以上取证厂商软件的情况下,也可以通过FTK Image进行仿真。以下是一种仿真某windows10计算机的过程,不同型号或版本的仿真过程不一定相同。
1.加载镜像
挂载的时候,必须选择可写选项
挂载好后结果如下
2.打开vmware,创建新的虚拟机->“自定义(高级)”->选择vmware版本->稍后安装操作系统->选择合适的操作系统一直往后选即可,但是请注意下面的注意事项。
注意1:在选择固件类型时选择UEFI(旧系统选择BIOS)
注意2:选择虚拟磁盘类型时选择SATA
注意3:选择磁盘时选择物理磁盘
然后选择FTK Image显示的驱动器号
仿真后的取证分析
通常windows的仿真都是选择不修改密码,进入之后就可以进行一定的取证分析了。
个人的做法是会传一个everything到仿真计算机当中,并按照大小进行排序,因为很有可能会有大的加密容器
仿真的好处有很多,例如可以很轻易的解决一下几个问题:
默认打开浏览器是?该文件(被EFS加密后)的文件内容是什么?chrome中保存了一个密码,请问密码是什么?请问该软件的版本号?
如果仿真之后,例如第一个问,只需要创建一个空的1.html
即可解决,答案为chrome
同时,使用everything也可以很容易发现关键数据,例如下图的data.txt、databackup、夜神模拟器
此外,有些数据如果不通过仿真很难得到,例如问题该计算机中火绒曾经将某个软件添加到隔离区,请问软件的md5为
使用仿真,能够很轻易的从隔离区将文件拿出
以及之前讲到的保存密码与EFS文件等问题,绝大多数都能通过仿真进行分析。
最后是仿真后也方便对病毒文件进行分析,可以通过process explorer + wireshark抓包 + 模拟真实情况,了解病毒文件的具体操作。
基本信息及用户痕迹
windows的基本信息有很多,通常来说可以直接使用取证软件进行查看,这部分就不做过多的解释,这里对于信息存在的位置做出解析。
首先简单介绍注册表的配置单元含义:
- HKEY_USERS: 包含所有用户的配置文件信息,每个用户都有一个唯一的子项,存储与该用户相关的设置和环境配置。
- HKEY_CURRENT_USER: 包含当前登录用户的配置信息,如桌面设置、文件关联等。
- HKEY_CLASSES_ROOT: 存储文件类型关联和COM对象相关信息,定义了应用程序如何处理文件扩展名。
- HKEY_CURRENT_CONFIG: 包含当前硬件配置文件的详细信息,如显示器和打印机设置。
- HKEY_LOCAL_MACHINE: 包含计算机级别的系统设置和配置,如硬件、软件、操作系统的信息。
1.名称、版本、build号、系统目录、位数、产品秘钥等
都保存在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
中,对应的注册表文件是C:\Windows\System32\config\SOFTWARE
2.安装时间
保存在注册表的HKEY_LOCAL_MACHINE\SYSTEM\Setup
,在CloneTag
中能看到安装时间,值得注意的是该时间是UTC时间,因此在计算安装时间时应当注意时区,其对应的注册表文件是C:\Windows\System32\config\SYSTEM
3.最后一次关机时间
在注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows
中,注意ShutdownTime
的内容是一个十六进制的时间戳,其对应的注册表文件是C:\Windows\System32\config\SYSTEM
。需要使用脚本进行转换:
import struct
from datetime import datetime, timedelta
def filetime_to_unix(filetime_hex):
filetime_int = int.from_bytes(bytes.fromhex(filetime_hex), byteorder='little')
unix_epoch_start = 116444736000000000
unix_time_seconds = (filetime_int - unix_epoch_start) // 10000000
readable_time = datetime.utcfromtimestamp(unix_time_seconds)
return readable_time
filetime_hex = "cc8d7eee7012db01" #eg.
shutdown_time = filetime_to_unix(filetime_hex)
print(shutdown_time)
4.USB使用记录
保存在多个地方,例如注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
保存的是设备插入记录,在下面会有文件夹,每一个文件夹代表一种设备记录。
同时在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
下保存的是最近连接的USB设备
接着,在HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
中存放的是设备挂载记录、在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
下存放的是用户级别的设备历史记录,即当前用户连接过的USB设备
5.WIFI信息
wifi对应的注册表路径是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
,保存在
其中,wifi的密码信息以加密的方式保存在C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\{GUID}
下,存储的格式是XML
本人自己电脑上使用查看已连接过的wifi密码的软件叫WiFiPasswordDecryptor
也可以通过输入命令的方式获取,例如上面的wifi就可以使用命令netsh wlan show profile name="HUAWEI_M1Zi" key=clear
6.近期访问过的文档、程序
保存在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
,保存该内容的文件存放于C:\Users\{用户名}\NTUSER.DAT
例如下图就是最近打开过的一个apk文件,名叫base.apk
7.特定用户登录时启动(自启动)
记录在注册表的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
下,之前讲过HKEY_CURRENT_USER
代表当前登录用户的配置信息。
8.powershell历史
保存在C:\Users\{用户名}\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
下
9.系统时区
保存在注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
下,其中TimeZoneKeyName:当前时区的名称,ActiveTimeBias:表示时区与UTC的偏移量(以分钟为单位,带符号)。例如我们的值是fffffe20
,将其转换为十进制:fffffe20
转换为十进制为 -480。表示系统时区比 UTC时间 快8小时。这正是 中国标准时间(UTC+8) 的偏移量。
10.Windows Timeline
保存在C:\Users\<用户名>\AppData\Local\ConnectedDevicesPlatform\L.<SID>\ActivitiesCache.db
主要内容保存在Activity
表中,例如我刚打开sqlitebrower来查看这个db文件,他就记录下来了。同时Activity_PackageId
表中也会记录应用程序相关的包名信息
浏览器痕迹分析
浏览器可以给我们提供许多在线活动信息,我们能从中提取的可能有历史记录、下载记录、cookie、搜索历史、最常访问、地址栏记录、扩展程序
以火狐firefox为例
1.火狐的默认配置文件夹
在C:\Users\<用户名>\AppData\Roaming\Mozilla\Firefox\Profiles\<随机字符>.default-release
Firefox会将用户数据存储在该配置文件夹中,具体位置可能因版本或用户安装情况不同,但通常会包含“.default”或“.default-release”。
2.历史记录和下载记录
位于places.sqlite
数据库中,可以使用sqlitebrowser打开。
其中moz_places
表中保存的是访问记录(URL、标题、访问时间)
其中moz_annos
和moz_downloads
保存的是下载历史
3.Cookie
保存在cookies.sqlite
的moz_cookies
表中,数据包括Cookie名称、值、创建时间、到期时间等,这些数据可以显示用户在特定站点的活动状态
4.搜索历史
保存在formhistory.sqlite
的moz_formhistory
表中
5.最常访问的站点
也在places.sqlite
中,位于moz_places
表内,需要对visit_count
表进行统计。
统计前10SELECT url, title, visit_count FROM moz_places WHERE visit_count IS NOT NULL ORDER BY visit_count DESC LIMIT 10;
支持DK盾服务器!www.dkdun.cn
6.扩展程序信息
在extensions.json
和 addons.json
中,保存了用户安装的扩展信息,包括扩展ID、名称、版本和安装时间等。
其他浏览器
其他浏览器就需要针对性进行分析,但其实大差不差。
Chrome:配置文件夹位于C:\Users\<用户名>\AppData\Local\Google\Chrome\User Data\Default
edge:配置文件夹位于C:\Users\<用户名>\AppData\Local\Microsoft\Edge\User Data\Default
其中两者的配置文件和表都相同,如下
信息 | 文件 | 表 |
---|---|---|
历史记录 | History | urls |
下载记录 | History | downloads |
Cookie | cookies | cookies |
搜索历史 | History | keyword_search_terms |
最常访问 | Top sites | top_sites |
扩展文件 | Extensions文件夹 | - |
社交软件
社交软件如QQ、微信、telegram、微博等,取证的要点有 个人信息、好友列表、聊天记录、朋友圈、文件传输记录等。同时在做题的过程中,很大概率会遇上自制的私域聊天平台,出现这种题目主要做法只有仿真 或 查看数据库,暂时没找到别的解法。但是通常计算机的题来说考另类的社交软件的概率比较小,有的话用取证软件大概率也出的不会很难。
这里不对每种社交软件单独做详细讲述,只用取证软件进行讲解,以及取证考点的讲解。
因为例如QQ(NT QQ)、微信等都有自己的加密方式,尤其是微信在不同的版本之前使用的秘钥key的获取是不同的。但是还是可以简单了解一下QQ和微信的文件存放。
1.QQ
QQ的数据默认存放路径是C:\Users\<用户名>\Documents\Tencent Files\<QQ号>\
,但在实际取证过程中并不能保证其计算机在安装时就将QQ安装到了默认的路径。我的建议是使用everything搜索Msg3.0.db
,因为在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Tencent
下只存有install
路径,并不存在data
的路径。
聊天记录存放在Msg3.0.db
;图像存放在Image/
文件夹下;下载的文件存放在FileRecv/
文件夹下;语音以.amr
格式存放在Audio/
文件夹下。
2.微信(Wechat)
微信的默认存放是在C:\Users\<用户名>\Documents\WeChat Files\<微信号wxid_>\Msg
下,但是跟QQ一样用户可以自行修改路径。我的建议是搜索文件夹wxid_
聊天记录存放在Msg/
文件夹下;图像在FileStorage/Image
下;语音在FileStorage/Voice
下,下载的文件在FileStorage/File
下;个人信息在Config/
文件夹下。
计算机对于社交软件的考点并不多,主要集中在收集聊天记录中的重点信息 和 文件传输。
邮件
邮件主要是分析邮件软件(如outlook、foxmail)当中的个人信息、eml文件内容(可能存在隐写)、邮件传输的附件。
其中邮件头部包含了邮件的元数据,如发件人、收件人、时间戳、发送路径、邮件客户端等,可以从中获取许多有用数据。
由于暂时本机上没有找到有关邮件的取证题目和附件,因此我就拿一道CTF题进行简单分析,以[VNCTF2021]interesting_fishing
为例。
邮件内容如下:
X-QQ-FEAT: uay7uZNy0NkBpOxUXLDwQYoUOOwO7yr9iuyyZErVZAzrN3jhDLBkyh2WZpcjJ
PXSjMEfWz4KAWbqQS+SMA5wYNiyoSE/Cqlvi1hMwv7BGU23dYsCk37QHIZM+khu9+Emg9K/
5BYClHyLDawZ0DHH0UxPSeZCAOYJVqU85gbz3qagjKohcdW+rMkO2tcYFeew1jsC5fo2VLd
IuVFvmW6HTikrKGfWXDXbEwTGwH/d+dwpCty+k10Cpr/iOl62IzZOV0+6EH6+4iV1aErQl+
4Jet1xErglBz7eN68aQw0EDG8nrWaIYWvb1w==
X-QQ-SSF: 000000000000005100000000000000Z
X-QQ-XMAILINFO: N4emR7dmCNQj9hr5tRKJHpjwtOe+4pnGmned6qzRktx/jR2vglLKTZQ17k/+YB
ipsJCBbg8ujgdzADEONrBsUMGes0zP1pPYy4CklxPc3nnRQG+BP4ltTcfQH6LbHGi5GFkQtm5aok7
Qsh0yqkZup5ee7RiM/E+P2ObX0flCs4Or8W1E2TKKkTUvc+593U4SiS8odmCs92L82cmmV9j8kDF8
urs8YnS4MAhmTiGmVg4SXd6zVcPrLXiQXZyjgliTvx4aQUgYyqDs6AoBDd3XAr2q+mLbeokO9RpGD
nIicY9tklpA/K/h2TkNJx0su390+XzUKgYkVvozaZPvIfGJ/yZ44rnS/1gPrRKi4IhxH4ejmJPfG0
7oXVt6Tt1MW+achnrv1ZFRDdJHNjg1NOBTtCQrn7c+MvFbyZv1F4EKy0eije+nPiqZXmo06u9L8hc
VwNOZAWppmaCjzNhLsvCgeXUv7upXyOgLopMFHDmuvtyF8AYD6RSxys+BIaYKF1cHklx/HHwjZTsq
Bvww/FROVgNTh3btQwUJmK6FLHxT+Sb0TZdVRIAuva0hvlKQdG3iu5A95FRKTSDnp1NwIpMQ4Qk8J
abiUSB/j07l7cR35qV9xh5tdebuvEpB342ZjMtJ33IXbKsI3PKO4RGsvrmwzxrQeh+cFXx+aj/ByH
CqP08lOjlFwhSxxByPdFyOrwH22dgL/xSewk+JST+2Y3AcBuRuRHTJcfd90Z/DWKZPTpw7HN3Fh3w
PSLqg+pU963cdW0VXGswtmi6CyVj15+Zh3iK+Z7Ok11nML+R6oG+DXD00Y13xoMLpO1395BqmS3mg
dg==
X-HAS-ATTACH: no
X-QQ-BUSINESS-ORIGIN: 2
X-Originating-IP: 222.141.247.41
X-QQ-STYLE:
X-QQ-mid: webmail309t1615215238t4777417
From: "=?gb18030?B?Y3JhenltYW4=?=" <xxxxxx@foxmail.com>
To: "=?gb18030?B?Y3JhenltYW4=?=" <xxxxxx@foxmail.com>
Subject: =?gb18030?B?0dC+v8/uxL+1xMzWwts=?=
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_60463A86_118E37A0_60C6B91C"
Content-Transfer-Encoding: 8Bit
Date: Mon, 8 Mar 2021 22:53:58 +0800
X-Priority: 3
Message-ID: <tencent_324809C000EC62B45E16149D682F783FA206@qq.com>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
This is a multi-part message in MIME format.
------=_NextPart_60463A86_118E37A0_60C6B91C
Content-Type: multipart/alternative;
boundary="----=_NextPart_60463A86_118E37A0_54A86277";
------=_NextPart_60463A86_118E37A0_54A86277
Content-Type: text/plain;
charset="gb18030"
Content-Transfer-Encoding: base64
xPq6wyxjcmF6eW1hbl9hcm15DQombmJzcDsgJm5ic3A7IM7SysfSu7j21f3U2tGnz7Cwssir
tcS089K70afJ+izEv8ewv7S5/cT6udjT2sbktcS63Lbgt9bO9rGouObS1Lywwqm2tLi0z9a1
[中间省略很长的数据]
Z2l2ZXlvdXJmbGFnL3g2NC9SZWxlYXNlL2dpdmV5b3VyZmxhZy5wZGIKAwLyom/TQ/zWAR13
VlEDBQQA
------=_NextPart_60463A86_118E37A0_60C6B91C--
1.邮件头部
X-Originating-IP
:发件人邮件发送时使用的外网IP地址
From
和To
:发件人和收件人名称经过Base64编码并使用 gb18030
编码方式,通过解码Y3JhenltYW4=
得到名叫crazyman
Subject
:主题,依旧是通过Base64和 gb18030
编码的,对0dC+v8/uxL+1xMzWwts=
解码得到主题是研究项目的讨论
Date
:发送日期,证明是北京时间2021年3月8日22:53分发送的
X-QQ-MIME
和 X-Mailer
字段表明这封邮件是通过腾讯的QQ邮箱客户端发送的,版本为2.x
X-QQ-XMAILINFO
和 X-QQ-FEAT
包含了加密的数据块,腾讯邮件系统用来标识邮件的某些特征或防止邮件伪造。
2.邮件正文
邮件正文的主要部分是Base64编码的,他的邮件正文部分是
------=_NextPart_60463A86_118E37A0_54A86277
Content-Type: text/plain;
charset="gb18030"
Content-Transfer-Encoding: base64
xPq6wyxjcmF6eW1hbl9hcm15DQombmJzcDsgJm5ic3A7IM7SysfSu7j21f3U2tGnz7Cwssir
tcS089K70afJ+izEv8ewv7S5/cT6udjT2sbktcS63Lbgt9bO9rGouObS1Lywwqm2tLi0z9a1
[中间省略很长的数据]
Z2l2ZXlvdXJmbGFnL3g2NC9SZWxlYXNlL2dpdmV5b3VyZmxhZy5wZGIKAwLyom/TQ/zWAR13
VlEDBQQA
------=_NextPart_60463A86_118E37A0_60C6B91C--
能注意到中间有很长一串的base64字符串,通过解码就能得到正文内容。
3.邮件附件
根据邮件头部的X-HAS-ATTACH: no
字段,这封邮件没有包含附件。虽然这封邮件的 Content-Type
是 multipart/mixed
,表明它支持多部分结构(可能包括附件),但实际邮件中没有包含附件。
微屁恩软件
写了就发不出CSDN,嘻嘻,只能去我github博客看了。
远程连接
远程连接这块我们可以分为windows自带的RDP和一些远控软件(ToDesk、向日葵、TeamViewer、RustDesk)
RDP
Windows自带的连接记录可以通过事件查看器进行查看(文件在C:\Windows\System32\winevt\Logs\
下),其中:
Event ID 4624:记录远程登录事件,包含登录的IP地址、时间等。
Event ID 4634:记录远程连接注销事件。
Event ID 1149:记录远程桌面连接尝试,包含源IP地址和用户名。
Event ID 4778:记录远程桌面会话重新连接事件。
Event ID 4779:记录远程桌面会话断开事件。
同时,还可以在注册表的HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default
处看到曾经远程连接过的主机IP地址和计算机名称。
同时RDP有个CTF圈子的考点是图像缓存碎片,因为远程桌面在会话中,会缓存传输的图像数据。在C:\Users\<用户名>\AppData\Local\Microsoft\Terminal Server Client\Cache
下以.bmc
或.dat
进行存储。这些数据无法直接查看,需要用专门的软件查看。
ToDesk
如果题目涉及到ToDesk,有可能会问连接的账号密码,这种有可能出现在手机的聊天记录当中,也可能出现在电脑的聊天记录当中。
然后,ToDesk的日志文件存放在C:\Users\{Username}\AppData\Local\ToDesk
下。
其中,下面可能会出现类似于devlist_11868387.json
的文件,代表的是该电脑连接到对方电脑的记录,样例如下:
{
"DeviceInfo" : [
{
"AutoFrameRateState" : 0,
"AutoLockScreenTip" : 3,
"BandWidth" : 0,
"Cam_Bright" : -1,
"Cam_Height" : 0,
"Cam_Quality" : 0,
"Cam_Voice" : 0,
"Cam_Width" : 0,
"Clipboard" : 1,
"ClipboardState" : 3,
"ConnectMode" : 1,
"DecodeDevice" : 0,
"DecodeType" : 0,
"EnableGameKeyMouse" : -1,
"EnableSmartLossless" : 0,
"EncodeDevice" : 0,
"EncodeFormat" : 0,
"EncodeFormatRtc" : 0,
"EncodeType" : 0,
"Env_Color" : 0,
"Env_Game" : 0,
"Env_Pentablet" : 0,
"Fps" : 1,
"HD" : 0,
"Height" : 988,
"IsAuto" : 0,
"IsConnected" : 1,
"IsFirstAdaptorResolution" : 1,
"IsGuideGamepad" : 0,
"IsGuideGlobalNode" : 0,
"IsGuideMulitScreen" : 0,
"IsGuidePenTablet" : 0,
"IsGuideUltra" : 0,
"IsGuideVirtualScreen" : 0,
"IsGuideYuv444" : 0,
"IsSetResolution" : 1,
"LastLocalPath" : "",
"LastRemotePath" : "",
"LicodeNetMode" : -1,
"LowlLatency" : 0,
"PassEx" : "8ba9fca99abbc36de925226b56234e31cf4eb396b517fc997872514fd10cee6210b70185f6d873eb5e81863e2ab4cd10f6041a91bca62db3956e4c",
"PreferHardDecode" : -1,
"PreferHardEncode" : 1,
"PrivacyScreen" : 0,
"Quality" : 2,
"ResolutionScaleFactor" : 1.0,
"ResolutionX" : -1,
"ResolutionY" : -1,
"ScreenId" : 0,
"ScreenMode" : 0,
"Sharpen" : 80,
"ShowCursor" : 0,
"UserId" : "105***519",
"UserName" : "WIN-20231021FVS",
"VirtualscreenCount" : 0,
"Voice" : 0,
"Width" : 1706,
"Yuv444" : 0
}
]
}
其中UserId
为对方的连接设备代码,这里隐藏了中间部分,为105***519
,UserName
为对方的计算机名
还有个advInfo.json
文件即自己电脑的ToDesk配置,同时Logs
文件夹。
其他的软件分析同理,简单来说方法就是,找到该软件数据的存放位置。通过翻看日志文件来回答问题,以及直接打开软件进行分析。
加密容器
加密容器我们主要讨论bitlocker与VC、TC容器,其他容器类似因此不进行讨论。
1.bitlocker
bitlocker是微软自己提供的用于加密磁盘和移动存储的工具,可以对整个驱动器进行加密(除C盘以外的驱动器如D、E盘都能加密)
通常在做题的时候是不会给bitlocker的密码的,给的都是在解密bitlocker时的内存镜像(在内存部分讲解)或在磁盘中给出bitlocker恢复秘钥。以下是一个恢复秘钥文件的内容样例:
BitLocker 驱动器加密恢复密钥
要验证这是否为正确的恢复密钥,请将以下标识符的开头与电脑上显示的标识符值进行比较。
标识符:
4C47D087-C4D4-4C39-AE05-E9E1B3C5C78A
如果以上标识符与电脑显示的标识符匹配,则使用以下密钥解锁你的驱动器。
恢复密钥:
260612-637593-506352-449471-206360-242231-203753-186406
如果以上标识符与电脑显示的标识符不匹配,则该密钥不是解锁你的驱动器的正确密钥。
请尝试其他恢复密钥,或参阅 https://go.microsoft.com/fwlink/?LinkID=260589 以获得其他帮助。
BitLocker 恢复密钥是一个长达48位的数字,格式为xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx
,如260612-637593-506352-449471-206360-242231-203753-186406
可供搜索的正则表达式为(\d{6}-){7}\d{6}
。因此在做题的过程中,如果遇到实在找不到bitlocker的情况,可以通过取证大师等软件直接对整个镜像文件镜像暴力搜索该正则表达式。
通常bitlocker是直接加密的驱动器,因此在仿真或者直接放取证软件的时候是能直接看到存在bitlocker的,但也有可能是对某一vhd镜像进行的加密,因此还是我建议的在找不到的时候使用everything
搜索大法。
2.VC/TC
VC或TC镜像在做题的时候就没什么具体搜索特征可言,这里我确实建议使用everything进行搜索,看看有没有什么可疑的大文件,不过这种镜像有个特点是文件大小是一个整数(例如100.00MB)。
这种容器有个特点是可以创建隐藏卷,即可以用一个容器进入两个不同的虚拟磁盘(两个不同的密码进入两种不同的环境)
在做题过程中VC/TC镜像解密方式通常有三种,分为内存镜像解析秘钥和直接输入密码解密以及keyfile解密,通常出题人会将密码藏在某个地方,需要通过某些方式进行查找。至于内存解析的方式也是留在后面的内存部分进行讲解。
keyfile解密是这样的,在加密时使用了秘钥文件进行解密,秘钥文件可以是任何文件,例如png、mp3、wav等,而且加密的时候可以选择只使用秘钥文件进行解密 或 使用秘钥文件+密码进行解密,这里给出keyfile解密的操作流程。
嵌套证据
嵌套证据指的是该镜像当中还存在的虚拟机文件或模拟器文件。虚拟机通常就指的是vmware或VirtualBox虚拟机,模拟器指的就是安卓模拟器,如雷电、夜神等。
这种嵌套证据的做法就是找到文件然后拉出来仿真或启动,或直接捞vmdk等存放数据的文件扔进取证软件自动取证就得了,然后在寻找嵌套证据的过程中我这里强烈建议使用everything排序搜索,因为一个镜像通常来说都比较大,模拟器可能只有几百MB,虚拟机那就可能有一两个G起步了,直接按大小排序一下子就能有收获(在实在找不到的情况下用这个办法真的很有效)。
不过在有取证软件的情况下大多数还是能直接取出来滴。
数据恢复
数据恢复算是一个比较广泛的话题,主要涉及从设备或存储介质中检索已删除或丢失的数据。需要注意的是如果在某个磁盘发生了数据丢失,那么就必须停止写入操作,因为被删除的数据并没有立即从存储介质中消失,它们只是被标记为“可覆盖”,新数据写入可能会覆盖这些被标记为删除的数据,导致无法恢复。
使用取证软件如取证大师、效率源的恢复大师都可以对数据进行恢复。如果在没有这些软件的情况下,也可以使用R-Studio
进行恢复。还有可以使用我们垃圾佬最常用的软件DiskGenius
进行恢复,在我文章的左侧菜单栏里有个取证工具
里面就有DiskGenius
的使用和下载地址。
内存镜像
固定内存的主要目的是为了恢复当时的活动会话、分析恶意软件、获取加密秘钥(bitlocker、VC……)、隐藏进程等,通常使用dumpit
工具就可以对当时的内存镜像固定,保存的格式通常是.raw或.mem。
工具
分析内存最常用最常用的工具就是我们的volatility了,分为volatility2和volatility3。我在之前于CSDN上写过volatility2的工具安装和volatility2的常用命令,不过要使用volatility3就又要学新的命令,工具和我那篇博客的地址如下:
volatility2:https://github.com/volatilityfoundation/volatility
volatility3:https://github.com/volatilityfoundation/volatility3
volatility安装、内存取证常见知识点:https://blog.csdn.net/qq_42880719/article/details/117304586
volatility2的主要取证的系统是XP、WIN7、少部分WIN10;而volatility3主要是对WIN10、WIN11、Linux等进行取证。
不过还有两个软件也还可以,一个是AXIOM memory
,这个我记得好像有破解版需要自行去查找。
另一个是我们CTF圈子自己用python写的一个集成了vol2和vol3以及memprocFS内存分析,同时加入了一些取证插件的工具,项目地址在https://github.com/Tokeii0/LovelyMem。
volatility2
vol2我真的建议直接看https://blog.csdn.net/qq_42880719/article/details/117304586
对volatility2来说,首先需要使用的是imageinfo
命令查看内存镜像的基本信息,得到profile
之后才能进行后续的操作,例如得到profile
是Win7SP1x64
,然后才能使用该profile
来查看如进程plist、浏览器记录iehistory、cmd命令记录consoles、查找文件filescan等。
volatility3
vol3我平常看的是https://blog.csdn.net/Aluxian_/article/details/127064750
volatility3首次使用的时候会下载符号表,下载完之后直接对镜像使用命令如windows.pslist即可,vol3会自己找到最合适的profile来分析镜像。
秘钥信息提取
秘钥信息提取比较复杂,自行提取难度较大,因此这里建议使用passware kit工具,passware kit会让用户直接添加磁盘镜像文件和内存文件,然后该软件会自动提取并解密,虽然有可能无法得到密码,但是能直接解密出没有加密状态的镜像,下面是操作方法:
下一步自行选择,以bitlocker为例
有内存镜像的情况下,点击右边的按钮
不过对于bitlocker来说,我也很推荐EFDD(Elcomsoft Forensic Disk Decryptor),由于我暂时没相关镜像,因此这里拿本光师傅在23年中科实数的WP:https://blog.b3nguang.top/posts/edbdd2b1.html。该软件我已放在旁边的取证工具里了(https://mumuzi.blog/docs/Forensic/%E5%8F%96%E8%AF%81%E5%B7%A5%E5%85%B7/%E5%8F%96%E8%AF%81%E5%B7%A5%E5%85%B7)
内存部分考点并不复杂,大多数只会问制作镜像的时间(使用imageinfo命令/windows.info命令)、某个程序的进程PID号(使用pslist/windows.pslist命令)等。
计算机取证分析流程
拿到镜像文件的第一时间就是打开我的火眼取证和火眼仿真,然后让火眼跑着和让仿真仿起来(仿真的时候如果没找到密码的话第一次我会让仿真软件修改密码,之后如果找到密码我会再次仿真选择不修改密码)
跑起来之后先按照题目要求把简单的做了,直接用取证软件做比较合适,比如最后一次关机时间、有多少个用户。
然后差不多到了第三、四题的样子开始问东问西,这个时候就看仿真了,我会先传个everything上去然后排序,把名字奇怪+大小为整数和文件大小较大的文件给提出来备用。然后会看Users文件夹下的文档文件夹和下载文件夹下面是否有重要证据,以及查看recent文件夹下最近打开的文档和软件,这里有个很明显确定是否有其他加密磁盘的方式就是电脑里没有这个盘,但是recent文件夹下的路径却出现了这个磁盘。
同时也会想办法寻找bitlocker恢复秘钥文件,因为一般都会有这种文件出现(有可能是通过隐写的方式将秘钥放在了文件尾也说不定)。
再然后大概率就是对上述方法找到的文件和桌面存在的一些文件进行取证,主要是看日志、配置文件、版本号这些。
然后就是对嵌套证据或加密容器进行解析,这里面包会有考点出现,主要难点就是找容器密码。这里建议的是结合手机等其他镜像一起分析,因为有可能密码在手机备忘录,也可能电脑的某个加密容器里(比如必须先解开bitlocker在里面找到密码才能解密VC容器)
接着还有就是对浏览器的分析,首先是看保存的密码里是否会出现服务器那块保存的有密码,然后就是看历史记录可以确定服务器这块需要设置的网段是多少。
差不多这就是对整个计算机的分析,之后计算机这块就不再去仿真查看了。有需要的时候直接用取证软件来看就行。
总结一下本版块推荐的必备软件:火眼证据分析软件V4、火眼仿真取证软件V4、取证大师、PasswareKitForensic、lovelymem、EFDD、Winhex、vmware、夜神模拟器、雷电模拟器、FTK、DiskGenius、CyberChef。