Banner 1

Mostrando entradas con la etiqueta virtuales. Mostrar todas las entradas
Mostrando entradas con la etiqueta virtuales. Mostrar todas las entradas

Evadiendo la autenticación en máquinas virtuales con VMInjector

0 comentarios
Con VMInjector podremos saltar la autenticación en la mayoría de los Sistemas Operativos virtualizados con VMware Workstation y VMware Player.
Gracias a a esto podremos recuperar el control de una máquina virtualizada la contraseña de la cual hayamos perdido o bien ser usado en tests de intrusión en un eventual escenario donde se haya conseguido acceso completo al sistema operativo principal y se quiera acceder a la información contenida en las máquinas virtuales.
vmware-workstation-logo

¿Qué es y cómo funciona VMInjector?

VMInjector es un script escrito en Python por Marco Batista con licencia GPLv3 cuya misión es la de hacer un bypass del login de nuestro Sistema Operativo virtualizado mediante la inyección de una DLL (vminjector32.dll o vminjector64.dll) en un proceso de VMware.

VMware maneja todos los recursos de las máquinas virtuales, incluido la memoria RAM. Al inyectar la DLL en el proceso de VMware correspondiente a la máquina virtual esta consigue acceso a todos los recursos de esta, pudiendo manipular su RAM y parcheando la función que se encarga de la autenticación, permitiendo así conseguir acceso sin credenciales en el Sistema Operativo virtual.

Acceder a un Sistema Operativo virtual sin contraseña

Para usar VMInjector necesitaremos cumplir los siguientes requisitos:
  • Una máquina principal con Sistema Operativo Windows y permisos de administrador en el mismo.
  • Python  y psutil  instalados.
  • VMware Workstation o VMware Player instalado.
  • Una máquina virtual a la que no podamos acceder por falta de creden
    ciales.
Con todos los requerimientos previos cumplidos descargamos VMInjector y lo descomprimimos donde nos plazca.

Antes de ejecutar el script debemos arrancar la máquina virtual y dejarla a la espera de usuario y contraseña. Ejecutamos un terminal (importante que sea con permisos de administrador o nos encontraremos con un bonito: “IndexError: list index out of range”), nos dirigimos al directorio previamente descomprimido y ejecutamos el script “vminject.py”.

Captura de pantalla de VMInjector 1

El script nos preguntará por el proceso concreto al que le queremos inyectar la DLL. Seleccionamos el proceso correspondiente a la máquina virtual en cuestión y pulsamos Enter.

Captura de pantalla de VMInjector 2

Seleccionaremos la versión del Sistema Operativo virtualizado y pulsamos Enter. Si nos muestra un mensaje diciendo: “Found Signature Match” querrá decir que hemos indicado correctamente la versión del Sistema Operativo y que podemos continuar correctamente.

Al volver a pulsar Enter nos encontraremos con una pantalla parecida a esta:

Captura de pantalla de VMInjector 3

Una vez realizado este proceso nos dirigimos a nuestro VMware y en la prueba realizada, con un sistema guest Windows 7, con tan solo pulsar Enter en el campo de password, directamente saltaremos al Escritorio del usuario deseado sin la necesidad de haber introducido clave alguna y permitiéndonos recuperar el control de esta.

La inyección no es permanente, al reiniciar la máquina virtual dicho proceso dejará de tener efecto a no ser que se vuelva a ejecutar el script.

Visto en hackplayers.com.

Fuente: 
http://sobrebits.com/evadiendo-la-autenticacion-en-maquinas-virtuales-con-vminjector/

Links:
www.hackplayers.com/2013/02/vminjector-evadir-autenticacion-maquinas-virtuales.html

Detectar Máquinas Virtuales desde el registro de Windows

0 comentarios
En el transcurso de una revisión de seguridad resulta muy útil descubrir si se está analizando un equipo físico o una máquina virtual ya sea de VmWare, VirtualBox, QEMU o de Windows Virtual PC ya que las pruebas a realizar varían sensiblemente si se trata de una máquina virtual y es necesario tener presente que hay que revisar el sistema que hace de anfitrión para comprobar su nivel de seguridad o si es posible comprometer otras equipos con hardware virtual presentes en dicho servidor host. También, sobre todo para los desarrolladores de malware y virus, es diferente el comportamiento de los bichos si se detecta que se está ante un equipo con hardware físico o en una Sandbox, lo que puede indicar que se trata de un entorno aislado de laboratorio donde se está analizando y destripando el comportamiento de dicho código malicioso.

Aunque existen técnicas para ofuscar y ocultar los indicios más evidentes de una máquina virtual, el registro de Windows resulta de gran ayuda para reconocer fácilmente si se trata de un sistema físico o una máquina con el hardware virtualizado. El registro de Windows es una base de datos jerárquica que almacena los ajustes de configuración y opciones en los sistemas operativos Microsoft Windows. Contiene la configuración de todos los componentes de bajo nivel del sistema operativo, así como de las aplicaciones que se han instalado en la plataforma y la configuración del hardware que está disponible en el equipo como el disco duro, memoria RAM, tarjeta gráfica, etc.

Cualquier máquina virtual, al igual que un equipo real, dispone de disco duro, BIOS, tarjeta de red, tarjeta gráfica, etc que, permiten su identificación.

En un sistema Microsoft Windows es posible ejecutar el comando "reg query" y consultar el valor de determinadas claves del registro para comprobar e identificar equipos virtuales. Las claves de registro más significativas que permiten reconocer VMs son:

HKEY_LOCAL_MACHINE\System\CurrenControlSet\Services\Disk\Enum\0: esta clave de registro del tipo "valor de cadena" que guarda las características de todas las unidades de disco presentes en el equipo.
HKLM\Hardware\Description\System\BIOS: esta clave almacena los detalles de la BIOS del sistema, fabricante, versión, fecha de actualización, etc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI: aquí se localizan todos los dispositivos PCI de que dispone el sistema, es decir, la tarjeta gráfica, la tarjeta de red, etc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_10DE&DEV_0DF4&SUBSYS_15F21043&REV_A1: es la clave de registro que contiene los datos e información referente a la tarjeta gráfica con el chipset nvidia, como, por ejemplo, una GeForce, etc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_5333&DEV_8811&SUBSYS_00000000&REV_00: para tarjetas gráficas del tipo S3 Trio.

Por ejemplo, consultando el valor de la clave para identificar el disco duro "\Enum\0" se obtienen los respectivos resultados para un equipo con Windows 7 bajo VirtualBox, otro con hardware real y Windows 7 y un sistema bajo VmWare con Windows XP:
c:\Hacktimes>reg query HKLM\System\CurrentControlSet\Services\Disk\Enum /v 0

0 REG_SZ IDE\DiskVBOX_HARDDISK_____________1.0_____\5&33d1638a&0&0.0.0
0 REG_SZ IDE\DiskHitachi_HTS547550A9E384_________JE3OA60A\5&875ff02&0&0.0.0
0 REG_SZ SCSI\Disk&Ven_VMware_&Prod_VMware_Virtual_S&Rev_1.0\4&5fcaafc&0&000



Fig 1. Captura del registro de Windows con la clave "\Enum\0" de un equipo físico
El Valor de las claves para ver la BIOS de un equipo real es:
C:\hacktimes>reg query HKLM\Hardware\Description\System\BIOS

HKEY_LOCAL_MACHINE\Hardware\Description\System\BIOS
BiosMajorRelease REG_DWORD 0x4
BiosMinorRelease REG_DWORD 0x6
ECFirmwareMajorRelease REG_DWORD 0xff
ECFirmwareMinorRelease REG_DWORD 0xff
BaseBoardManufacturer REG_SZ ASUSTeK Computer Inc.
BaseBoardProduct REG_SZ K53SV
BaseBoardVersion REG_SZ 1.0
BIOSReleaseDate REG_SZ 12/30/2011
BIOSVendor REG_SZ American Megatrends Inc.
BIOSVersion REG_SZ K53SV.324
SystemFamily REG_SZ K
SystemManufacturer REG_SZ ASUSTeK Computer Inc.
SystemProductName REG_SZ K53SV
SystemSKU REG_SZ To be filled by O.E.M.
SystemVersion REG_SZ 1.0

Otra forma de identificar una máquina virtual es buscando drivers específicos como, por ejemplo, el driver para el ratón de VmWare ("C:\Windows\System32\drivers\vmmouse.sys") o, incluso, mediante la dirección MAC de la tarjeta de red. Si bien es relativamente sencillo falsear y modificar la MAC Address de un equipo, se puede utilizar como una comprobación adicional y complementaria al resto de verificaciones anteriores del registro de Windows. Cada tarjeta de red permite identificar al fabricante mediante los tres primeros bytes de la dirección. Los fabricantes virtuales también tienen sus propios identificadores como, por ejemplo:
00:50:56 para Vmware
08:00:20 para Oracle Corporation (VirtualBox)
00:03:ff para Microsoft Corporation (Windows Virtual PC / Connectix)
etc.

Por ejemplo, la configuración de la tarjeta de red en un equipo instalado bajo VirtualBox es:
C:\hacktimes>ipconfig /all

Configuración IP de Windows
Host Name . . . . . . . . . . . . : hacktimes_w7
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . :
Adaptador de Ethernet Conexión de área local:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Adaptador de escritorio Intel (R) PRO/1000 MT
Physical Address. . . . . . . . . : 08-00-20-53-21-79

También se puede utilizar la aplicación PAFISH de Alberto Ortega (https://github.com/a0rtega/pafish) que directamente consulta las diferentes claves del registro de Windows que anteriormente se enumeraban y que permite reconocer fácilmente equipos con VirtualBox o VmWare:

Fig 2. Captura de pantalla de la ejecución de PAFISH en un Windows 7 virtualizado con VmWare
PAFISH genera además un archivo .log con las evidencias que ha encontrado y el resultado de las consultas a las claves del registro que demuestran que se trata de una máquina virtual.

Para evitar la detección de un equipo virtualizado, lo primero es no instalar las "VmWare Tools" de VmWare o su equivalente en VirtualBox "Guest Addition" que, aunque mejoran el rendimiento de la VM, incluyen multitud de pistas en el Sistema Operativo huésped que hacen que se pueda detectar más fácilmente el hardware virtual. Tambien se puede editar el fichero ".vmx" que incluye la configuración de la máquina virtual e información relativa al tamaño del disco duro virtual, los dispositivos conectados, los datos de la tarjeta de red, etc. Es preciso añadir al archivo ".vmx" lo siguiente:
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"

Más información en:

http://www.coffer.com/mac_find: buscador para identificar la dirección MAC de una tarjeta de red con el fabricante correspondiente.

http://www.hacktimes.com/introducci_n_al_an_lisis_forense_en_vmware: Introducción al análisis forense en VmWare.

Fuente: http://www.hacktimes.com/detect_VMs/

VMware ESXi, máquinas virtuales y obtención de evidencias

0 comentarios
Debido al auge de la virtualización es altamente probable que tarde o temprano una investigación forense tenga como sujeto objeto de análisis un sistema virtualizado. Y dado que actualmente VMware se lleva la palma en cuanto a implantación en el mercado empresarial es más que posible que el sistema virtualizado se ejecute sobre un hipervisor de dicha compañía. Pues bién, lo que viene a continuación son mis experiencias ante una situación hipotética como la que planteo: la adquisición de evidencias procedentes de máquinas virtuales ejecutándose en servidores ESXi. A lo largo de las siguientes líneas desarrollaré la configuración del escenario y todas las pruebas/aciertos/errores por los que he pasado hasta que, a mi juicio como lego en la materia, he dado con una metodología personal que considero bastante aceptable.

Sobra decir que no me hago responsable de los problemas que pueda ocasionar aceptar todo lo que detallo sin probar siquiera antes en un laboratorio las características concretas de cada escenario. Nótese, por otra parte, que el artículo no contempla la utilización de mapeo de discos físicos para ser utilizados por las máquinas virtuales como espacio de almacenamiento. Una vez establecida mi exención de responsabilidades y antes de continuar, al cesar lo que es del cesar, y por ello incluyo aquí las dos principales fuentes que he utilizado como referencia:

Ghost in the Machine - Forensic Evidence Collection in the Virtual Environment
How To - Digital Forensics Copying A VMware VMDK

Puedes simplemente leerlas y descartar el resto del artículo, o seguir leyendo y entretenerte tanto como me he divertido yo con la preparación del mismo, además de encontrar algunas alternativas que no se incluyen en ninguno de los enlaces anteriores y que creo pueden facilitarnos mucho la vida. Voy a intentar describir paso a paso todo el proceso, aunque en ocasiones esta descripción no sea muy exhaustiva; no obstante si tienes alguna duda y te interesa reproducirlo no tienes más que indicármelo y trataré de echarte una mano. Ahora, sin más preámbulos, vamos al lío :-)

VMware vSphere

Seguro que todos conocemos y/o hemos utilizado en alguna ocasión los hipervisores de nivel 2 o de "andar por casa". Estos no son más, ni tampoco menos, que aplicaciones que se ejecutan sobre el sistema operativo permitiendo correr diferentes maquinas virtuales. Algunos ejemplos: VMware Player, VMware Workstation, Oracle VM VirtualBox, qemu, etc.

Luego están los hipervisores "más serios", los de nivel 1, que son aquellos que se ejecutan directamente "sobre el metal", compuesto por el hardware del equipo, y que ofrecen mayores prestaciones como para ser tenidos en cuenta en entornos empresariales. El buque insignia de VMware es vSphere, cuyo hipervisor en versión free es totalmente funcional, solo que no ofrece muchas de las características más avanzadas. Pues bién, esta última es la versión que he utilizado para las pruebas, montado sobre un equipo con una única tarjeta de red debido a las restricciones en cuanto a compatibilidad de hardware de la criatura.

Una vez instalado ESXi 5.1.0 (vídeo detallado del proceso), configurados los parámetros de red (dirección IP estática 192.168.1.3) e introducida la licencia gratuita con la correspondiente merma de características respecto de la versión trial viene la configuración básica, entendiendo por tal:

  1. Instalación del cliente vSphere en el equipo del analista (o sea, mi equipo).
  2. Configuración de la sincronización horaria en el ESXi mediante el cliente vSphere (detalle del proceso).
  3. Habilitar el acceso remoto mediante SSH (detalle del proceso).

Ahora llegaría el momento de instalar la máquina virtual (en mi caso un Windows XP SP3) que supuestamente habría sido comprometida y por tanto sería objeto de análisis. No detallaré el proceso, tampoco he encontrado ningún enlace adecuado, pero básicamente bastaría con seleccionar el servidor ESXi en el cliente vSphere y seguir el asistente iniciado mediante la opción "Create a new virtual machine".

Congelando el estado del sistema

Una vez preparado el entorno de pruebas llega el momento de obtener las evidencias del sistema comprometido. El escenario más simple sería como el de mi laboratorio, donde sólo tenemos una máquina virtual ejecutándose sobre un servidor ESXi con un storage local. Pero desde luego ésto dista mucho de la realidad, donde lo normal sería encontrarnos decenas e incluso cientos de sistemas ejecutándose sobre el mismo hipervisor o un cluster de hipervisores con un almacenamiento gigantesco en una o varias SANs y con unas necesidades de alta disponibilidad críticas. ¿Qué hacer en estos casos?

Si nos olvidamos de que se trata de máquinas virtuales sabemos que tendremos que obtener al menos una copia del disco duro y otra de la memoria RAM del sistema comprometido, y para incidir lo menos posible en la ejecución del sistema objetivo y recordando nuevamente que se trata de máquinas virtuales, tenemos la opción de generar un snapshot. Un snapshot es básicamente una imagen estática del sistema objetivo en el momento de su generación. Ésto implica que el fichero que compone el disco duro del sistema virtual deja de recibir modificaciones, las cuales a partir de ese momento comenzarán a almacenarse en un fichero delta, permititiendo de esa forma en cualquier momento posterior revertir el estado del sistema al momento del snapshot. Nótese que el contenido de la memoria RAM también se congela, generándose un nuevo fichero inmutable mediante un dump de la misma para contener su estado. Más información sobre snapshots:

Understanding virtual machine snapshots in VMware ESXi and ESX
VMware Knowledge Base 1009402: Working with snapshots
How VMware snapshots work

Habitualmente antes de lanzar un snapshot tendríamos el fichero asociado al disco virtual nombremaquina-flat.vmdk con sus características definidas en nombremaquina.vmdk, siendo este último un fichero de texto. El nombre y ubicación del fichero correspondiente al disco se incluirían en el fichero de configuración de la máquina virtual. Para confirmar esta afirmación y desde una shell en el servidor ESXi obtenida mediante SSH primero obtendremos la ubicación de las máquinas virtuales:
# esxcfg-info -s | grep -i "volume name"

       |----Volume Name...........................................datastore1

Otro comando para obtener el nombre del datastore bajo el cual se ejecutaría cada máquina virtual:
# vim-cmd vmsvc/getallvms

Ahora que conocemos la ubicación ya podemos consultar los ficheros de configuración:
# grep -i "filename.*vmdk" "/vmfs/volumes/datastore1/Windows XP/Windows XP.vmx"

ide0:0.fileName = "Windows XP.vmdk"

# grep "vmdk" "/vmfs/volumes/datastore1/Windows XP/Windows XP.vmdk"

RW 41943040 VMFS "Windows XP-flat.vmdk"

Una vez lanzado un snapshot seguiríamos teniendo los dos anteriores. Además, y para evitar su modificación, se crearán dos nuevos ficheros: nombremaquina-000001-delta.vmdk como nuevo disco virtual para almacenar los cambios desde el snapshot y nombremaquina-000001.vmdk, y se modificará el fichero de configuración de la máquina virtual para reflejar la nueva situación:
# grep -i "fileName.*vmdk" "/vmfs/volumes/datastore1/Windows XP/Windows XP.vmx"

ide0:0.fileName = "Windows XP-000001.vmdk"

# grep "vmdk" "/vmfs/volumes/datastore1/Windows XP/Windows XP-000001.vmdk"

parentFileNameHint="Windows XP.vmdk"

RW 41943040 VMFSSPARSE "Windows XP-000001-delta.vmdk"

Por último, y en cuanto a lo que nos atañe, también se volcará el espacio de direcciones de la memoria RAM asignado a la máquina virtual en el fichero nombremaquina-Snapshot1.vmsn

Así que como primer paso tendríamos que generar un snapshot y la forma más fácil de hacerlo es a través del cliente vSphere seleccionando la máquina virtual adecuada y pulsando el botón derecho del ratón Snapshot, Take snapshot. Es importante recalcar que para seguir el proceso desarrollado en este artículo es imprescindible no disponer previamente de ningún snapshot; en el caso de existir uno o varios tendríamos que eliminarlos o consolidarlos.

Como queremos incidir lo menos posible en el estado del sistema para obtener una evidencia lo más fidedigna posible deberemos asegurarnos de dejar las opciones por defecto, además de lanzarlo en un momento en que no haya mucha carga sobre la máquina virtual.



ESXi y los tipos de discos virtuales

Llega el momento de obtener una copia de las evidencias previamente generadas mediante el snapshot, pero antes nos detendremos en el concepto de discos thin y thick provisioned.

Cuando generamos una máquina virtual en un servidor ESXi tenemos la posibilidad de elegir entre discos thin o thick. La diferencia entre ambos es que el primero se crea sólo con el tamaño inicial estrictamente necesario y va creciendo conforme se van almacenando datos en él hasta alcanzar, como máximo, el espacio establecido al crearlo. Esta característica permite sobreutilizar el espacio de almacenamiento disponible en lugar de tener que reservarlo de antemano y constituye una de las principales ventajas de trabajar con máquinas virtuales. Cuando se hace una petición de lectura para un bloque no utilizado el sistema de ficheros VMFS se encarga de devolver ceros.

Por el contrario los discos thick precisan disponer del total del espacio cuando son creados, de forma que éste queda reservado. A su vez dentro de los discos thick tenemos dos subtipos más:

  • LazyZeroedThick: este es el tipo por defecto y, a pesar de precisar del espacio total disponible en el dispositivo de almacenamiento dicho espacio no queda ocupado hasta que no resulta necesario.

  • EagerZeroedThick: en este tipo de discos el espacio total queda reservado y sobreescrito con ceros, de forma que el proceso de creación es más lento pero la velocidad de escritura de datos es mayor.

Nótese que el disco virtual siempre se creará como EagerZeroedThick independientemente de las opciones especificadas durante su creación si no se elige el formateo rápido del sistema de ficheros durante el particionado del disco al instalar una máquina virtual con un sistema operativo Microsoft.

Using thin provisioned disks with virtual machines
Thin Provisioning – What’s the scoop?

El disco de la máquina virtual generado para el ejemplo es thin provisioned. Nótese la diferencia entre el resultado de la ejecución de los siguientes comandos:
# ls -l "Windows XP-flat.vmdk"

-rw-------    1 root     root     21474836480 Nov  8 11:21 Windows XP-flat.vmdk




# du "Windows XP-flat.vmdk"

1873920 Windows XP-flat.vmdk

Y para los servidores ESXi disponemos del comando stat:
# stat "Windows XP-flat.vmdk"

  File: Windows XP-flat.vmdk

  Size: 21474836480     Blocks: 3747840    IO Block: 131072 regular file

Device: f7b4079747314280h/17848899569491985024d Inode: 16796484    Links: 1

Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2012-11-08 11:13:25.000000000

Modify: 2012-11-08 11:21:15.000000000

Change: 2012-11-08 11:07:43.000000000

El campo size nos indica el tamaño máximo del disco en bytes; el campo blocks nos indica el número de bloques utilizados hasta el momento. De esta forma, y suponiendo que habitualmente el tamaño de bloque es igual a 512 habríamos ocupado 3747840 * 512 = 1918894080 bytes de los 21474836480 disponibles:
# echo "Max: $((`stat -c "%s"  "Windows XP-flat.vmdk"` / 1024))K \

 - Size: $((`stat -c "%b * %B" "Windows XP-flat.vmdk"` / 1024))K"

Max: 20971520K - Size: 1873920K

Esta distinción en cuanto a los tipos de discos existentes es muy importante a la hora de adquirir las evidencias, dado que puede ser una ventaja si el disco se ha creado como thin permitiéndonos ahorrar espacio en el destino así como acelerar el proceso de copia al tener que trabajar con muchos menos datos. Pero para poder aprovecharnos de dicha característica, y esto es imprescindible, el sistema de ficheros del dispositivo de destino debe ser VMFS. En caso contrario obtendremos un disco con el tamaño total cuyos bloques no ocupados contendrán ceros.

Podemos comprobarlo utilizando Veeam FastSCP (actualmente integrado dentro de Veeam Backup) o directamente mediante la interfaz de exploración del datastore del cliente vSphere: seleccionado el servidor ESXi, pestaña Configuration, Storage, seleccionar datastore adecuado, botón derecho Browse Datastore y allí seleccionar fichero correspondiente al disco virtual, botón derecho Download. Una vez descargado el fichero utilizado para el ejemplo comprobaremos como su suma md5 coincidirá con la calculada en el servidor tras crear el snapshot pero su tamaño será el espacio total indicado durante la creación de la máquina virtual.

Por lo tanto en nuestro caso, para realizar el proceso de adquisición, crearemos un ISCSi target que conectaremos al ESXi para generar un nuevo datastore y poder copiar allí la evidencias, incluyendo el disco virtual thin provisioned.

Instalando y configurando un ISCSI target en Ubuntu

En lugar de exponer un disco fisico como almacenamiento voy a utilizar un fichero generado utilizando dd cuyo tamaño voy a preubicar, algo así como EagerZeroedThick :-)
# dd if=/dev/zero of=/mnt/casos/vmfs.img bs=1024k count=8000

8000+0 registros leídos

8000+0 registros escritos

8388608000 bytes (8,4 GB) copiados, 217,871 s, 38,5 MB/s

La instalación del ISCSi target en Ubuntu 12.04 me ha dado algún que otro problema de dependencias, pero al final los he resuelto realizando los siguientes pasos en el orden exacto en que los indico:
# apt-get update

# apt-get install -y linux-source build-essential

# cd /usr/src/

# ln -s linux-source-3.2.0 linux

# apt-get install -y linux-headers-`uname -r`

# apt-get -y install iscsitarget-dkms

# apt-get -y install iscsitarget

Ahora llega el momento de configurar los paquetes. Para el ejemplo no se ha configurado autentificación usuario/contraseña para la conexión del iscsitarget aunque sería lo más recomendable.

Lo primero habilitar el iscsitarget:
# sed -i "s/false/true/" /etc/default/iscsitarget

y definir la LUN compartida, en mi caso el fichero creado previamente con dd, tras lo que reiniciaremos el servicio para aplicar la nueva configuración:
# echo "Target iqn.2012-11.local.collector:storage.lun1" >> /etc/iet/ietd.conf

# echo "   Lun 0 Path=/mnt/casos/vmfs.img,Type=fileio" >> /etc/iet/ietd.conf

# echo "   Alias LUN1" >> /etc/iet/ietd.conf

# service iscsitarget restart

Tambien podemos modificar las opciones del fichero /etc/iet/initiators.allow para indicar exáctamente qué equipos/redes tienen permitido el acceso al iscsitarget; por defecto se permite la conexión a todos (ALL : ALL).

Para comprobar que funciona correctamente:
# apt-get install open-iscsi

# iscsiadm -m discovery -t st -p 192.168.1.9

192.168.1.9:3260,1 iqn.2012-11.local.collector:storage.lun1

Ahora llega el momento de establecer la conexión desde el servidor ESXi al iscsitarget. La configuración de red para las pruebas que he realizado es la más sencilla de las posibles:



En este escenario dentro del ESXi sólo hay definido un vSwitch sobre una única tarjeta de red que se utiliza tanto para dotar de conectividad a las máquinas virtuales como para permitir las administración del servidor y, a partir de este momento, conectar mediante ISCSI con el nuevo storage para almacenar las evidencias. Para configuraciones más complejas o simplemente con el fín de aprender más recomiendo consultar la guía "vSphere Networking".

Para no alargar innecesariamente el artículo he generado un PDF con capturas de pantalla de los pasos a dar para agregar un nuevo adaptador iSCSI, conectarlo al target configurado en la máquina Ubuntu y generar un datastore para poder almacenar allí los ficheros necesarios.

Copiando las evidencias

Clonaremos ahora el disco thin provisioned obtenido como resultado del snapshot del sistema comprometido en el nuevo datastore desde una sesión SSH en el servidor ESXi:
# vmkfstools -i "/vmfs/volumes/datastore1/Windows XP/Windows XP.vmdk" \

 -d thin "/vmfs/volumes/evidencias/Windows XP.vmdk"

Destination disk format: VMFS thin-provisioned

Cloning disk '/vmfs/volumes/datastore1/Windows XP/Windows XP.vmdk'...

Clone: 100% done.

Una vez finalizado el proceso comprobaremos que ambos ficheros tienen el mismo tamaño y generaremos la suma MD5 para confirmar que son idénticos:
# du "/vmfs/volumes/datastore1/Windows XP/Windows XP-flat.vmdk"

1873920 /vmfs/volumes/datastore1/Windows XP/Windows XP-flat.vmdk

# du "/vmfs/volumes/evidencias/Windows XP-flat.vmdk"

1873920 /vmfs/volumes/evidencias/Windows XP-flat.vmdk


# openssl dgst -md5 "/vmfs/volumes/datastore1/Windows XP/Windows XP-flat.vmdk"

MD5(/vmfs/volumes/datastore1/Windows XP/Windows XP-flat.vmdk)= 72af25242d8abf5ae8183d8fbab22925

# openssl dgst -md5 "/vmfs/volumes/evidencias/Windows XP-flat.vmdk"

MD5(/vmfs/volumes/evidencias/Windows XP-flat.vmdk)= 72af25242d8abf5ae8183d8fbab22925

En este caso he utilizado md5, lo cual no es lo más recomendable a día de hoy. Para conocer los algoritmos de resumen soportados por openssl así como todas las opciones puede consultarse la manpage del comando.

Sólo restaría hacer una copia del estado de la memoria en el momento del snapshot y generar las sumas de comprobación:
# cp "/vmfs/volumes/datastore1/Windows XP/Windows\ XP-Snapshot1.vmsn" /vmfs/volumes/evidencias/

# openssl dgst -md5 "/vmfs/volumes/datastore1/Windows XP/Windows XP-Snapshot1.vmsn"

MD5(/vmfs/volumes/datastore1/Windows XP/Windows XP-Snapshot1.vmsn)= bc91023b458d5103aa97bf3b265572cc

# openssl dgst -md5 "/vmfs/volumes/evidencias/Windows XP-Snapshot1.vmsn"

MD5(/vmfs/volumes/evidencias/Windows XP-Snapshot1.vmsn)= bc91023b458d5103aa97bf3b265572cc

En último lugar habría que desmontar el datastore y desconectar el iscsitarget para dejarlo todo como estaba. Incluyo aquí un PDF con el proceso detallado mediante capturas de pantalla. También detendremos y deshabilitaremos el servicio iscsitarget en Ubuntu:
# service iscsitarget stop

# sed -i "s/true/false/" /etc/default/iscsitarget

Ahora ya tenemos los ficheros en nuestra máquina pero, ¿como accedemos a un sistema de ficheros VMFS para analizar el contenido?

Accediendo a vmfs desde Ubuntu

La respuesta viene de la mano de Mike Hommey y las vmfs-tools, un set de herramientas que permite el acceso al sistema de ficheros VMFS apoyándose en el módulo de FUSE. El paquete está disponible desde los repositorios de Ubuntu, pero para garantizar la disponibilidad de las últimas funcionalidades, entre las que se encuentra el soporte de VMFS-5, descargaremos las fuentes desde el repositorio git:
# apt-get -y install git

# cd /usr/local

# git clone https://github.com/glandium/vmfs-tools.git

Ahora compilamos e instalamos, satisfaciendo en primer lugar todas las dependencias:
# cd vmfs-tools/

# apt-get -y install uuid-dev pkg-config libfuse-dev asciidoc xsltproc docbook

# ./configure

# make

# make install

Una vez correctamente finalizado el proceso anterior llega el momento de acceder a las evidencias montando el "disco" en formato vmfs. Para ello he seguido los pasos indicados en el comentario final del siguiente enlace, Announcing vmfs-tools version 0.1.0. Básicamente los pasos serían:
# apt-get -y install kpartx

# losetup -r /dev/loop0 /mnt/casos/vmfs.img

# kpartx -a -v /dev/loop0

add map loop0p1 (252:0): 0 16368187 linear /dev/loop0 2048

# mkdir /mnt/temp

# vmfs-fuse /dev/mapper/loop0p1 /mnt/temp

VMFS: Warning: Lun ID mismatch on /dev/mapper/loop0p1

ioctl: Invalid argument

ioctl: Invalid argument

# mount | grep temp

/dev/fuse on /mnt/temp type fuse (rw,nosuid,nodev,default_permissions)

# ls -l /mnt/temp/

total 2404544

-rw------- 1 root root 21474836480 nov 10 14:26 Windows XP-flat.vmdk

-rw------- 1 root root   542290920 nov 10 15:01 Windows XP-Snapshot1.vmsn

# du -h /mnt/temp/*

1,8G    /mnt/temp/Windows XP-flat.vmdk

518M    /mnt/temp/Windows XP-Snapshot1.vmsn

Y podemos volver a comprobar las sumas md5 para confirmar que no han sido modificadas durante el proceso:
# md5sum /mnt/temp/*-flat.vmdk /mnt/temp/*.vmsn

72af25242d8abf5ae8183d8fbab22925  /mnt/temp/Windows XP-flat.vmdk

bc91023b458d5103aa97bf3b265572cc  /mnt/temp/Windows XP-Snapshot1.vmsn

Cuando terminemos de trabajar con el sistema de ficheros VMFS y para dejarlo todo como estaba:
# umount /mnt/temp

# kpartx -d -v /dev/loop0

del devmap : loop0p1

# losetup -d /dev/loop0

Para analizar el disco vmdk podemos utilizar las herramientas del sleuthkit directamente sobre el sistema de ficheros montado. Importante recalcar que éstas deben haberse compilado con soporte para ficheros en formato afflib, pero esto lo dejaremos para otra ocasión :-)

Recalcar de nuevo que si copiamos el disco vmdk thin provisioned a cualquier sistema de ficheros distinto de vmfs nos ocupará el tamaño máximo establecido.

Despedida y cierre

Seguro que por desconocimiento he cometido algún error. Si éste fuera el caso agradecería vuestros comentarios o sugerencias para subsanarlos. Por último, y si habéis llegado hasta aquí, os agradezco la deferencia y espero os hayáis entretenido tanto como lo he hecho yo durante la configuración del escenario y todas las pruebas necesarias para escribir estas líneas.

Fuente:
http://neosysforensics.blogspot.com/2012/11/vmware-esxi-maquinas-virtuales-y.html

Enlaces de interés

VMware vSphere 5.1 Documentation Center
A handful of ESXi tips and tricks
Configuring advanced options for ESX/ESXi
VMDK virtual disk type
vSphere Command-Line Interface Reference
VMware ESXi SSH CLI commands
Linux / UNIX: Create Large 1GB Binary Image File With dd Command
Ubuntu 12.04 with iSCSI target for VMware ESXi 4.1
iSCSI target on Ubuntu
Regular vmdks
Snapshots or Redologs
vmfs
Virtual Machine Files Essential to Forensic Investigations
Howto read VMFS 3 with a Linux LiveCD

Obteniendo los hashes de las contraseñas de máquinas virtuales suspendidas o snapshots mediante Volatility

0 comentarios

En este post vamos a ver una interesante técnica que hace unos días nos mostraba Mark Baggett en el blog de pentesting de SANS mediante la cual podemos obtener los hashes de las contraseñas de los usuarios de una máquina virtual VMWare suspendida o de su snapshot.

Lo primero que vamos a hacer es obtener un volcado de memoria (memory dump) a partir de los ficheros de memoria .vmem de la máquina virtual y de los ficheros .vmss (estado suspendido) o .vmsn (snapshot). Para ello ejecutaremos la herramienta vmss2core que VMWare distribuye por defecto y que podréis encontrar normalmente en "C:\Archivos de programa\VMware\VMware Workstation" o, si tenéis Mac OS X, en "/Library/Application Support/VMware Fusion". El comando es muy sencillo:

$ vmss2core -W Windows7.vmss Windows7.vmem

Durante el proceso podréis observar que el SO de la máquina virtual es un Windows 7 SP1:

vmss2core: Log: Win: ntBuildLab=7601.17803.x86fre.win7sp1_gdr.120330-1504

Al final obtendremos como resultado el fichero memory.dmp, normalmente de un tamaño considerable.

Ahora vamos a analizar el volcado con Volatitity. Lo primero es verificar el tipo de imagen con la que estamos trabajando mediante imageinfo:

$ python vol.py -f memory.dmp imageinfo
Volatile Systems Volatility Framework 2.0
Determining profile based on KDBG search...
             Suggested Profile : Win7SP1x86, Win7SP0x86
                     AS Layer1 : JKIA32PagedMemory (Kernel AS)
                     AS Layer2 : FileAddressSpace (/Users/vmotos/Desktop/memory.dmp)
                      PAE type : No PAE
                           DTB : 0x185000
                          KDBG : 0x8196cbe8
                          KPCR : 0xffdf000L
             KUSER_SHARED_DATA : 0xffdf000L
           Image date and time : 2012-08-13 23:30:28
     Image local date and time : 2010-08-13 23:30:28
          Number of Processors : 2
                    Image Type :

Una vez confirmado el profile, a continuación, mediante hivelist localizaremos las direcciones de memoria de los grupos de claves del registro o registry hives:

$ python vol.py --profile=Win7SP1x86 -f memory.dmp hivelist



Apuntamos los offsets de \REGISTERY\MACHINE\SYSTEM y \SystemRoot\System32\Config\SAM, y los pasamos al plugin hashdump de Volatility:

$ python vol.py --profile=Win7SP1x86 -f memory.dmp --sys-offset=0x87ela248 --sam-offset=0x8e77e008 hashdump 



¡Y ya está! Ya tenemos los hashes de la máquina virtual VMware, listos para ser crackeados o utilizados en ataques pass-the-hash. También podremos utilizar el plugin lssadump de Volatility (offsets de SYSTEM y SECURITY) para obtener las credenciales usadas por DPAPI, la clave pública RDP o la contraseña por defecto en sistemas con autologin.

pd. Si tu máquina virtual funciona bajo Microsoft Hyper-V, probablemente puedas hacer lo mismo con vm2dmp + Volatility. ¡No dudes en comentar si ya lo has probado!
 
Fuente: hackplayers

Detección de máquinas virtuales y sandboxes

0 comentarios
Uno de los comportamientos más comunes del malware actual es que trata de detectar que se está ejecutando en máquinas virtuales o sandboxes. 

Esto se hace a menudo para dificultar el análisis y, por lo tanto, para ocultar su payload malicioso. 

Después de mucha investigación e ingeniería inversa, Joe Security LLC (créditos a antnet) ha publicado una serie de detecciones muy interesantes que seguro te interesarán si estás pensando en cocinar tu propia pieza de malware:


"Get VMware version (exceptions expected & handled using this privileged
instruction outside a VM):
 00409E27  IN EAX,DX  ; eax = 'VMXh', ecx = 0A, dx = 'VX'
 00409E27  IN EAX,DX  ; eax = 'VMXh', ecx = 0A, dx = 'VY'
 00409E27  IN EAX,DX  ; eax = 'VMXh', ecx = 0A, dx = '@' (0x40)

Illegal/unknown instruction (exception handled):
 00409EB1  DB 0F
 00409EB2  DB 3F
 00409EB3  DB 07
 00409EB4  DB 0B

Get content of descriptors:
 00409F22  SLDT WORD PTR SS:[EBP-28C]
 00409F29  STR WORD PTR SS:[EBP-290]
 00409F30  SGDT FWORD PTR SS:[EBP-44]
 00409F34  SIDT FWORD PTR SS:[EBP-3C]

Get content of segment registers (exceptions on undefined regs handled).

FindFirstFile/FindNextFile on [system directory]\drivers and check names:
 hgfs.sys
 vmhgfs.sys
 prleth.sys
 prlfs.sys
 prlmouse.sys
 prlvideo.sys
 prl_pv32.sys
 vpc-s3.sys
 vmsrvc.sys
 vmx86.sys
 vmnet.sys

GetModuleHandle. Check if DLL loaded:
 dbghelp
 SbieDll
 api_log
 dir_watch
 pstorec

GetUserName. Check for:
 currentuser
 sandbox
 honey
 vmware
 nepenthes
 snort
 andy
 roo

GetComputerName. Check if: "TU-4NH09SMCG1HC"

GetModuleFileName (this exe name). Check if: "InsideTm"

RegQueryValueEx on
"HKLM\HARDWARE\Description\System\\SystemBiosVersion". Check if: "vbox"

RegQueryValueEx on
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\\ProductID" and 
"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\ProductID". Check
ProductID for:
 55274-640-2673064-23950
 76487-644-3177037-23510
 76487-337-8429955-22614

RegEnumKey on "HKLM\SOFTWARE\Microsoft". Check names for:
 Hyper-V
 VirtualMachine

RegEnumKey on "HKLM\SYSTEM\ControlSet001\Services". Check names for:
 vmicheartbeat
 vmicvss
 vmicshutdown
 vmicexchange
 vmci
 vmdebug
 vmmouse
 VMTools
 VMMEMCTL
 vmware
 vmx86
 vpcbus
 vpc-s3
 vpcuhub
 msvmmouf
 VBoxMouse
 VBoxGuest
 VBoxGuest
 VBoxSF
 xenevtchn
 xennet
 xennet6
 xensvc
 xenvdb

RegQueryValueEx on "HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus
0\Target Id 0\Logical Unit Id 0\\Identifier". Check Identifier for:
 vmware
 vbox

RegEnumKey on:
"HKLM\HARDWARE\ACPI\DSDT"
"HKLM\HARDWARE\ACPI\FADT"
"HKLM\HARDWARE\ACPI\RSDT"
Check names for:
 VBOX
 xen

GetProcAddress kernel32.CreateProcessA and check for patch: E9 (jmp).
Note that CreateProcessW is not checked.

Snapshot of running processes. Check for:
 vmware
 vmount2
 vmusrvc
 vmsrvc
 VBoxService
 vboxtray
 xenservice
 joeboxserver
 joeboxcontrol
 wireshark
 sniff_hit
 sysAnalyzer
 filemon
 procexp
 procmon
 regmon
 autoruns

GetAdaptersInfo. Checks MAC address for 0x0569, 0x0C29, 0x1C14 and 0x5056. The all belong to VMWare MAC address prefixes.

GetProcAddress. Check if kernel32 or ntdll export the function:
"wine_get_unix_file_name".

FindFirstFile/FindNextFile on "C:\*.*". Check if any file or directory
name is a 60 char hex string (unique to the PC) used for encoding." 
 

ARE: VM para el análisis de malware de Android

0 comentarios
ARE (Android Reverse Engineering) es una máquina virtual con un interesante set de herramientas para analizar distintos artefactos de malware de Android en un entorno seguro.

La imágen desarrollada por un grupo francés del Honeynet Project corre en VirtualBox y comprende 10 herramientas, incluyendo Androguard y el SDK de Android:

Web del proyecto: http://redmine.honeynet.org/projects/are/wiki

Fuente:http://www.hackplayers.com/2011/11/are-vm-para-el-analisis-de-malware-de.html

Securizando un entorno de máquinas virtuales con Virtualbox

0 comentarios

La virtualización ha dejado de ser únicamente una moda, y, con los agravantes de los recortes por la crisis y la conciencia ecológica, se ha convertido en una forma de vida para todo tipo de organizaciones. Por esto, la seguridad ha tenido que reinventarse para poder adaptar conceptos como la correcta segmentación de redes, que anteriormente se hacía mediante diversas interfaces de red, VLANs y cables físicos conectados a una maraña de servidores, para definir políticas de acceso entre máquinas virtuales que corren en un mismo servidor físico.

Dentro de los sistemas de virtualización, hay una amplia elección profesional para elegir, por lo que las organizaciones que dispongan de recursos económicos para ello, pueden acudir a sus supermercado de productos de seguridad favorito, y hacerse con costosas licencias para crear entornos virtuales. En general, estas plataformas profesionales, permiten definir redes virtuales diferenciadas con políticas de seguridad que especifican el tráfico permitido entre ellas.

Como he dicho antes, para una organización más humilde o alguien que esté empezando una aventura empresarial (que las hay, incluso en España en 2012), la solución libre Virtualbox puede cubrir de sobra las necesidades de virtualización.  

Desde el prisma de un purista de la seguridad, tal cual explico en mi curso de Buenas Prácticas de Seguridad en Entornos Corporativos, el primer paso, para segmentar las redes que existirán en una organización, es identificar los diferentes servidores/servicios para decidir su distribución. Aquellos que necesiten tener una puerta por la que entre tráfico desde Internet, deberá ir en una DMZ de servicios públicos o frontend. La ubicación de los servidores que nutren estas aplicaciones públicas deben ir en una red diferente y protegida, o de backend. El tráfico a permitir entre todas estas redes habrá de ser el justo y necesario para evitar exposiciones de servicios/máquinas por error. Más o menos como se puede ver en el dibujo de abajo, y siguiendo los consejos que ya explicamos en "Cómo diseñar una política de cortafuegos"






"Bueno vale, después de la clase de pizarra que nos has soltado… cuéntanos esto del Virtualbox"

El problema de VirtualBox es que no dispone de una consola remota como tal, con la que gestionar las máquinas virtuales y con la que definir diferentes redes virtuales, así como asignar políticas de seguridad, por lo que habrá que inventarse algo por debajo, que supla esta carencia.

Partimos del caso de una organización pequeña en que disponemos de una máquina Linux, con recursos suficientes de RAM y disco duro, en la que instalaremos Virtualbox. Esta máquina dispone de conectividad a Internet (porque esté conectada al router ADSL o a una ONT de fibra óptica), y quizá conexión con una red LAN o wireless. Supongamos entonces que la máquina dispone únicamente de un par de interfaces físicos de red: uno conectado hacia Internet y otro hacia una red privada. 

Vamos a crear dos nuevas redes que permitan unir servidores de dos tipos: de frontend y de backend. Para ello, Linux provee de diferentes herramientas que permiten crear interfaces virtuales. En este caso vamos a definir dichos interfaces virtuales como tipo TAP [http://en.wikipedia.org/wiki/TUN/TAP]. 

Para ello, haremos, por cada red que queramos definir los siguientes pasos:

Data provided by Pastebin.com - Download Raw - See Original
  1. modprobe tun   #Cargaremos el driver "tun"
  2. tunctl -t tap0 #Creamos el interfaz tap0
  3. ifconfig tap0 192.168.5.1 netmask 255.255.255.0 up #Asignamos direccionamiento de red al interfaz y lo levantamos


Si necesitamos más interfaces virtuales, repetiremos las dos líneas "tunctl" e "ifconfig" con un nuevo intefaz virtual y el direccionamiento a asignar a sucesivos tap1, tap2, etc,…

Se supone que esto crea un interfaz de red virtual "persistente" asignado al uid 0 (si ejecutamos como root la orden, claro). Sin embargo, deberemos repetir los pasos de la definición de interfaces cada vez que arranque la máquina física. Para ello crearemos un script, en el /etc/rcX.d que corresponda, para que se definan los interfaces de red ANTES de que arranquen las máquinas virtuales. Es decir, no lo hagáis en el /etc/rc.local, que como sabréis, se ejecuta como último script de los de arranque.

Lo siguiente que tenemos que hacer es definir el interfaz de red de la máquina virtual que quedamos, como "Bridged Adapter" y seleccionaremos el interfaz "tap" que hayamos definido para esa red. 



Repetiremos este proceso para todas las máquinas virtuales según nuestras necesidades de pertenecer a la DMZ pública o a la privada. El direccionamiento de red a asignar a las máquinas virtuales de ambas redes, deberá pertenecer al mismo que tiene cada interfaz virtual TAP. En el caso del ejemplo, deberían pertenecer al rango 192.168.5.0/24. 

De esta manera, las máquinas de la DMZ pública, que ofrezcan servicios a Internet, quedarán en una DMZ virtual y las de backend en otra.

Viajando a la paranoia extrema

"Oye, ¿y si me comprometen una máquina, no podrían saltar a otra de la misma red?" Pues la respuesta es "puede". Si te comprometen una máquina virtual, las posibilidades son las mismas que en una red DMZ física, por lo que si la seguridad de cada una de las máquinas, a nivel individual, no ha sido tenido en cuenta convenientemente, podemos tener un problema mayor.

Para reforzar este posible caso, si queremos, podemos darle una vuelta de tuerca más, haciendo incluso que, la opción de máquinas virtuales sea más segura que la opción de redes físicas. Para ello, lo que haremos, en vez de definir un interfaz virtual por cada red, será crear un interfaz TAP por cada máquina virtual. Asignaremos desde el panel de Virtualbox el interfaz TAP, en modo bridge a cada máquina y utilizaremos subnetting para optimizar el espacio de direcciones IP.

Si antes usábamos una red con máscara 24 (255.255.255.0), ahora usaremos una máscara 30 (255.255.255.252). Los 30 bits de máscara nos permite 4 direcciones IP: la primera es la dirección de red, la última el broadcast de esa red y las otras dos son las "usables" para asignar a dos interfaces de red, creando una conexión Punto-a-Punto. Una será para la máquina virtual que montaremos en esa red, y otra para el interfaz tapX de la máquina física (que actuará de default gateway para la máquina virtual).

En el caso de 192.168.5.0/30 por ejemplo, tendríamos la 192.168.5.0 como dirección de red, la 192.168.5.3 como dirección de broadcast y la 192.168.5.1 y 192.168.5.2 como direcciones asignables. Si os liáis con el subnetting, podéis usar este enlace para el cálculo online de direcciones IP



Así, para acceder a otras máquinas, habrá que pasar sí o sí, a través del firewall… por lo que una política de seguridad estricta, asegurará, que si nos comprometen cualquiera de las máquinas virtuales, no será sencillo saltar a una "de las de al lado". Desde el punto de vista de la gestión de máquinas virtuales puede llegar a ser más lioso, pero como siempre, seguridad y usabilidad, se llevan mal. Este esquema es lo más parecido a implementar las Private VLAN que permite la electrónica de red Cisco.

Y ahora me diréis… ¿y si te comprometen la máquina física desde el propio acceso a Internet?  Pues lleváis razón. Quien tenga acceso a la máquina física puede acceder a los datos de todos los servidores contenidos en ella.

De vosotros dependerá securizar convenientemente esa máquina física, o incluso crear una máquina virtual nueva, que sea la que haga las labores de firewall, con un interfaz de red asignado (bridge) a cada una de las nuevas redes que hemos creado.

Así, la máquina física, si logramos que no tenga servicios de ningún tipo hacia el exterior, será un bastión muy difícil de vulnerar.
 
Fuente:
http://www.securitybydefault.com/2012/07/securizando-un-entorno-de-maquinas.html

Inyección de codigo en máquinas virtuales

0 comentarios

Ekoparty '08. Octubre 2-3, 2008. Buenos Aires, Argentina.

Abstract

In this talk we show how to profit from OS functions (e.g., ReadProcessMemory, WriteProcessMemory in Windows and ptrace in Linux) to inject code locally from a server that hosts virtual machines into one or several guest operating systems. We will explain the problems we had to solve to get this done, starting from the detection of services and running programs in the guest OS through the search of memory patterns and moving to the correct selection of memory portions were to inject the code so that it is executable, has the "system" permissions and is robust. We will exemplify this against VMWare and Virtual Box. We will close this address with the execution of a Core Impact module that detects all the guest virtual machines running in a server host and installs an agent in each detected OS.

[slides]

Este documento me parecio excelente , lo recomiendo mucho

fuente:http://www.coresecurity.com/content/inyeccion-codigo-maquinas-viertuales

-------------------------------------------------------------------------------------------

Para la descarga de todos los documentos visitar el siguiente link

http://www.coresecurity.com/content/corelabs-papers

saludos

Powered by Bad Robot
Helped by Blackubay