恶意软件分析就像拆弹。目标是拆卸并理解一个旨在造成伤害的程序,而该程序通常会被混淆(例如:加壳)以增加分析的难度。
Incarcero 是一个无需任何用户交互即可创建预配置了恶意分析工具和安全设置的虚拟机(VM)的工具。
此外,此仓库还包含可能是最大的恶意软件源代码集合,以及一个允许从流行在线数据库下载恶意软件样本的模块。
注意: 具有通用名称(如 MD5 值或 smbXXX.tmp)的二进制文件在上传时未被 VirusTotal 检测为恶意软件,但这并不意味着它不是恶意软件样本。欢迎您设置、分析并对本仓库中的任何及所有样本进行逆向工程,如果您确实这样做了,请告知您的调查结果。
dnf install ruby-devel gcc-c++ zlib-devel
vagrant plugin install winrm winrm-fs
apt install vagrant git python3-pip
apt install git python3-pip
pacman -Sy vagrant packer python-pip git
sudo pip3 install git+https://github.com/0x48piraj/incarcero.git#egg=incarcero
注意:从 Windows 10 开始,Hyper-V 始终在操作系统下运行。由于 VT-X 需要由且仅由一个虚拟机监控程序独占运行,这会导致 VirtualBox(以及 incarcero)失败。要禁用 Hyper-V 并允许 VirtualBox 运行,请在管理员命令提示符下执行以下命令,然后重新启动:bcdedit /set hypervisorlaunchtype off。自 Virtualbox 6 版本起,它支持使用 Hyper-V 作为后备执行核心(更新日志)
以下步骤假定您已安装 https://chocolatey.org/[Chocolatey]。否则,请遵循[手动安装流程](#手动)。
安装依赖项:
choco install python vagrant packer git virtualbox
刷新控制台:
refreshenv
安装 incarcero:
pip3 install setuptools
pip3 install -U git+https://github.com/0x48piraj/incarcero.git#egg=incarcero
C:\Windows\System32\pip3 install setuptools
pip3 install -U git+https://github.com/0x48piraj/incarcero.git#egg=incarcero
正常安装后运行此命令:
vagrant plugin install vagrant-aws
注意:AWS 功能目前仅在 Linux 上测试过,并且 EC2 不支持 32 位桌面版 Windows 10。
这会创建您的基础盒子,并将其导入 Vagrant。之后,您可以在每次样本分析中重复使用同一个盒子。
运行:
incarcero build <模板>
您还可以使用以下命令列出所有支持的模板:
incarcero list
这将构建一个可用于恶意软件调查的 Vagrant 盒子,之后您可以将其包含在 Vagrantfile 中。
例如:
incarcero build win10_x64_analyst
配置部分包含有关 incarcero 可配置内容的更多信息。
incarcero spin win10_x64_analyst <名称>
这将创建一个为恶意软件分析准备的 Vagrantfile。将其移动到您选择的目录中,然后运行:
vagrant up
默认情况下,本地目录将在虚拟机中的桌面上共享。可以通过注释 Vagrantfile 的相关部分来更改此设置。
例如:
incarcero spin win7_x86_analyst 20160519.cryptolocker.xyz
incarcero 可以上传虚拟机并与 Amazon Web Services 上的虚拟机交互。为此,请执行以下步骤:
. incarcero 需要一个 AWS 上的 S3 存储桶来上传虚拟机,然后将其转换为 AMI(Amazon 机器映像)。如果您没有,请 立即创建一个。
. 您的实例还需要一个安全组,其中至少有一条规则允许 WinRM 的入站连接(类型:WinRM-HTTP,协议:TCP,端口范围:5985,源:主机的公共 IP)。
. 接下来,您需要配置一个 vmimport 服务角色。
请遵循此指南中名为 VM Import Service Role 的部分。
这些步骤必须由具有 iam:CreateRole 和 iam:PutRolePolicy 权限的账户执行。
. 如果使用默认配置,请将虚拟机监控程序更改为 aws 并填写相关的必填选项。否则,请确保将所有关于 AWS 的选项添加到您的自定义配置中。
. 最后,您可以按照创建盒子和每次分析实例部分中描述的相同步骤来启动您的实例!
注意:AMI 导入可能需要很长时间(大约一个小时),但您可以通过此方法检查任务状态。目前,每个模板只能构建一个 AMI。
使用 pip 安装 awscli:
pip install awscli
通过以下命令配置 awscli:
aws configure
然后运行:
aws ec2 describe-import-image-tasks
要使用 RDP 连接到云上的实例,请在 Vagrantfile 所在位置运行以下命令:
vagrant rdp -- /cert-ignore
为此,实例需要一个允许 RDP 入站连接的安全组(类型:RDP,协议:TCP,端口范围:3389,源:主机的公共 IP)。
注意:由于 rsync 尚未实现,您可以安全地忽略以下错误:No host IP was given to the Vagrant core NFS helper. This is an internal error that should be reported as a bug.
要停止云上的实例,请在 Vagrantfile 所在位置运行以下命令:
vagrant halt
incarcero 的配置文件位于遵循操作系统常规约定的目录中:
~/.config/incarcero/~/Library/Application Support/incarcero/C:\Users\<用户名>\AppData\Local\incarcero\incarcero\文件名为 config.js,并在首次运行时从示例文件复制而来。示例配置带有说明。
incarcero 默认使用 virtualbox 作为后端,但从 0.3.0 版本开始,增加了对 ESXi / vSphere 的支持。ESXi / vSphere 支持所需步骤的说明 可供参考。由于每个人的设置略有不同,如果您遇到问题,请不要犹豫提出 issue,或通过拉取请求改进我们的文档。
我们正在探索“配置文件”的概念,这些配置文件与主配置分开存储,可用于创建文件、修改注册表或安装额外的软件包。请参阅 profile-example.js 查看示例配置。此新功能是实验性的,可能会随着我们的实验而改变。
目前,incarcero 不支持自动创建安全组,因此您必须使用 AWS 控制台创建自己的安全组。但是,使用 Boto3 库,应该可以找到实现此功能的方法。
此仓库仅用于研究目的,使用此代码是您的责任。
对于您选择如何使用此处提供的任何源代码,我不承担任何责任和/或法律责任。通过使用本仓库中的任何文件,您理解您同意自行承担风险。再次强调,此处的所有文件仅供教育和/或研究目的使用。
我不是此处任何代码的作者。此仓库包含在网上泄露(并在多个其他来源中找到)的恶意软件源代码样本,我将其上传到 GitHub 是为了简化那些希望分析代码的人的过程。
与本仓库中所含材料相关的任何行为和/或活动完全由您负责。滥用本仓库中的信息可能会导致对相关人士提起刑事指控。我不会对任何滥用此仓库代码违反法律的人可能面临的刑事指控负责。
此仓库不提倡任何与黑客相关的活动。此仓库中的所有信息仅用于教育目的。
本项目在 malboxes 的帮助下焕发新生。