stoyky/figment

GitHub: stoyky/figment

基于 Packer 和 Ansible 自动化部署 FlareVM 与 REMnux 恶意软件分析实验室的完整解决方案。

Stars: 13 | Forks: 1


Figment

Figment Logo, adopted from https://github.com/mandiant/flare-vm/blob/main/Images/flarevm-logo.png

使用几条可重复的命令,通过 FlareVM 和 REMnux 快速搭建一个完全配置好的、仅主机模式的恶意软件分析实验室。

功能特性技术栈预构建 Vagrant Boxes快速开始项目结构配置贡献安全更新日志许可证

## 功能特性 - 使用 Packer 一键构建 FlareVM (Windows) 和 REMnux (Linux) 实验室镜像。 - 通过 Ansible 从基础 ISO (FlareVM) 和 OVA/VMX (REMnux) 进行自动化配置。 - FlareVM 和 REMnux 之间的隔离仅主机网络,用于捕获网络流量。 ## 技术栈 - **Packer**: 为 VMware / VirtualBox 构建镜像(取决于您的构建器)。 - **Ansible**: 配置 FlareVM 和 REMnux(软件包、工具、安装后配置)。 - **Hypervisors**: 支持 VMware Workstation 和 VirtualBox。 - **Vagrant**: 可选择在使用 Packer 配置后构建 Vagrant boxes。 ## 指南 请参阅下面三种不同的方法来启动和运行此项目。有关如何设置此项目的更详细指南,请参阅我的博客: https://www.remyjaspers.com/blog/figment/ ## 直接导入 如果您不想安装 Vagrant,可以直接从下面的链接下载相应的 VM box 文件,并将其导入到您的 Hypervisor 中: https://portal.cloud.hashicorp.com/vagrant/discover/figment/ 这些 box 文件只是压缩的 OVF/VMX 文件和磁盘 VMDK 文件。 - 下载您希望导入的 box 文件 - 解压下载的文件两次 - 您将得到两个文件夹,一个包含元数据 (OVF/VMX),另一个包含磁盘文件 (VMDK) - 将磁盘 VMDK 文件复制到包含元数据 (OVF/VMX) 的文件夹中 - 在您的 Hypervisor 中导入 OVF 或 VMX 文件,即可开始使用 ## 使用 Vagrant 最快的开始方法是使用已上传到 Hashicorp Public Boxes Catalog 的预构建 Vagrant boxes: https://portal.cloud.hashicorp.com/vagrant/discover/figment/ 要运行这些 boxes,请按照以下步骤操作: - 安装 Vagrant: https://developer.hashicorp.com/vagrant/install - (VMWare) 安装 VMWare 插件 `vagrant plugin install vagrant-vmware-desktop` - (VMWare) 安装 VMWare Utility: https://developer.hashicorp.com/vagrant/install/vmware - 克隆仓库 `git clone https://github.com/stoyky/figment.git` - 导航到 vagrant 文件夹 `cd figment/vagrant/` - 运行 `vagrant up --provider= --provision` - 禁用 NAT 并测试网络(见下方快速开始第 8 步)。 - 不要忘记禁用共享文件夹,并在运行 VM 后拍摄基础快照。 注意:Vagrant boxes 预构建时使用了 IP 地址 192.168.56.20 (FlareVM) 和 192.168.56.10 (REMnux)。请确保将您的 Hypervisor 配置为具有范围 192.168.56.0/24 的仅主机网络。(Virtualbox) 确保您的仅主机网络命名为 vboxnet0。 ## 使用 Packer + Ansible 模板进行自定义 如果您想自定义生成的 VM / Vagrant boxes,请按照以下步骤操作: 1. **前置条件** - 一个正常工作的 Packer 安装 (>= 1.7) - https://developer.hashicorp.com/packer/install - VMware Workstation / Fusion 或 VirtualBox - https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion - https://www.virtualbox.org/wiki/Downloads - 一个正常工作的 OVFtool 安装 (仅限 REMnux) - https://developer.broadcom.com/tools/open-virtualization-format-ovf-tool/latest - REMnux OVA: - https://download.remnux.org/202601/remnux-noble-amd64.ova - https://download.remnux.org/202601/remnux-noble-amd64-virtualbox.ova - 用于 FlareVM 的 Windows 10 en-US 或 Windows 11 en-US (24H2) ISO: - https://www.microsoft.com/en-us/software-download/windows10ISO - https://archive.org/details/windows-11-24h2-iso_202501 2. **克隆仓库** git clone https://github.com/stoyky/figment.git cd figment 3. **创建 Python venv 并安装依赖** python -m venv .venv source .venv/bin/activate pip install -r requirements.txt 4. **下载 REMnux OVA 和 FlareVM Windows 10 ISO** 将 OVA 和 ISO 放在根目录的 **assets/remnux** 和 **assets/flarevm** 文件夹中。 5. **编辑配置** VM 的配置文件可在以下位置找到:(有关更多信息,请参阅 **配置**)。 对于常规 packer 构建设置: - packer/flarevm/flarevm.pkrvars.hcl - packer/remnux/remnux.pkrvars.hcl FlareVM: - ansible/roles/flarevm/files/custom-config-xml - 调整此文件以更改您希望安装的 FlareVM 工具。 6. **构建镜像** - 为确保干净的构建: make clean - 构建 FlareVM: make flarevm- - 构建 REMnux: make remnux- - 或者构建所有(例如通过 Makefile 目标): make all- 7. **禁用 NAT 和共享文件夹** - 在 Hypervisor 或操作系统中禁用或删除您的 NAT 适配器,以确保适当的隔离。 - FlareVM (提升的 Powershell 提示符): Disable-NetAdapter -Name "nat" - REMnux: sudo ip link set ens33 down - 务必在 Hypervisor 中为这两个 VM 禁用共享文件夹! 8. **测试网络** - REMnux: 1. 确保 NAT 已禁用(见上一步) 2. 启动 INetSim `inetsim` 3. 启动 FakeDNS `sudo python3 /opt/fakedns/bin/fakedns.py` - FlareVM: 1. 确保 NAT 已禁用(见上一步) 2. 运行 `nslookup` 以检查您的 DNS 是否返回正确的 IP。 3. 浏览任何网站以检查请求是否被 INetSim / FakeDNS 拦截。 ## 项目结构 ``` . ├── ansible # Ansible playbooks │ ├── playbooks │ │ ├── flarevm.yml │ │ └── remnux.yml │ └── roles │ ├── flarevm │ │ ├── files │ │ │ └── custom-config.xml │ │ ├── tasks │ │ │ └── main.yml │ │ └── vars │ │ └── main.yml │ └── remnux │ └── tasks │ └── main.yml ├── assets │ ├── flarevm | ├── remnux │ ├── README.md ├── packer │ ├── flarevm │ │ ├── flarevm.pkr.hcl │ │ ├── flarevm.pkrvars.hcl │ │ ├── autounattend │ │ │ └── autounattend.xml │ │ ├── scripts │ │ │ └── enable-ssh.ps1 │ │ ├── Vagrantfile │ └── remnux │ ├── remnux.pkr.hcl │ ├── remnux.pkrvars.hcl │ ├── Vagrantfile ├── vagrant │ ├── flarevm │ │ ├── Vagrantfile │ └── remnux │ ├── Vagrantfile ├── Makefile ├── requirements.txt ├── README.md ├── LICENSE.md ``` - `packer/flarevm`: FlareVM 的 Packer 模板和 Ansible 配置。 - `packer/remnux`: 基于上游 OVA/VMX 的 REMnux 的 Packer 模板和 Ansible 配置。 - `ansible/`: Packer 构建期间使用的共享角色和清单。 - `vagrant/`: 用于启动 Vagrant boxes 的 Vagrantfiles。 - `Makefile`: 用于选择性构建和实验室生命周期的可选命令快捷方式。 ## 配置 您可以通过 `.pkrvars.hcl` 和 Vagrant 变量调整镜像设置、网络参数和凭据。 ### Packer 变量 每个镜像都有自己的 `*.pkr.hcl` 和 `*.pkrvars.hcl`,其中包含如下变量: - `iso_url`, `iso_sha256` 用于 Windows / FlareVM 基础镜像。 - `source_path` 用于转换后的 REMnux VMX。 - `user`, `password` / `ssh_username`, `ssh_password` 用于通信器。 - `cpus`, `memory`, `disk_size` 每个 VM。 - `hostonly_ip`, `default_gateway`, `dns_ip` 用于配置实验室网络(例如 `192.168.56.x`)。根据您在 VMWare / Virtualbox 中的仅主机网络设置选择这些设置。 示例 `flarevm.pkrvars.hcl` (简化版): ``` iso_url = "iso/Win10_22H2_English_x64v1.iso" iso_sha256 = "SHA256:..." user = "admin" password = "password" vm_name = "flarevm" cpus = 4 memory = 8192 disk_size = 60000 hostonly_ip = "192.168.56.20" default_gateway = "192.168.56.10" dns_ip = "192.168.56.10" ``` 示例 `remnux.auto.pkrvars.hcl` (简化版): ``` source_path = "temp/remnux/remnux.vmx" display_name = "remnux" ssh_username = "remnux" ssh_password = "malware" hostonly_ip = "192.168.56.10" ``` ### 网络拓扑 实验室运行分为两个网络阶段: - **构建时**: 启用互联网 (NAT/桥接),以便 Packer + Ansible 可以下载工具 (FlareVM 工具, REMnux 软件包等)。 - **实验室时**: 禁用 NAT 并启用仅主机网络,其中 FlareVM 和 REMnux 共享一个私有子网,并且只能相互通信。 ## 安全 此项目明确用于恶意软件分析,应仅在隔离的、受控的环境中使用。*切勿将这些 VM 直接暴露于生产网络。* 请检查 VM 的网络设置,并确保在分析样本时禁用 NAT / 互联网访问 / 共享文件夹。 ## 更新日志 * v1.0.0 - 初始发布 * v1.0.1 - (FlareVM) 调整了 autounattend 以也适用于 Windows 11 ## 致谢 - [FlareVM](https://github.com/mandiant/flare-vm) - FlareVM 安装脚本 - [REMnux](https://remnux.org/) - 即用型 OVA 镜像 - [Packer](https://developer.hashicorp.com/packer) - 构建镜像 - [Vagrant](https://developer.hashicorp.com/vagrant) - 构建 Vagrant boxes - [Ansible](https://docs.ansible.com/) - 镜像配置 - [C. Schneegans Autounattend Generator](https://github.com/cschneegans/unattend-generator) - Windows 10/11 Autounattend 文件生成器 ## 许可证 本项目采用 MIT 许可证授权。有关详细信息,请参阅 `LICENSE.md` 文件。
标签:AI合规, Ansible, DAST, DevSecOps, FlareVM, HashiCorp, HTTP工具, IP 地址批量处理, Linux 安全, Mr. Robot, Packer, Python3.6, REMnux, RFI远程文件包含, Vagrant, Windows 安全, 上游代理, 云资产清单, 后渗透, 基础架构即代码, 威胁情报, 开发者工具, 恶意软件分析, 无线安全, 沙箱环境, 漏洞分析, 环境部署, 生成式AI安全, 系统提示词, 网络安全, 网络安全审计, 网络流量分析, 自动化实验室, 虚拟化, 虚拟机, 路径探测, 逆向工具, 逆向工程, 配置修复, 隐私保护