Xmount: Cuando «Cambio», la evidencia no es tan malo

http-equiv=»Content-Type» content=»application/xhtml+xml; charset=utf-8″ />

/ * <[CDATA [* / var asciidoc = {/ / Namespace!. / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Indice generador / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / * Autor: Mihai Bazon , septiembre de 2002 * http://students.infoiasi.ro/ ~ mishoo ** Tabla de generador de contenido * Versión: 0.4 ** Siéntase libre de utilizar esta secuencia de comandos en los términos de la GNU General Public License *, siempre y cuando lo hace no suprimir o alterar este aviso. * / / * Modificado por Troy D. Hanson, septiembre de 2006. Licencia: GPL * / / * modificado por Stuart Rackham, 2006, 2009. Licencia: GPL * / / / toclevels = 1 .. 4. toc: function (toclevels) {function getText (el) {var text = ""; for (var i = el.firstChild; i = null; i = i.nextSibling!) {if (== i.nodeType 3 / * Node.TEXT_NODE * /) / / IE no habla constantes. texto + = I.Data; else if (i.firstChild = null!) Texto + = getText (i);} texto return;} function TocEntry (el, texto, toclevel) {this.element = el; this.Text = texto; this.toclevel = toclevel;} tocEntries función (EL, toclevels) {var result = new Array; var re = new RegExp ('[HH] ([1 -' + (toclevels 1) + '])') / / Función que escanea el árbol DOM para elementos de encabezado (la API DOM2 / / NodeIterator sería una mejor técnica, pero no con el apoyo de todos / / los navegadores). iterate var = function (el) {for (var i = el.firstChild;! i = null; i = i.nextSibling) {if (== i.nodeType 1 / * Node.ELEMENT_NODE * /) {var = mo re . exec (i.tagName); if (mo && (i.getAttribute ("clase") | | i.getAttribute ("className")) = "float"!) {resultado [result.length] = new TocEntry (i , getText (i), mo [1] -1);} iteración (i);}}} iterate (el); return resultado;} var toc = document.getElementById ("toc"); if (toc) {! vuelta;} / / Eliminar entradas de la TDC existentes en caso de que estamos volviendo a cargar el TOC. var tocEntriesToRemove = []; var i; for (i = 0; i «+» «+ n «.» + + nota + «

«; var id = palmos [i] getAttribute («id»);. if (id = nulos!) refs [«#» + id] = n;}} si (n == 0) noteholder.parentNode.removeChild (Bonista); else {/ / Proceso footnoterefs. for (i = 0; i

«No hacer daño» es la traducción moderna del juramento hipocrático que se aplica a los médicos. Pero no tiene aplicación en el análisis forense de datos también. Esto se concreta en los edictos que requieren escritura bloqueo puede utilizar durante la adquisición de fuentes y análisis de datos para hacer las copias en lugar de los datos originales. (Dejaré la discusión muy válida sobre triaje mediante examen directo de las fuentes de datos a un lado para otro momento. Estamos hablando de principios generales aquí.)

¿Podemos cambiar la evidencia?

La respuesta corta es, «No.» Nunca deberíamos cambiar los datos originales, y punto. Pero eso no significa que no podemos hacer una copia de los datos de lectura. Después de todo, es mejor leer los datos con los programas destinados a utilizar los datos … de esa manera sabemos que estamos haciendo que la información ya que estaba destinado a ser leído. Y si hay una forma de reparar un sistema de archivos o un archivo de una manera que no cambia el contenido de fondo , ¿no deberíamos considerar esa opción?

caprichos suficiente. Vayamos al ladrillo y mortero para hacer este punto. He discutido previamente usando xmount para ejecutar los sistemas operativos encapsulados en las imágenes forenses. En esa situación, xmount utiliza un archivo de caché para grabar y leer los cambios en el sistema de archivos que ocurren necesariamente cuando el sistema operativo y las aplicaciones se están ejecutando. Debido a que los cambios se escriben en la memoria caché, la imagen forense no ha cambiado.

Ayer, me encontré con otro uso para xmount al examinar una imagen de un NAND eMMC saltar de un Samsung Galaxy S3. Me trató de montar la partición userdata 12GB para el análisis, pero fallé montaje. Esto puede haber sucedido en el pasado: se ha intentado montar un sistema de archivos de la manera que siempre lo hace, pero por razones desconocidas, el comando falló. ¿Qué hacer?

Cuando Procedimiento Estándar falla

Tomemos mi imagen S3 por ejemplo. Mi objetivo era acceder a la partición de datos de usuario y extraer los archivos. El S3 se supone que tiene particiones ext4 que yo debería ser capaz de montar y examinar en Linux.

BASH
  $  MMLS GUID /> 
Sector Offset: 0
Las unidades están en sectores de 512 bytes

Slot Inicio Fin Longitud Descripción
00: Meta 0000000000 0000000000 0000000001 Tabla Seguridad
01: ----- 0000000000 0000008191 0000008192
Sin asignar 02: Meta 0000000001 0000000001 0000000001 GPT Header
03: Meta 0000000002 0000000033 0000000032 Partition Table
04: 00 0000008192 0000131071 0000122880 módem
05: 01 0000131072 0000131327 0000000256 SBL1
06: 02 0000131328 0000131839 0000000512 SBL2
07: 03 0000131840 0000132863 0000001024 SBL3
08: 04 0000132864 0000136959 0000004096 aboot
09: 05 0000136960 0000137983 0000001024 rpm
10: 06 0000137984 0000158463 0000020480 arranque
11: 07 0000158464 0000159487 0000001024 tz
12: 08 0000159488 0000160511 0000001024 pad
13: 09 0000160512 0000180991 0000020480 param
14: 10 0000180992 0000208895 0000027904 efs
15: 11 0000208896 0000215039 0000006144 modemst1
16: 12 0000215040 0000221183 0000006144 modemst2
17: 13 0000221184 0003293183 0003072000 sistema
18: 14 0003293184 0028958719 0025665536 userdata
19: 15 0028958720 0028975103 0000016384 persiste
20: 16 0028975104 0030695423 0001720320 caché
21: 17 0030695424 0030715903 0000020480 recuperación
22: 18 0030715904 0030736383 0000020480 fota
23: 19 0030736384 0030748671 0000012288 copia de seguridad
24: 20 0030748672 0030754815 0000006144 fsg
25: 21 0030754816 0030754831 0000000016 ssd
26: 22 0030754832 0030765071 0000010240 crecer
27: ----- 0030765072 0030777343 0000012272 asignado

$ sudo mount-o ro, loop, offset = $ ((3293184 * 512)) $ image / mnt
montaje: tipo fs mal, mala opción, mala superbloque on / dev/loop0,
faltante página de código o programa ayudante, u otro error
En algunos casos útil información se encuentra en syslog - tratar
dmesg | tail o algo así
$

Nota

estoy yo ‘ he creado un vínculo de imagen para la imagen del dispositivo prima original para mantener los comandos simple.

Entonces, ¿qué ha pasado aquí? He utilizado el Sleuthkit MMLS herramienta para leer la tabla de particiones. Localicé la partición de interés – userdata – y trató de montarlo sólo lectura. Yo no especifica un tipo de sistema de archivos, sino que dejé de montaje auto-mágicamente determinarla. He utilizado las opciones de montaje de ro (sólo lectura), loop (para crear el dispositivo de bucle de retorno), y siempre que el desplazamiento a la partición. Desde el desplazamiento requerido por el monte es en bytes, he usado shell matemáticas para traducir el desplazamiento del sector prevista en la salida MMLS de bytes. Pero, al final, el monte no parece reconocer la partición.

¿Qué hacemos en tal situación? Podríamos utilizar la mount-v verbose para tratar de determinar lo que está mal.

BASH
  $  sudo mount-v-o ro, loop, offset = $  ((3293184 * 512)) Imagen / mnt 
montaje: permite bandera loopdev Autoclear
montar: va a utilizar el dispositivo de bucle / dev/loop0
montar: usted no especifica un tipo de sistema de ficheros para / dev/loop0
Voy a tratar de tipo ext4
montes: Tipo de fs mal, mala opción, mala superbloque on / dev/loop0,
faltante página de códigos o programa ayudante, u otro error
En algunos casos información útil se encuentra en syslog - probar
dmesg | tail o eso
$

En este caso, la salida verbosa no es de mucha ayuda que no sea lo que demuestra que intentaron montar utilizar ext4 como el tipo de sistema de archivos. Y, aunque ext4 es lo que esperaba por la partición, también, tal vez es un error. A falta de un editor hexadecimal, ¿cómo podemos comprobar un tipo de partición una imagen de disco?

El archivo es un bien herramienta conocida por ofrecer tipos de archivos mediante la lectura de la magia de archivos (firma hexadecimal del archivo). Pero ¿sabía usted que le dirá tipos de particiones también?

BASH
  $  img_cat imagen-s 3293184 | archivo - 
/ dev / stdin: Linux rev 1.0 Datos del sistema de archivos ext4,
UUID =-57f8f4bc abf4-655f-bf67-946fc0f9f25b (recuperación revista necesidades )
(extensiones) (archivos grandes)
$

El img_cat herramienta es otro miembro de la caja de herramientas Sleuthkit. Exporta datos de una imagen para la salida estándar en bloques. Aquí proporcionamos desplazamiento a la partición de datos de usuario y la pipa en el archivo el sector de arranque. El guión que sigue el archivo a cuenta archivo para usar stdout como entrada en lugar de un archivo.

¿Qué aprendimos en esta lista? Bueno, aunque hay un montón de información, dos valores son de particular interés. En primer lugar, el sistema de archivos es, de hecho, con formato ext4. En segundo lugar, parece que el diario del sistema de archivos está dañado. No es la prueba irrefutable de nuestro problema de montaje.

lo tanto, necesitamos una manera de arreglar la revista para poder montar la partición, pero no hay que alterar la imagen original. Tenemos algunas opciones: * Haga una copia de la imagen * hacer una copia de sólo la partición Inicialmente, la realización de copias no suena tan mal. Después de todo, sólo estamos hablando de 16 GB para la imagen o 12GB para la partición. Pero lo que si esta imagen de un 250gb decirlo, o más grande? Eso suena menos apetecible. Además, ya sea acción podría consumir una gran cantidad de recursos en forma de espacio de disco, capacidad de procesamiento y el tiempo.

Nota Importante

Reader Carlos (con abono a Hal Pomerantz) señala correctamente que la edición de la revista sucia se puede evitar en el montar Comando pasando el noload . De hecho, según la página montar hombre, noload es una buena opción para invocar cada vez que el montaje ext3 / 4 sólo lectura para asegurar que no escribe con sistemas de archivos sucios.

En nuestro ejemplo, el comando sería: sudo mount-o ro, noload, loop, offset = $ 3293184 imagen * 512 / mnt

Este hecho no invalida el resto de esta discusión. Usted presenta sistema puede necesitar más reparaciones significat, una reparación de una tabla de particiones, y estas reparaciones se pueden todavía efectuada con la técnica que sigue. Tales Como siempre, elegir el camino que el cumple con las necesidades de su investigación.

Xmount al rescate

¿Y si hubiera una manera de arreglar la revista sin tomarse el tiempo y los recursos mencionados anteriormente? Introduzca xmount . Así como xmount puede crear un archivo de caché para capturar los cambios en un sistema operativo que va desde una imagen, puede capturar los cambios en la reparación de un sistema de archivos. Podemos montar de forma rápida y reparar el sistema de archivos y dejar la imagen original no por ello peor para el desgaste. Y debido a las bendiciones del controlador de sistema de archivos de fusibles en el que xmount se construye, que sólo han consumido nuevo espacio en disco para la caché xmount comparación con imágenes de disco completas y particiones.

BASH
  $  md5sum imagen 
15a9134d72a5590cf6589e9c9702a5ba imagen
$

Comenzamos con una línea de base MD5 del archivo de imagen. Usaremos esto para determinar si xmount permite ningún cambio en la imagen.

BASH
  $  sudo xmount - dd - Salida dd-o ro, allow_other  
- imagen image.cache cache / mnt
$ ls / mnt />
$ montaje

... xmount en / mnt tipo fuse.xmount (rw, nosuid, nodev, allow_other)
$

Utilizamos xmount para crear una imagen virtual de nuestro archivo de imagen original . El - en opción especifica el formato de la imagen original. El formato de entrada puede ser Expert Formato witnes (EWF), de formato avanzado Forense (AFF) o crudo (dd). El - out opción especifica el formato de la imagen virtual y puede ser cruda (dd) o cualquiera de los siguientes formatos de máquinas virtuales: VDI, vhd, o vdmk. El fusible -o allow_other da acceso al sistema de archivos virtual para todos los usuarios (no sólo de la raíz). La última opción - cache especifica el archivo que se utilizará para el almacenamiento en caché de disco (image.cache). Entonces, al igual que los montaje , especificamos el archivo de entrada (imagen) y el punto de montaje (/ mnt).

El resultado del cabo xmount es un archivo de disco virtual que se crea en la carpeta / mnt que sea accesible para los usuarios normales. Olvídese de esta opción y tendrá problemas con el listado del directorio / mnt como un usuario normal. El nombre de la imagen de disco virtual es el nombre del archivo de entrada se adjunta con el tipo de formato. Por lo tanto, «imagen» se convirtió en «image.dd». En la carpeta / mnt es también un archivo de información., Con información de la imagen.

La imagen virtual no consume espacio en disco real. Está montado de lectura y escritura, ya que vamos a arreglar la revista, pero no se preocupe, pasando el - cache image.cache para xmount , le dijimos xmount para capturar los cambios en el archivo image.cache. El archivo image.cache no tiene que existir previamente;. Xmount creará por nosotros

La imagen de disco virtual puede tener acceso al igual que la imagen original.

BASH
  $  MMLS / mnt / image.dd 
GUID Partition Table (EFI)
Sector Offset: 0 Unidades />

Slot Inicio Fin Longitud Descripción
00: Meta 0000000000 0000000000 0000000001 Tabla Seguridad
01: ----- 0000000000 0000008191 0000008192
Sin asignar 02: Meta 0000000001 0000000001 0000000001 GPT Header
03: Meta 0000000002 0000000033 0000000032 Partition Table
04: 00 0000008192 0000131071 0000122880 módem
05: 01 0000131072 0000131327 0000000256 SBL1
06: 02 0000131328 0000131839 0000000512 SBL2
07: 03 0000131840 0000132863 0000001024 SBL3
08: 04 0000132864 0000136959 0000004096 aboot
09: 05 0000136960 0000137983 0000001024 rpm
10: 06 0000137984 0000158463 0000020480 arranque
11: 07 0000158464 0000159487 0000001024 tz
12: 08 0000159488 0000160511 0000001024 pad
13: 09 0000160512 0000180991 0000020480 param
14: 10 0000180992 0000208895 0000027904 efs
15: 11 0000208896 0000215039 0000006144 modemst1
16: 12 0000215040 0000221183 0000006144 modemst2
17 : 13 0000221184 0003293183 0003072000 sistema
18: 14 0003293184 0028958719 0025665536 userdata
19: 15 0028958720 0028975103 0000016384 persisten
20: 16 0028975104 0030695423 0001720320 caché
21: 17 0030695424 0030715903 0000020480 recuperación
22: 18 0030715904 0030736383 0000020480 fota
23: 19 0030736384 0030748671 0000012288 copia de seguridad
24: 20 0030748672 0030754815 0000006144 fsg
25: 21 0030754816 0030754831 0000000016 ssd
26: 22 0030754832 0030765071 0000010240 crecer
27: ----- 0030765072 0030777343 0000012272 asignado />

Podemos reparar automáticamente la revista mediante el montaje de la partición / userdata lectura y escritura. Una vez que su reparada y montada, se puede volver a montar como de sólo lectura para el análisis.

BASH
  $  mkdir mnt 
$ sudo mount-o loop, offset = $ ((3293184 * 512)) / mnt / image.dd
mnt $ mount
...
xmount en / mnt tipo fuse.xmount (rw, nosuid, nodev, allow_other)
$ sudo mount-o remount, ro mnt

$ mount ...
/ mnt / image.dd en / home / tipo de usuario / mnt ext4 (ro)
$ ls-S mnt / datos

Dalvik-cache
smart_stay.
dmc anr aplicación />
aplicación asec />


backup BackupPlus

bluetooth bms

portapapeles drm />

fota fota_test


lost + found />
misc

propiedad ...
$

En primer lugar, he creado un nuevo directorio en el directorio de trabajo actual llama "mnt". No hay que confundir esto con el directorio / mnt donde se encuentra la imagen de disco virtual. Al igual que antes, se utilizó el soporte de para crear un dispositivo de bucle de retorno y la dirección de la partición por diferencias. Esta vez, no fijó el indicador de sólo lectura, y especifica un nuevo directorio para la partición, ya que estábamos usando / mnt para alojar el disco virtual. Esta vez, tuvimos éxito en el montaje de la partición, y luego volvió a montar inmediatamente sólo lectura para evitar hacer más cambios.

Conclusión

En resumen, se trató de montar una partición en nuestra imagen del disco original, pero fracasó. Hemos determinado la partición tenía un diario dañado, por lo que creó una imagen de disco virtual para realizar las reparaciones. Luego montamos la partición reparado y una lista del directorio raíz. Pero hicimos no hacer daño?

BASH

  $  / mnt / image.dd 
2e16cbbeefc9e33bc754b47d2f8a4da0 / mnt / image.dd
$

El hash imagen original permanece sin cambios. La imagen muestra su xmounted sido cambiada. Así xmount ha hecho su trabajo, la protección de la imagen original a la vez que nos permite reparar la partición en la imagen virtual!

Oh , y ¿qué pasa con ese archivo caché? ¿Cuánto espacio real qué usamos cuando creamos y reparamos la imagen virtual?

BASH
  $  ls-lh 
image.cache-rw-r - r - 40M 1 root root 21 de marzo 15:51 image.cache
$

Sí, se utilizó toda una 40mb para reparar la revista y montar una partición de 12 GB. Eso no es nada mal, y que no esperaron para una operación de copia larga de reducir a la mitad de su capacidad de almacenamiento!

Xmount caché Advertencias

Una barra lateral rápido en el xmount archivo de caché. La memoria caché se puede reutilizar, lo que significa que los cambios desde el último período de sesiones se llevan adelante para la próxima sesión. En términos sencillos, si desmontar el userdata / partición y luego la imagen virutal, pero luego volver a montar el imagen mientras que apunta al archivo de caché que anterior creado con el - cache opción , el sistema de archivos permanecerán reparado. Si queremos empezar de nuevo, nos volveríamos a usar la opción de caché de sobreescritura o - owcache . Por último, no es necesario especificar una caché en absoluto si los cambios no son necesarios, y, de hecho, esta es la forma que usualmente emplean xmount .


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *