
Construye máquinas virtuales Windows para análisis de malware para que no tengas que hacerlo.
= 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[Malboxes Logo] endif::[]
ifdef::github[] // logo on github image::https://raw.githubusercontent.com/GoSecure/malboxes/master/docs/logos/main.svg?sanitize=true[Malboxes Logo]
.Estado del proyecto // Travis Build Status image:https://img.shields.io/travis/GoSecure/malboxes/master.svg[Estado de construcción (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::[]
Construye máquinas virtuales Windows para análisis de malware para que no tengas que hacerlo tú.
https://github.com/gosecure/malboxes
== Requisitos
=== Especificaciones mínimas para la máquina de construcción
=== 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
== Instalación
=== Linux/Unix
pip install malboxes:=== Windows
NOTA: A partir de Windows 10, Hyper-V siempre está ejecutándose debajo del sistema operativo.
Dado que VT-X necesita ser operado exclusivamente por un solo hipervisor,
https://github.com/GoSecure/malboxes/issues/39[esto causa que VirtualBox (y malboxes) fallen]. Para deshabilitar Hyper-V y permitir
que VirtualBox se ejecute, ejecuta el siguiente comando en un símbolo del sistema administrativo
y luego reinicia: bcdedit /set hypervisorlaunchtype off
==== Usando Chocolatey
Los siguientes pasos asumen que tienes https://chocolatey.org/[Chocolatey] instalado. De lo contrario, sigue el <<Manualmente,procedimiento de instalación manual>>.
==== Manualmente
C:\Windows\System32\=== Para desplegar en AWS (opcional) Ejecuta este comando después de la instalación normal:
vagrant plugin install vagrant-aws
NOTA: La funcionalidad AWS solo se ha probado en Linux por el momento y EC2 no soporta la versión de escritorio de 32 bits de Windows 10.
== Uso
=== Creación de la caja
Esto crea tu caja base que se importa en Vagrant. Después puedes reutilizar la misma caja varias veces para el análisis de muestras.
Ejecuta:
malboxes build <template>
También puedes listar todas las plantillas soportadas con:
malboxes list
Esto construirá una caja de Vagrant lista para la investigación de malware que luego puedes incluir en un Vagrantfile.
Por ejemplo:
malboxes build win10_x64_analyst
<<_configuration,La sección de configuración>> contiene más información sobre lo que se puede configurar con malboxes.
=== Instancias por análisis
malboxes spin win10_x64_analyst <name>
Esto creará un Vagrantfile preparado para usar en análisis de malware. Muévelo
a un directorio de tu elección y ejecuta:
vagrant up
Por defecto, el directorio local se compartirá en la VM en el Escritorio.
Esto se puede cambiar comentando la parte relevante del Vagrantfile.
Por ejemplo:
malboxes spin win7_x86_analyst 20160519.cryptolocker.xyz
=== Para desplegar en AWS (opcional)
Malboxes puede subir e interactuar con una VM en Amazon Web Services. Para hacerlo, sigue estos pasos:
. Malboxes necesitará un bucket S3 en AWS para subir la VM antes de convertirla a una AMI (Amazon Machine Image). Si no tienes uno, link:https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html[crea uno ahora].
. Tu instancia también requiere un link:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups[grupo de seguridad] con al menos una regla que permita conexiones entrantes para WinRM (Tipo: WinRM-HTTP, Protocolo: TCP, Rango de puertos: 5985, Origen: IP pública del host).
. A continuación, necesitas un rol de servicio vmimport configurado.
Sigue la sección titulada VM Import Service Role de https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html[esta guía].
Estos pasos deben realizarse con una cuenta que tenga permisos iam:CreateRole y iam:PutRolePolicy.
. Si se usa la <<_configuration,configuración por defecto>>, cambia el hipervisor a aws y completa las opciones obligatorias relacionadas. De lo contrario, asegúrate de agregar todas las opciones sobre AWS a tu configuración personalizada.
. Finalmente, puedes seguir los mismos pasos descritos en las secciones <> y <> para lanzar tu instancia.
NOTA: La importación de AMI puede llevar mucho tiempo (aproximadamente una hora), sin embargo puedes verificar el estado de la tarea haciendo <<AMI import status, esto>>. Por el momento, solo se puede construir una AMI por plantilla.
==== Estado de la importación de AMI Instala awscli usando pip:
pip install awscli
link:https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration[Configura] awscli con:
aws configure
Luego ejecuta:
aws ec2 describe-import-image-tasks
==== RDP
Para conectarte a una instancia en la nube usando RDP, ejecuta este comando en la misma ubicación de tu Vagrantfile:
vagrant rdp -- /cert-ignore
Para que esto funcione, la instancia requerirá un grupo de seguridad que permita conexiones entrantes RDP (Tipo: RDP, Protocolo: TCP, Rango de puertos: 3389, Origen: IP pública del host).
NOTA: Puedes ignorar el siguiente error de manera segura porque rsync aún no está implementado: No host IP was given to the Vagrant core NFS helper. This is an internal error that should be reported as a bug.
==== Detener una Instancia
Para detener una instancia en la nube, ejecuta este comando en la misma ubicación de tu Vagrantfile:
vagrant halt
== Configuración
La configuración de Malboxes se encuentra en un directorio que sigue las convenciones habituales del sistema operativo:
~/.config/malboxes/~/Library/Application Support/malboxes/C:\Users\<username>\AppData\Local\malboxes\malboxes\El archivo se llama config.js y se copia de un archivo de ejemplo en la primera ejecución.
link:malboxes/config-example.js[La configuración de ejemplo] está documentada.
=== Soporte ESXi / vSphere
Malboxes usa VirtualBox como backend por defecto, pero desde la versión 0.3.0 se ha agregado soporte para ESXi / vSphere. Notas sobre los link:docs/esx-setup.adoc[pasos requeridos para el soporte ESXi / vSphere están disponibles]. Dado que la configuración de cada persona es un poco diferente, no dudes en abrir un issue si encuentras un problema o mejorar nuestra documentación mediante un pull request.
=== Perfiles
Estamos explorando el concepto de perfiles que se almacenan por separado de la configuración y se pueden usar para crear archivos, modificar el registro o instalar paquetes adicionales. Consulta link:malboxes/profile-example.js[profile-example.js] para un ejemplo de configuración. Esta nueva capacidad es experimental y está sujeta a cambios a medida que experimentamos con ella.
=== Grupos de seguridad de AWS
Actualmente, Malboxes no soporta la creación automática de grupos de seguridad, por lo que tendrás que usar la consola de AWS para crear los tuyos. Sin embargo, usando la biblioteca link:https://boto3.amazonaws.com/v1/documentation/api/latest/index.html[Boto3] debería haber una forma de implementar esto.
== Más información
=== Videos
Video de introducción
image::https://img.youtube.com/vi/oq6N3WLAoe8/0.jpg[link="https://www.youtube.com/watch?v=oq6N3WLAoe8"]
=== Publicaciones en blogs
=== Presentaciones
malboxes fue presentado en https://www.nsec.io/2016/01/applying-devops-principles-for-better-malware-analysis/[NorthSec 2016] en una charla titulada Applying DevOps Principles for Better Malware Analysis impartida por link:{twob}[Olivier Bilodeau] y link:{twhg}[Hugo Genesse]
== Licencia
El código está bajo la licencia GPLv3+, consulta LICENSE para más detalles. La documentación
y el material de presentación están bajo la licencia Creative Commons
Attribution-ShareAlike 4.0, consulta docs/LICENSE para más detalles.
== Créditos
Después de que tuve la idea de un flujo de trabajo mejorado para analistas de malware basado en lo que he estado usando para desarrollo en servidores Linux (Vagrant), rápidamente busqué en Google si alguien ya estaba haciendo algo al respecto.
Encontré el repositorio https://github.com/m-dwyer/packer-malware[packer-malware] en
GitHub de Mark Andrew Dwyer. Malboxes fue iniciado gracias a su trabajo, el cual
me ayudó especialmente en las áreas de los archivos Autounattend.xml.