命令:
certutil -hashfile .\文件全名 SHA256
支持的哈希算法:MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
回收站是windos系统的一个文件夹,通常存放一些临时删除文件,删除的文件并不是被完全删除,这些文件删除后会在每个硬盘分区的根目录下的$RECYCLE.BIN文件夹;
$RECYCLE.BIN文件是隐藏的,同样也是受保护的,不建议显示;
回收站一般是占10%的硬盘空间,但可以自定义大小;
u盘删除的文件不会保存到回收站;
SID是WINDOWS用来标志唯一OBJECT(如用户或组)的一串字符,以S-1-5-21-1858328346-1692621842-485598107-500为例 图解如下:
1.逻辑删除
1.在删除文件后,在回收站中显示,只是系统通过标记,把被删除文件移到隐藏文件夹中;
2.彻底删除
1.选中被删除文件,然后同时按下【Shift+Delete】组合快捷键,进行永久删除文件/文件夹;
2.当然这种方式并不是永久性删除,可以借用某些工具,进行数据恢复,读取被删除文件;
1.删除文件时,系统会在当前用户当前分区的回收站中创建一个文件$IXXXXXX.EXT,同时将删除的文件重命名为$RXXXXXX.EXT并移动至回收站。其中XXXXXX是由系统生成随机字符串,EXT是文件扩展名。删除文件夹与删除文件类似,唯一不同的是没有扩展名。
$I文件保存有删除文件的相关信息,如文件名、文件大小、删除时间等。I代表Information。
$R文件即被删除的文件(文件夹)。R代表Recovery或Rename。
数据结构 |
长度 |
偏移量 |
文件头 |
8 |
0x00 |
被删除的文件大小 |
8 |
0x08~0xF |
文件删除的时间 |
8 |
0x10~0x17 |
被删除文件路径 |
0~520 |
0x18~0x21F |
注册表是用于存储Windows系统用户,硬件和软件的存储配置信息的数据库。虽然注册表是为了配置系统而设计的,但它可以跟踪用户的活动,连接到系统的设备,什么时间什么软件被使用过等都将被记录在案。
注册表在Windows NT
操作系统中被分为多个文件存储,这些文件被称为Registry Hives
,每一个文件被称为一个配置单元。
C:\Windows\System32\config
SYSTEM:对应的注册表分支为HKEY_LOCAL_MACHINE\SYSTEM,对应的存储文件是\Windows\System32\config\SYSTEM,其作用是存储计算机硬件和系统的信息。
NTUSER.DAT:对应的注册表分支是HKEY_CURRENT_USER,存储在用户目录下,与其他注册表文件是分开的,主要用于存储用户的配置信息。
SAM:分支是HKEY_LOCAL_MACHINE\SAM,存储在C:\Windows\System32\config\SAM文件中,保存了用户的密码信息。
SECURITY:对应的分支HKEY_LOCAL_MACHINE\SECURITY,存储在C:\Windows\System32\config\SECURITY文件中,保存了安全性设置信息。
SOFTWARE:分支是HKEY_LOCAL_MACHINE\SOFTWARE,文件存储在C:\Windows\System32\config\SOFTWARE中,保存安装软件的信息
在注册表中,有根文件夹。这些根文件夹被称为蜂巢。 以下是5个注册表的配置单元:
- HKEY_USERS:包含所有加载的用户配置文件
- HKEYCURRENT_USER:当前登录用户的配置文件
- HKEY_CLASSES_ROOT:包含所有已注册的文件类型、OLE等信息
- HKEYCURRENT_CONFIG:启动时系统硬件配置文件
- HKEYLOCAL_MACHINE:配置信息,包括硬件和软件设置
册表数据类型主要有以下几种:
REG_SZ:字符串类型,文本字符串
REG_BINARY:二进制类型,不定长度的二进制值,以16进制形式显示
REG_DWORD:双字,32 位的二进制值,显示为 8 位的十六进制值
REG_MULTI_SZ:多字符串,有多个文本值的字符串,字符串间用 nul 分隔、结尾两个 nul
REG_EXPAND_SZ:可扩展字符串,包含环境变量的字符串
注册表中时间格式有以下几种:
FILETIME:64位值,代表间隔多少个单位为100纳秒的时间(从UTC1601年1月1日开始)
Unix Time:32位值,代表间隔多少秒(从UTC1970年1月1日开始)。
DOS Date/Time:两个16位值,详细记录了当地时间和年月日。
win+R,输入regedit进入注册表编辑器
IE首页在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page下
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice
注意的是在System注册表中有Current、ControlSet001、ControlSet002三个控件组。其中Current是ControlSet001的副本,每次重启时会覆盖ControlSet001,而ControlSet002则是保存最后一次成功启动的信息
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName
usb设备
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\xxxx\xxxxx
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkList\Profiles
可以通过文件扩展来跟踪系统上使用或打开的最新文档
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
我们点击其中一个键时,它会显示有关文档的信息,如下所示。我们可以在十六进制,左侧和ASCII格式的右侧查看文档数据。
列出用户使用IE访问的最后URL浏览记录
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
注册表还跟踪用户接口的IP地址。请注意接口可能有多个,该注册表项将跟踪每个接口的IP地址及相关信息。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\Tcpip\Parameters\Interfaces
如下所示,我们可以找到分配给接口的IP地址,子网掩码以及DHCP服务器租用IP的时间
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
开机启动的软件的位置
展开USBSTOR可以查看到,所有曾经连接过该系统的USB存储设备列表。
HKEY_Local_Machine\System\ControlSet00x\Enum\USBSTOR
如果攻击者使用任何必须挂载的硬件设备来读取或写入数据(CD-ROM,DVD,硬盘驱动器,闪存驱动器等),注册表将记录已挂载的设备。 此信息存储在
HKEY_LOCAL_MACHINE\System\MountedDevices
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/SoftwareProtectionPlatform。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
HKEY_USERS/xxx/sid/Software/SimonTatham/PuTTY
NTUSER.DAT\Software\Microsoft\WindowsNT\CurentVersion\EFS\CurrentKeys
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
注册表中的远程登录服务设置通常位于以下位置:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\TerminalServer\fDenyTSConnections
\fDenyTSConnections为1为未开启
HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\
用户的个人证书存储区域,包含了用户的个人数字证书,其中可能包含了用户证书的指纹信息。
HKEY_USERS/xxx/Sid/SOFTWARE/Aerofox/FoxmailPreview
Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型 由Windows NT/2000操作系统预先定义。
默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程 序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许 会有助于你解决问题。
默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或 者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。
默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx
系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。 安全日志记录着事件审计信息,包括用户验证 (登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。
对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,下面是一下常用到的事件ID
事件ID | 说明 |
---|---|
1102 | 审核日志已清除 |
1104 | 安全日志现已满 |
4608 | Windows正在启动 |
4609 | Windows正在关闭 |
4616 | 系统时间已更改。 |
4625 | 帐户无法登录 |
4624 | 帐户已成功登录 |
4634 | 帐户已注销 |
4647 | 用户启动的注销 |
4672 | 使用超级用户(如管理员)进行登录 |
4720 | 创建用户 |
4657 | 注册表值已修改 |
4741 | 已创建计算机帐户 |
4742 | 计算机帐户已更改 |
4743 | 计算机帐户已删除 |
4778 | RDP(远程桌面连接)会话重新连接成功 |
4779 | RDP(远程桌面连接)会话重新连接失败 |
按 “Window+R”,输入 ”eventvwr.msc“ 也可以直接进入“事件查看器”
打开windows/system32/winevt/log,查看日志
通过查看日志,可以看到有大量的登录记录,并且登录失败,这里初步猜测是靶机遭到了爆破
通过使用事件查看器的筛选日志,可以筛选出登录失败的次数,打开事件查看器,选择右侧的筛选当前日志
在所有事件ID处写入要过滤的事件ID,根据上面表中的内容我们可知,4625为登录失败,4624为登录成功,我们填入4624点击确定,可以看到有2097个失败记录
筛选4624可以看到有几次登录成功的记录
这里为了便于分析,将日志保存下来用其他工具进行分析,首先选择清除筛选器,保证保存的是完整的日志,然后选择将所有事件另存为,选择一个位置保存下来
其中对于各种操作,FTP也有特定的状态码
状态码 | 说明 |
---|---|
150 | 文件状态良好,打开数据连接 |
200 | 命令成功 |
202 | 命令未实现 |
211 | 系统状态或系统帮助响应 |
212 | 目录状态 |
213 | 文件状态 |
214 | 帮助信息,信息仅对人类用户有用 |
215 | 名字系统类型 |
220 | 对新用户服务准备好 |
221 | 服务关闭控制连接,可以退出登录 |
225 | 数据连接打开,无传输正在进行 |
226 | 关闭数据连接,请求的文件操作成功 |
227 | 进入被动模式 |
230 | 用户登录 |
250 | 请求的文件操作完成 |
257 | 创建”PATHNAME” |
331 | 用户名正确,需要口令 |
332 | 登录时需要帐户信息 |
350 | 请求的文件操作需要进一步命令 |
421 | 连接用户过多 |
425 | 不能打开数据连接 |
426 | 关闭连接,中止传输 |
450 | 请求的文件操作未执行 |
451 | 中止请求的操作:有本地错误 |
452 | 未执行请求的操作:系统存储空间不足 |
500 | 格式错误,命令不可识别 |
501 | 参数语法错误 |
502 | 命令未实现 |
503 | 命令顺序错误 |
504 | 此参数下的命令功能未实现 |
530 | 账号或密码错误 |
532 | 存储文件需要帐户信息 |
550 | 未执行请求的操作 |
551 | 请求操作中止:页类型未知 |
552 | 请求的文件操作中止,存储分配溢出 |
553 | 未执行请求的操作:文件名不合法 |
本实例中模拟通过日志发现异常登陆者信息的过程,在查看日志时,发现大量登录失败事件
Prefetch
预读取文件,简称pf
文件,是从Windows XP
开始引入,作用是加速系统和应用程序启动过程。因为在系统启动时,大量文件需要读入内存进行处理,这个过程包括在不同时间加载相同文件的不同片段。这样在多次打开和访问文件的时候会浪费大量的时间。预读取文件就是为了解决这个问题的。
pf
文件包含了可执行文件的名称、路径、调用DLL
文件的列表、上次执行时间、运行次数等信息。简单来说,就相当于缓存。在Windows 7
中可以记录128
个条目,Windows 8/10
可记录1024
个条目。
pf
文件存储在%SystemRoot%\Prefetch
文件夹中。
通过WinHex
打开一个pf
文件观察其组成结构:(这里以Windows 7
中的pf
文件举例)
偏移位置:00H:17 00 00 00
:pf文件格式的版本
偏移位置:04H:53 43 43 41
:签名SCCA
偏移位置:08H:11 00 00 00
:未知
偏移位置:0CH:C6 4D 01 00
:pf文件长度
偏移位置:10H:43 00 48 00 52 00 4F 00 4D 00 45 00 2E 00 45 00 58 00 45 00 00
:应用程序的名称,这里是CHROME.EXE
偏移位置:4CH:BA B1 99 D9
:pf
文件的哈希值,与应用程序名称一起组成了pf
文件名
偏移位置:80H:D2 38 72 D9 E0 6B D7 01
:应用程序最后一次运行的时间
偏移位置:98H:0B 00 00 00
:应用程序运行次数
在不同的系统版本中,pf
文件的版本有所不同,在Windows xp/2003
中版本是17(0x11)
,Windows 7
是23(0x17)
,Windows 8
是26(0x1a)
,Windows 10
的版本是30(0x1e)
。
pf
文件信息的格式也因为pf
版本不同而有所不同:如在xp
系统中pf
文件信息中记录应用程序最后一次运行的时间的偏移位置是78H
,记录程序运行次数的偏移位置是90H
。
如果是Windows 10
的pf
文件则是经过压缩的(Microsoft XPRESS Huffman
(LZXPRESS
)压缩算法),文件结构信息如下:
开头的4D 41 4D 04
是MAM
签名,然后是EE 65 04 00
是压缩pf
文件的总长度。
下载工具分析dll数
文件头
JPEG (jpg), 文件头:FFD8FF 文件尾:FF D9
PNG (png), 文件头:89504E47 文件尾:AE 42 60 82
GIF (gif), 文件头:47494638 文件尾:00 3B ZIP Archive (zip), 文件头:504B0304 文件尾:50 4B
TIFF (tif), 文件头:49492A00
Windows Bitmap (bmp), 文件头:424D
CAD (dwg), 文件头:41433130
Adobe Photoshop (psd), 文件头:38425053
Rich Text Format (rtf), 文件头:7B5C727466
XML (xml), 文件头:3C3F786D6C
HTML (html), 文件头:68746D6C3E
Email [thorough only] (eml), 文件头:44656C69766572792D646174653A
Outlook Express (dbx), 文件头:CFAD12FEC5FD746F
Outlook (pst), 文件头:2142444E
MS Word/Excel (xls.or.doc), 文件头:D0CF11E0
MS Access (mdb), 文件头:5374616E64617264204A
WordPerfect (wpd), 文件头:FF575043
Adobe Acrobat (pdf), 文件头:255044462D312E
Quicken (qdf), 文件头:AC9EBD8F
Windows Password (pwl), 文件头:E3828596
RAR Archive (rar), 文件头:52617221
Wave (wav), 文件头:57415645
AVI (avi), 文件头:41564920
Real Audio (ram), 文件头:2E7261FD
Real Media (rm), 文件头:2E524D46
MPEG (mpg), 文件头:000001BA
MPEG (mpg), 文件头:000001B3
Quicktime (mov), 文件头:6D6F6F76
Windows Media (asf), 文件头:3026B2758E66CF11
MIDI (mid), 文件头:4D546864
pyc 文件头:03f30d0a
--到设置->离线地图上查找
命令行输入recent查看即可
XP:
存放路径: \Recycled 或者\Recycler
INFO2文件:用来记录文件进出回收站的活动(记录文件移动到回收站的时间、文件大小、 文件原始名称和完整路径,使用ASCII和Unicode编码)
·Win7及以上:
存放路径: \$Recycle.Bin I
"$R" 开头的记录文件:删除文件的实际内容
"$I"开头的记录文件:被删除文件的原名和原路径(要用winhex等软件才能看)
可以利用文件的头尾恢复文件,winhex找到头尾,然后做特征恢复
如果只知道文件头,不知道文件尾,那就尝试恢复
磁盘分区
逻辑硬盘使用前需要进行分区
MBR磁盘分区:老式磁盘分区,DOS分区,最大2t,最多支持四个主分区
整个磁盘第一个分区(446字节)是引导程序,
win磁盘前面,系统初始化的标签
分区表
结束标记55a
动态磁盘分区
GPT磁盘分区,目前主流:
每一个分区表128字节
松弛空间:
簇大小?
:格式化的 时候,分配单元大小,1024,之类的,就是簇大小,4096是默认,4k
内存存储单位是页,基本上页大小也是4k,所以硬盘页大小4k协同效率最好 。
大小与占用空间:
大小1k,占用空间0,因为没有占用1个簇。
大小9k,占用空间12k,因为占用了一个簇
单位:
最小单位是位
文件最小存储单位是字节(8位)
介质最小单位扇区(512字节)
文件系统最小单位簇,块,片(一般是8个扇区,4k)
文件占用空间一定是真个簇,就是占用最小单位解释上面那个,多出来了就是松弛空间。
文件系统
FAT32快没了,NTFS,exFAT,新的服务器REFS(WIN)
Macos是APFS
光盘CDFS
文件特征
文件扩展名.doc.pptx 可以人为设定
文件特征、签名:16进制下显示文件头或尾特征
容量=扇区*512
扇区大小一律512bytes
powershell 历史命令
C:\Users\pc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
5.便笺的位置
Windows+R组合键进入运行窗口,windows键就是你电脑上那个有四个小格格窗口的键(真是巨土的形容哈哈哈)
输入%LocalAppData%\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState
Plum.sqlite文件就是我们要找的,用SQLite软件是可以操作SQLite数据库
system volume information 说明是有卷影快照的,需要取证大师进行卷影分析。
cc--- comand and control(常用http,ftp进行传输)
安装时间,登陆时间到日志里去看
bin文件考虑用winhex打开
仿真后将显示->隐藏的文件打开(可能有文件在里面)
BitLocker用于加密Windows操作系统卷上的数据,仅支持Windows系统分区的加密,如果需要针对整个磁盘启用Bitlocker加密,则必须先将磁盘进行分区,然后再针对分区启用Bitlocker。
首先,我们先讨论下BitLocker加密容器的识别方法。BitLocker加密容器的识别主要有三种方法:
在Windows系统中,启用过BitLocker加密容器的分区,一般会在分区上有把锁,当BitLocker加密容器处于未解密状态时,锁的图标为金色且是锁定状态,当BitLocker加密容器处于解密状态时,锁的图标为灰色且是打开状态,如下图所示:
加密状态
解密状态
在日常取证工作中,我们可以通过计算机仿真系统先对证据盘或镜像文件进行仿真,仿真后进入系统后即可通过系统图标识别Bitlocker加密分区。
我们可使用计算机取证分析系统来识别Bitlocker加密容器,识别的方法很简单,只需要通过计算机取证分析系统来加载镜像,加载后在对应的分区上有小锁图标,右键提示BitLocker解密,如下图所示:
当然,我们也可以使用Passware Kit Forensic、Elcomsoft Forensic Disk Decryptor等取证工具加载证据盘或镜像文件,加载完成后软件会自动标注识别到的BitLocker分区,如下图所示:
Passware Kit Forensic识别Bitlocker分区
Elcomsoft Forensic Disk Decryptor识别Bitlocker分区
Bitlocker的签名开头为“-FVE-FS-”,我们可以使用“-FVE-FS-”签名头来识别Bitlocker加密容器。通过FTK Imager或winhex加载证据盘或镜像文件,分别查看各分区的签名头,签名头为“-FVE-FS-”的即为Bitlocker加密分区,如下图所示:
BitLocker的解密方法总结起来共有四种:一是通过输入密码解密,二是通过恢复密钥解密,三是通过内存镜像进行解密,四是暴力破解。通过密码短语和恢复密钥破解需要嫌疑人自行交代,或是在嫌疑人电子设备中找到相应的密码记录文件才能实现;通过内存镜像解密则需要在现勘的时候制作处于开机状态且加密容器为解密状态的内存镜像,然后通过相应的技术手段提取内存镜像中的恢复密钥达到解密BitLocker的目的;暴力破解的难度比较大,成功概率较低。
利用内存镜像解密BitLocker可以分为工具解密和手工解密,工具解密可以使用Passware Kit Forensic、Elcomsoft Forensic Disk Decryptor等工具,手工解密则主要是通过在kali里通过命令的方式提取Bitlocker密钥信息,手动挂载Bitlocker加密分区达到解密目的。
Passware Kit Forensic是Passware公司推出的密码破解工具集,它将所有的密码恢复模块全部集成到一个主程序中,支持恢复文件密码、恢复因特网和网络密码、重置Windows管理员密码、搜索受保护的文件和恢复硬盘密码,当然也支持解密常见的加密容器。
使用Passware Kit Forensic解密Bitlocker的具体步骤如下:
1)打开Passware Kit Forensic,选择Full Disk Encryption,然后选择Bitlocker,如下图所示:
2)选择“I have a memory image”,弹窗后设置好需解密的加密容器、内存镜像、解密后镜像存放的位置和文件名,如下图所示:
3)解密完成后,软件可以解析出Bitlocker解密的恢复密钥,也可会将解密后的Bitlocker加密分区另存到上图设置的目标路径,通过恢复密钥即可解密Bitlocker,也可以直接加载解密后的镜像即可取证。
使用Elcomsoft Forensic Disk Decryptor解密Bitlocker
Elcomsoft Forensic Disk Decryptor是一款非常实用的磁盘密码解密与恢复工具,提供完全集成的解决方案,用于访问加密卷,程序提供了所有可用方法,可以访问存储在加密的PGP、TrueCrypt、VeraCrypt等等磁盘和卷中的信息;软件支持从提取内存镜像中提取常见加密容器密码和密钥,也支持直接解析加密容器。
使用Elcomsoft Forensic Disk Decryptor解密Bitlocker加密容器的具体步骤如下:
1)打开软件,选择“Decrypt or mount disk”,下一步,然后根据实际选择物理磁盘/分区或镜像,下一步:
2)选择之后,软件会自动加载磁盘镜像,并识别对应的加密类型,选中软件识别出需要解密的Bitlocker加密容器,在下方会弹出解密方法,勾选“Memory Dump”,关联好内存镜像,点击下一步,开始解密分析:
3)分析完成后,我们就可以获取到Bitlocker解密的恢复密钥,拷贝恢复密钥到计算机取证分析系统内或是仿真系统内就可以解密Bitlocker加密分区了,如下图所示:
4)上图中,我们也可以选择“Decrypt disk”将加密容器解密后另存为一个镜像,另存后的镜像可以直接通过镜像挂载工具加载取证,也可以选择“Mount Disk”直接将解密后的Bitlocker加密分区挂载到本地,挂载需要虚拟光驱的支持,如下图所示:
5)解密后预览,如下图所示:
加载解密后的镜像
直接挂载预览
手工解密Bitlocker加密分区需要借助内存分析工具volatility,在使用volatility的时候推荐直接使用kali自带的volatility。通过研究手动解密Bitlocker加密容器,有助于我们理解Bitlocker的加解密原理。
首先,我们来了解两个概念:VMK、FVEK。VMK是卷主加密,主要用于加密和FVEK,FVEK是全卷加密,用于加解密磁盘扇区数据,也就是说Bitlocker加密容器内的数据都是通过FVEK进行加密的,我们可以从内存镜像中提取到FVEK,然后FVEK来解密Bitlocker加密分区。
在开始手工解密Bitlocker前,我们需要下载和安装两个插件:bitlocker.py和bdemount。bitlocker.py用于提取内存镜像中的FVEK和TWEAK,用于解密Bitlocker;bdemount是专门用于挂载BitLocker加密卷的挂载工具。
1)下载安装bitlocker.py
下载链接:https://github.com/tribalchicken/volatility-bitlocker
下载后将bitlocker.py放入kali虚拟机的/usr/lib/python2.7/dist-packages/volatility/plugins目录下。
2)下载安装bdemount
在kali里执行sudo add-apt-repository universe和sudo apt install libbde-utils即可自动完成bdemount的安装,安装后在命令行输入bdemount后会有返回。Bdemount的具体用法如下:
bdemount [-k keys] [-o offset] [-p password] [-r password] [-s filename][-X extended_options] [-hvV] source
参数:
-k 密钥,例如:FVEK:TWEAK
-o 以字节为单位指定卷偏移
-p 指定密码
-r 指定恢复密码
-s 指定包含启动密钥的文件,该文件扩展名为.BEK
3)在kali里通过volatility与bitlocker.py插件提取内存镜像内的FVEK和TWEAK,执行命令 “volatility -f memdump.mem --profile=Win7SP1x64 bitlocker”,执行完成后科技获取到FVEK为:0d393d80bf512f5e501a8bfad3272965,TWEAK为:cf71859b45775123fcc1dad3007d1c41,如下图所示:
提取FVEK和TWEAK
4)使用bdemount命令挂载Bitlocker加密分区,执行命令“bdemount -k 0d393d80bf512f5e501a8bfad3272965:cf71859b45775123fcc1dad3007d1c41 D.dd ./crypt-1”,如下图所示:
挂载Bitlocker加密容器
5)通过bdemount挂载后,可在挂载点crypt-1下得到的文件bde1,这个文件是一个整体文件,需要二次挂载,执行命令“sudo mount.ntfs-3g -o loop,ro crypt-1/bde1 crypt-2/”即可挂载,因为Bitlocker是Windows自带加密容器,文件系统格式为NTFS,因此需要使用“mount.ntfs-3g”挂载,二次挂载后,在挂载点crypt2下就可以得到Bitlocker加密容器内的文件,如下图所示:
手动解密后的Bitlocker加密分区
6)至此,Bitlocker手动解密全部完成。
综上所示,我们在进行Bitlocker取证时,可以通过查看系统分区图标、签名标识“-FVE-FS-”和取证工具来识别Bitlocker加密容器。Bitlocker的取证主要可以通过密码解密、恢复密钥解密和内存镜像解密。
相较于Bitlocker加密,TrueCrypt还支持创建文件型加密卷,即创建一个文件类型的加密盘,在未挂载前,用户看到的就是一个任意格式的普通文件,只有挂载容器文件后,才能获取到容器能的内容。并且TrueCrypt还支持创建隐藏的加密卷,也就是在一个容器文件内创建两个加密容器,两个容器通过不同的密码或密钥文件分别控制,通过不同的解密密码和密钥文件可以打开不同的加密容器。
TrueCrypt加密之后的文件没有固定的特征,无法通过特征去进行判断,在取证过程中,我们可以通过取证软件分析证据盘内安装的软件和最近打开的程序,如果嫌疑人有安装过和使用过TrueCrypt,则可以猜测存在TrueCrypt加密容器文件或分区,如下图所示:
如果加密卷是磁盘或系统分区,则可以通过计算机取证分析系统和Elcomsoft Forensic Disk Decryptor识别TrueCrypt加密容器;若果是文件型加密卷则可以通过文件大小来判断是否为加密容器文件;另外,我们也可通过volatility分析内存镜像来识别其中的加密容器文件。
使用计算机取证分析系统识别TrueCrypt
使用计算机取证分析系统加载镜像后,在加密的分区上会有一个小锁图标,在对应的分区上右键,若弹窗提示VeraCrypt解密,则判断可能为TrueCrypt加密卷。如下图所示:
使用Elcomsoft Forensic Disk Decryptor加载镜像后,软件会自动加密卷进行标识,如下图所示:
依据文件大小判断加密容器文件
在分析证据盘安装软件和最近运行程序里有TrueCrypt的前提下,如果我们发现某个常规文件异常大,并且无法正常打开,这时可以猜测其为加密容器卷(也有可能做过数据隐写),然后再通过上面介绍的工具分别加载该文件,确认是否为加密容器文件。
1)查看文件属性,发现note.txt•peter大小为66M(有的加密容器文件可能更大),并且打开异常,正常txt文件大小都很小,而且能够正常打开。
2)猜测note.txt•peter为加密容器文件,使用Elcomsoft Forensic Disk Decryptor加载后进行确认。
使用volatility分析内存镜像来识别加密容器文件
Volatility是专门用于分析内存镜像的工具,在Volatility中,用于分析TrueCrypt的插件主要有三个:truecryptmaster、truecryptpassphrase、truecryptsummary。
Truecryptmaster:用于从内存镜像中恢复TrueCrypt 7.1a主密钥;
Truecryptpassphrase:用于从内存镜像中查找缓存密码;
Truecryptsummary:TrueCrypt摘要。
执行命令“volatility -f DESKTOP-D7AP30M-20200605-082800.raw --profile Win10x64_14393 truecryptsummary”如下图所示:
在上图中,不仅分析到了TrueCrypt的进程PID和加密容器文件路径、文件名,还可以分析出加密容器挂载的盘符和容器内的文件。
2、TrueCrypt加密容器的取证方法
TrueCrypt加密容器的解密方法主要有四种,一种是通过密码短语解密,第二种是通过密钥文件解密,第三种就是通过内存镜像解密,第四种是爆破,由于爆破成功率较低,本文不做阐述。
▪ 通过密码短语解密TrueCrypt
1)使用计算机取证分析系统加载TrueCrypt加密容器文件,然后输入解密密码短语进行解密;
2)也可以直接打开TrueCrypt,选择对应的加密文件或是设备,点击加载:
2)输入密码后点击确定,即可解密。
通过密钥文件解密TrueCrypt
▪ 通过密钥文件解密TrueCrypt
1)使用计算机取证分析系统加载TrueCrypt加密容器文件,然后输入解密密钥文件进行解密;
2)也可以直接打开TrueCrypt,选择对应的加密文件或是设备,点击加载;
3)勾选使用密钥文件,添加密钥文件,确定即可解密。
通过密码短语解密TrueCrypt
通过内存镜像解密TrueCrypt也需要借助取证工具Passware Kit Forensic、Elcomsoft Forensic Disk Decryptor来进行解密。
1、通过Passware Kit Forensic解密TrueCrypt
1)打开Passware Kit Forensic,选择Full Disk Encryption,然后选择TrueCrypt,如下图所示
2)选择“I have a memory image”,弹窗后设置好需解密的加密容器、内存镜像和目标位置,如下图所示:
3)若果是整盘镜像的话,需选择镜像内的加密分区,如果选择错误,也会提示“Please select a TrueCrypt partition”如下图所示:
4)解密完成后,软件会自动将解密后的镜像保存在用户设置的目录下,同取证工具加载解密后的镜像即可进行取证。
2、通过Elcomsoft Forensic Disk Decrypto解密TrueCrypt
1)打开软件,选择“Decrypt or mount disk”,下一步,然后根据实际选择物理磁盘/分区或镜像,点击下一步;
2)选择镜像之后,软件会自动加载磁盘镜像,并识别对应的加密类型,选中需要解密的加密容器,在下方会弹出解密方法,选择“Memory Dump”,关联内存镜像:
3)分析完成后,我们可以选择“Decrypt disk”将加密容器解密后另存到指定路径,然后直接通过镜像挂载工具加载解密后的镜像文件进行取证。我们也可以选择“Mount Disk”直接将加密分区挂载到本地,如下图所示:
4)解密后预览,如下图所示:
加载解密后的镜像
加载解密后的镜像
可全局搜索的
find / -name my.cnf
find / -name *.sh
find / -name nginx