
Script para crear plantillas para usar con VirtualBox para hacer más difícil la detección de máquinas virtuales.
Un script para ayudarte a crear plantillas que puedes usar con VirtualBox para dificultar la detección de la VM.
Mi primera publicación sobre el tema fue en 2012 y desde entonces se ha actualizado esporádicamente. El formato de blog quizás no fue la mejor manera de publicar la información y algunas personas crearon scripts agradables y "fáciles de aplicar" basados en el contenido.
Como forma de facilitarme la adición de contenido nuevo, he decidido hacer lo mismo.
El propósito de este script es utilizar configuraciones disponibles sin modificar la base de VirtualBox. Hay personas que hacen cosas realmente ingeniosas parcheando VirtualBox. Pero eso está fuera del alcance de este script. Creo que este enfoque tiene sus méritos, ya que (con suerte) no se rompe con cada nueva versión de VirtualBox. Con el tiempo, también he incluido "cosas" que no están directamente relacionadas con la VM, sino más bien cosas que el malware utiliza para identificar instalaciones; espero que no te importe.
El script principal creará los siguientes archivos:
sudo apt install python3-pip libcdio-utils acpica-tools mesa-utils smartmontoolssudo pip3 install -r requirements.txtwget https://download.sysinternals.com/files/VolumeId.zip https://www.nirsoft.net/utils/devmanview-x64.zip (versión x64).hostname > computer.lst, whoami > user.lst. Modifica si deseas usar nombres de máquina y usuarios diferentes para las VM (se recomienda llenar los archivos con una lista larga de nombres de usuario y equipo).sudo python3 antivmdetect.pysudo chmod a+x xxxxx.sh/bin/bash xxxxx.sh nombre-de-tu-maquina-virtualMover el script por lotes (xxxx.ps1) al invitado recién instalado.
Ejecutar el script por lotes dentro del invitado. Recuerda que la mayoría de las configuraciones modificadas se revierten después de cada reinicio. Así que haz que se ejecute al arranque si es necesario.
A partir de la versión 0.1.4, algunas configuraciones aplicadas requerirán un reinicio. Así que ejecuta el script por lotes una vez, el invitado se reiniciará. Luego ejecuta el script una vez más para finalizar la configuración.
Antes de aplicar el script por lotes dentro del invitado, desactiva UAC (se requiere reinicio); de lo contrario, no podrás modificar el registro con el script.
Para usuarios de Windows 10: ejecuta el script PS como administrador (clic derecho en cmd.exe -> ejecutar como administrador, navegar hasta el script PS y ejecutar).
Si se aplica correctamente, una ejecución de Pafish dará como resultado esto (no es necesario modificar VirtualBox).
Ten en cuenta que este script hace otras cosas que no cubre Pafish (por ejemplo, artefactos de W10)

0.1.9:
Compatible con Python3
Primer intento de extraer el disco correcto, ha sido fuente de dolor de cabeza para muchos. (Issue #35 y algunos otros issues antiguos, gracias @oaustin)
Mejorado el manejo de cadenas en el script de shell (Issue #35 y #36 y PR #44, gracias @oaustin, @dashjuvi y @corownik)
Añadido un enlace a un recurso DSDT en línea (Issue #37, gracias @MasterCATZ)
Actualizado el README para aclarar las instrucciones de instalación, gracias @jorants (issue #38)
Verificar si el volcado DSDT se creó realmente, gracias @nov3mb3r (Issue: #42)
Añadido un aviso de licencia, gracias @obilodeau (issue #43)
Limpieza de código: eliminado soporte para discos RAID por falta de acceso a hardware de servidor... y muchas otras pequeñas mejoras
0.1.8:
Mejorado el soporte para Windows 10
Fusionada corrección de marcado de @bryant1410 (PR #14)
Resuelto un problema para personas que usan macOS + VBox/VMWare Fusion para crear las plantillas.
Crear la plantilla desde una máquina virtual no es la mejor manera de todos modos... (issue #12 y posiblemente #15)
0.1.7:
Ahora se soporta Windows 10 (comentarios bienvenidos)
Varios nuevos artefactos "corregidos" para instalaciones W10
Nueva dependencia: mesa-utils
Fusionada corrección de error de @Fullmetal5 (#10)
Varias correcciones de código
Actualizado el readme
0.1.6:
Añadido un pop-up después de la segunda ejecución para aclarar que ya está listo
Añadida una función que lanza algunas instancias de notepad; esta característica se ampliará en versiones futuras
Reelaborada la función RandomDate, gracias a @Antelox por hacerme consciente del problema con la anterior (#8)
Acpidump en versiones antiguas de Ubuntu no soporta el interruptor "-s". Ahora se maneja con un mensaje de error. Gracias a @Antelox por este problema (#7)
Devmanview.exe no se eliminaba después de la segunda ejecución, corregido
0.1.5:
Añadido soporte para asociar y desasociar (deshabilitado por defecto) extensiones de archivo. Referencia: https://www.proofpoint.com/us/threat-insight/post/massive-adgholas-malvertising-campaigns-use-steganography-and-file-whitelisting-to-hide-in-plain-sight
Añadido soporte para un búfer de portapapeles proporcionado por el usuario. Si no está presente, se generará una cadena aleatoria. Llena el archivo con Honeytokens de tu elección
Eliminado el soporte para XP
Convertidas las secciones del script por lotes a PowerShell. Se ha movido más lógica al script invitado; en resumen, hay menos razón para crear/re-generar la plantilla a menudo, ya que más elementos se aleatorizan en el invitado.
Añadida una función que aleatoriza la imagen de fondo del escritorio
Añadida una función que crea documentos de "todo" tipo en el invitado
Añadida una función que crea documentos de "todo" tipo en el invitado y los mueve a la papelera de reciclaje
Aleatorizando el DigitalProductId en dos ubicaciones más:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\DigitalProductId.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\DigitalProductId.
Usar interfaz de paravirtualización: None (verificado con VBox 5.1.4) - La verificación se actualizó para reflejar este cambio. Supongo que este cambio en VBox vino gracias a: TiTi87, ¡gracias!
/Mikael
¡Los comentarios siempre son bienvenidos! =)
0.1.4:
Corregido un error para usuarios de python-dmidecode 3.10.13-3, esto fue todo culpa mía...
Añadida una función que aleatoriza VolumeID (nuevo requisito: VolumeID.exe); esta información es recopilada, por ejemplo, por Rovnix
Añadida una función que aleatoriza el nombre de usuario y el nombre del equipo/hostname (nuevos requisitos: listas de nombres de usuario y nombres de equipo)
Primer intento de añadir información al búfer del portapapeles; la idea (comando) provino de un tweet de @shanselman. Se mejorará en la próxima versión
Actualizado el readme: nuevas dependencias y nuevas características que requieren reinicio
0.1.3:
Copiar y configurar la cadena de la marca de la CPU.
Verificar si hay un dispositivo de audio conectado al invitado. Referencia: http://www.joesecurity.org/reports/report-61f847bcb69d0fe86ad7a4ba3f057be5.html
Verificar la arquitectura del SO frente al binario de DevManView.
Aleatorizando el ProductId en dos ubicaciones más:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\ProductId.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\ProductId.
Purgar la clave de producto de Windows del registro (para evitar que alguien la robe...).
Editar el DigitalProductId (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId) para que coincida con el nuevo ProductId.
0.1.2:
Verificar si se está utilizando la interfaz de paravirtualización Legacy (el uso de la interfaz Legacy mitigará la detección de "cpuid feature").
0.1.1:
Verificar el número de CPU (Menos de 2 == alerta).
Verificar el tamaño de la memoria (Menos de 2 GB == alerta).
Verificar si se está utilizando la IP/rango IP predeterminado para vboxnet0 (puedes ignorar la notificación si no lo usas).
Aleatorizando el ProductId.
Fusionado el PR #3 de r-sierra (¡Gracias por la ayuda!)
Corregido un error en el AcpiCreatorId (¡Gracias a @Nadacsc por reportármelo!).
Corregido un error en el análisis de DmiBIOSReleaseDate.
Corregido un error en DmiBIOSReleaseDate para manejar tanto la variante "predeterminada" mal escrita como la correctamente escrita (¡Gracias a @WanpengQian por reportármelo!).
La inclusión de DevManView no funcionó como se esperaba; debería estar corregido en esta versión.
También soporta controlador SATA (anteriormente solo se modificaban configuraciones IDE)
Actualizado el readme
0.1.0:
Resuelta la detección WMI hecha famosa por HT. Añadido
DevManView.exe (tu elección de arquitectura) a los requisitos previos.
< 0.1.0 No se mantuvo historial de versiones antes de esto, supongo que hay que empezar por algún lado.