
Cria VMs Windows de análise de malware para que você não precise.
= Malboxes :toc: preamble :toclevels: 2 :twob: https://twitter.com/obilodeau :twhg: https://twitter.com/hugospns // github stuff ifdef::env-github[:github:]
ifndef::github[] // local logo image::docs/logos/main.svg[Logo do Malboxes] endif::[]
ifdef::github[] // logo on github image::https://raw.githubusercontent.com/GoSecure/malboxes/master/docs/logos/main.svg?sanitize=true[Logo do Malboxes]
.Saúde do projeto // Travis Build Status image:https://img.shields.io/travis/GoSecure/malboxes/master.svg[Build Status (Travis CI), link=https://travis-ci.org/GoSecure/malboxes] // BlackHat Arsenal 2017 image:https://raw.githubusercontent.com/toolswatch/badges/master/arsenal/usa/2017.svg?sanitize=true[Black Hat Arsenal, link=https://www.toolswatch.org/2017/06/the-black-hat-arsenal-usa-2017-phenomenal-line-up-announced/] // Gitter Chat image:https://badges.gitter.im/malboxes_/Lobby.svg[link="https://gitter.im/malboxes_/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"] endif::[]
Constrói máquinas virtuais Windows para análise de malware para que você não precise.
https://github.com/gosecure/malboxes
== Requisitos
=== Especificações mínimas para a máquina de build
=== Fedora
dnf install ruby-devel gcc-c++ zlib-devel
vagrant plugin install winrm winrm-fs
=== Debian
apt install vagrant git python3-pip
=== Ubuntu
apt install git python3-pip
=== ArchLinux
pacman -Sy vagrant packer python-pip git
== Instalação
=== Linux/Unix
pip install malboxes:=== Windows
NOTE: A partir do Windows 10, o Hyper-V está sempre rodando abaixo do sistema operacional. Como o VT-X precisa ser operado exclusivamente por apenas um hipervisor, https://github.com/GoSecure/malboxes/issues/39[isso faz com que o VirtualBox (e o malboxes) falhem]. Para desabilitar o Hyper-V e permitir que o VirtualBox execute, execute o seguinte comando em um prompt de comando administrativo e reinicie: bcdedit /set hypervisorlaunchtype off
==== Usando Chocolatey
As etapas a seguir assumem que você tem o https://chocolatey.org/[Chocolatey] instalado. Caso contrário, siga o <<Manualmente,procedimento de instalação manual>>.
==== Manualmente
C:\Windows\System32\=== Para implantar na AWS (opcional) Execute este comando após a instalação normal:
vagrant plugin install vagrant-aws
NOTE: O recurso AWS foi testado apenas no Linux por enquanto e o EC2 não suporta a versão desktop de 32 bits do Windows 10.
== Uso
=== Criação da box
Isso cria sua box base que é importada no Vagrant. Depois, você pode reutilizar a mesma box várias vezes por análise de amostra.
Execute:
malboxes build <template>
Você também pode listar todos os templates suportados com:
malboxes list
Isso construirá uma box Vagrant pronta para investigação de malware que você pode incluir em um Vagrantfile posteriormente.
Por exemplo:
malboxes build win10_x64_analyst
<<_configuration,A seção de configuração>> contém mais informações sobre o que pode ser configurado com malboxes.
=== Instâncias por análise
malboxes spin win10_x64_analyst <name>
Isso criará um Vagrantfile preparado para uso em análise de malware. Mova-o para um diretório de sua escolha e execute:
vagrant up
Por padrão, o diretório local será compartilhado na VM na Área de Trabalho. Isso pode ser alterado comentando a parte relevante do Vagrantfile.
Por exemplo:
malboxes spin win7_x86_analyst 20160519.cryptolocker.xyz
=== Para implantar na AWS (opcional)
O Malboxes pode fazer upload e interagir com uma VM nos serviços da Amazon Web. Para isso, siga estas etapas:
. O Malboxes precisará de um bucket S3 na AWS para fazer upload da VM antes de convertê-la em uma AMI (Amazon Machine Image). Se você não tiver um, link:https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html[crie um agora.]
. Sua instância também requer um link:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups[grupo de segurança] com pelo menos uma regra permitindo conexões de entrada para WinRM (Tipo: WinRM-HTTP, Protocolo: TCP, Faixa de Porta: 5985, Origem: IP público do host).
. Em seguida, você precisa de uma função de serviço vmimport configurada.
Siga a seção chamada VM Import Service Role de https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html[este guia].
Essas etapas devem ser realizadas com uma conta que tenha permissões iam:CreateRole e iam:PutRolePolicy.
. Se a <<_configuration,configuração padrão>> for usada, altere o hipervisor para aws e preencha as opções obrigatórias relacionadas. Caso contrário, certifique-se de adicionar todas as opções sobre AWS à sua configuração personalizada.
. Finalmente, você pode seguir os mesmos passos descritos nas seções <<Criação da box>> e <<Instâncias por análise>> para iniciar sua instância!
NOTE: A importação da AMI pode demorar muito tempo (cerca de uma hora), no entanto você pode verificar o status da tarefa fazendo <<Status da importação AMI, isto>>. No momento, apenas uma AMI pode ser construída por template.
==== Status da importação AMI Instale awscli usando pip:
pip install awscli
link:https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration[Configure] o awscli com:
aws configure
Então execute:
aws ec2 describe-import-image-tasks
==== RDP
Para conectar a uma instância na nuvem usando RDP, execute este comando no mesmo local do seu Vagrantfile:
vagrant rdp -- /cert-ignore
Para que isso funcione, a instância precisará de um grupo de segurança permitindo conexões de entrada RDP (Tipo: RDP, Protocolo: TCP, Faixa de Porta: 3389, Origem: IP público do host).
NOTE: Você pode ignorar o seguinte erro com segurança, pois o rsync ainda não foi implementado: No host IP was given to the Vagrant core NFS helper. This is an internal error that should be reported as a bug.
==== Parando uma Instância
Para parar uma instância na nuvem, execute este comando no mesmo local do seu Vagrantfile:
vagrant halt
== Configuração
A configuração do Malboxes está localizada em um diretório que segue as convenções usuais do sistema operacional:
~/.config/malboxes/~/Library/Application Support/malboxes/C:\Users\<username>\AppData\Local\malboxes\malboxes\O arquivo se chama config.js e é copiado de um arquivo de exemplo na primeira execução.
link:malboxes/config-example.js[A configuração de exemplo] está documentada.
=== Suporte a ESXi / vSphere
O Malboxes usa virtualbox como back-end por padrão, mas desde a versão 0.3.0 foi adicionado suporte a ESXi / vSphere. Notas sobre as link:docs/esx-setup.adoc[etapas necessárias para suporte a ESXi / vSphere estão disponíveis]. Como a configuração de cada um é um pouco diferente, não hesite em abrir uma issue se encontrar um problema ou melhorar nossa documentação através de um pull request.
=== Perfis
Estamos explorando o conceito de perfis que são armazenados separadamente da configuração e podem ser usados para criar arquivos, alterar o registro ou instalar pacotes adicionais. Veja link:malboxes/profile-example.js[profile-example.js] para um exemplo de configuração. Esta nova capacidade é experimental e está sujeita a alterações enquanto a experimentamos.
=== Grupos de segurança AWS
Atualmente, o Malboxes não suporta a criação automática dos grupos de segurança, então você terá que usar o console AWS para criar os seus. No entanto, usando a biblioteca link:https://boto3.amazonaws.com/v1/documentation/api/latest/index.html[Boto3], deve haver uma maneira de implementar isso.
== Mais informações
=== Vídeos
Vídeo introdutório
image::https://img.youtube.com/vi/oq6N3WLAoe8/0.jpg[link="https://www.youtube.com/watch?v=oq6N3WLAoe8"]
=== Postagens no blog
=== Apresentações
malboxes foi apresentado na https://www.nsec.io/2016/01/applying-devops-principles-for-better-malware-analysis/[NorthSec 2016] em uma palestra intitulada Applying DevOps Principles for Better Malware Analysis apresentada por link:{twob}[Olivier Bilodeau] e link:{twhg}[Hugo Genesse]
== Licença
O código é licenciado sob a GPLv3+, veja LICENSE para detalhes. A documentação
e o material de apresentação são licenciados sob a Creative Commons
Atribuição-CompartilhaIgual 4.0, veja docs/LICENSE para detalhes.
== Créditos
Depois que tive a ideia de um fluxo de trabalho melhorado para analistas de malware baseado no que venho usando para desenvolvimento em servidores Linux (Vagrant), rapidamente pesquisei no Google se alguém já estava fazendo algo nesse sentido.
Encontrei o repositório https://github.com/m-dwyer/packer-malware[packer-malware] no github por Mark Andrew Dwyer. O Malboxes foi inicializado graças ao seu trabalho, que me ajudou especialmente nas áreas de arquivos Autounattend.xml.