reuteras/dfirws
GitHub: reuteras/dfirws
基于 Windows Sandbox 的数字取证与事件响应工具集管理方案,支持离线环境使用和自动化工具部署。
Stars: 20 | Forks: 3
# dfirws: Windows Sandbox 中的 DFIR
[](https://github.com/marketplace/actions/super-linter)
DFIRWS 是一个在 Windows Sandbox 中进行数字取证和事件响应分析工作的解决方案。
DFIRWS 的第一部分是下载和更新许多现有的优秀工具。第二部分是安装这些工具并启动一个包含这些工具的 Windows Sandbox 的脚本。此外,还提供了一个用于创建 VM(目前仅支持 VMWare Workstation)的脚本,但该脚本没有像沙箱脚本那样经过充分测试。DFIRWS 适用于没有互联网访问权限的环境,这也一直是它的主要用例。
**建议:** 将您存放 dfirws 代码的文件夹从杀毒软件中排除。我也不想提出这个建议,但原因是 AV 工具会将一些合法工具归类为恶意软件。选择权在于您。
## 目录
- [准备工作](#preparation)
- [安装和配置](#installation-and-configuration)
- [下载工具和丰富数据](#download-tools-and-enrichment-data)
- [沙箱的使用和配置](#usage-and-configuration-of-the-sandbox)
- [分发配置文件](#distribution-profiles)
- [沙箱配置](#sandbox-configuration)
- [VM 的使用和配置](#usage-and-configuration-of-the-vm)
- [更新](#update)
## 准备工作
1. *程序:* 您需要在计算机上安装 `7-zip`、`git` 和 `rclone` 程序才能使用 DFIRWS。如果您缺少任何工具,可以通过输入以下命令使用 **winget** 安装它们。
```
winget install 7zip.7zip
winget install Git.Git
winget install Rclone.Rclone
```
2. *PowerShell:* 如果您尚未启用运行 PowerShell 脚本的选项,则必须以管理员身份启动 Windows Terminal 或 PowerShell 提示符并运行
```
Set-ExecutionPolicy -ExecutionPolicy Bypass
```
**重要提示:** 必须对 **PowerShell** 和 **pwsh** 都执行此操作。
3. *Windows Sandbox:* 主机上必须启用 Windows Sandbox 功能。即使您只想在 VM 中构建和运行 DFIRWS 工具,也是如此。当您运行 **downloadFiles.ps1** 脚本时,Sandbox 功能用于构建和下载工具。
您可以通过 Windows 中的 **添加或删除 Windows 功能** 来启用 Sandbox 功能,添加 *Windows Sandbox*。另一种方法是以管理员身份打开 Windows 终端并运行:
```
Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online
```
有关 Windows Sandbox 的更多信息,请查看 Microsoft 页面 [Windows Sandbox][wsa]。
4. *GitHub token:* 您还需要一个 GitHub 账户来创建 GitHub token。如果您有 GitHub 账户,可以在 [https://github.com/settings/tokens](https://github.com/settings/tokens) 创建 token。选择 *Generate new token (Fine grained or classic)*。为 token 命名并更改默认过期时间。该 token 不需要任何额外的权限。
请务必将 token 保存在您的密码管理器中,因为您无法再次获取该值。
该 token 是为了避免 GitHub 上的速率限制问题所必需的,因为大多数工具都是从那里下载的,否则您会被阻止,下载也会失败。
5. *MaxMind token(可选):* 如果您想使用 MaxMind 数据,您需要从 [https://www.maxmind.com/en/geolite2/signup](https://www.maxmind.com/en/geolite2/signup) 获取 token。
## 安装和配置
以普通用户身份启动 PowerShell 终端,并使用 `git` 命令从 GitHub 检出代码。
```
git clone https://github.com/reuteras/dfirws.git
cd dfirws
```
通过运行以下命令创建沙箱的配置文件:
```
.\createSandboxConfig.ps1
```
将创建两种不同的沙箱配置:
- dfirws.wsb - 禁用网络
- network_dfirws.wsb - 启用网络
将文件 *config.ps1.template* 复制为 *config.ps1*。
```
cp config.ps1.template config.ps1
```
脚本使用 *config.ps1* 文件来指定 MaxMind 和 GitHub 的 token。如果您不想在 *config.ps1* 文件中保存 GitHub token,可以在运行 **downloadFiles.ps1** 时手动输入。另一种更安全的替代方法是使用您的密码管理器,并输入 cli 命令从密码管理器获取 token。文件 *config.ps1.template* 中提供了 1Password 的示例。
## 下载工具和丰富数据
在使用沙箱或创建 VM 之前,必须下载所有工具并为在 DFIRWS 中使用做好准备。沙箱将被启动以运行和安装 Python、bash、Rust、Node.js 等的软件包。由于 Windows 一次只允许运行一个沙箱,因此在运行 **downloadFiles.ps1** 之前,您必须关闭任何正在运行的沙箱。
通过运行以下命令下载程序并准备使用:
```
.\downloadFiles.ps1
```
可以通过运行以下命令下载丰富数据:
```
.\downloadFiles.ps1 -Enrichment
```
可以使用 freshclam 通过运行以下命令下载 ClamAV 签名:
```
.\downloadFiles.ps1 -Freshclam
```
为了简化工具、丰富数据和 ClamAV 签名的下载,您可以运行以下命令:
```
.\downloadFiles.ps1 -AllTools -Enrichment -Freshclam
```
要进行验证,您可以运行以下命令:
```
.\downloadFiles.ps1 -Verify
```
如果您想缓存 Visual Studio Build Tools 的本地副本,可以运行。**重要提示:Visual Studio Build Tools 下载程序在主机上运行,而不是在沙箱中!**
```
.\downloadFiles.ps1 -VisualStudioBuildTools
```
就我个人而言,我运行以下命令来下载所有内容并缓存 Visual Studio Build Tools:
```
.\downloadFiles.ps1 -AllTools -Enrichment -Freshclam -LogBoost -VisualStudioBuildTools -Verify
```
## 沙箱的使用和配置
### 分发配置文件
DFIRWS 支持分发配置文件来控制下载哪些工具。这对于不需要完整工具套件的独立或外部客户端安装非常有用。
有两个可用的配置文件:
- **Full**(默认)- 下载所有工具,包括所有构建工具链(Node.js、Rust、Go、MSYS2)和大型可选工具。
- **Basic** - 跳过 Rust、Go 和 MSYS2 工具链。保留 Node.js 用于 JavaScript 恶意软件分析。排除大型可选工具,如 Autopsy、ELK Stack、Binary Ninja、Neo4j、hashcat、LibreOffice 等。
要使用配置文件,请将 `-DistributionProfile` 传递给 `downloadFiles.ps1`:
```
.\downloadFiles.ps1 -DistributionProfile Basic
```
对于持久配置,请将 `local\defaults\profile-config.ps1.template` 复制到 `local\profile-config.ps1` 并设置 `$DFIRWS_PROFILE = "Basic"`。您还可以覆盖单个工具链的包含项并添加额外内容(尽管有配置文件设置但仍要包含的大型工具):
```
$DFIRWS_PROFILE = "Basic"
$DFIRWS_EXTRAS = @("Autopsy", "LibreOffice")
```
`-DistributionProfile` CLI 参数优先于配置文件。显式开关(如 `-Rust` 或 `-Node`)始终覆盖配置文件设置。
### 沙箱配置
使用 DFIRWS 最快捷的方法是点击 **dfirws.wsb** 或在 PowerShell 终端中运行 **.\dfirws.wsb** 来启动沙箱。沙箱将启动,几分钟后工具将可用。

您可以使用 **explorer** 中的搜索字段来查找您想使用的工具。请参见下面的示例。

默认情况下,沙箱将关闭剪贴板重定向,并对其他设置使用安全默认值。如果您想启用剪贴板复制和粘贴,应将 `Disable ` 更改为 `Enable `。有关 [Windows Sandbox 配置][wsc] 的更多信息。
要自定义沙箱,您可以将 *local\defaults\config.txt* 复制到 *local\config.txt* 并根据您的喜好更改设置。脚本使用 *local\config.txt* 文件来指定沙箱启动时要安装的工具。每个工具仍将被下载,如果需要,可以稍后在沙箱中安装。
区别在于启动沙箱所需的时间,即每次启动时运行程序的安装程序。
可以使用脚本 **dfirws-install.ps1** 在正在运行的 **dfirws** 沙箱中安装额外的工具。要列出可用的工具,请运行 **Get-Help dfirws-install.ps1**。要安装工具,请运行 **dfirws-install.ps1 -**。
如果您想运行自己的 PowerShell 代码来自定义 **dfirws**,可以将 *local\defaults\customize-sandbox.ps1* 复制到 *local\customize.ps1* 并进行修改。请注意,启动 **dfirws** 时将安装最新版本的 PowerShell,并且该版本将用于运行脚本。目前这是 PowerShell 7.4.x,有些事情与早期版本的 PowerShell 不同。
更多使用信息可在 [文档](https://reuteras.github.io/dfirws/) 中找到。通过点击桌面上的 **dfirws docs** 链接,可以获取文档的本地副本。
## VM 的使用和配置
您可以通过运行 **.\createVM.ps1** 来创建一个安装了 dfirws 工具的 VM。目前仅支持 Windows x64 上的 VMWare Workstation。该脚本将从 Microsoft 下载 Windows 11 Enterprise ISO 并创建一个安装了工具的 VM。VM 将在检出的存储库的根文件夹中创建。
- VM 将创建为 4 核和 16 GB 内存。
- VM 将创建一个 300 GB 的稀疏磁盘(空间未预分配)。
- VM 将创建一个 NAT 网络适配器。
- VM 将创建一个名为 *dfirws* 的用户,密码为 *password*。
您可以通过将 *local\default\variables.pkr.hcl* 复制到 *local\variables.pkr.hcl* 并根据您的喜好修改设置来更改设置。例如,您可以更改 autounattend 的设置以将默认键盘更改为 US(默认为 Swedish)。
目前无法更新 VM 中的工具。您必须删除 VM 并再次运行 **.\createVM.ps1**。
## 更新
通过运行 `git pull` 更新用于创建沙箱的脚本(即此代码),然后通过再次运行 **.\downloadFiles.ps1** 来更新工具。检查 *.\local\defaults\config.txt* 中更改和添加的配置选项。您也可以选择仅更新包含工具的一部分。要更新 Python 工具,请运行:
```
.\downloadFiles.ps1 -Python
```
要查看可用选项,请运行 **Get-Help .\downloadFiles.ps1**。
标签:AI合规, BurpSuite集成, Conpot, DAST, IPv6, Libemu, MITM代理, PB级数据处理, PowerShell, VMware, Windows安全, Windows沙盒, 取证工具集, 可视化界面, 域环境安全, 安全运维, 库, 应急响应, 恶意软件分析, 数字取证, 日志审计, 沙盒环境, 离线环境, 网络安全, 自动化脚本, 逆向工具, 隐私保护