Windows 注册表取证实践-后台服务和外部连接

Windows 注册表取证实践-后台服务和外部连接

后台活动管理器

后台活动管理器是一项 Windows 服务,用于控制后台应用程序的活动。该服务最初是在 Windows 10 上引入的。BAM 提供在系统上运行的可执行文件的完整路径以及这些文件的最后执行日期和时间。

BAM 通过列出以下可执行文件来提供程序执行的证据:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
HKLM\SYSTEM\ControlSet00X\Services\bam\State\UserSettings\SID\
HKLM\SYSTEM\ControlSet00X\Services\bam\State\UserSettings\SID\
HKLM\SYSTEM\ControlSet00X\Services\bam\State\UserSettings\SID\ 

(其中 X 通常为“1”)注册表项。每个用户特定的可执行文件都存储在相应用户的 SID 条目下。BAM 条目仅填充本地运行的可执行文件。Windows 启动时会删除超过 7 天的条目。

在这里我们可以看到不同的用户 SID。Bam 工件为我们提供了更详细的执行证据,因为它区分了哪个应用程序由哪个用户执行,而其他一些执行证据工件(如prefetch)仅提供系统上的整体执行情况。

可以获得获得了在后台运行的可执行文件的完整路径以及文件执行的时间戳。但是在网络共享或可移动媒体上启动可执行文件不会生成 BAM 条目。同样,控制台应用程序不存储在 BAM 条目中。如果可执行文件从其原始位置删除,BAM 条目也会被删除。

所以这个工件对于取证还是存在局限性的。

服务和启动持久性

攻击者可能会创建或修改 Windows 服务,以反复执行恶意负载,从而实现持久性。Windows 启动时,它会启动执行后台系统功能的程序或应用程序(称为服务)。Windows 服务配置信息(包括服务可执行文件或恢复程序/命令的文件路径)存储在“ Windows 注册表”中。

攻击者可能会安装新服务或修改现有服务以在启动时执行,从而在系统中持久存在。可以使用系统实用程序(例如 sc.exe)、直接修改注册表或直接与 Windows API 交互来设置或修改服务配置。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sc create test binpath="cmd.exe /k C:\Windows\System32\calc.exe" start="auto" obj="LocalSystem"
sc qc test
sc create test binpath="cmd.exe /k C:\Windows\System32\calc.exe" start="auto" obj="LocalSystem" sc qc test
sc create test binpath="cmd.exe /k C:\Windows\System32\calc.exe" start="auto" obj="LocalSystem"
sc qc test

我们模拟使用名为“sc.exe”的内置工具命令行创建一个恶意的 Windows 服务。假设我们将系统计算器的二进制文件注册为 Windows 服务以实现持久性。我们使用以下命令执行此操作:

如何检测这种技术呢?有一个注册表位置保存了系统范围服务的相关信息,路径如下:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SYSTEM\ControlSet00x\Services
SYSTEM\ControlSet00x\Services
SYSTEM\ControlSet00x\Services

其中x 根据服务获取一个数字值,但通常为“1”。在注册表资源管理器中打开 SYSTEM Hive查看。

这里有很多服务,是预期的 Windows 操作系统活动的服务。

那么如何找到我们想要的服务呢?为了快速分析,可以优先搜索任何用户文件夹下 .exe 文件的所有服务。由于大多数 Windows 服务都从系统根目录运行,因此我们更有可能找到在用户目录下有 .exe 的恶意服务。

这并不意味着攻击者无法在系统根目录下创建带有 .exe 文件的服务,他们也可以这样做来混淆视听。比如我上面的示例中就是用的系统中的文件作为服务运行,所以并不是绝对的。

然后是启动执行持久性。启动是 Windows 的一项功能,允许应用程序和程序在计算机重新启动时自动执行。这些程序可以通过运行键在注册表中配置。这些键的路径是:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

这里我们在当前用户文档目录下放了一个计算器并添加到开机启动,然后分析注册表来检测它。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Zgao_RunKey /t REG_SZ /d "C:\Users\Administrator\Documents\calc.exe"
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Zgao_RunKey /t REG_SZ /d "C:\Users\Administrator\Documents\calc.exe"
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Zgao_RunKey /t REG_SZ /d "C:\Users\Administrator\Documents\calc.exe"

打开注册表资源管理器并加载 NTUSER.dat。

这里我们可以看到刚添加的exe 文件。攻击者还可以将其命名为 Windows 服务、Onedrive 服务或任何类似于环境中正在使用的其他合法软件的名称,以便混入其中。需要重点关注的是包含可执行文件路径的“Data”字段

USB 和外部连接设备

通用串行总线闪存驱动器(通常称为 USB 闪存驱动器)是最常见的存储设备,可在数字取证调查中作为证据。工作场所使用 USB 和外部驱动器可能会让内部威胁人员未经授权从系统中窃取公司敏感或机密数据或信息。USB 的取证检查对于调查和解决此类案件至关重要。

第一个注册表路径是 USBSTOR 密钥,它仅保存有关外部存储介质/驱动器(如 USB、硬盘等)的信息,位于:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR
HKLM\SYSTEM\CurrentControlSet\Enum\USB
HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR HKLM\SYSTEM\CurrentControlSet\Enum\USB
HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR
HKLM\SYSTEM\CurrentControlSet\Enum\USB

可以看到这个USB设备的品牌为SanDisk。

我们在选定的键中看到有关该设备的详细信息。 

第二个键提供有关通过 USB 连接的所有设备的信息,如键盘、鼠标、麦克风等信息。

通过检查此注册表项,可以了解设备的类型以及它们上次连接到系统的时间。如果单击 USBSTOR 键本身,可以获取其下所有设备的摘要信息。

远程桌面连接

Microsoft 远程桌面连接 (RDC) 允许用户通过网络连接并访问其他 Windows 系统。它是一个内置应用程序,通过终端服务或远程桌面服务实现远程桌面协议 (RDP),以访问和控制远程系统上的所有应用程序、文件和网络资源。

RDC 通常由系统管理员用来执行管理任务,例如配置计算机和解决计算机和网络问题。但攻击者也可以使用它在远程 Windows 系统上执行恶意活动。因此,远程桌面连接 MRU 工件对于确定攻击者访问的系统至关重要。

该工件在注册表中的位置存储在以下路径中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
NTUSER.DAT\Software\Microsoft\Terminal Server Client
NTUSER.DAT\Software\Microsoft\Terminal Server Client
NTUSER.DAT\Software\Microsoft\Terminal Server Client

此键下的值以“MRU”开头,后跟一个数字值。数字表示访问这些系统的顺序。每个新连接都被赋予“MRU0”的值,并且所有其他值的数量将依次增加。与 MRU 值相关的数据可以包含用户访问的系统的名称或 IP 地址。

这个信息非常重要,有时候攻击者清除了事件日志,我们无法从事件日志中获取有关 RDP 活动的任何其他信息。如果目标远程设备使用主机名而不是 IP 进行连接,则此注册表项还会保存主机名(也会记录下来)。rdp 连接设备列表的另一个优点是,它们默认按从最新到最旧的顺序排序。

赞赏

微信赞赏支付宝赞赏